X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=projects%2Fmicrob2010%2Fballboard%2Fcommands_ballboard.c;h=95ec614f5308ddf3883783e8196b2a6583adb6f1;hb=8d1a172c863bc0712e8d92f3e808e85a4e579e10;hp=fd459143fd96b3e89667c0db4a47946e3ff9822e;hpb=c8bae2eb9f3084d53436bc6c9fee9952dfcc1fda;p=aversive.git diff --git a/projects/microb2010/ballboard/commands_ballboard.c b/projects/microb2010/ballboard/commands_ballboard.c index fd45914..95ec614 100644 --- a/projects/microb2010/ballboard/commands_ballboard.c +++ b/projects/microb2010/ballboard/commands_ballboard.c @@ -1,6 +1,6 @@ /* * Copyright Droids Corporation (2009) - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -17,7 +17,7 @@ * * Revision : $Id: commands_ballboard.c,v 1.2 2009-04-24 19:30:42 zer0 Exp $ * - * Olivier MATZ + * Olivier MATZ */ #include @@ -63,22 +63,24 @@ static void cmd_event_parsed(void *parsed_result, void *data) u08 bit=0; struct cmd_event_result * res = parsed_result; - + if (!strcmp_P(res->arg1, PSTR("all"))) { - bit = DO_ENCODERS | DO_CS | DO_BD | DO_POWER; + bit = 0xFF; if (!strcmp_P(res->arg2, PSTR("on"))) ballboard.flags |= bit; else if (!strcmp_P(res->arg2, PSTR("off"))) ballboard.flags &= bit; else { /* show */ - printf_P(PSTR("encoders is %s\r\n"), + printf_P(PSTR("encoders is %s\r\n"), (DO_ENCODERS & ballboard.flags) ? "on":"off"); - printf_P(PSTR("cs is %s\r\n"), + printf_P(PSTR("cs is %s\r\n"), (DO_CS & ballboard.flags) ? "on":"off"); - printf_P(PSTR("bd is %s\r\n"), + printf_P(PSTR("bd is %s\r\n"), (DO_BD & ballboard.flags) ? "on":"off"); - printf_P(PSTR("power is %s\r\n"), + printf_P(PSTR("power is %s\r\n"), (DO_POWER & ballboard.flags) ? "on":"off"); + printf_P(PSTR("errblock is %s\r\n"), + (DO_ERRBLOCKING & ballboard.flags) ? "on":"off"); } return; } @@ -92,6 +94,8 @@ static void cmd_event_parsed(void *parsed_result, void *data) bit = DO_BD; else if (!strcmp_P(res->arg1, PSTR("power"))) bit = DO_POWER; + else if (!strcmp_P(res->arg1, PSTR("errblock"))) + bit = DO_ERRBLOCKING; if (!strcmp_P(res->arg2, PSTR("on"))) @@ -101,16 +105,17 @@ static void cmd_event_parsed(void *parsed_result, void *data) pwm_ng_set(ROLLER_PWM, 0); pwm_ng_set(FORKTRANS_PWM, 0); pwm_ng_set(FORKROT_PWM, 0); + pwm_ng_set(BEACON_PWM, 0); } ballboard.flags &= (~bit); } - printf_P(PSTR("%s is %s\r\n"), res->arg1, + printf_P(PSTR("%s is %s\r\n"), res->arg1, (bit & ballboard.flags) ? "on":"off"); } prog_char str_event_arg0[] = "event"; parse_pgm_token_string_t cmd_event_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_event_result, arg0, str_event_arg0); -prog_char str_event_arg1[] = "all#encoders#cs#bd#power"; +prog_char str_event_arg1[] = "all#encoders#cs#bd#power#errblock"; parse_pgm_token_string_t cmd_event_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_event_result, arg1, str_event_arg1); prog_char str_event_arg2[] = "on#off#show"; parse_pgm_token_string_t cmd_event_arg2 = TOKEN_STRING_INITIALIZER(struct cmd_event_result, arg2, str_event_arg2); @@ -121,9 +126,9 @@ parse_pgm_inst_t cmd_event = { .data = NULL, /* 2nd arg of func */ .help_str = help_event, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_event_arg0, - (prog_void *)&cmd_event_arg1, - (prog_void *)&cmd_event_arg2, + (prog_void *)&cmd_event_arg0, + (prog_void *)&cmd_event_arg1, + (prog_void *)&cmd_event_arg2, NULL, }, }; @@ -161,8 +166,8 @@ parse_pgm_inst_t cmd_color = { .data = NULL, /* 2nd arg of func */ .help_str = help_color, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_color_arg0, - (prog_void *)&cmd_color_color, + (prog_void *)&cmd_color_arg0, + (prog_void *)&cmd_color_color, NULL, }, }; @@ -191,13 +196,17 @@ static void cmd_state1_parsed(void *parsed_result, state_set_mode(I2C_BALLBOARD_MODE_EJECT); else if (!strcmp_P(res->arg1, PSTR("harvest"))) state_set_mode(I2C_BALLBOARD_MODE_HARVEST); + else if (!strcmp_P(res->arg1, PSTR("prepare"))) + state_set_mode(I2C_BALLBOARD_MODE_PREP_FORK); + else if (!strcmp_P(res->arg1, PSTR("take"))) + state_set_mode(I2C_BALLBOARD_MODE_TAKE_FORK); /* other commands */ } prog_char str_state1_arg0[] = "ballboard"; parse_pgm_token_string_t cmd_state1_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_state1_result, arg0, str_state1_arg0); -prog_char str_state1_arg1[] = "init#eject#harvest#off"; +prog_char str_state1_arg1[] = "init#eject#harvest#off#prepare#take"; parse_pgm_token_string_t cmd_state1_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_state1_result, arg1, str_state1_arg1); prog_char help_state1[] = "set ballboard mode"; @@ -226,27 +235,11 @@ struct cmd_state2_result { static void cmd_state2_parsed(void *parsed_result, __attribute__((unused)) void *data) { - struct cmd_state2_result *res = parsed_result; - uint8_t mode; - - if (!strcmp_P(res->arg2, PSTR("left"))) { - if (!strcmp_P(res->arg1, PSTR("prepare"))) - mode = I2C_BALLBOARD_MODE_PREP_L_FORK; - else if (!strcmp_P(res->arg1, PSTR("take"))) - mode = I2C_BALLBOARD_MODE_TAKE_L_FORK; - } - else { - if (!strcmp_P(res->arg1, PSTR("prepare"))) - mode = I2C_BALLBOARD_MODE_PREP_R_FORK; - else if (!strcmp_P(res->arg1, PSTR("take"))) - mode = I2C_BALLBOARD_MODE_TAKE_R_FORK; - } - //state_set_mode(mode); } prog_char str_state2_arg0[] = "ballboard"; parse_pgm_token_string_t cmd_state2_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_state2_result, arg0, str_state2_arg0); -prog_char str_state2_arg1[] = "prepare#take"; +prog_char str_state2_arg1[] = "xxx"; parse_pgm_token_string_t cmd_state2_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_state2_result, arg1, str_state2_arg1); prog_char str_state2_arg2[] = "left#right"; parse_pgm_token_string_t cmd_state2_arg2 = TOKEN_STRING_INITIALIZER(struct cmd_state2_result, arg2, str_state2_arg2); @@ -275,7 +268,7 @@ struct cmd_state3_result { }; /* function called when cmd_state3 is parsed successfully */ -static void cmd_state3_parsed(void *parsed_result, +static void cmd_state3_parsed(void *parsed_result, __attribute__((unused)) void *data) { struct cmd_state3_result *res = parsed_result; @@ -300,9 +293,9 @@ parse_pgm_inst_t cmd_state3 = { .data = NULL, /* 2nd arg of func */ .help_str = help_state3, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_state3_arg0, - (prog_void *)&cmd_state3_arg1, - (prog_void *)&cmd_state3_arg2, + (prog_void *)&cmd_state3_arg0, + (prog_void *)&cmd_state3_arg1, + (prog_void *)&cmd_state3_arg2, NULL, }, }; @@ -331,7 +324,7 @@ parse_pgm_inst_t cmd_state_machine = { .data = NULL, /* 2nd arg of func */ .help_str = help_state_machine, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_state_machine_arg0, + (prog_void *)&cmd_state_machine_arg0, NULL, }, }; @@ -363,8 +356,8 @@ parse_pgm_inst_t cmd_state_debug = { .data = NULL, /* 2nd arg of func */ .help_str = help_state_debug, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_state_debug_arg0, - (prog_void *)&cmd_state_debug_on, + (prog_void *)&cmd_state_debug_arg0, + (prog_void *)&cmd_state_debug_on, NULL, }, }; @@ -387,17 +380,15 @@ static void cmd_fork_parsed(void *parsed_result, fork_deploy(); else if (!strcmp_P(res->arg1, PSTR("pack"))) fork_pack(); - else if (!strcmp_P(res->arg1, PSTR("left"))) - fork_left(); - else if (!strcmp_P(res->arg1, PSTR("right"))) - fork_right(); - else if (!strcmp_P(res->arg1, PSTR("middle"))) - fork_middle(); + else if (!strcmp_P(res->arg1, PSTR("mid1"))) + fork_mid1(); + else if (!strcmp_P(res->arg1, PSTR("mid2"))) + fork_mid2(); } prog_char str_fork_arg0[] = "fork"; parse_pgm_token_string_t cmd_fork_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_fork_result, arg0, str_fork_arg0); -prog_char str_fork_arg1[] = "deploy#pack#left#right#middle"; +prog_char str_fork_arg1[] = "deploy#pack#mid1#mid2"; parse_pgm_token_string_t cmd_fork_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_fork_result, arg1, str_fork_arg1); prog_char help_fork[] = "move fork"; @@ -406,8 +397,8 @@ parse_pgm_inst_t cmd_fork = { .data = NULL, /* 2nd arg of func */ .help_str = help_fork, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_fork_arg0, - (prog_void *)&cmd_fork_arg1, + (prog_void *)&cmd_fork_arg0, + (prog_void *)&cmd_fork_arg1, NULL, }, }; @@ -445,8 +436,8 @@ parse_pgm_inst_t cmd_roller = { .data = NULL, /* 2nd arg of func */ .help_str = help_roller, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_roller_arg0, - (prog_void *)&cmd_roller_arg1, + (prog_void *)&cmd_roller_arg0, + (prog_void *)&cmd_roller_arg1, NULL, }, }; @@ -474,7 +465,7 @@ parse_pgm_inst_t cmd_test = { .data = NULL, /* 2nd arg of func */ .help_str = help_test, .tokens = { /* token list, NULL terminated */ - (prog_void *)&cmd_test_arg0, + (prog_void *)&cmd_test_arg0, NULL, }, };