PdcommSecs1Write
형식 별칭
시리얼 스트림에 블로킹 없이 바이트를 씁니다.
typedef uint32_t (*PdcommSecs1Write)(void *context, const uint8_t *buffer, size_t capacity, size_t *count)엔드포인트의 스레드에서 pdcomm_secs1_poll()을 통해서만 호출되며, 최대 PdcommSecs1Options::max_io_chunk바이트를 받습니다. 쓰지 못한 바이트는 이후 시도에서 다시 전달됩니다. #PDCOMM_SECS1_IO_OK가 아닌 결과에서는 count를 무시합니다.
매개변수
| 이름 | 설명 |
|---|---|
context | PdcommSecs1Io::context 값입니다. |
buffer | 쓸 바이트입니다. |
capacity | buffer의 바이트 수입니다. 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가 안전한 타입 어댑터를 제공합니다.