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

PdcommTcpEventInfo

구조체

이벤트를 해석한 설명입니다. pdcomm_tcp_event_info()가 채웁니다.

typedef struct PdcommTcpEventInfo { ... } PdcommTcpEventInfo

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

이벤트 종류에 해당하지 않는 필드는 0입니다.

멤버

aborted

필드

수신한 응답에서 사용합니다. 응답이 SxF0 중단(abort) 메시지(function 0)이면 1입니다.

uint8_t aborted

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

body_length

필드

메시지 본문의 길이(바이트)입니다. #PDCOMM_TCP_RECEIVED에서만 0이 아닐 수 있습니다.

size_t body_length

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

code

필드

종류별 코드입니다.

uint32_t code

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

#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

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

#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_state

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

function

필드

펑션(헤더 바이트 3)입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.

uint8_t function

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

header_present

필드

헤더 필드가 유효하면 1입니다.

uint8_t header_present

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

#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_reply

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

kind

필드

#PDCOMM_TCP_RECEIVED 같은 이벤트 종류입니다.

uint32_t kind

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

p_type

필드

헤더의 PType입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.

uint8_t p_type

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

reply_expected

필드

헤더의 W 비트가 설정되어 있으면(응답을 기대함) 1입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.

uint8_t reply_expected

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

s_type

필드

헤더의 SType입니다(데이터 메시지는 0). PdcommTcpEventInfo::header_present가 1일 때 유효합니다.

uint8_t s_type

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

session_id

필드

메시지 헤더의 세션 ID입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.

uint16_t session_id

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

stream

필드

스트림(W 비트를 뺀 헤더 바이트 2)입니다. PdcommTcpEventInfo::header_present가 1일 때 유효합니다.

uint8_t stream

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

struct_size

필드

구조체 크기(바이트)입니다.

size_t struct_size

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

호출 전에 sizeof(PdcommTcpEventInfo) 이상으로 설정합니다. 성공하면 라이브러리가 자신이 기록한 레이아웃의 크기를 저장합니다.

to_state

필드

#PDCOMM_TCP_STATE_CHANGED의 새 상태입니다.

uint32_t to_state

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

token

필드

이벤트의 토큰입니다.

PdcommTcpToken token

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

수신한 1차 메시지에서는 그 1차 메시지(엔드포인트, 세대, 시스템 바이트)를 식별합니다. 응답, 실패, #PDCOMM_TCP_W0_WRITTEN에서는 원래 요청의 토큰과 같습니다. 프로토콜 오류와 전송 오류에서는 엔드포인트와 세대를 담으며, 문제가 된 헤더가 있으면 그 시스템 바이트도 담습니다. #PDCOMM_TCP_STATE_CHANGED에서는 모두 0입니다.

value1

필드

코드별 첫 번째 값입니다. 각 실패 사유, 프로토콜 오류, 프레임 오류의 설명을 따릅니다.

uint64_t value1

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

value2

필드

코드별 두 번째 값입니다. 각 실패 사유, 프로토콜 오류, 프레임 오류의 설명을 따릅니다.

uint64_t value2

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