CommonAPI Generator를 이용하여 하나의 FIDL 파일로 proxy와 stub 코드를 생성할 수 있다. 여기에서 만들어지는 코드는 IPC의 종류(dbus, some/ip)에 상관없이 독립적으로 동작되는 코드이다.
기본절차
- FIDL 작성
- CommonAPI Code Generator를 이용하여 Proxy/Stub 코드 생성
- Generation Stub 코드를 상속받아 Stub implement 코드 작성(xxxStubImpl.hpp, xxxStubImple.cpp).
- Client Application에서 Proxy function을 호출 했을때 동작할 기능을 구현.
- Deployment 사양서( xxx.fdepl ) 작성 후 해당 IPC Generator 실행(Some/IP 혹은 dbus generator)
- 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:
댓글 쓰기