X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fstrat_utils.h;h=5c7b8e998d36c1322e8d66e037e5e16991980484;hp=7bb43a747cbd173ce91d79f3980f84449e3d4227;hb=HEAD;hpb=5894a1a70f98504fee52e58f45f181aa684d99bf diff --git a/projects/microb2010/mainboard/strat_utils.h b/projects/microb2010/mainboard/strat_utils.h index 7bb43a7..5c7b8e9 100644 --- a/projects/microb2010/mainboard/strat_utils.h +++ b/projects/microb2010/mainboard/strat_utils.h @@ -33,10 +33,38 @@ struct xy_point { while ( (! (cond)) && (__err == 0)) { \ __err = test_traj_end(mask); \ } \ + if (!__err) \ + DEBUG(E_USER_STRAT, "cond is true at line %d", \ + __LINE__); \ + else \ + DEBUG(E_USER_STRAT, "got %s at line %d", \ + get_err(__err), __LINE__); \ __err; \ }) \ +#define WAIT_COND_OR_TE_TO(cond, mask, timeout) \ + ({ \ + microseconds __us = time_get_us2(); \ + uint8_t __ret = 0; \ + while ( (! (cond)) && (__ret == 0)) { \ + __ret = test_traj_end(mask); \ + if (time_get_us2() - __us > (timeout)*1000L) { \ + __ret = 0; \ + break; \ + } \ + } \ + if (!__ret) \ + DEBUG(E_USER_STRAT, "cond / timeout at line %d", \ + __LINE__); \ + else \ + DEBUG(E_USER_STRAT, "got %s (%d) at line %d", \ + get_err(__ret), __ret, __LINE__); \ + \ + __ret; \ + }) + int16_t distance_between(int16_t x1, int16_t y1, int16_t x2, int16_t y2); +int32_t quad_distance_between(int16_t x1, int16_t y1, int16_t x2, int16_t y2); int16_t distance_from_robot(int16_t x, int16_t y); int16_t simple_modulo_360(int16_t a); int16_t angle_abs_to_rel(int16_t a_abs); @@ -50,6 +78,8 @@ uint8_t robot_is_in_area(int16_t margin); uint8_t robot_is_near_disc(void); uint8_t y_is_more_than(int16_t y); uint8_t x_is_more_than(int16_t x); +uint8_t __y_is_more_than(int16_t posy, int16_t y); +uint8_t __x_is_more_than(int16_t posx, int16_t x); int16_t fast_sin(int16_t deg); int16_t fast_cos(int16_t deg); uint8_t get_color(void); @@ -57,7 +87,7 @@ uint8_t get_opponent_color(void); int8_t get_opponent_xy(int16_t *x, int16_t *y); int8_t get_opponent_da(int16_t *d, int16_t *a); int8_t get_opponent_xyda(int16_t *x, int16_t *y, int16_t *d, int16_t *a); -uint8_t opponent_is_behind(void); +int16_t distance_from_opponent(int16_t x, int16_t y); uint8_t get_ball_count(void); uint8_t get_cob_count(void);