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

PdcommSecs1Write

형식 별칭

시리얼 스트림에 블로킹 없이 바이트를 씁니다.

typedef uint32_t (*PdcommSecs1Write)(void *context, const uint8_t *buffer, size_t capacity, size_t *count)

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

엔드포인트의 스레드에서 pdcomm_secs1_poll()을 통해서만 호출되며, 최대 PdcommSecs1Options::max_io_chunk바이트를 받습니다. 쓰지 못한 바이트는 이후 시도에서 다시 전달됩니다. #PDCOMM_SECS1_IO_OK가 아닌 결과에서는 count를 무시합니다.

매개변수

이름설명
contextPdcommSecs1Io::context 값입니다.
buffer쓸 바이트입니다.
capacitybuffer의 바이트 수입니다. 1 이상입니다.
count쓴 바이트 수를 받습니다. 진입 시 0이며, 콜백이 #PDCOMM_SECS1_IO_OK를 반환할 때만 읽습니다.

반환값

*count바이트를 썼으면 #PDCOMM_SECS1_IO_OK를 반환합니다(0이면 세부 정보 #PDCOMM_SECS1_IO_WRITE_ZERO로 엔드포인트가 장애 상태가 됩니다). 아무것도 쓰지 못했으면 #PDCOMM_SECS1_IO_WOULD_BLOCK 또는 #PDCOMM_SECS1_IO_INTERRUPTED를 반환합니다. 실패를 보고하려면 그 밖의 PDCOMM_SECS1_IO_* 값을 반환하며, 이때 엔드포인트는 장애 상태가 됩니다.

참고

  • 콜백에서 블로킹하지 않으며 엔드포인트 함수를 호출하지 않습니다. capacity보다 큰 개수를 반환하면 상세 코드 #PDCOMM_SECS1_IO_INVALID_DATA와 함께 엔드포인트가 장애 상태가 됩니다.
  • C++ 구현은 반환하기 전에 모든 예외를 잡아야 합니다. pdcomm_secs1.hpp가 안전한 타입 어댑터를 제공합니다.