git.droids-corp.org
/
aversive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
better orphan tomato
[aversive.git]
/
projects
/
microb2010
/
mainboard
/
strat_utils.c
diff --git
a/projects/microb2010/mainboard/strat_utils.c
b/projects/microb2010/mainboard/strat_utils.c
index
33c1474
..
35803ac
100644
(file)
--- a/
projects/microb2010/mainboard/strat_utils.c
+++ b/
projects/microb2010/mainboard/strat_utils.c
@@
-68,6
+68,17
@@
int16_t distance_between(int16_t x1, int16_t y1, int16_t x2, int16_t y2)
return sqrt(x+y);
}
return sqrt(x+y);
}
+/* return the distance between two points */
+int32_t quad_distance_between(int16_t x1, int16_t y1, int16_t x2, int16_t y2)
+{
+ int32_t x,y;
+ x = (x2-x1);
+ x = x*x;
+ y = (y2-y1);
+ y = y*y;
+ return x+y;
+}
+
/* return the distance to a point in the area */
int16_t distance_from_robot(int16_t x, int16_t y)
{
/* return the distance to a point in the area */
int16_t distance_from_robot(int16_t x, int16_t y)
{
@@
-263,33
+274,34
@@
uint8_t get_opponent_color(void)
return I2C_COLOR_YELLOW;
}
return I2C_COLOR_YELLOW;
}
-/* get the
xy
pos of the opponent robot */
-int8_t get_opponent_
xy(int16_t *x, int16_t *y
)
+/* get the
da
pos of the opponent robot */
+int8_t get_opponent_
da(int16_t *d, int16_t *a
)
{
uint8_t flags;
{
uint8_t flags;
- return -1; // XXX
+ int16_t x;
+
IRQ_LOCK(flags);
IRQ_LOCK(flags);
-/* *x = ballboard.opponent_x; */
-/* *y = ballboard.opponent_y; */
+ *d = beaconboard.oppd;
+ *a = beaconboard.oppa;
+ x = beaconboard.oppx;
IRQ_UNLOCK(flags);
IRQ_UNLOCK(flags);
- if (
*
x == I2C_OPPONENT_NOT_THERE)
+ if (x == I2C_OPPONENT_NOT_THERE)
return -1;
return 0;
}
return -1;
return 0;
}
-/* get the
da
pos of the opponent robot */
-int8_t get_opponent_
da(int16_t *d, int16_t *a
)
+/* get the
xy
pos of the opponent robot */
+int8_t get_opponent_
xy(int16_t *x, int16_t *y
)
{
uint8_t flags;
{
uint8_t flags;
- int16_t x_tmp;
- return -1; // XXX
+
IRQ_LOCK(flags);
IRQ_LOCK(flags);
-/* x_tmp = ballboard.opponent_x; */
-/* *d = ballboard.opponent_d; */
-/* *a = ballboard.opponent_a; */
+ *x = beaconboard.oppx;
+ *y = beaconboard.oppy;
IRQ_UNLOCK(flags);
IRQ_UNLOCK(flags);
- if (
x_tmp
== I2C_OPPONENT_NOT_THERE)
+ if (
*x
== I2C_OPPONENT_NOT_THERE)
return -1;
return -1;
+
return 0;
}
return 0;
}
@@
-297,25
+309,16
@@
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 flags;
int8_t get_opponent_xyda(int16_t *x, int16_t *y, int16_t *d, int16_t *a)
{
uint8_t flags;
- return -1; // XXX
+
IRQ_LOCK(flags);
IRQ_LOCK(flags);
-/* *x = ballboard.opponent_x; */
-/* *y = ballboard.opponent_y; */
-/* *d = ballboard.opponent_d; */
-/* *a = ballboard.opponent_a; */
+ *x = beaconboard.oppx;
+ *y = beaconboard.oppy;
+ *d = beaconboard.oppd;
+ *a = beaconboard.oppa;
IRQ_UNLOCK(flags);
if (*x == I2C_OPPONENT_NOT_THERE)
return -1;
IRQ_UNLOCK(flags);
if (*x == I2C_OPPONENT_NOT_THERE)
return -1;
- return 0;
-}
-uint8_t opponent_is_behind(void)
-{
-/* int8_t opp_there; */
-/* int16_t opp_d, opp_a; */
-/* opp_there = get_opponent_da(&opp_d, &opp_a); */
-/* if (opp_there && (opp_a < 215 && opp_a > 145) && opp_d < 600) */
-/* return 1; */
return 0;
}
return 0;
}