컨버터 스펙을 기준으로 드라이버 개발을 돕기위한 저장소
본 저장소는 스마트팜 기기 연동을 위한 컨버터에서 활용될 수 있는 드라이버의 스펙과 샘플 드라이버를 제공하여 참여사의 드라이버 제작을 돕기위한 것이다.
드라이버는 크게 2종류로 구분된다. 센서노드, 제어노드, 컨트롤러와 직접 연결되는 장비측(Device Side)드라이버와 데이터 수집기와 연결되는 서버측(Servier Side)드라이버로 구성된다. 각 드라이버를 DSDriver, SSDriver 라고 한다.
드라이버 API는 기초연동용과 고급연동용으로 구분될 계획이다. 현 단계에서 드라이버는 현상황을 충실히 포함 하는쪽으로 설계하는 것을 목표로 하고 있다. 추후에 활성화가 되어 추상화 레벨을 높여서 더 많은 범위를 커버할 수 있기를 바란다.
다음의 문서를 참고한다.
sudo apt install git
git clone https://github.com/ebio-snu/cvtdriver.git
sudo apt install build-essential cmake libgoogle-glog-dev libboost-all-dev libmysqlcppconn-dev
boost.dll 은 1.61이후 버전부터 지원한다. Raspbian stretch를 사용하는 경우 libboost-all-dev는 1.62.0.1 버전이지만, jessie나 wheezy를 사용하는 경우에는 버전이 낮아서 1.61 이상의 소스를 받아서 설치해야 한다.
cd cvtdriver
git pull
rm -rf build
mkdir build
cd build
cmake ..
make
make test
신규 드라이버를 개발하는 경우 코드를 공개할 의무가 없기 때문에 개발사에서 드라이버를 테스트 하는 것이 매우 중요하다.
test 폴더에는 드라이버 테스트를 위한 코드들이 들어있는데, 이 코드를 활용하면 신규 드라이버를 테스트할 수 있다.
- test_so_load : 드라이버가 로딩되는지 테스트 한다.
- test_asio : asio::io_service 를 전달하여 이를 통한 통신이 진행되는지 테스트한다.
- test_multi_device : 여러 장비에 대한 정보가 처리되는지 테스트한다.
- test_actuator : 연결된 장비중 스위치형 구동기를 모두 On 하는 테스트를 수행한다.
- test_motor : 연결된 장비중 모터형 구동기를 모두 10% 여는 테스트를 수행한다.
- 테스트가 추가되는데로 여기에 기록한다.
테스트 코드들은 설정파일을 기반으로 동작하기 때문에 /conf/cvtdriver.json 파일의 내용을 개발하는 드라이버의 정보로 변경한 뒤 make test 명령을 통해 신규 드라이버 테스트가 가능하다.
-
라이브러리
- google glog : Google 에서 공개한 로깅라이브러리
- jsoncons : JSON 라이브러리
- Boost : asio와 dll을 주로 사용
- mysql c++ connector : mysql c++ library
- 개별 드라이버 개발을 위해 필요한 라이브러리를 사용할 수 있다.
-
개발환경
- g++ : 기본 설정으로 g++을 사용. VC에서 테스트되지는 않았지만 큰 문제는 없을것으로 기대.
- cmake : 빌드환경
-
개발문서
- doxygen : 코드 문서화를 위해 활용