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

pdcomm::Secs1IoAdapter

클래스

형식이 지정된 시리얼 포트를 소유하고, 예외에 안전한 콜백(callback)으로 Secs1Endpoint에 노출합니다.

template <typename Port> class Secs1IoAdapter

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

어댑터는 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)

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

Port 생성자가 던진 예외는 호출자에게 그대로 전파됩니다.

매개변수

이름설명
ArgumentsPort 생성자 인수의 형식입니다.
argumentsPort 생성자에 전달하는 인수입니다. 인수를 넘기지 않으면 포트를 기본 생성합니다.

Secs1IoAdapter

생성자

이동할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.

Secs1IoAdapter(Secs1IoAdapter &&) = delete

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

Secs1IoAdapter

생성자

복사할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.

Secs1IoAdapter(const Secs1IoAdapter &) = delete

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

native

메서드

Secs1Endpoint가 pdcomm_secs1_create()에 전달하는 콜백 테이블을 반환합니다.

const PdcommSecs1Io &native() const noexcept

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

반환값

테이블입니다. 테이블의 컨텍스트는 이 어댑터입니다. 어댑터가 살아 있는 동안 유효합니다.

operator=

메서드

이동 대입할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.

Secs1IoAdapter &operator=(Secs1IoAdapter &&) = delete

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

operator=

메서드

복사 대입할 수 없습니다. 콜백 컨텍스트가 이 어댑터의 주소입니다.

Secs1IoAdapter &operator=(const Secs1IoAdapter &) = delete

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

port

메서드

소유한 포트를 반환합니다.

Port &port() noexcept

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

포트를 호출하는 Secs1Endpoint::poll()과 동시에 포트를 사용하지 마십시오.

반환값

포트입니다. 어댑터가 살아 있는 동안 유효합니다.

port

메서드

읽기 전용 접근을 위해 소유한 포트를 반환합니다.

const Port &port() const noexcept

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

반환값

포트입니다. 어댑터가 살아 있는 동안 유효합니다.