weak pack
[aversive.git] / projects / microb2010 / mainboard / commands_mainboard.c
index fc51e8e..2335ce3 100644 (file)
@@ -511,22 +511,27 @@ static void cmd_interact_parsed(void * parsed_result, void * data)
                        }
                }
                else {
+#ifdef HOST_VERSION
+#define PWM_INTERACT 300
+#else
+#define PWM_INTERACT 1200
+#endif
                        switch(cmd) {
                        case KEY_UP_ARR:
-                               pwm_set_and_save(LEFT_PWM, 1200);
-                               pwm_set_and_save(RIGHT_PWM, 1200);
+                               pwm_set_and_save(LEFT_PWM, PWM_INTERACT);
+                               pwm_set_and_save(RIGHT_PWM, PWM_INTERACT);
                                break;
                        case KEY_LEFT_ARR:
-                               pwm_set_and_save(LEFT_PWM, -1200);
-                               pwm_set_and_save(RIGHT_PWM, 1200);
+                               pwm_set_and_save(LEFT_PWM, -PWM_INTERACT);
+                               pwm_set_and_save(RIGHT_PWM, PWM_INTERACT);
                                break;
                        case KEY_DOWN_ARR:
-                               pwm_set_and_save(LEFT_PWM, -1200);
-                               pwm_set_and_save(RIGHT_PWM, -1200);
+                               pwm_set_and_save(LEFT_PWM, -PWM_INTERACT);
+                               pwm_set_and_save(RIGHT_PWM, -PWM_INTERACT);
                                break;
                        case KEY_RIGHT_ARR:
-                               pwm_set_and_save(LEFT_PWM, 1200);
-                               pwm_set_and_save(RIGHT_PWM, -1200);
+                               pwm_set_and_save(LEFT_PWM, PWM_INTERACT);
+                               pwm_set_and_save(RIGHT_PWM, -PWM_INTERACT);
                                break;
                        }
                }
@@ -785,6 +790,10 @@ static void cmd_cobboard_setmode2_parsed(void *parsed_result, void *data)
                i2c_cobboard_set_mode(I2C_COBBOARD_MODE_HARVEST);
                i2c_cobboard_pack(side);
        }
+       else if (!strcmp_P(res->arg1, PSTR("pack_weak"))) {
+               i2c_cobboard_set_mode(I2C_COBBOARD_MODE_HARVEST);
+               i2c_cobboard_pack_weak(side);
+       }
        else if (!strcmp_P(res->arg1, PSTR("deploy_nomove"))) {
                i2c_cobboard_set_mode(I2C_COBBOARD_MODE_HARVEST);
                i2c_cobboard_deploy_nomove(side);
@@ -797,7 +806,7 @@ static void cmd_cobboard_setmode2_parsed(void *parsed_result, void *data)
 
 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[] = "harvest#deploy#pack#harvest_nomove#deploy_nomove";
+prog_char str_cobboard_setmode2_arg1[] = "harvest#deploy#pack#pack_weak#harvest_nomove#deploy_nomove";
 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);
@@ -870,6 +879,8 @@ 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);
+       printf_P(PSTR("lcob = %d\r\n"), ballboard.lcob);
+       printf_P(PSTR("rcob = %d\r\n"), ballboard.rcob);
 #endif
 }
 
@@ -1210,6 +1221,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 */