Automotive Software

ara::com 이벤트 통신 기초 본문

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

ara::com 이벤트 통신 기초

AutoSW 2023. 11. 22. 17:56
  • 이벤트 (Event)
    • 특정 데이터 교환을 주목적으로 하는 통신 방식으로 특정 신호를 주기적 또는 갱신 시점에 받아서 처리하는 경우 사용
    • 데이터 : 프록시 또는 스켈레톤에 따라 기본 데이터 템플릿 클래스가 적용되고 사용자 데이터를 추가하여 사용
      • 구현 예시 : 사용자 정의 데이터 :: 프록시/스켈레톤 이벤트 템플랫 클래스
        • 사용자 정의 데이터 : using myData_t = struct myData_t { uint32_t data;};
        • 프록시 이벤트 템플릿 클래스 : ara::com::proxyEvent< myData_t >
      • 프록시 또는 스켈레톤 네임 스페이스 내 하나의 멤버로 정의
    • 함수
      • 프록시
        • 가입 (Subscribe)
          • 이벤트 제공자에게 해당 이벤트의 수신 여부에 대한 관심 여부와 수신 가능 이벤트 최대 개수를 전달
        • 가입 상태 추적 (GetSubscriptionState)
          • 가입 메서드는 비동기로 구현되어 호출 후 리턴값이 메서드의 결과를 나타내지 않으며, 단지 해당 서비스 요청이 CM에게 전달되었음을 나타냄
          • 향후 서비스 가입 여부 확인 및 해당 서비스 인스턴스의 상태 변화 관찰을 위해 사용자 정의 함수를 등록하여 추적 가능
        • 이벤트 데이터 수신 (GetNewSamples, SetReceiveHandler)
          • 가입 완료 후, 등록한 이벤트 데이터를 subcribe() 호출 시 전달한 이벤트 최대 개수만큼 서버로부터 받을 수 있는 메서드
          • 폴링 방식 : GetNewSampes()
          •  이벤트 방식 : SetReceiveHandler()
            • 새로운 이벤트 데이터 가용 시 호출될 사용자 정의 콜백 함수를 등록하도록 허용
      • 스켈레톤
        • 이벤트 데이터 전송 (Send)
          • 제공자 내부 또는 소비자와의 공유 공간에 자원 할당 후 데이터가 저장된 해당 공간에 대한 포인터 전달
          • 대용량 및 데이터 갱신 주기가 높을수록 시스템 자원 및 성능에 영향을 미치므로 공유 공간 활용하는 Send(ara::com::SampleAllocateePtr<SampleType> data) 추천
            • 사전 Allocate()를 통해 공유 공간에 자원 할당 필요
    • 이벤트 통신 동작 절차