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

PdcommSecs1Options

구조체

pdcomm_secs1_create()에 전달하는 SECS-I 회선 설정과 자원 한도입니다.

typedef struct PdcommSecs1Options { ... } PdcommSecs1Options

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

모든 타이머는 호출자의 틱 단위로 표현한 0이 아닌 시간입니다(pdcomm_secs1_poll() 참조). 모든 한도는 애플리케이션 정책이며, PDComm은 SEMI E4 기본값으로 대신 채우지 않습니다.

멤버

ack_wait_ticks

필드

응답을 기다리는 T2 시간(틱)입니다. 0이 아니어야 합니다.

uint32_t ack_wait_ticks

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

블록을 보낸 뒤 ACK 또는 NAK를 기다리는 시간과, 엔드포인트가 ENQ에 EOT로 응답한 뒤 길이 문자를 기다리는 시간의 상한입니다. 길이 문자가 제때 오지 않으면 엔드포인트는 NAK로 응답합니다.

grant_wait_ticks

필드

엔드포인트가 ENQ를 보낸 뒤 회선 사용을 허락하는 EOT를 기다리는 T2 시간(틱)입니다. 0이 아니어야 합니다.

uint32_t grant_wait_ticks

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

inbound_progress_ticks

필드

블록을 수신하는 동안의 T1 문자 간 시간 초과(틱)입니다. 0이 아니어야 합니다.

uint32_t inbound_progress_ticks

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

블록 중간에 회선이 조용해지면 그 블록은 NAK로 거부됩니다. 길이나 체크섬이 잘못된 블록을 받은 뒤에도, 엔드포인트는 이 시간만큼 회선이 조용해지기를 기다린 다음 NAK로 응답합니다.

inter_block_ticks

필드

여러 블록으로 된 수신 메시지의 T4 블록 간 시간 초과(틱)입니다. 0이 아니어야 합니다.

uint32_t inter_block_ticks

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

시간이 만료되면 일부만 받은 메시지를 이벤트 없이 버립니다.

max_blocks

필드

수신 메시지 하나에 들어가는 블록의 최대 개수입니다.

uint16_t max_blocks

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

이 값을 넘게 되는 수신 블록은 NAK로 거부됩니다. max_outbound_blocks 이상이어야 합니다. 블록 하나에는 본문이 최대 244바이트 들어가며, SEMI E4 블록 번호는 32767에서 끝납니다.

max_body_bytes

필드

수신 메시지 본문 크기의 최댓값(바이트)입니다.

size_t max_body_bytes

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

이 값을 넘게 되는 수신 블록은 NAK로 거부됩니다. max_outbound_body_bytes 이상이고 max_event_body_bytes 이하여야 합니다.

max_event_body_bytes

필드

큐에 있는 이벤트들이 보관하는 본문 바이트 총합의 최댓값입니다. max_body_bytes 이상이어야 합니다.

size_t max_event_body_bytes

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

max_events

필드

pdcomm_secs1_next_event()용으로 큐에 쌓이는 이벤트의 최대 개수입니다. 0이 아니어야 합니다.

size_t max_events

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

max_io_chunk

필드

읽기 또는 쓰기 콜백 한 번에 전달하는 바이트 수의 최댓값입니다. 0이 아니어야 합니다.

size_t max_io_chunk

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

max_outbound_blocks

필드

제출한 메시지의 블록 최대 개수입니다. 0이 아니고 max_blocks 이하여야 합니다.

size_t max_outbound_blocks

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

max_outbound_body_bytes

필드

pdcomm_secs1_submit()이 받는 본문 크기의 최댓값입니다. 0이 아니고 max_body_bytes 이하여야 합니다.

size_t max_outbound_body_bytes

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

poll_budget

필드

pdcomm_secs1_poll() 호출 한 번에 수행하는 처리 단계 수입니다. 0이 아니어야 합니다.

size_t poll_budget

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

단계 하나는 콜백 시도 한 번, 타이머 만료 한 번, 또는 내부 프로토콜 전이 한 번입니다.

priority

필드

경합 시 역할입니다. #PDCOMM_SECS1_MASTER 또는 #PDCOMM_SECS1_SLAVE입니다.

uint32_t priority

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

reserved

필드

예약 필드입니다. 0이어야 합니다.

uint8_t reserved[3]

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

reserved2

필드

예약 필드입니다. 0이어야 합니다.

uint16_t reserved2

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

retry_limit

필드

블록 하나를 보낼 때의 재시도 한도(SEMI E4 RTY)입니다.

uint8_t retry_limit

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

T2 시간 초과(timeout)나 ACK가 아닌 응답이 오면, 엔드포인트는 이 횟수만큼 재시도할 때까지 ENQ를 다시 보낸 뒤 #PDCOMM_SECS1_EVENT_OUTBOUND_FAILED를 보고합니다. 0이면 한 번만 시도합니다.

struct_size

필드

이 구조체의 크기(바이트)입니다. sizeof(PdcommSecs1Options) 이상으로 설정합니다.

size_t struct_size

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

version

필드

구조체 버전입니다. #PDCOMM_SECS1_OPTIONS_VERSION이어야 합니다.

uint32_t version

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