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

pdcomm_gem_begin_communication

함수

S1F13 Establish Communications Request를 보냅니다.

PdcommStatus pdcomm_gem_begin_communication(PdcommTcpEndpoint *endpoint, PdcommTcpToken *out_token)

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

호스트는 빈 List를 보내고, 장비는 자신의 모델과 소프트웨어 리비전을 보냅니다. 통신 상태는 #PDCOMM_GEM_WAITING_ACK로 바뀝니다. pdcomm_gem_handle_event()가 처리하는 S1F14 응답에 따라 상태는 #PDCOMM_GEM_COMMUNICATING(COMMACK 0)으로 바뀌거나 #PDCOMM_GEM_NOT_COMMUNICATING으로 돌아갑니다. 시간 초과(timeout), 취소, 잘못된 응답도 #PDCOMM_GEM_NOT_COMMUNICATING으로 돌아가며, 라이브러리는 재시도하지 않습니다.

매개변수

이름설명
endpointGEM 역할을 가진 유효한 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를 반환합니다.