*/

CommonAPI Generator로 생성되는 file

CommonAPI Generator를 이용하여 하나의 FIDL 파일로 proxy와 stub 코드를 생성할 수 있다. 여기에서 만들어지는 코드는 IPC의 종류(dbus, some/ip)에 상관없이 독립적으로 동작되는 코드이다.

기본절차

  1. FIDL 작성
  2. CommonAPI Code Generator를 이용하여 Proxy/Stub 코드 생성
  3. Generation Stub 코드를 상속받아 Stub implement 코드 작성(xxxStubImpl.hpp, xxxStubImple.cpp). 
  4. Client Application에서 Proxy function을 호출 했을때 동작할 기능을 구현.
  5. Deployment 사양서( xxx.fdepl ) 작성 후 해당 IPC Generator 실행(Some/IP 혹은 dbus  generator)
  6. CMake 파일 생성





CommonaAPI C++ SOME/IP Example 에서 만든 HelloWorld.fidl과 HelloWorld.fdepl로 Generation시키면 Client(Proxy)와 Service(Stub)에 사용할 소스파일들이 생성된다.
  • HelloWorld.fdepl
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 {
     SomeIpMethodID = 31000
  }
}
define org.genivi.commonapi.someip.deployment for provider MyService {
  instance commonapi.HelloWorld {
     InstanceId = "test"
     SomeIpInstanceID = 22136
  }
}
  • HelloWorld.fidl
package commonapi
interface HelloWorld {
   version {major 1 minor 0}
   method sayHello {
      in {
         String name
      }
      out {
         String message
      }
   } 
}


CommonAPI Generator로 생성시킨 파일들은 아래와 같고
공용
    HelloWorld.hpp

Client에 사용               
    HelloWorldProxy.hpp
    HelloWorldProxyBase.hpp

Stub/Service에 사용
    HelloWorldStub.hpp
    HelloWorldStubDefault.cpp
    HelloWorldStubDefault.hpp

CommonAPI Some/IP Generator로 생성시킨 파일들은 다음과 같다.
Client에 사용               
    HelloWorldSomeIPProxy.hpp
    HelloWorldSomeIPProxy.cpp     
    HelloWorldSomeIPDeployment.hpp
    HelloWorldSomeIPDeployment.cpp
Stub/Service에 사용
    HelloWorldSomeIPStubAdapter.hpp
    HelloWorldSomeIPStubAdapter.cpp


Ref.
 - GENIVI CommonAPI tools (capicxx-core-tools)

관련 페이지

0 comments:

댓글 쓰기