void HAL_PX4::run(int argc, char * const argv[], Callbacks* callbacks) const { int i; const char *deviceA = UARTA_DEFAULT_DEVICE; const char *deviceC = UARTC_DEFAULT_DEVICE; const char *deviceD = UARTD_DEFAULT_DEVICE; const char *deviceE = UARTE_DEFAULT_DEVICE; if (argc < 1) { printf("%s: missing command (try '%s start')", SKETCHNAME, SKETCHNAME); usage(); exit(1); } assert(callbacks); g_callbacks = callbacks; for (i=0; i<argc; i++) { if (strcmp(argv[i], "start") == 0) { if (thread_running) { printf("%s already running\n", SKETCHNAME); /* this is not an error */ exit(0); } uartADriver.set_device_path(deviceA); uartCDriver.set_device_path(deviceC); uartDDriver.set_device_path(deviceD); uartEDriver.set_device_path(deviceE); printf("Starting %s uartA=%s uartC=%s uartD=%s uartE=%s\n", SKETCHNAME, deviceA, deviceC, deviceD, deviceE); _px4_thread_should_exit = false; daemon_task = px4_task_spawn_cmd(SKETCHNAME, SCHED_FIFO, APM_MAIN_PRIORITY, APM_MAIN_THREAD_STACK_SIZE, main_loop, NULL); exit(0); } if (strcmp(argv[i], "stop") == 0) { _px4_thread_should_exit = true; exit(0); } if (strcmp(argv[i], "status") == 0) { if (_px4_thread_should_exit && thread_running) { printf("\t%s is exiting\n", SKETCHNAME); } else if (thread_running) { printf("\t%s is running\n", SKETCHNAME); } else { printf("\t%s is not started\n", SKETCHNAME); } exit(0); } if (strcmp(argv[i], "-d") == 0) { // set terminal device if (argc > i + 1) { deviceA = strdup(argv[i+1]); } else { printf("missing parameter to -d DEVICE\n"); usage(); exit(1); } } if (strcmp(argv[i], "-d2") == 0) { // set uartC terminal device if (argc > i + 1) { deviceC = strdup(argv[i+1]); } else { printf("missing parameter to -d2 DEVICE\n"); usage(); exit(1); } } if (strcmp(argv[i], "-d3") == 0) { // set uartD terminal device if (argc > i + 1) { deviceD = strdup(argv[i+1]); } else { printf("missing parameter to -d3 DEVICE\n"); usage(); exit(1); } } if (strcmp(argv[i], "-d4") == 0) { // set uartE 2nd GPS device if (argc > i + 1) { deviceE = strdup(argv[i+1]); } else { printf("missing parameter to -d4 DEVICE\n"); usage(); exit(1); } } } usage(); exit(1); }
void HAL_PX4::init(int argc, char * const argv[]) const { int i; const char *deviceA = UARTA_DEFAULT_DEVICE; const char *deviceC = UARTC_DEFAULT_DEVICE; if (argc < 1) { printf("%s: missing command (try '%s start')", SKETCHNAME, SKETCHNAME); usage(); exit(1); } for (i=0; i<argc; i++) { if (strcmp(argv[i], "start") == 0) { if (thread_running) { printf("%s already running\n", SKETCHNAME); /* this is not an error */ exit(0); } uartADriver.set_device_path(deviceA); uartCDriver.set_device_path(deviceC); printf("Starting %s on %s and %s\n", SKETCHNAME, deviceA, deviceC); _px4_thread_should_exit = false; daemon_task = task_spawn_cmd(SKETCHNAME, SCHED_FIFO, APM_MAIN_PRIORITY, 8192, main_loop, NULL); exit(0); } if (strcmp(argv[i], "stop") == 0) { _px4_thread_should_exit = true; exit(0); } if (strcmp(argv[i], "status") == 0) { if (_px4_thread_should_exit && thread_running) { printf("\t%s is exiting\n", SKETCHNAME); } else if (thread_running) { printf("\t%s is running\n", SKETCHNAME); } else { printf("\t%s is not started\n", SKETCHNAME); } exit(0); } if (strcmp(argv[i], "-d") == 0) { // set terminal device if (argc > i + 1) { deviceA = strdup(argv[i+1]); } else { printf("missing parameter to -d DEVICE\n"); usage(); exit(1); } } if (strcmp(argv[i], "-d2") == 0) { // set uartC terminal device if (argc > i + 1) { deviceC = strdup(argv[i+1]); } else { printf("missing parameter to -d2 DEVICE\n"); usage(); exit(1); } } } usage(); exit(1); }