이전에서 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 


Executing CommonAPI DBus Code Generation...


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

+ Recent posts