콘텐츠로 이동
무료 평가 시작

pdcomm_gem_host_request

함수

호스트 요청을 장비로 보냅니다.

PdcommStatus pdcomm_gem_host_request(PdcommTcpEndpoint *endpoint, uint32_t kind, const uint32_t *ids, size_t count, PdcommTcpToken *out_token)

선언 위치: #include <pdcomm_gem.h>

지원하는 종류와 메시지는 다음과 같습니다.

  • #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입니다.
countID 개수입니다. 상태 종류가 아니면 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를 반환합니다.