Automotive Software

ara::com 통신 방식 기초 본문

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

ara::com 통신 방식 기초

AutoSW 2023. 10. 6. 14:03

ara::com에서는 사용 시나리오에 따라 세 가지의 통신 방식, 이벤트(Event), 메서드(Method) 그리고 필드(Field)를 지원한다.

  • 이벤트 : 데이터 기반, 특정 신호를 주기적 또는 갱신 시점에 받아서 처리하는 경우
    • CAN 신호와 같이 주기적 또는 산발적으로 발생되는 데이터를 교환하는 경우
  • 메서드 : 기능(함수) 기반, 원격지 프로세스의 특정 기능(함수)을 호출하고 그 결과를 확인하는 경우
    • RPC (Remote Procedure Call)을 통해 외부 프로세스에 구현된 기능을 사용하고 그 결과를 확인코저 하는 경우
  • 필드 : 데이터 기반으로 이벤트와 메서드의 혼합, 어느 시점에나 특정 신호의 값을 받거나 전달하고 그 결과를 확인하고자 하는 경우
    • 외부 프로세스의 데이터를 필요한 시점에 언제나 접근하여, 취득하거나 변경하고 그 결과를 확인코저 하는 경우

 

  • ara::com 데이터 타입 클래스
    • 포인터 타입 (Pointer types) : 전송될 데이터의 스마트 포인터로 C++의 std::unique_ptr <T>와 같이 동작
    • 컬렉션 타입 (Collection types) : 전송될 데이터의 컬렉션(컨테이너)으로 특정 구조체의 형태를 가진 개체
    • 비동기 동작 결과 타입 (Types for async operation result management) : C++의  std::future/std::promise
    • 함수 래퍼 (Function wrappers) : CM에서 호출될 콜백 또는 핸들러 함수에 대한 포인터로 C++의 std::function와 같이 동작
  • 에러 알림 (Error Notification)
    • Checked Error가 ara::core::ErrorCode 를 통해 직접적으로 통지
    • 또는, ara::core::Result가 ara::core::ErrorCode에 내포되어 전달
    • ara::core::Future 
      • get() 메서드 :  c++의 std::future 함수 방식으로 동작, 필요시 예외(Exception) 발생
      • GetResult() 메서드 : 결과 (예외사항 미포함)가 수신될 때까지 기다린 후 전달
    • Checked Error는 메서드 방식의 서비스 인터페이스에서만 제공