pdcomm_gem_formatted_program_capability_submit
함수
호스트에서 S7F21 기능(capability) 요청을 보냅니다.
PdcommStatus pdcomm_gem_formatted_program_capability_submit(PdcommTcpEndpoint *endpoint, PdcommTcpToken *out_token)요청은 HSMS 세션의 큐에 들어갑니다. 성공은 요청이 송신용으로 접수되었다는 뜻이며 S7F22가 도착했다는 뜻은 아닙니다. 이후 TCP 이벤트는 pdcomm_gem_handle_event()로 넘깁니다. 응답이 오면 결과 유형이 #PDCOMM_GEM_FORMATTED_PROGRAM_CAPABILITY_RESULT인 결과가 생깁니다. S7F22 본문이 잘못되었거나 구성된 한도를 넘으면 코드가 #PDCOMM_GEM_ERROR_CODEC인 #PDCOMM_GEM_INVALID_RESPONSE 결과가, 시간 초과(timeout)나 연결 끊김이 발생하면 #PDCOMM_GEM_FAILED 결과가 생깁니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 기능 서비스가 구성된 호스트 엔드포인트입니다. |
out_token | 트랜잭션 토큰을 받습니다. 먼저 0으로 초기화되므로 실패하면 항상 0입니다. |
반환값
요청을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. out_token 또는 endpoint가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 GEM 호스트가 아니거나, GEM 통신이 수립되지 않았거나(E30 COMMUNICATING), 기능 서비스가 구성되지 않았으면 #PDCOMM_INVALID_STATE를 반환합니다. 엔드포인트에 준비된 TCP 이벤트(staged event)가 있거나, GEM 요청 슬롯 32개가 모두 사용 중이거나, 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 응답을 기다리는 요청이 max_pending개이면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 세션이 송신을 거부하면 #PDCOMM_IO_ERROR 같은 그 밖의 TCP 상태 코드를 반환합니다. #PDCOMM_POISONED를 반환할 수도 있습니다.