pdcomm_gem_begin_communication
함수
S1F13 Establish Communications Request를 보냅니다.
PdcommStatus pdcomm_gem_begin_communication(PdcommTcpEndpoint *endpoint, PdcommTcpToken *out_token)호스트는 빈 List를 보내고, 장비는 자신의 모델과 소프트웨어 리비전을 보냅니다. 통신 상태는 #PDCOMM_GEM_WAITING_ACK로 바뀝니다. pdcomm_gem_handle_event()가 처리하는 S1F14 응답에 따라 상태는 #PDCOMM_GEM_COMMUNICATING(COMMACK 0)으로 바뀌거나 #PDCOMM_GEM_NOT_COMMUNICATING으로 돌아갑니다. 시간 초과(timeout), 취소, 잘못된 응답도 #PDCOMM_GEM_NOT_COMMUNICATING으로 돌아가며, 라이브러리는 재시도하지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | GEM 역할을 가진 유효한 TCP 엔드포인트입니다. |
out_token | 트랜잭션 토큰을 받습니다. 실패하면 모두 0입니다. NULL이 아니어야 합니다. |
반환값
S1F13을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트에 GEM 역할이 없거나 통신 상태가 #PDCOMM_GEM_NOT_COMMUNICATING이 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나, 대기 슬롯 32개를 모두 사용 중이거나, TCP 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 메시지를 만들거나 큐에 넣을 수 없으면 #PDCOMM_LIMIT_EXCEEDED, #PDCOMM_ALLOCATION_FAILED 또는 그 밖의 TCP 상태 코드를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.