X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fstrat_utils.h;h=5c7b8e998d36c1322e8d66e037e5e16991980484;hp=986b6016dc7386b8876d9361871df9ccf92af621;hb=HEAD;hpb=5918edd6f4f713ef3c8b0b0020dd30a4fb8222ae diff --git a/projects/microb2010/mainboard/strat_utils.h b/projects/microb2010/mainboard/strat_utils.h index 986b601..5c7b8e9 100644 --- a/projects/microb2010/mainboard/strat_utils.h +++ b/projects/microb2010/mainboard/strat_utils.h @@ -20,10 +20,6 @@ */ -#define DEG(x) (((double)(x)) * (180.0 / M_PI)) -#define RAD(x) (((double)(x)) * (M_PI / 180.0)) -#define M_2PI (2*M_PI) - struct xy_point { int16_t x; int16_t y; @@ -35,15 +31,42 @@ struct xy_point { ({ \ uint8_t __err = 0; \ while ( (! (cond)) && (__err == 0)) { \ - __err = test_traj_end(TRAJ_FLAGS_NO_NEAR); \ + __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); -double simple_modulo_2pi(double a); int16_t angle_abs_to_rel(int16_t a_abs); void rel_da_to_abs_xy(double d_rel, double a_rel_rad, double *x_abs, double *y_abs); double norm(double x, double y); @@ -55,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); @@ -62,15 +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 get_column_count(void); -uint8_t get_column_count_right(void); -uint8_t get_column_count_left(void); -uint8_t get_lintel_count(void); -uint8_t get_mechboard_mode(void); -uint8_t pump_left1_is_full(void); -uint8_t pump_left2_is_full(void); -uint8_t pump_right1_is_full(void); -uint8_t pump_right2_is_full(void); -uint8_t get_scanner_status(void); -uint8_t wait_scan_done(uint16_t timeout); -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);