pdcomm_gem_equipment_respond_report_query
함수
수신한 보고서 조회에 대한 응답(S6F16, S6F20 또는 S6F22)을 보냅니다.
PdcommStatus pdcomm_gem_equipment_respond_report_query(PdcommTcpEndpoint *endpoint, PdcommGemResult *result, const PdcommGemDataSample *samples, size_t count)응답은 응답 시점의 보고서 그래프, 바인딩, 캐시를 사용합니다. 샘플은 데이터 변수 ID(DVID)를 키로 하며, 이 응답에 한해서만 캐시보다 우선합니다. 캐시된 값을 사용하려면 NULL과 0을 전달합니다. 전달한 샘플은 보고하는 VID가 사용하지 않는 샘플과 빈 보고서를 반환하는 조회를 포함해 모두 검증합니다. 전체 값 집합과 인코딩된 응답은 제출 전에 검사합니다. 실패하면 요청은 응답하지 않은 상태로 남으므로, 새로 명시적으로 호출해 다시 시도할 수 있습니다. 성공할 때만 responded와 reply_sent를 설정합니다. 자동 중단, 재시도, 장치 동작, 이벤트 확인 응답은 없습니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | result를 만든 장비 엔드포인트입니다. Communicating 상태여야 합니다. |
result | 결과 유형이 #PDCOMM_GEM_REPORT_QUERY_RECEIVED인 결과입니다. |
samples | count개의 샘플 배열입니다. count가 0이면 NULL일 수 있습니다. |
count | 샘플 개수입니다. 최대 데이터 저장소의 max_samples_per_event입니다. |
반환값
응답을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 result가 NULL이거나, count가 0이 아닌데 samples가 NULL이거나, result가 수신한 조회가 아니거나, 샘플이 NULL이거나 알 수 없거나 중복되거나 형식 또는 개수가 잘못되었으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 조회에 이미 응답했거나, 다른 엔드포인트, 연결 세대, 선택(selection)에 속하거나, 수신 트랜잭션이 사라졌으면 #PDCOMM_STALE_TOKEN을 반환합니다. 엔드포인트가 장비가 아니거나, Communicating 상태가 아니거나, 데이터 저장소 없이 샘플을 전달했거나, 보고할 데이터 값을 얻을 수 없으면 #PDCOMM_INVALID_STATE를 반환합니다. 보고할 VID에 값 출처가 없으면 #PDCOMM_OUT_OF_RANGE를 반환합니다. 샘플 또는 메시지 한도를 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.
참고
- 스레드 안전성: 이 호출은
result를 변경합니다. 같은 결과에 대한 getter나 해제와 절대 동시에 실행하지 않습니다.