pdcomm_gem_host_define_reports
함수
호스트에서 Define Report 요청(S2F33)을 보냅니다.
PdcommStatus pdcomm_gem_host_define_reports(PdcommTcpEndpoint *endpoint, uint32_t data_id, const PdcommGemReportSpec *specs, size_t count, PdcommTcpToken *out_token)각 스펙은 RPTID 하나와 그 VID를 정의합니다. VID가 없는 스펙은 해당 보고서와 그 링크를 삭제합니다. 스펙 목록이 비어 있으면(count가 0) 장비의 모든 보고서와 모든 링크를 삭제합니다. 메시지는 큐에 넣기 전에 호스트 항목 한도로 검사하며, 스펙은 보관하지 않습니다. 장비는 S2F34로 응답하며, pdcomm_gem_handle_event()는 이를 요청 종류 #PDCOMM_GEM_DEFINE_REPORTS, 결과 유형 #PDCOMM_GEM_DEFINE_REPORTS_ACK인 #PDCOMM_GEM_RESPONSE로 보고하고 DRACK은 acknowledgement에 넣습니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 호스트 엔드포인트입니다. |
data_id | 요청과 함께 보내는 DATAID(U4)입니다. |
specs | count개의 보고서 스펙 배열입니다. count가 0이면 NULL일 수 있습니다. |
count | 스펙 개수입니다. |
out_token | 먼저 0으로 초기화되며, 성공하면 트랜잭션 토큰을 받습니다. NULL이 아니어야 합니다. |
반환값
요청을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이거나, 개수가 0이 아닌데 배열 포인터가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 메시지가 호스트 항목 한도를 넘게 되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 호스트가 아니거나 Communicating 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나, 대기 슬롯 32개 또는 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.