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

pdcomm_gem_formatted_program_transfer_respond

함수

수신한 S7F23에 대해 프로그램을 저장하지 않고 S7F24 확인 응답을 보냅니다.

PdcommStatus pdcomm_gem_formatted_program_transfer_respond(PdcommTcpEndpoint *endpoint, PdcommGemResult *result, uint8_t acknowledgement)

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

장비 전용입니다. #PDCOMM_GEM_FORMATTED_PROGRAM_RESPOND_ONLY를 지정한 pdcomm_gem_formatted_program_transfer_respond_and_store()와 같습니다. 성공하면 결과 유형이 #PDCOMM_GEM_REPLIED가 되고 reply_sent가 1이 됩니다.

큐에 넣지 못해도 준비한 응답은 유지되므로, #PDCOMM_BACKPRESSURE를 반환한 호출은 같은 코드로 다시 시도할 수 있습니다. 응답이 확정된 뒤 같은 코드로 다시 호출하면 다시 보내지 않고 #PDCOMM_OK를 반환합니다.

매개변수

이름설명
endpointGEM COMMUNICATING 상태인 장비 엔드포인트입니다.
result결과 유형이 #PDCOMM_GEM_FORMATTED_PROGRAM_TRANSFER_RECEIVED인 결과입니다.
acknowledgement0부터 7까지의 ACKC7 코드입니다.

반환값

S7F24를 큐에 넣었거나 같은 코드로 이미 보냈으면 #PDCOMM_OK를 반환합니다. endpoint 또는 result가 NULL이거나 acknowledgement가 7보다 크면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 COMMUNICATING 상태의 장비가 아니거나, 서비스가 구성되지 않았거나, result가 전송 결과가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. result가 수신한 S7F23이 아니거나, 다른 엔드포인트 또는 이전 HSMS 세션이나 선택(selection)에서 왔거나, 이미 응답했거나 다른 코드 또는 저장 동작으로 준비되었으면 #PDCOMM_STALE_TOKEN을 반환합니다. 준비된 TCP 이벤트를 먼저 비워야 하거나 TCP 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다(나중에 다시 시도합니다). 응답을 큐에 넣을 수 없으면 그 밖의 TCP 상태 코드를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.

참고

  • 스레드 안전성: endpoint에 대한 다른 모든 호출과 직렬화하며, 이 호출 중에는 다른 스레드에서 result를 읽지 않습니다.