pdcomm::Secs1IoAdapter
클래스
형식이 지정된 시리얼 포트를 소유하고, 예외에 안전한 콜백(callback)으로 Secs1Endpoint에 노출합니다.
template <typename Port> class Secs1IoAdapter어댑터는 Port를 제자리에서 생성하고, 그 read()와 write() 멤버를 호출하는 noexcept C ABI 트램펄린(trampoline)을 설치합니다. Port::read/write에서 발생한 모든 예외는 IO_OTHER 결과로 변환됩니다. 트램펄린은 개수 0과 함께 PDCOMM_SECS1_IO_OTHER를 보고하며, 이에 따라 끝점(endpoint)은 PDCOMM_SECS1_FAULT_IO와 세부 정보 PDCOMM_SECS1_IO_OTHER로 결함(fault) 상태가 됩니다.
Port는 다음 멤버를 제공해야 합니다. 이 멤버는 PDCOMM_SECS1_IO_* 결과를 반환하며 블로킹하면 안 됩니다(전체 계약은 PdcommSecs1Read와 PdcommSecs1Write를 참고하십시오).
uint32_t read(uint8_t *buffer, size_t capacity, size_t *count);uint32_t write(const uint8_t *buffer, size_t capacity, size_t *count);
끝점은 Secs1Endpoint::poll() 안에서, 끝점의 스레드에서만 이 멤버를 호출합니다. 이 멤버는 끝점 멤버를 호출하면 안 됩니다.
매개변수
| 이름 | 설명 |
|---|---|
Port | 위의 read()와 write() 멤버를 갖춘 비차단(non-blocking) 시리얼 포트 형식입니다. |
참고
- 콜백 컨텍스트가 어댑터 자신의 주소이므로 복사도 이동도 할 수 없습니다. 어댑터는 이 어댑터로 만든 모든 Secs1Endpoint보다 오래 살아 있어야 합니다.
멤버
Secs1IoAdapter
생성자
포트를 제자리에서 생성하고 콜백 테이블을 채웁니다.
template <typename... Arguments> explicit Secs1IoAdapter(Arguments &&...arguments)Port 생성자가 던진 예외는 호출자에게 그대로 전파됩니다.
매개변수
| 이름 | 설명 |
|---|---|
Arguments | Port 생성자 인수의 형식입니다. |
arguments | Port 생성자에 전달하는 인수입니다. 인수를 넘기지 않으면 포트를 기본 생성합니다. |
Secs1IoAdapter
생성자
이동할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.
Secs1IoAdapter(Secs1IoAdapter &&) = deleteSecs1IoAdapter
생성자
복사할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.
Secs1IoAdapter(const Secs1IoAdapter &) = deletenative
메서드
Secs1Endpoint가 pdcomm_secs1_create()에 전달하는 콜백 테이블을 반환합니다.
const PdcommSecs1Io &native() const noexcept반환값
테이블입니다. 테이블의 컨텍스트는 이 어댑터입니다. 어댑터가 살아 있는 동안 유효합니다.
operator=
메서드
이동 대입할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.
Secs1IoAdapter &operator=(Secs1IoAdapter &&) = deleteoperator=
메서드
복사 대입할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.
Secs1IoAdapter &operator=(const Secs1IoAdapter &) = deleteport
메서드
소유한 포트를 반환합니다.
Port &port() noexcept포트를 호출하는 Secs1Endpoint::poll()과 동시에 포트를 사용하지 마십시오.
반환값
포트입니다. 어댑터가 살아 있는 동안 유효합니다.
port
메서드
읽기 전용 접근을 위해 소유한 포트를 반환합니다.
const Port &port() const noexcept반환값
포트입니다. 어댑터가 살아 있는 동안 유효합니다.