summaryrefslogtreecommitdiff
path: root/n/es-2006/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'n/es-2006/src/main.c')
-rw-r--r--n/es-2006/src/main.c67
1 files changed, 45 insertions, 22 deletions
diff --git a/n/es-2006/src/main.c b/n/es-2006/src/main.c
index bde33eb..5d79a4f 100644
--- a/n/es-2006/src/main.c
+++ b/n/es-2006/src/main.c
@@ -44,6 +44,9 @@ uint8_t sensor_rvb_stat_enable[RVB_MAX_SENSOR], sensor_rvb_stats[RVB_MAX_SENSOR]
/* Statistics for RVB analysis. */
uint8_t sniff_rvb_stat_enable[RVB_MAX_SENSOR], sniff_rvb_stats[RVB_MAX_SENSOR];
+/* Statistics for RVB ball sensors. */
+uint8_t sniff_ball_stat_enable[2], sniff_ball_stats[2];
+
/** Call when we receive some data from proto (uart) */
void
proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
@@ -68,8 +71,9 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
sensor_rvb_config (args[0], temp_16b);
break;
/* RVB sniff configuration */
- case c ('x', 1):
- sniff_rvb_config (args[0]);
+ case c ('x', 5):
+ sniff_rvb_config (args[0], v8_to_v16 (args[1], args[2]),
+ v8_to_v16 (args[3], args[4]));
break;
/* RVB sensors stats */
case c ('S', 3):
@@ -94,23 +98,31 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
sniff_rvb_stat_enable[compt] = sniff_rvb_stats[compt] =
args[2];
break;
+ /* Print stats for ball */
+ case c ('B', 2):
+ for (compt = 0; compt < 2; compt++)
+ if (args[0] & _BV(compt))
+ sniff_ball_stats[compt] = sniff_ball_stat_enable[compt] = args[1];
+ break;
+ case c ('u', 1):
+ sensor_rvb_upper_sensors (args[0]);
+ break;
+ /* contact */
+ case c ('i', 0 ):
+ proto_send1b ('i', others_contact());
+ break;
+ /* jack */
+ case c ('j', 0 ):
+ proto_send1b ('j', others_jack());
+ break;
/* color mode game */
- case c ('c', 0 ):
- proto_send1b('c', others_selectcoul());
+ case c ('k', 0 ):
+ proto_send1b ('k', others_selectcoul());
break;
/* Communication with the servo motor */
case c ('m', 2):
servo_motor_set_pos (args[0], args[1]);
break;
-// /* contact */
-// case c ('TTTTTTTTTTt', 0 ):
-// proto_send1b('t', others_contact());
-// break;
-//
-// /* jack */
-// case c ('j', 0 ):
-// proto_send1b('j', others_jack());
-// break;
/* tests primaires pour le barillet */
@@ -179,10 +191,6 @@ main (void)
/* Enable interrupts */
sei ();
- // XXX
-// sniff_rvb_set_threshold (RVB_SNIFF_RED, -100, -85, 725, 0);
-// sniff_rvb_set_threshold (RVB_SNIFF_BLUE, 650, -140, -1050, -950);
-
/* We are ready ! */
proto_send0 ('z');
@@ -201,7 +209,8 @@ main (void)
sensor_rvb_stats[compt] = sensor_rvb_stat_enable[compt];
// FIXME useless 16 bit value.
proto_send5w ('S', compt, sensor_rvb_values[compt][0],
- sensor_rvb_values[compt][1], sensor_rvb_values[compt][2],
+ sensor_rvb_values[compt][1],
+ sensor_rvb_values[compt][2],
sensor_rvb_values[compt][3]);
}
@@ -213,9 +222,21 @@ main (void)
sniff_rvb_stats[compt] = sniff_rvb_stat_enable[compt];
proto_send2b ('A', compt, sniff_rvb_analysis_color (compt, RVB_SNIFF_ALL_COLORS));
}
+
+ /* Print stats for ball */
+ for (compt = 0; compt < 2; compt++)
+ if (sniff_ball_stat_enable[compt] && !--sniff_ball_stats[compt])
+ {
+ /* Re init stats system for this sensor */
+ sniff_ball_stats[compt] = sniff_ball_stat_enable[compt];
+ proto_send2b ('B', compt, sniff_rvb_analysis_ball (compt + 7));
+ }
+
/* Update all the asserv pin comunication */
sensor_rvb_update_asserv_pins ();
+ // FIXME, if we can put some of this values into the eeprom, it will
+ // be better...
if (init_rvb > 0)
{
init_rvb--;
@@ -229,13 +250,15 @@ main (void)
}
/* gestion du barilet */
- sequenceur_barillet();
-
- /* Update RVB sensors data. */
- sensor_rvb_start_capture ();
+ sequenceur_barillet ();
/* Get data for serial port */
while (uart0_poll ())
proto_accept (uart0_getc ());
+
+ /* Update RVB sensors data.
+ * I want this to be done as later as possible, and espceically after
+ * commands has been parsed ! */
+ sensor_rvb_start_capture ();
}
}