px4 Daemon 만들기
px4에서 application을 만드는 방법은 http://dev.px4.io/tutorial-hello-sky.html 에서 다루고 있다. 그럼 daemon은 어떻게 만드는가?
daemon은 왜 만드나?
application은 nsh에서 유저가 실행을 해주거나, rc.init 스크립트에서 background로 실행해야 한다. daemon은 유저가 shell에서 직접 실행하지 않고도 백그라운드로 실행할 수 있다.
px4의 주요앱은 daemon으로 만들어져 있다. https://github.com/PX4/Firmware/blob/master/src/examples
Daemon app example
다음은 daemon 앱 예제코드 이다.
https://github.com/PX4/Firmware/tree/master/src/examples/px4_daemon_app
px4_daemon_app_main.c
daemon app main함수. 데몬을 만들고 실행, 끝, 상태등을 볼 수 있는 기능을 넣는다.
__EXPORT int px4_daemon_app_main(int argc, char *argv[]);
int px4_daemon_app_main(int argc, char *argv[])
{
}
px4_task_spawn_cmd은 데몬(px4_daemon_thread_main 함수)을 만들수 있는 task 만들수 실행한다.
daemon_task = px4_task_spawn_cmd("daemon",
SCHED_DEFAULT,
SCHED_PRIORITY_DEFAULT,
2000,
px4_daemon_thread_main,
(argv) ? (char *const *)&argv[2] : (char *const *)NULL);
앱 코드가 들어간다.
int px4_daemon_thread_main(int argc, char *argv[])
int px4_daemon_thread_main(int argc, char *argv[])
{
while(true){
sleep(10);
if(thread_should_exit) break;
}
return 0;
}
Daemon 실행하기
NSH> px4_daemon_app stop
NSH> top