이전에서 CommonAPI 관련 라이브러리를 설치 완료하였다.
이번에는 Franca 형식으로 인터페이스를 작성하고 Dbus , Someip 코드로 생성해보도록 하겠다.
원문링크
https://github.com/GENIVI/capicxx-someip-tools/wiki/CommonAPI-C---SomeIP-in-10-minutes#step4
1. 폴더를 생성후 HelloWorld.fidl 을 작성한다.
다음 명령을 통하여 파일을 검색한다.
$ find ./ -name "CommonAPI-SOMEIP_deployment_spec.fdepl"
./capicxx-someip-tools/org.genivi.commonapi.someip/deployment/CommonAPI-SOMEIP_deployment_spec.fdepl
kj@kj:~/GENIVI/ComAPI_New/tools/test$ mkdir project
kj@kj:~/GENIVI/ComAPI_New/tools/test$ cd project/
kj@kj:~/GENIVI/ComAPI_New/tools/test/project$ ls
kj@kj:~/GENIVI/ComAPI_New/tools/test/project$ mkdir fidl
kj@kj:~/GENIVI/ComAPI_New/tools/test/project$ cd fidl/
vim HelloWorld.fidl
package commonapi interface HelloWorld { version {major 1 minor 0} method sayHello { in { String name } out { String message } } } |
2. 코드 생성하기
제너레이더 파일을 다운받는다.
툴을 다운받아 두개의 폴더에 각각 압축을 해제하였다.
dbus_gen someip_gen
http://genivi.github.io/capicxx-dbus-tools/
http://genivi.github.io/capicxx-someip-tools/
생성되는 폴더명은 v[M버전]/ package 내임 . 별로 폴더생성 과 같다.
dbus_gen 폴더로 이동 후 zip 파일을 압축해제
./commonapi-dbus-generator-linux-x86_64 ../fidl/HelloWorld.fidl
Using Franca Version 0.9.1.201412191134 Generating code for /home/kj/GENIVI/ComAPI_New/tools/test/project/dbus_gen/../fidl/HelloWorld.fidl |
3. 결과물 확인
src_gen 폴데에 해당 소스파일들이 생성된다.
src-gen/v1/commonapi
[FileName]+DBusDeployment.cpp
[FileName]+DBusDeployment.hpp
[FileName]+DBusDBusProxy.cpp
[FileName]+DBusDBusProxy.hpp
[FileName]+DBusDBusStubAdapter.cpp
[FileName]+DBusDBusStubAdapter.hpp
Deployment , Proxy, StubAdapter 라는 파일이 생성된다.
다음으로 someip 코드도 작성하여 생성해보도록 한다.
원문 : https://github.com/GENIVI/capicxx-someip-tools/wiki/CommonAPI-C---SomeIP-in-10-minutes
1. 파일 생성
vim 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 = 123 } } define org.genivi.commonapi.someip.deployment for provider MyService { instance commonapi.HelloWorld { InstanceId = "test" SomeIpInstanceID = 22136 } } |
2. someip_gen
제너레이터 폴더로 이동후 코드 생성하기
./commonapi-someip-generator-linux-x86_64 ../fidl/HelloWorld.fdepl
3. 생성된 파일확인
src-gen 폴더에 생성된다.
[FileName]+SomeIPDeployment.cpp
[FileName]+SomeIPDeployment.hpp
[FileName]+SomeIPDBusProxy.cpp
[FileName]+SomeIPDBusProxy.hpp
[FileName]+SomeIPDBusStubAdapter.cpp
[FileName]+SomeIPDBusStubAdapter.hpp
파일이 생성된다.
/commonapi-generator-linux-x86_64 를 사용하여 코드생성시에 옵션이 존재한다.
-sk 옵션
-sk,--skel <arg> Generate skeleton code. The optional argument specifies the postfix. Without argument, the postfix is 'default'
|
생성된 코드를 활용하여 어플리케이션 코드 작성은 다음에 정리
'Embedded > CommonAPI' 카테고리의 다른 글
[Memory-1] fidl 작성하기 -작성중 (0) | 2019.01.04 |
---|---|
[GENIVI] ARA integration project (0) | 2019.01.04 |
[CommonAPI C++] D-Bus binding (0) | 2019.01.03 |
[CommonAPI] tool 설치 작성중 (0) | 2019.01.02 |
[Dbus] 사용하기 (0) | 2018.12.28 |