Automotive Software

ara::com 메소드 통신 기초 본문

아답티브 오토사 (Adaptive AUTOSAR)/통신 관리자 (Communicatioin Management)

ara::com 메소드 통신 기초

AutoSW 2023. 11. 22. 17:57
  •  메서드
    • RPC(Remote Procedure Call)과 같이 기능(함수) 기반의 통신으로 원격지 프로세스의 특정 기능(함수)을 호출하고 그 결과를 확인하는 경우 
    • 타입
      • 호출 후 종료형(One-way / Fire-and-Forget) : 오직 입력 파라미터만 허용, 리턴값/예외 없음
      • 일반형 : 입출력, 리턴값 그리고 예외 처리 허용
    • 함수
      • 프록시
        • 함수 호출 연산자 오버로딩 (Function call operator overlading)
          • 메서드 제공자의 함수 호출을 위한 연산자 오버로딩으로 원격지 기능의 수행을 요청
      • 스켈레톤
        • 제공 함수(기능) 구현을 위한 가상 함수 (Virtual method)
          • 메서드 제공자가 실제 기능을 구현해야 하며
          • 동기화 / 비동기화 (함수 내 비동기 스레드 생성 후) 방식으로 구현할 수 있음
    • 결과
      • 프록시(수신)
        • std::future의 확장형인 ara::core::Future의 형태로 전달 (호출 후 종료형 타입 제외)
        • 이벤트 방식 : CM이 결과 수신 시 프록시에 공지하는 방식
          • get() : 블록킹 함수로 wait()을 통해 정의된 시간만큼 블록
          • then() : 사용자 정의 콜백함수 등록
        • 폴링 방식 : 메서드 처리 완료 여부 확인 후 결과 수신 요청
          • ara::core::Future::is_ready() : 처리 완료 여부 확인 후
          • ara::core::Future::get() : 처리 완료되었으므로 블록킹 하지 않음
      • 스켈레톤 (송신)
        • Future <t>에 Out으로 설정된 타입 t를 추가하여 결과 생성 후 CM에 전달
          • 예, myMethod(), INPUT : uint8_t input, OUTPUT : MyMethodOutput_t
            • virtual ara::core::Future< MyMethodOutput_t > myMethod(const uint8_t input ) = 0;