From: zer0 Date: Tue, 4 May 2010 17:16:31 +0000 (+0200) Subject: add centrifugal command and sleep command X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=commitdiff_plain;h=a3fc7af89b243028888603a04ae09b574df91394 add centrifugal command and sleep command --- diff --git a/projects/microb2010/mainboard/commands.c b/projects/microb2010/mainboard/commands.c index 7eda8fd..50be5fa 100644 --- a/projects/microb2010/mainboard/commands.c +++ b/projects/microb2010/mainboard/commands.c @@ -83,8 +83,9 @@ extern parse_pgm_inst_t cmd_servo_balls; extern parse_pgm_inst_t cmd_clitoid; extern parse_pgm_inst_t cmd_time_monitor; extern parse_pgm_inst_t cmd_strat_event; -extern parse_pgm_inst_t cmd_test; extern parse_pgm_inst_t cmd_climb; +extern parse_pgm_inst_t cmd_sleep; +extern parse_pgm_inst_t cmd_test; /* commands_traj.c */ extern parse_pgm_inst_t cmd_traj_speed; @@ -99,6 +100,8 @@ extern parse_pgm_inst_t cmd_rs_gains; extern parse_pgm_inst_t cmd_rs_gains_show; extern parse_pgm_inst_t cmd_track; extern parse_pgm_inst_t cmd_track_show; +extern parse_pgm_inst_t cmd_centrifugal; +extern parse_pgm_inst_t cmd_centrifugal_show; extern parse_pgm_inst_t cmd_pt_list; extern parse_pgm_inst_t cmd_pt_list_append; extern parse_pgm_inst_t cmd_pt_list_del; @@ -176,8 +179,9 @@ parse_pgm_ctx_t main_ctx[] = { (parse_pgm_inst_t *)&cmd_clitoid, (parse_pgm_inst_t *)&cmd_time_monitor, (parse_pgm_inst_t *)&cmd_strat_event, - (parse_pgm_inst_t *)&cmd_test, (parse_pgm_inst_t *)&cmd_climb, + (parse_pgm_inst_t *)&cmd_sleep, + (parse_pgm_inst_t *)&cmd_test, /* commands_traj.c */ (parse_pgm_inst_t *)&cmd_traj_speed, @@ -192,6 +196,8 @@ parse_pgm_ctx_t main_ctx[] = { (parse_pgm_inst_t *)&cmd_rs_gains_show, (parse_pgm_inst_t *)&cmd_track, (parse_pgm_inst_t *)&cmd_track_show, + (parse_pgm_inst_t *)&cmd_centrifugal, + (parse_pgm_inst_t *)&cmd_centrifugal_show, (parse_pgm_inst_t *)&cmd_pt_list, (parse_pgm_inst_t *)&cmd_pt_list_append, (parse_pgm_inst_t *)&cmd_pt_list_del, diff --git a/projects/microb2010/mainboard/commands_mainboard.c b/projects/microb2010/mainboard/commands_mainboard.c index 52b6b92..06803c9 100644 --- a/projects/microb2010/mainboard/commands_mainboard.c +++ b/projects/microb2010/mainboard/commands_mainboard.c @@ -1212,6 +1212,39 @@ parse_pgm_inst_t cmd_strat_event = { }, }; +/**********************************************************/ +/* Sleep */ + +/* this structure is filled when cmd_sleep is parsed successfully */ +struct cmd_sleep_result { + fixed_string_t arg0; + uint32_t ms; +}; + +/* function called when cmd_sleep is parsed successfully */ +static void cmd_sleep_parsed(void *parsed_result, void *data) +{ + struct cmd_sleep_result *res = parsed_result; + time_wait_ms(res->ms); +} + +prog_char str_sleep_arg0[] = "sleep"; +parse_pgm_token_string_t cmd_sleep_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_sleep_result, arg0, str_sleep_arg0); +parse_pgm_token_num_t cmd_sleep_ms = TOKEN_NUM_INITIALIZER(struct cmd_sleep_result, ms, UINT32); + +prog_char help_sleep[] = "Sleep during some miliseconds"; +parse_pgm_inst_t cmd_sleep = { + .f = cmd_sleep_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_sleep, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_sleep_arg0, + (prog_void *)&cmd_sleep_ms, + NULL, + }, +}; + + /**********************************************************/ /* Test */ diff --git a/projects/microb2010/mainboard/commands_traj.c b/projects/microb2010/mainboard/commands_traj.c index d63f57a..e519d17 100644 --- a/projects/microb2010/mainboard/commands_traj.c +++ b/projects/microb2010/mainboard/commands_traj.c @@ -442,6 +442,63 @@ parse_pgm_inst_t cmd_track_show = { }, }; +/**********************************************************/ +/* centrifugal configuration */ + +/* this structure is filled when cmd_centrifugal is parsed successfully */ +struct cmd_centrifugal_result { + fixed_string_t arg0; + fixed_string_t arg1; + float val; +}; + +/* function called when cmd_centrifugal is parsed successfully */ +static void cmd_centrifugal_parsed(void * parsed_result, void * data) +{ + struct cmd_centrifugal_result * res = parsed_result; + + if (!strcmp_P(res->arg1, PSTR("set"))) { + position_set_centrifugal_coef(&mainboard.pos, res->val); + } + printf_P(PSTR("centrifugal set %f\r\n"), mainboard.pos.centrifugal_coef); +} + +prog_char str_centrifugal_arg0[] = "centrifugal"; +parse_pgm_token_string_t cmd_centrifugal_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_centrifugal_result, arg0, str_centrifugal_arg0); +prog_char str_centrifugal_arg1[] = "set"; +parse_pgm_token_string_t cmd_centrifugal_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_centrifugal_result, arg1, str_centrifugal_arg1); +parse_pgm_token_num_t cmd_centrifugal_val = TOKEN_NUM_INITIALIZER(struct cmd_centrifugal_result, val, FLOAT); + +prog_char help_centrifugal[] = "Set centrifugal coef"; +parse_pgm_inst_t cmd_centrifugal = { + .f = cmd_centrifugal_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_centrifugal, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_centrifugal_arg0, + (prog_void *)&cmd_centrifugal_arg1, + (prog_void *)&cmd_centrifugal_val, + NULL, + }, +}; + +/* show */ + +prog_char str_centrifugal_show_arg[] = "show"; +parse_pgm_token_string_t cmd_centrifugal_show_arg = TOKEN_STRING_INITIALIZER(struct cmd_centrifugal_result, arg1, str_centrifugal_show_arg); + +prog_char help_centrifugal_show[] = "Show centrifugal"; +parse_pgm_inst_t cmd_centrifugal_show = { + .f = cmd_centrifugal_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_centrifugal_show, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_centrifugal_arg0, + (prog_void *)&cmd_centrifugal_show_arg, + NULL, + }, +}; + /**********************************************************/