pdcomm_gem_host_request
함수
호스트 요청을 장비로 보냅니다.
PdcommStatus pdcomm_gem_host_request(PdcommTcpEndpoint *endpoint, uint32_t kind, const uint32_t *ids, size_t count, PdcommTcpToken *out_token)지원하는 종류와 메시지는 다음과 같습니다.
- #PDCOMM_GEM_ARE_YOU_ONLINE: S1F1입니다. S1F2 응답은 #PDCOMM_GEM_EQUIPMENT_IDENTITY가 됩니다.
- #PDCOMM_GEM_STATUS_VALUES: 지정한 SVID를 담은 S1F3입니다. S1F4 응답은 #PDCOMM_GEM_VALUES_RECEIVED가 됩니다.
- #PDCOMM_GEM_STATUS_NAMES: 지정한 SVID를 담은 S1F11입니다. S1F12 응답은 #PDCOMM_GEM_NAMES_RECEIVED가 됩니다.
- #PDCOMM_GEM_OFFLINE: S1F15입니다. S1F16 응답은 #PDCOMM_GEM_OFFLINE_ACK가 됩니다.
- #PDCOMM_GEM_ONLINE: S1F17입니다. S1F18 응답은 #PDCOMM_GEM_ONLINE_ACK가 됩니다.
상태 종류만 식별자를 받습니다. NULL과 0을 전달하면 모든 상태 변수를 요청합니다. 식별자는 U4 항목으로 전송되며, 응답과 대조할 수 있도록 메시지를 보내기 전에 복사됩니다. 식별자는 요청이 완료될 때까지 max_pending_ids에 포함해 셉니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 호스트 역할을 가진 유효한 TCP 엔드포인트입니다. |
kind | 위 목록에 있는 요청 종류입니다. |
ids | 상태 변수 ID(SVID) 배열입니다. count가 0이면 NULL입니다. |
count | ID 개수입니다. 상태 종류가 아니면 0이어야 합니다. |
out_token | 트랜잭션 토큰을 받습니다. 실패하면 모두 0입니다. NULL이 아니어야 합니다. |
반환값
요청을 큐에 넣었으면(응답을 받았을 때가 아니라) #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이거나, kind를 지원하지 않거나, 상태 종류가 아닌데 ID가 있거나, count가 0이 아닌데 ids가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트에 호스트 역할이 없거나 통신 상태가 #PDCOMM_GEM_COMMUNICATING이 아니면 #PDCOMM_INVALID_STATE를 반환합니다. ID가 max_pending_ids를 넘거나 메시지가 항목 한도를 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나, 대기 슬롯 32개를 모두 사용 중이거나, TCP 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 메시지를 큐에 넣을 수 없으면 #PDCOMM_ALLOCATION_FAILED 또는 그 밖의 TCP 상태 코드를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.