This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

*/

์„์ดŒํ˜ธ์ˆ˜ ์ผ์‹œ ํ์‡„

์„์ดŒํ˜ธ์ˆ˜๊ฐ€ ์ฝ”๋กœ๋‚˜๋กœ ์ธํ•ด 4์›” 12์ผ๊นŒ์ง€ ์ง„์ž… ๊ธˆ์ง€๋˜์—ˆ๋‹ค..



CommonAPI stub, proxy, common ๋ถ„๋ฅ˜ํ•˜์—ฌ ๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ

CommonAPI Generator๋กœ ์ƒ์„ฑ๋˜๋Š” file์—์„œ Stub, Proxy, Common์œผ๋กœ ์–ด๋–ค ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ๊ฐ์ž์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ํ•ด๋‹น ํ™”์ผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.
ํŒŒ์ผ์„ ๋‚˜๋ˆ ์„œ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ์€ SOME/IP๋‚˜ DBUS์™€ ๊ฐ™์ด ๋ฐ”์ธ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋•Œ ํ™œ์šฉํ•œ๋‹ค.
๋™์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ฌ๋•Œ CommonAPI ๊ด€๋ จ ํ™˜๊ฒฝํŒŒ์ผ(commonapi.ini, commonapi-somip.ini)๋„ ๊ฐ™์ด ๊ตฌ์„ฑํ•˜์—ฌ์•ผ ํ•œ๋‹ค. - ์ถ”ํ›„ ์ •๋ฆฌ

commonapi Someip Generator์˜ ์˜ต์…˜์„ ์กฐ์ •ํ•ด์„œ ๊ฐ๊ฐ์˜ ์œ„์น˜๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.
  -dc directory : Common file๋“ค์„ directory์— ์ƒ์„ฑ
  -dp directory : Proxy file๋“ค์„ directory์— ์ƒ์„ฑ
  -ds directory : Stub file๋“ค์„ directory์— ์ƒ์„ฑ

์˜ˆ์ œ์—์„œ
  hello$ ../commonapi_someip_generator/commonapi-someip-generator-linux-x86 -ll verbose /fidl/HelloWorld.fdepl
์™€ ๊ฐ™์ด ์ˆ˜ํ–‰ํ–ˆ๋˜ ๋ช…๋ น์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•œ๋‹ค.
  hello$ ../commonapi_someip_generator/commonapi-someip-generator-linux-x86 -ll verbose /fidl/HelloWorld.fdepl  -dc src-gen_someip/common -dp src-gen_someip/proxy -ds src-gen_someip/stub


์ด์ œ Common, Stub, Proxy ์šฉ SOME/IP ๋™์  ๋ฐ”์ธ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(.so)๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.
CMakeLists.txt๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•œ๋‹ค.
  • CMakeLists.txt
cmake_minimum_required(VERSION 2.8)

OPTION(USE_INSTALLED_COMMONAPI "Set to OFF to use the local (build tree) version of CommonAPI" OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++0x -Wl,--no-as-needed")

include_directories(
     src-gen
     src-gen_someip/common
     src-gen_someip/proxy
     src-gen_someip/stub
     ~/capicxx-core-runtime/include      #capixx-core-runtime์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š” ํด๋”
     ~/capicxx-someip-runtime/include    #capixx-someip-runtime์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š” ํด๋”
     ~/vSomeIP/interface                 #vSomeIP๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ํด๋”
)

link_directories(
     ~/COMMONAPI                         #CommonAPI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ํด๋”
)

add_library(HelloWorldsomeipCommon SHARED 
                src-gen_someip/common/v1/commonapi/HelloWorldSomeIPDeployment.cpp )
target_link_libraries(HelloWorldsomeipCommon ~/COMMONAPI/libCommonAPI-SomeIP.so vsomeip )
add_library(HelloWorldsomeipProxy SHARED 
  src-gen_someip/proxy/v1/commonapi/HelloWorldSomeIPProxy.cpp )
target_link_libraries(HelloWorldsomeipProxy ~/COMMONAPI/libCommonAPI-SomeIP.so vsomeip )
add_library(HelloWorldsomeipStub SHARED 
  src-gen_someip/stub/v1/commonapi/HelloWorldSomeIPStubAdapter.cpp )
target_link_libraries(HelloWorldsomeipStub ~/COMMONAPI/libCommonAPI-SomeIP.so vsomeip )


build ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ
$ cmake ..

$ make

๊ด€๋ จ ํŽ˜์ด์ง€

CommonAPI stub, proxy ?

์ž‘์„ฑ๋œ FIDL์„ ์ด์šฉํ•˜์—ฌ CommonAPI Generator๋ฅผ ๋Œ๋ฆฌ๋ฉด stub code๋“ค๊ณผ proxy์ฝ”๋“œ๋“ค์ด ์ƒ์„ฑ๋œ๋‹ค.
stub๊ณผ proxy๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

Stub ์†์„ฑ
  Service ์ œ๊ณต์ž
  ์˜๊ตฌ์ 

Proxy ์†์„ฑ
  Client
  ์ผ์‹œ์ 


๊ด€๋ จ ํŽ˜์ด์ง€

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)

๊ด€๋ จ ํŽ˜์ด์ง€

์ผํšŒ์šฉ ๋งˆ์Šคํฌ ์žฌ์‚ฌ์šฉ ํ•˜๊ธฐ

์šฐํ•œํ๋ ด(์ฝ”๋กœ๋‚˜19)์œผ๋กœ ๋งˆ์Šคํฌ ๊ตฌํ•˜๊ธฐ๊ฐ€ ํ•˜๋Š˜์— ๋ณ„๋”ฐ๊ธฐ๋‹ค.. ใ…ก.ใ…ก
๊ทธ๋‚˜๋งˆ ์ž‘๋…„๋„์— ๋ฏธ์„ธ๋จผ์ง€๋•Œ๋ฌธ์— ์‚ฌ๋†“์€ ๊ฑฐ ๊ฐ€์ง€๊ณ  ๋ฒ„ํ‹ฐ๊ณ  ์žˆ๋Š”๋ฐ ์–ธ์ œ๊นŒ์ง€ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ์„์ง€...
์ผํšŒ์šฉ ๋งˆ์Šคํฌ๋ฅผ ์„ธํƒํ•˜๊ฑฐ๋‚˜ ์•Œ์ฝ”์˜ฌ๋กœ ์†Œ๋…ํ•˜๋ฉด ๊ธฐ์กด ์„ฑ๋Šฅ์ด 3~40% ํ•˜๋ฝํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
์†Œ๋…์„ UVC(์ž์™ธ์„ )๋กœ ํ•˜๋ฉด ์–ด๋–จ๊นŒ ์‹ถ๋‹ค. ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ๊นŒ?
์ง‘์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹๊ธฐ ๊ฑด์กฐ๊ธฐ์— ์žˆ๋Š” ์‚ด๊ท  ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๋ณด์•˜๋‹ค..

UVC๋ฅผ ์ฌ”๋‹ค๊ณ  ๋งˆ์Šคํฌ ํ•„ํ„ฐ๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

๋งˆ์Šคํฌ ํ•œ์žฅ๋‹น 1์ฃผ์ผ ์“ฐ๊ธฐ