X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fstrat_base.c;h=1a89f4d53b465d7faae05bba768c0ce11b7a17ed;hb=017dbe8be9a515265aa85d9df2b469df7593c4b0;hp=a6724ad2033bfdfd19b073c0a15e8f0d16a0b5c7;hpb=78150017ab8c5615af414df706a0525fe7c262ae;p=aversive.git diff --git a/projects/microb2010/mainboard/strat_base.c b/projects/microb2010/mainboard/strat_base.c index a6724ad..1a89f4d 100644 --- a/projects/microb2010/mainboard/strat_base.c +++ b/projects/microb2010/mainboard/strat_base.c @@ -103,6 +103,8 @@ const char *get_err(uint8_t err) void strat_hardstop(void) { + DEBUG(E_USER_STRAT, "strat_hardstop"); + trajectory_hardstop(&mainboard.traj); pid_reset(&mainboard.angle.pid); pid_reset(&mainboard.distance.pid); @@ -209,6 +211,11 @@ void strat_set_speed(uint16_t d, uint16_t a) IRQ_UNLOCK(flags); } +void strat_set_acc(double d, double a) +{ + trajectory_set_acc(&mainboard.traj, d, a); +} + void strat_get_speed(uint16_t *d, uint16_t *a) { uint8_t flags; @@ -228,7 +235,7 @@ void strat_limit_speed_disable(void) strat_limit_speed_enabled = 0; } -/* called periodically */ +/* called periodically (note: disabled in 2010) */ void strat_limit_speed(void) { uint16_t lim_d = 0, lim_a = 0; @@ -278,13 +285,15 @@ void strat_limit_speed(void) /* start the strat */ void strat_start(void) { - int8_t i; uint8_t err; strat_preinit(); +#ifndef HOST_VERSION /* if start sw not plugged */ if (sensor_get(S_START_SWITCH)) { + int8_t i; + printf_P(PSTR("No start switch, press a key or plug it\r\n")); /* while start sw not plugged */ @@ -306,6 +315,7 @@ void strat_start(void) /* while start sw plugged */ while (!sensor_get(S_START_SWITCH)); } +#endif strat_init(); err = strat_main(); @@ -324,8 +334,7 @@ uint8_t strat_obstacle(void) return 0; /* no opponent detected */ - if (get_opponent_xyda(&opp_x, &opp_y, - &opp_d, &opp_a)) + if (get_opponent_xyda(&opp_x, &opp_y, &opp_d, &opp_a)) return 0; /* save obstacle position */ @@ -334,6 +343,9 @@ uint8_t strat_obstacle(void) opponent_obstacle.d = opp_d; opponent_obstacle.a = opp_a; + if (!is_in_area(opp_x, opp_y, 250)) + return 0; + /* sensor are temporarily disabled */ if (sensor_obstacle_is_disabled()) return 0;