X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fstrat_utils.h;h=5c7b8e998d36c1322e8d66e037e5e16991980484;hp=f314b0eec4798c7eb19ec5f169786f9763193281;hb=HEAD;hpb=b699727efceb661be65fbd22e975565b800c628e diff --git a/projects/microb2010/mainboard/strat_utils.h b/projects/microb2010/mainboard/strat_utils.h index f314b0e..5c7b8e9 100644 --- a/projects/microb2010/mainboard/strat_utils.h +++ b/projects/microb2010/mainboard/strat_utils.h @@ -42,6 +42,27 @@ struct xy_point { __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); @@ -57,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);