/* * shell_commands.c * * Created on: Aug 10, 2016 * Author: tkl */ #include #include #include #include #include #include "list.h" #include "driver.h" #include "shell.h" #include "queue.h" #include "stack.h" #include "kernel.h" #include "version.h" #include "sensor_data.h" #include "system_state.h" static void *drive_halt_cb(const char *param); static void *drive_forward_cb(const char *param); static void *app_version(const char *param); static void *sys_msg_on_cb(const char *param); static void *sys_msg_off_cb(const char *param); static struct command cmd_sys_msg_on = { .command = "sys on", .description = "Switch system message on.", .command_callback = sys_msg_on_cb, }; static struct command cmd_sys_msg_off = { .command = "sys off", .description = "Switch system message off.", .command_callback = sys_msg_off_cb, }; static struct command cmd_app_version = { .command = "version", .description = "Get application version.", .command_callback = app_version, }; static struct command drive_forward = { .command = "d", .description = "Start driving .", .command_callback = drive_forward_cb, }; static struct command drive_halt = { .command = "h", .description = "Stop driving.", .command_callback = drive_halt_cb, }; int shell_commands_init(void) { shell_add_command(&cmd_app_version); shell_add_command(&drive_forward); shell_add_command(&drive_halt); shell_add_command(&cmd_sys_msg_off); shell_add_command(&cmd_sys_msg_on); return 0; } static void *drive_halt_cb(const char *param) { system_state_force(SYS_IDLE); return NULL; } static void *drive_forward_cb(const char *param) { system_state_force(SYS_DRIVING); return NULL; } static void *app_version(const char *param) { char *greeter = "engine_control version: "; shell_write(greeter, strlen(greeter)); shell_write(MAJOR_VERSION, strlen(MAJOR_VERSION)); shell_write(".", 1); shell_write(MINOR_VERSION, strlen(MINOR_VERSION)); shell_write(".", 1); shell_write(BUILD_NUMBER, strlen(BUILD_NUMBER)); shell_write("\r\n", 2); return NULL; } static void *sys_msg_on_cb(const char *param) { sensor_data_sys_msg(true); return NULL; } static void *sys_msg_off_cb(const char *param) { sensor_data_sys_msg(false); return NULL; }