pdcomm_gem_equipment_publish_event
함수
활성화된 이벤트에 대해 Event Report Send(S6F11, W 비트 설정)를 보냅니다.
PdcommStatus pdcomm_gem_equipment_publish_event(PdcommTcpEndpoint *endpoint, uint32_t data_id, uint32_t event_id, PdcommTcpToken *out_token)보고서 본문은 링크된 모든 보고서의 모든 VID의 현재 값으로 만듭니다. 값은 보고서 바인딩으로 구하며, 바인딩이 없으면 등록된 상태 변수(status variable)에서 구합니다. 본문은 독립된 스냅샷으로 큐에 들어갑니다. 이후 호스트의 S6F12는 요청 종류 #PDCOMM_GEM_EVENT_REPORT, 결과 유형 #PDCOMM_GEM_EVENT_ACK인 #PDCOMM_GEM_RESPONSE를 만들며, ACKC6 값(0~63)은 acknowledgement에 그대로 보존됩니다. 이 함수는 샘플 없이 호출한 pdcomm_gem_equipment_publish_event_with_data()와 같습니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | Communicating 상태인 장비 엔드포인트입니다. |
data_id | 보낼 DATAID(U4)입니다. |
event_id | 보고할 CEID입니다. |
out_token | 먼저 0으로 초기화되며, 성공하면 트랜잭션 토큰을 받습니다. NULL이 아니어야 합니다. |
반환값
보고서를 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 장비가 아니거나, Communicating 상태가 아니거나, 데이터 변수 값을 얻을 수 없으면 #PDCOMM_INVALID_STATE를 반환합니다. 보고서 저장소가 구성되지 않았거나, 이벤트를 알 수 없거나 비활성 상태이면 #PDCOMM_INVALID_DATA를 반환합니다. 보고할 VID에 값 출처가 없으면 #PDCOMM_OUT_OF_RANGE를 반환합니다. 메시지가 항목 한도를 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나 대기 슬롯 또는 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.