*/
-#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;
({ \
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);
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);