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

pdcomm_gem_equipment_publish_event_with_data

함수

샘플링한 데이터 변수 값을 사용해 Event Report Send(S6F11, W 비트 설정)를 보냅니다.

PdcommStatus pdcomm_gem_equipment_publish_event_with_data(PdcommTcpEndpoint *endpoint, uint32_t data_id, uint32_t event_id, const PdcommGemDataSample *samples, size_t count, PdcommTcpToken *out_token)

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

pdcomm_gem_equipment_publish_event()처럼 동작하지만, DATA에 바인딩된 VID는 먼저 DVID가 일치하는 샘플에서 값을 가져오고 그다음 캐시에서 가져옵니다. 둘 다 없으면 보고서 전체가 실패합니다. 어떤 보고서도 쓰지 않는 DVID의 샘플을 포함해 모든 샘플은 샘플 개수, 샘플 바이트, 항목 한도로 검증되며, 알려진 DVID를 정확히 한 번씩 선언된 형식과 개수로 지정해야 합니다. 샘플은 캐시를 절대 바꾸지 않습니다. 순서가 있는 보고서 전체를 제출 전에 만들므로, 호출이 반환된 뒤에는 샘플 항목을 바꾸거나 해제해도 됩니다. 기존 #PDCOMM_GEM_EVENT_REPORT 요청 종류, #PDCOMM_GEM_EVENT_ACK 결과 유형, 대기 슬롯 32개, 토큰, T3, 취소 규칙이 적용됩니다. 실패하면 out_token은 0으로 남고 캐시, 바인딩, 이전에 큐에 넣은 보고서는 보존됩니다.

매개변수

이름설명
endpointCommunicating 상태인 장비 엔드포인트입니다.
data_id보낼 DATAID(U4)입니다.
event_id보고할 CEID입니다. 활성화되어 있어야 합니다. 링크된 보고서가 없으면 S6F11은 빈 보고서 목록을 담습니다.
samplescount개의 샘플 배열입니다. count가 0이면 NULL일 수 있으며, 이때는 캐시된 값만 사용합니다.
count샘플 개수입니다. 최대 max_samples_per_event입니다.
out_token먼저 0으로 초기화되며, 성공하면 트랜잭션 토큰을 받습니다. NULL이 아니어야 합니다.

반환값

보고서를 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이거나, count가 0이 아닌데 samples가 NULL이거나, 샘플 값이 NULL이거나, 샘플이 알 수 없거나 중복된 DVID를 지정하거나 형식 또는 개수가 잘못되었으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 샘플 개수, 샘플 바이트, 항목, 메시지 한도를 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 장비가 아니거나, Communicating 상태가 아니거나, 데이터 저장소 없이 샘플을 제공했거나, 보고할 데이터 값을 얻을 수 없으면 #PDCOMM_INVALID_STATE를 반환합니다. 보고서 저장소가 구성되지 않았거나, 이벤트를 알 수 없거나 비활성 상태이면 #PDCOMM_INVALID_DATA를 반환합니다. 보고할 VID에 값 출처가 없으면 #PDCOMM_OUT_OF_RANGE를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나 대기 슬롯 또는 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.

참고

  • 제출은 상대방의 확인 응답이 아닙니다. #PDCOMM_GEM_EVENT_ACK 결과를 기다립니다.