X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fcommands_mainboard.c;h=fcadd07ff5bfb28fbfa2e4abe4ac9027a87ea0eb;hp=6349ad70ea1b2b5e09cf4374946b1a0ad8f47340;hb=09e0cfb842943982e9fa3c4792c097bf4be25360;hpb=1714f4ee916fca95ce24120ea6e698237913f947 diff --git a/projects/microb2010/mainboard/commands_mainboard.c b/projects/microb2010/mainboard/commands_mainboard.c index 6349ad7..fcadd07 100644 --- a/projects/microb2010/mainboard/commands_mainboard.c +++ b/projects/microb2010/mainboard/commands_mainboard.c @@ -291,15 +291,15 @@ static void cmd_start_parsed(void *parsed_result, void *data) gen.log_level = 0; } - if (!strcmp_P(res->color, PSTR("red"))) { - mainboard.our_color = I2C_COLOR_RED; - i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_RED); - i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_RED); + if (!strcmp_P(res->color, PSTR("yellow"))) { + mainboard.our_color = I2C_COLOR_YELLOW; + i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_YELLOW); + i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_YELLOW); } - else if (!strcmp_P(res->color, PSTR("green"))) { - mainboard.our_color = I2C_COLOR_GREEN; - i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_GREEN); - i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_GREEN); + else if (!strcmp_P(res->color, PSTR("blue"))) { + mainboard.our_color = I2C_COLOR_BLUE; + i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_BLUE); + i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_BLUE); } strat_start(); @@ -310,7 +310,7 @@ static void cmd_start_parsed(void *parsed_result, void *data) prog_char str_start_arg0[] = "start"; parse_pgm_token_string_t cmd_start_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_start_result, arg0, str_start_arg0); -prog_char str_start_color[] = "green#red"; +prog_char str_start_color[] = "blue#yellow"; parse_pgm_token_string_t cmd_start_color = TOKEN_STRING_INITIALIZER(struct cmd_start_result, color, str_start_color); prog_char str_start_debug[] = "debug#match"; parse_pgm_token_string_t cmd_start_debug = TOKEN_STRING_INITIALIZER(struct cmd_start_result, debug, str_start_debug); @@ -543,22 +543,22 @@ struct cmd_color_result { static void cmd_color_parsed(void *parsed_result, void *data) { struct cmd_color_result *res = (struct cmd_color_result *) parsed_result; - if (!strcmp_P(res->color, PSTR("red"))) { - mainboard.our_color = I2C_COLOR_RED; - i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_RED); - i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_RED); + if (!strcmp_P(res->color, PSTR("yellow"))) { + mainboard.our_color = I2C_COLOR_YELLOW; + i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_YELLOW); + i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_YELLOW); } - else if (!strcmp_P(res->color, PSTR("green"))) { - mainboard.our_color = I2C_COLOR_GREEN; - i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_GREEN); - i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_GREEN); + else if (!strcmp_P(res->color, PSTR("blue"))) { + mainboard.our_color = I2C_COLOR_BLUE; + i2c_set_color(I2C_COBBOARD_ADDR, I2C_COLOR_BLUE); + i2c_set_color(I2C_BALLBOARD_ADDR, I2C_COLOR_BLUE); } printf_P(PSTR("Done\r\n")); } prog_char str_color_arg0[] = "color"; parse_pgm_token_string_t cmd_color_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_color_result, arg0, str_color_arg0); -prog_char str_color_color[] = "green#red"; +prog_char str_color_color[] = "blue#yellow"; parse_pgm_token_string_t cmd_color_color = TOKEN_STRING_INITIALIZER(struct cmd_color_result, color, str_color_color); prog_char help_color[] = "Set our color"; @@ -662,6 +662,9 @@ static void cmd_cobboard_show_parsed(void * parsed_result, void * data) { printf_P(PSTR("mode = %x\r\n"), cobboard.mode); printf_P(PSTR("status = %x\r\n"), cobboard.status); + printf_P(PSTR("cob_count = %x\r\n"), cobboard.cob_count); + printf_P(PSTR("left_cobroller_speed = %d\r\n"), cobboard.left_cobroller_speed); + printf_P(PSTR("right_cobroller_speed = %d\r\n"), cobboard.right_cobroller_speed); } prog_char str_cobboard_show_arg0[] = "cobboard"; @@ -697,15 +700,13 @@ static void cmd_cobboard_setmode1_parsed(void *parsed_result, void *data) if (!strcmp_P(res->arg1, PSTR("init"))) i2c_cobboard_mode_init(); - else if (!strcmp_P(res->arg1, PSTR("manual"))) - i2c_cobboard_mode_manual(); - else if (!strcmp_P(res->arg1, PSTR("harvest"))) - i2c_cobboard_mode_harvest(); + else if (!strcmp_P(res->arg1, PSTR("eject"))) + i2c_cobboard_mode_eject(); } prog_char str_cobboard_setmode1_arg0[] = "cobboard"; parse_pgm_token_string_t cmd_cobboard_setmode1_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_cobboard_setmode1_result, arg0, str_cobboard_setmode1_arg0); -prog_char str_cobboard_setmode1_arg1[] = "init#manual#harvest"; +prog_char str_cobboard_setmode1_arg1[] = "init#eject"; parse_pgm_token_string_t cmd_cobboard_setmode1_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_cobboard_setmode1_result, arg1, str_cobboard_setmode1_arg1); prog_char help_cobboard_setmode1[] = "set cobboard mode (mode)"; @@ -741,15 +742,17 @@ static void cmd_cobboard_setmode2_parsed(void * parsed_result, void * data) else if (!strcmp_P(res->arg2, PSTR("right"))) side = I2C_RIGHT_SIDE; - if (!strcmp_P(res->arg1, PSTR("yyy"))) - printf("faux\r\n"); - else if (!strcmp_P(res->arg1, PSTR("xxx"))) - printf("faux\r\n"); + if (!strcmp_P(res->arg1, PSTR("deploy"))) + i2c_cobboard_mode_deploy(side); + else if (!strcmp_P(res->arg1, PSTR("harvest"))) + i2c_cobboard_mode_harvest(side); + else if (!strcmp_P(res->arg1, PSTR("pack"))) + i2c_cobboard_mode_pack(side); } prog_char str_cobboard_setmode2_arg0[] = "cobboard"; parse_pgm_token_string_t cmd_cobboard_setmode2_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_cobboard_setmode2_result, arg0, str_cobboard_setmode2_arg0); -prog_char str_cobboard_setmode2_arg1[] = "xxx"; +prog_char str_cobboard_setmode2_arg1[] = "harvest#deploy#pack"; parse_pgm_token_string_t cmd_cobboard_setmode2_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_cobboard_setmode2_result, arg1, str_cobboard_setmode2_arg1); prog_char str_cobboard_setmode2_arg2[] = "left#right"; parse_pgm_token_string_t cmd_cobboard_setmode2_arg2 = TOKEN_STRING_INITIALIZER(struct cmd_cobboard_setmode2_result, arg2, str_cobboard_setmode2_arg2); @@ -804,6 +807,211 @@ parse_pgm_inst_t cmd_cobboard_setmode3 = { }, }; +/**********************************************************/ +/* Ballboard_Show */ + +/* this structure is filled when cmd_ballboard_show is parsed successfully */ +struct cmd_ballboard_show_result { + fixed_string_t arg0; + fixed_string_t arg1; +}; + +/* function called when cmd_ballboard_show is parsed successfully */ +static void cmd_ballboard_show_parsed(void * parsed_result, void * data) +{ + printf_P(PSTR("mode = %x\r\n"), ballboard.mode); + printf_P(PSTR("status = %x\r\n"), ballboard.status); + printf_P(PSTR("ball_count = %d\r\n"), ballboard.ball_count); +} + +prog_char str_ballboard_show_arg0[] = "ballboard"; +parse_pgm_token_string_t cmd_ballboard_show_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_show_result, arg0, str_ballboard_show_arg0); +prog_char str_ballboard_show_arg1[] = "show"; +parse_pgm_token_string_t cmd_ballboard_show_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_show_result, arg1, str_ballboard_show_arg1); + +prog_char help_ballboard_show[] = "show ballboard status"; +parse_pgm_inst_t cmd_ballboard_show = { + .f = cmd_ballboard_show_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_ballboard_show, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_ballboard_show_arg0, + (prog_void *)&cmd_ballboard_show_arg1, + NULL, + }, +}; + +/**********************************************************/ +/* Ballboard_Setmode1 */ + +/* this structure is filled when cmd_ballboard_setmode1 is parsed successfully */ +struct cmd_ballboard_setmode1_result { + fixed_string_t arg0; + fixed_string_t arg1; +}; + +/* function called when cmd_ballboard_setmode1 is parsed successfully */ +static void cmd_ballboard_setmode1_parsed(void *parsed_result, void *data) +{ + struct cmd_ballboard_setmode1_result *res = parsed_result; + + if (!strcmp_P(res->arg1, PSTR("init"))) + i2c_ballboard_set_mode(I2C_BALLBOARD_MODE_INIT); + else if (!strcmp_P(res->arg1, PSTR("off"))) + i2c_ballboard_set_mode(I2C_BALLBOARD_MODE_OFF); + else if (!strcmp_P(res->arg1, PSTR("eject"))) + i2c_ballboard_set_mode(I2C_BALLBOARD_MODE_EJECT); + else if (!strcmp_P(res->arg1, PSTR("harvest"))) + i2c_ballboard_set_mode(I2C_BALLBOARD_MODE_HARVEST); + + /* other commands */ +} + +prog_char str_ballboard_setmode1_arg0[] = "ballboard"; +parse_pgm_token_string_t cmd_ballboard_setmode1_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_setmode1_result, arg0, str_ballboard_setmode1_arg0); +prog_char str_ballboard_setmode1_arg1[] = "init#eject#harvest#off"; +parse_pgm_token_string_t cmd_ballboard_setmode1_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_setmode1_result, arg1, str_ballboard_setmode1_arg1); + +prog_char help_ballboard_setmode1[] = "set ballboard mode (mode)"; +parse_pgm_inst_t cmd_ballboard_setmode1 = { + .f = cmd_ballboard_setmode1_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_ballboard_setmode1, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_ballboard_setmode1_arg0, + (prog_void *)&cmd_ballboard_setmode1_arg1, + NULL, + }, +}; + +/**********************************************************/ +/* Ballboard_Setmode2 */ + +/* this structure is filled when cmd_ballboard_setmode2 is parsed successfully */ +struct cmd_ballboard_setmode2_result { + fixed_string_t arg0; + fixed_string_t arg1; + fixed_string_t arg2; +}; + +/* function called when cmd_ballboard_setmode2 is parsed successfully */ +static void cmd_ballboard_setmode2_parsed(void * parsed_result, void * data) +{ + struct cmd_ballboard_setmode2_result *res = parsed_result; + uint8_t mode = I2C_BALLBOARD_MODE_INIT; + + 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; + } + i2c_ballboard_set_mode(mode); +} + +prog_char str_ballboard_setmode2_arg0[] = "ballboard"; +parse_pgm_token_string_t cmd_ballboard_setmode2_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_setmode2_result, arg0, str_ballboard_setmode2_arg0); +prog_char str_ballboard_setmode2_arg1[] = "prepare#take"; +parse_pgm_token_string_t cmd_ballboard_setmode2_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_setmode2_result, arg1, str_ballboard_setmode2_arg1); +prog_char str_ballboard_setmode2_arg2[] = "left#right"; +parse_pgm_token_string_t cmd_ballboard_setmode2_arg2 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_setmode2_result, arg2, str_ballboard_setmode2_arg2); + +prog_char help_ballboard_setmode2[] = "set ballboard mode (mode, side)"; +parse_pgm_inst_t cmd_ballboard_setmode2 = { + .f = cmd_ballboard_setmode2_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_ballboard_setmode2, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_ballboard_setmode2_arg0, + (prog_void *)&cmd_ballboard_setmode2_arg1, + (prog_void *)&cmd_ballboard_setmode2_arg2, + NULL, + }, +}; + +/**********************************************************/ +/* Ballboard_Setmode3 */ + +/* this structure is filled when cmd_ballboard_setmode3 is parsed successfully */ +struct cmd_ballboard_setmode3_result { + fixed_string_t arg0; + fixed_string_t arg1; + uint8_t level; +}; + +/* function called when cmd_ballboard_setmode3 is parsed successfully */ +static void cmd_ballboard_setmode3_parsed(void *parsed_result, void *data) +{ + struct cmd_ballboard_setmode3_result *res = parsed_result; + if (!strcmp_P(res->arg1, PSTR("xxx"))) + printf("faux\r\n"); +} + +prog_char str_ballboard_setmode3_arg0[] = "ballboard"; +parse_pgm_token_string_t cmd_ballboard_setmode3_arg0 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_setmode3_result, arg0, str_ballboard_setmode3_arg0); +prog_char str_ballboard_setmode3_arg1[] = "xxx"; +parse_pgm_token_string_t cmd_ballboard_setmode3_arg1 = TOKEN_STRING_INITIALIZER(struct cmd_ballboard_setmode3_result, arg1, str_ballboard_setmode3_arg1); +parse_pgm_token_num_t cmd_ballboard_setmode3_arg2 = TOKEN_NUM_INITIALIZER(struct cmd_ballboard_setmode3_result, level, UINT8); + +prog_char help_ballboard_setmode3[] = "set ballboard mode (mode, level)"; +parse_pgm_inst_t cmd_ballboard_setmode3 = { + .f = cmd_ballboard_setmode3_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_ballboard_setmode3, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_ballboard_setmode3_arg0, + (prog_void *)&cmd_ballboard_setmode3_arg1, + (prog_void *)&cmd_ballboard_setmode3_arg2, + NULL, + }, +}; + +/**********************************************************/ +/* Servo_Balls */ + +/* this structure is filled when cmd_servo_balls is parsed successfully */ +struct cmd_servo_balls_result { + fixed_string_t arg0; + fixed_string_t arg1; +}; + +/* function called when cmd_servo_balls is parsed successfully */ +static void cmd_servo_balls_parsed(void *parsed_result, + __attribute__((unused)) void *data) +{ + struct cmd_servo_balls_result *res = parsed_result; + + if (!strcmp_P(res->arg1, PSTR("deploy"))) + support_balls_deploy(); + else if (!strcmp_P(res->arg1, PSTR("pack"))) + support_balls_pack(); +} + +prog_char str_servo_balls_arg0[] = "support_balls"; +parse_pgm_token_string_t cmd_servo_balls_arg0 = + TOKEN_STRING_INITIALIZER(struct cmd_servo_balls_result, arg0, str_servo_balls_arg0); +prog_char str_servo_balls_arg1[] = "deploy#pack"; +parse_pgm_token_string_t cmd_servo_balls_arg1 = + TOKEN_STRING_INITIALIZER(struct cmd_servo_balls_result, arg1, str_servo_balls_arg1); + +prog_char help_servo_balls[] = "control support balls"; +parse_pgm_inst_t cmd_servo_balls = { + .f = cmd_servo_balls_parsed, /* function to call */ + .data = NULL, /* 2nd arg of func */ + .help_str = help_servo_balls, + .tokens = { /* token list, NULL terminated */ + (prog_void *)&cmd_servo_balls_arg0, + (prog_void *)&cmd_servo_balls_arg1, + NULL, + }, +}; + /**********************************************************/ /* Test */