PdcommTcpEventInfo
구조체
이벤트를 해석한 설명입니다. pdcomm_tcp_event_info()가 채웁니다.
typedef struct PdcommTcpEventInfo { ... } PdcommTcpEventInfo이벤트 종류에 해당하지 않는 필드는 0입니다.
멤버
aborted
필드
수신한 응답에서 사용합니다. 응답이 SxF0 중단(abort) 메시지(function 0)이면 1입니다.
uint8_t abortedbody_length
필드
메시지 본문의 길이(바이트)입니다. #PDCOMM_TCP_RECEIVED에서만 0이 아닐 수 있습니다.
size_t body_lengthcode
필드
종류별 코드입니다.
uint32_t code#PDCOMM_TCP_FAILED이면 실패 사유(예: #PDCOMM_TCP_T3_TIMEOUT), #PDCOMM_TCP_PROTOCOL_ERROR이면 프로토콜 오류(예: #PDCOMM_TCP_INVALID_FRAME), #PDCOMM_TCP_TRANSPORT_ERROR이면 소켓 작업(예: #PDCOMM_TCP_OP_READ)입니다.
detail
필드
종류별 세부 값입니다.
uint32_t detail#PDCOMM_TCP_INVALID_FRAME이면 프레임 오류(PDCOMM_TCP_FRAME_*), #PDCOMM_TCP_TRANSPORT_ERROR이면 이식 가능한 I/O 오류 종류(PDCOMM_TCP_IO_*)입니다.
from_state
필드
#PDCOMM_TCP_STATE_CHANGED의 이전 상태입니다.
uint32_t from_statefunction
필드
펑션(헤더 바이트 3)입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.
uint8_t functionheader_present
필드
헤더 필드가 유효하면 1입니다.
uint8_t header_present#PDCOMM_TCP_RECEIVED에서는 항상 1이며, #PDCOMM_TCP_PROTOCOL_ERROR에서는 오류가 수신 헤더와 관련될 때 1입니다. 제어 메시지에서는 PdcommTcpEventInfo::stream과 PdcommTcpEventInfo::function에 원시 헤더 바이트 2와 3이 들어 있습니다.
is_reply
필드
#PDCOMM_TCP_RECEIVED에서 사용합니다. 내가 보낸 요청에 대한 응답이면 1, 1차 메시지(primary message)이면 0입니다.
uint8_t is_replykind
필드
#PDCOMM_TCP_RECEIVED 같은 이벤트 종류입니다.
uint32_t kindp_type
필드
헤더의 PType입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.
uint8_t p_typereply_expected
필드
헤더의 W 비트가 설정되어 있으면(응답을 기대함) 1입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.
uint8_t reply_expecteds_type
필드
헤더의 SType입니다(데이터 메시지는 0). PdcommTcpEventInfo::header_present가 1일 때 유효합니다.
uint8_t s_typesession_id
필드
메시지 헤더의 세션 ID입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.
uint16_t session_idstream
필드
스트림(W 비트를 뺀 헤더 바이트 2)입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.
uint8_t streamstruct_size
필드
구조체 크기(바이트)입니다.
size_t struct_size호출 전에 sizeof(PdcommTcpEventInfo) 이상으로 설정합니다. 성공하면 라이브러리가 자신이 기록한 레이아웃의 크기를 저장합니다.
to_state
필드
#PDCOMM_TCP_STATE_CHANGED의 새 상태입니다.
uint32_t to_statetoken
필드
이벤트의 토큰입니다.
PdcommTcpToken token수신한 1차 메시지에서는 그 1차 메시지(엔드포인트, 세대, 시스템 바이트)를 식별합니다. 응답, 실패, #PDCOMM_TCP_W0_WRITTEN에서는 원래 요청의 토큰과 같습니다. 프로토콜 오류와 전송 오류에서는 엔드포인트와 세대를 담으며, 문제가 된 헤더가 있으면 그 시스템 바이트도 담습니다. #PDCOMM_TCP_STATE_CHANGED에서는 모두 0입니다.
value1
필드
코드별 첫 번째 값입니다. 각 실패 사유, 프로토콜 오류, 프레임 오류의 설명을 따릅니다.
uint64_t value1value2
필드
코드별 두 번째 값입니다. 각 실패 사유, 프로토콜 오류, 프레임 오류의 설명을 따릅니다.
uint64_t value2