*/

SOME/IP Message Header와 CommonAPI의 fdepl파일 관계



SOME/IP Header 구조

  • Message ID(32 bit) : Message ID는 전체 차량에서 고유해야 한다.
    • Service ID(16 bit) : 각 서비스의 고유 값
    • Method ID(16 bit) : 0~32767까지의 값을 가진다. 이벤트는 32768~65535 값을가진다.
  • Length(32 bit) : Length다음부터 즉 Client ID부터 Payload를 포함한 길이. Byte 단위 
  • Client ID(16 bit) : ECU 내에서 호출하는 클라이언트의 고유 식별자
  • Session ID(16 bit) : Subscriber에 의해 선택된 unique number
  • Protocol Version(8 bit) : 프로토콜 버전
  • Interface Version(8 bit) : 인터페이스 버전
  • Message Type(8 bit) : 메세지 타입
  • Return Code(8 bit) : 리턴 코드
  • Payload(가변길이) : 전송하고자하는 data
  • Endian : BIG Endian

fdepl파일 예

위의 헤더중에 fdepl파일에서 사용되는 ID는 Service ID(SomeIpServiceID), Method ID(SomeIpMethodID)가 파일내에서 사용되며, fdepl파일내에서 InstanceId, SomIpInstanceID는 SOME/IP 헤더에는 없고 SOME/IP-SD(Service Discovery) 포멧에서 Entries array에 포함되어 있다.
commonapi-c-with-someip-example

    import "platform:/plugin/org.genivi.commonapi.someip/deployment/CommonAPI-SOMEIP_deployment_spec.fdepl"
    import "HelloWorld.fidl"
    define org.genivi.commonapi.someip.deployment for interface commonapi.HelloWorld {
      SomeIpServiceID = 4660 method sayHello {  // 각 서비스의 Unique value
         SomeIpMethodID = 31000                 // 0~32767까지의 값. 범위를 벗어나면 SomeIP Generator에서 오류생성
      }
    }
    define org.genivi.commonapi.someip.deployment for provider MyService {
      instance commonapi.HelloWorld {
         InstanceId = "test"                    // registerService(), buildProxy()에서 같은 값을 사용해야한다.
         SomeIpInstanceID = 22136               // 
      }
    }

    Reference

    관련 페이지

    0 comments:

    댓글 쓰기