PdcommSecs1Options
구조체
pdcomm_secs1_create()에 전달하는 SECS-I 회선 설정과 자원 한도입니다.
typedef struct PdcommSecs1Options { ... } PdcommSecs1Options모든 타이머는 호출자의 틱 단위로 표현한 0이 아닌 시간입니다(pdcomm_secs1_poll() 참조). 모든 한도는 애플리케이션 정책이며, PDComm은 SEMI E4 기본값으로 대신 채우지 않습니다.
멤버
ack_wait_ticks
필드
응답을 기다리는 T2 시간(틱)입니다. 0이 아니어야 합니다.
uint32_t ack_wait_ticks블록을 보낸 뒤 ACK 또는 NAK를 기다리는 시간과, 엔드포인트가 ENQ에 EOT로 응답한 뒤 길이 문자를 기다리는 시간의 상한입니다. 길이 문자가 제때 오지 않으면 엔드포인트는 NAK로 응답합니다.
grant_wait_ticks
필드
엔드포인트가 ENQ를 보낸 뒤 회선 사용을 허락하는 EOT를 기다리는 T2 시간(틱)입니다. 0이 아니어야 합니다.
uint32_t grant_wait_ticksinbound_progress_ticks
필드
블록을 수신하는 동안의 T1 문자 간 시간 초과(틱)입니다. 0이 아니어야 합니다.
uint32_t inbound_progress_ticks블록 중간에 회선이 조용해지면 그 블록은 NAK로 거부됩니다. 길이나 체크섬이 잘못된 블록을 받은 뒤에도, 엔드포인트는 이 시간만큼 회선이 조용해지기를 기다린 다음 NAK로 응답합니다.
inter_block_ticks
필드
여러 블록으로 된 수신 메시지의 T4 블록 간 시간 초과(틱)입니다. 0이 아니어야 합니다.
uint32_t inter_block_ticks시간이 만료되면 일부만 받은 메시지를 이벤트 없이 버립니다.
max_blocks
필드
수신 메시지 하나에 들어가는 블록의 최대 개수입니다.
uint16_t max_blocks이 값을 넘게 되는 수신 블록은 NAK로 거부됩니다. max_outbound_blocks 이상이어야 합니다. 블록 하나에는 본문이 최대 244바이트 들어가며, SEMI E4 블록 번호는 32767에서 끝납니다.
max_body_bytes
필드
수신 메시지 본문 크기의 최댓값(바이트)입니다.
size_t max_body_bytes이 값을 넘게 되는 수신 블록은 NAK로 거부됩니다. max_outbound_body_bytes 이상이고 max_event_body_bytes 이하여야 합니다.
max_event_body_bytes
필드
큐에 있는 이벤트들이 보관하는 본문 바이트 총합의 최댓값입니다. max_body_bytes 이상이어야 합니다.
size_t max_event_body_bytesmax_events
필드
pdcomm_secs1_next_event()용으로 큐에 쌓이는 이벤트의 최대 개수입니다. 0이 아니어야 합니다.
size_t max_eventsmax_io_chunk
필드
읽기 또는 쓰기 콜백 한 번에 전달하는 바이트 수의 최댓값입니다. 0이 아니어야 합니다.
size_t max_io_chunkmax_outbound_blocks
필드
제출한 메시지의 블록 최대 개수입니다. 0이 아니고 max_blocks 이하여야 합니다.
size_t max_outbound_blocksmax_outbound_body_bytes
필드
pdcomm_secs1_submit()이 받는 본문 크기의 최댓값입니다. 0이 아니고 max_body_bytes 이하여야 합니다.
size_t max_outbound_body_bytespoll_budget
필드
pdcomm_secs1_poll() 호출 한 번에 수행하는 처리 단계 수입니다. 0이 아니어야 합니다.
size_t poll_budget단계 하나는 콜백 시도 한 번, 타이머 만료 한 번, 또는 내부 프로토콜 전이 한 번입니다.
priority
필드
경합 시 역할입니다. #PDCOMM_SECS1_MASTER 또는 #PDCOMM_SECS1_SLAVE입니다.
uint32_t priorityreserved
필드
예약 필드입니다. 0이어야 합니다.
uint8_t reserved[3]reserved2
필드
예약 필드입니다. 0이어야 합니다.
uint16_t reserved2retry_limit
필드
블록 하나를 보낼 때의 재시도 한도(SEMI E4 RTY)입니다.
uint8_t retry_limitT2 시간 초과(timeout)나 ACK가 아닌 응답이 오면, 엔드포인트는 이 횟수만큼 재시도할 때까지 ENQ를 다시 보낸 뒤 #PDCOMM_SECS1_EVENT_OUTBOUND_FAILED를 보고합니다. 0이면 한 번만 시도합니다.
struct_size
필드
이 구조체의 크기(바이트)입니다. sizeof(PdcommSecs1Options) 이상으로 설정합니다.
size_t struct_sizeversion
필드
구조체 버전입니다. #PDCOMM_SECS1_OPTIONS_VERSION이어야 합니다.
uint32_t version