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

pdcomm_gem_host_enhanced_remote_command

함수

호스트에서 S2F49 확장 원격 명령(Enhanced Remote Command, W=1)을 보냅니다.

PdcommStatus pdcomm_gem_host_enhanced_remote_command(PdcommTcpEndpoint *endpoint, uint32_t data_id, const PdcommSecsItem *object, const PdcommSecsItem *name, const PdcommGemCommandParameter *parameters, size_t count, PdcommTcpToken *out_token)

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

본문은 L[DATAID, OBJSPEC, RCMD, L[L[CPNAME, CEPVAL], ...]]이며, DATAID는 U4로 보냅니다. 요청은 GEM 자체 대기 슬롯 32개 중 하나를 사용합니다. 객체, 이름, 매개변수 항목은 호출이 반환되기 전에 크기가 제한된 전송 스냅샷으로 복사됩니다. 성공은 요청이 큐에 들어갔다는 뜻이며, 명령이 실행되었다는 뜻은 아닙니다. 이후 pdcomm_gem_handle_event()가 결과 유형이 #PDCOMM_GEM_ENHANCED_COMMAND_ACK인 RESPONSE 결과를 내놓습니다.

매개변수

이름설명
endpointGEM 호스트가 구성된 엔드포인트입니다.
data_id보낼 DATAID입니다.
objectOBJSPEC: ASCII 항목입니다.
nameRCMD 항목: 비어 있지 않은 ASCII 또는 -128부터 255까지의 정수 스칼라입니다.
parameterscount개의 CPNAME/CEPVAL 쌍 배열입니다. count가 0이면 NULL일 수 있습니다.
count매개변수 개수입니다. 호스트의 item_count 한도보다 작아야 합니다.
out_token트랜잭션 토큰을 받습니다. 실패하면 항상 0입니다.

반환값

요청이 큐에 들어가면 #PDCOMM_OK를 반환합니다(큐 수락만 뜻합니다). endpoint, object, name, out_token 중 하나가 NULL이거나, count가 0이 아닌데 parameters가 NULL이거나, 쌍에 NULL 항목이 있거나, object가 ASCII 항목이 아니거나, 이름이 유효한 RCMD 또는 CPNAME이 아니거나, 값에 JIS-8 항목이 들어 있으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 값이나 메시지가 호스트 항목 한도를 넘게 되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트에 GEM 호스트가 없거나, 통신 상태가 COMMUNICATING이 아니거나, HSMS 세션이 선택(selected)되지 않았으면 #PDCOMM_INVALID_STATE를 반환합니다. TCP 이벤트가 준비되어 있거나, 대기 슬롯 32개가 모두 사용 중이거나, TCP 큐가 가득 찼거나 정지 중이면 #PDCOMM_BACKPRESSURE를 반환합니다. #PDCOMM_ALLOCATION_FAILED를 반환할 수 있습니다. 엔드포인트가 오염(poisoned) 상태이거나 패닉(panic)을 격리했으면 #PDCOMM_POISONED를 반환합니다. 그 밖에는 pdcomm_tcp_request()와 마찬가지로 다른 TCP 제출 상태 코드를 반환합니다.