pdcomm_gem_formatted_program_verification_request_submit
함수
장비에 S7F31 검증 요청(Verification Request Send)을 보냅니다.
PdcommStatus pdcomm_gem_formatted_program_verification_request_submit(PdcommTcpEndpoint *endpoint, const PdcommSecsItem *id, const char *model, size_t model_length, const char *software_revision, size_t software_revision_length, const PdcommGemFormattedProgramVerificationRequestCommand *commands, size_t command_count, PdcommTcpToken *out_token)호스트 전용입니다. 프로그램을 구성된 한도에 맞춰 검증하고 복사한 뒤 S7F31을 큐에 넣습니다. 성공은 메시지가 전송용으로 받아들여졌다는 뜻입니다. S7F32 응답, T3 시간 초과(timeout) 또는 연결 끊김은 나중에 반환된 토큰과 함께 pdcomm_gem_handle_event()로 보고됩니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | GEM COMMUNICATING 상태인 호스트 엔드포인트입니다. |
id | PPID: 최대 120바이트이며 비어 있지 않은 ASCII 또는 Binary 항목입니다. |
model | MDLN: 최대 20바이트의 ASCII입니다. model_length가 0이면 NULL일 수 있습니다. |
model_length | model의 길이(바이트)입니다. |
software_revision | SOFTREV: 최대 20바이트의 ASCII입니다. software_revision_length가 0이면 NULL일 수 있습니다. |
software_revision_length | software_revision의 길이(바이트)입니다. |
commands | command_count개의 공정 명령 배열입니다. 각 CCODE는 ASCII 항목이어야 합니다. command_count가 0이면 NULL일 수 있습니다. |
command_count | 명령 개수입니다. |
out_token | 트랜잭션 토큰을 받습니다. NULL이 아니면 항상 먼저 0으로 초기화되므로, 실패하면 항상 0입니다. |
반환값
S7F31이 큐에 들어가면 #PDCOMM_OK를 반환합니다. endpoint, out_token, id, CCODE 또는 PPARM 포인터가 NULL이거나, 개수가 0이 아닌데 commands가 NULL이거나, PPID, MDLN, SOFTREV 또는 CCODE가 잘못되었으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 COMMUNICATING 상태의 호스트가 아니거나 서비스가 구성되지 않았으면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트를 먼저 비워야 하거나, GEM 요청 슬롯 32개가 모두 사용 중이거나, TCP 전송 큐가 가득 찼으면 #PDCOMM_BACKPRESSURE를 반환합니다. 명령 또는 매개변수 한도를 넘거나, 항목이 엔드포인트의 SECS-II 한도를 넘거나, 이미 max_pending개의 요청이 대기 중이면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 메시지를 큐에 넣을 수 없으면 #PDCOMM_IO_ERROR 같은 다른 TCP 상태 코드를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.
참고
- 소유권: 모든 입력은 호출자가 계속 소유합니다.
- 스레드 안전성:
endpoint에 대한 다른 모든 호출과 직렬화합니다.