prepare cobboard and ballboard
[aversive.git] / projects / microb2010 / common / i2c_commands.h
index fdb5d49..35605b8 100644 (file)
 #define _I2C_COMMANDS_H_
 
 #define I2C_MAINBOARD_ADDR   1
 #define _I2C_COMMANDS_H_
 
 #define I2C_MAINBOARD_ADDR   1
-#define I2C_MECHBOARD_ADDR   2
-#define I2C_SENSORBOARD_ADDR 3
+#define I2C_COBBOARD_ADDR    2
+#define I2C_BALLBOARD_ADDR   3
 
 #define I2C_LEFT_SIDE   0
 #define I2C_RIGHT_SIDE  1
 
 #define I2C_LEFT_SIDE   0
 #define I2C_RIGHT_SIDE  1
-#define I2C_AUTO_SIDE   2 /* for prepare_pickup */
-#define I2C_CENTER_SIDE 3 /* for prepare_pickup */
+#define I2C_AUTO_SIDE   2
+#define I2C_CENTER_SIDE 3
 
 #define I2C_COLOR_RED   0
 #define I2C_COLOR_GREEN 1
 
 
 #define I2C_COLOR_RED   0
 #define I2C_COLOR_GREEN 1
 
-#define I2C_AUTOBUILD_DEFAULT_DIST 210
-
 struct i2c_cmd_hdr {
        uint8_t cmd;
 };
 struct i2c_cmd_hdr {
        uint8_t cmd;
 };
@@ -63,146 +61,21 @@ struct i2c_cmd_generic_color {
 
 /****/
 
 
 /****/
 
-#define I2C_CMD_MECHBOARD_SET_MODE 0x02
+#define I2C_CMD_COBBOARD_SET_MODE 0x02
 
 
-struct i2c_cmd_mechboard_set_mode {
+struct i2c_cmd_cobboard_set_mode {
        struct i2c_cmd_hdr hdr;
        struct i2c_cmd_hdr hdr;
-#define I2C_MECHBOARD_MODE_MANUAL             0x00
-#define I2C_MECHBOARD_MODE_HARVEST            0x01
-#define I2C_MECHBOARD_MODE_PREPARE_PICKUP     0x02
-#define I2C_MECHBOARD_MODE_PICKUP             0x03
-#define I2C_MECHBOARD_MODE_PREPARE_BUILD      0x04
-#define I2C_MECHBOARD_MODE_AUTOBUILD          0x05
-#define I2C_MECHBOARD_MODE_WAIT               0x06
-#define I2C_MECHBOARD_MODE_INIT               0x07
-#define I2C_MECHBOARD_MODE_PREPARE_GET_LINTEL 0x08
-#define I2C_MECHBOARD_MODE_GET_LINTEL         0x09
-#define I2C_MECHBOARD_MODE_PUT_LINTEL         0x0A
-#define I2C_MECHBOARD_MODE_PREPARE_EJECT      0x0B
-#define I2C_MECHBOARD_MODE_EJECT              0x0C
-#define I2C_MECHBOARD_MODE_CLEAR              0x0D
-#define I2C_MECHBOARD_MODE_LAZY_HARVEST       0x0E
-#define I2C_MECHBOARD_MODE_LOADED             0x0F
-#define I2C_MECHBOARD_MODE_PREPARE_INSIDE     0x10
-#define I2C_MECHBOARD_MODE_STORE              0x11
-#define I2C_MECHBOARD_MODE_LAZY_PICKUP        0x12
-#define I2C_MECHBOARD_MODE_MANIVELLE          0x13
-#define I2C_MECHBOARD_MODE_PUSH_TEMPLE        0x14
-#define I2C_MECHBOARD_MODE_PUSH_TEMPLE_DISC   0x15
-#define I2C_MECHBOARD_MODE_EXIT               0xFF
+#define I2C_COBBOARD_MODE_INIT               0x00
+#define I2C_COBBOARD_MODE_MANUAL             0x01
+#define I2C_COBBOARD_MODE_HARVEST            0x02
+#define I2C_COBBOARD_MODE_EXIT               0xFF
        uint8_t mode;
        union {
                struct {
        uint8_t mode;
        union {
                struct {
-
                } manual;
 
                struct {
                } manual;
 
                struct {
-                       uint8_t side;
-                       uint8_t next_mode;
-               } prep_pickup;
-
-               struct {
-                       uint8_t level_l;
-                       uint8_t level_r;
-               } prep_build;
-
-               struct {
-                       uint8_t side;
-               } push_temple_disc;
-
-               struct {
-                       uint8_t level;
-               } push_temple;
-
-               struct {
-                       uint8_t level_left;
-                       uint8_t level_right;
-                       uint8_t count_left;
-                       uint8_t count_right;
-                       uint8_t distance_left;
-                       uint8_t distance_right;
-                       uint8_t do_lintel;
-               } autobuild;
-
-               struct {
-                       uint8_t level_l;
-                       uint8_t level_r;
-               } prep_inside;
-       };
-};
-
-/****/
-
-/* only valid in manual mode */
-#define I2C_CMD_MECHBOARD_ARM_GOTO 0x03
-
-struct i2c_cmd_mechboard_arm_goto {
-       struct i2c_cmd_hdr hdr;
-#define I2C_MECHBOARD_ARM_LEFT     0
-#define I2C_MECHBOARD_ARM_RIGHT    1
-#define I2C_MECHBOARD_ARM_BOTH     2
-       uint8_t which;
-
-       uint8_t height; /* in cm */
-       uint8_t distance; /* in cm */
-};
-
-/****/
-
-#define I2C_CMD_SENSORBOARD_SET_BEACON 0x04
-
-struct i2c_cmd_sensorboard_start_beacon {
-       struct i2c_cmd_hdr hdr;
-       uint8_t enable;
-};
-
-
-/****/
-
-#define I2C_CMD_SENSORBOARD_SET_SCANNER 0x05
-
-struct i2c_cmd_sensorboard_scanner {
-       struct i2c_cmd_hdr hdr;
-
-#define I2C_SENSORBOARD_SCANNER_STOP    0x00
-#define I2C_SENSORBOARD_SCANNER_PREPARE 0x01
-#define I2C_SENSORBOARD_SCANNER_START   0x02
-       uint8_t mode;
-};
-
-/*****/
-
-#define I2C_CMD_SENSORBOARD_CALIB_SCANNER 0x06
-struct i2c_cmd_sensorboard_calib_scanner {
-       struct i2c_cmd_hdr hdr;
-};
-
-/*****/
-
-#define I2C_CMD_SENSORBOARD_SCANNER_ALGO 0x07
-struct i2c_cmd_sensorboard_scanner_algo {
-       struct i2c_cmd_hdr hdr;
-
-#define I2C_SCANNER_ALGO_COLUMN_DROPZONE 1
-#define I2C_SCANNER_ALGO_CHECK_TEMPLE    2
-#define I2C_SCANNER_ALGO_TEMPLE_DROPZONE 3
-       uint8_t algo;
-
-       union {
-               struct {
-#define I2C_SCANNER_ZONE_0     0
-#define I2C_SCANNER_ZONE_1     1
-#define I2C_SCANNER_ZONE_DISC  2
-                       uint8_t working_zone;
-                       int16_t center_x;
-                       int16_t center_y;
-               } drop_zone;
-               
-               struct {
-                       uint8_t level;
-                       int16_t temple_x;
-                       int16_t temple_y;
-               } check_temple;
+               } harvest;
        };
 };
 
        };
 };
 
@@ -211,85 +84,46 @@ struct i2c_cmd_sensorboard_scanner_algo {
 /****/
 
 
 /****/
 
 
-#define I2C_REQ_MECHBOARD_STATUS 0x80
+#define I2C_REQ_COBBOARD_STATUS 0x80
 
 
-struct i2c_req_mechboard_status {
+struct i2c_req_cobboard_status {
        struct i2c_cmd_hdr hdr;
        struct i2c_cmd_hdr hdr;
-
-       int16_t pump_left1_current;
-       int16_t pump_left2_current;
+       int16_t sickle_left1_current;
 };
 
 };
 
-#define I2C_ANS_MECHBOARD_STATUS 0x81
+#define I2C_ANS_COBBOARD_STATUS 0x81
 
 
-struct i2c_ans_mechboard_status {
+struct i2c_ans_cobboard_status {
        struct i2c_cmd_hdr hdr;
        struct i2c_cmd_hdr hdr;
-       /* mode type are defined above: I2C_MECHBOARD_MODE_xxx */
+       /* mode type are defined above: I2C_COBBOARD_MODE_xxx */
        uint8_t mode;
 
        uint8_t mode;
 
-#define I2C_MECHBOARD_STATUS_F_READY         0x00
-#define I2C_MECHBOARD_STATUS_F_BUSY          0x01
-#define I2C_MECHBOARD_STATUS_F_EXCPT         0x02
+#define I2C_COBBOARD_STATUS_F_READY         0x00
+#define I2C_COBBOARD_STATUS_F_BUSY          0x01
+#define I2C_COBBOARD_STATUS_F_EXCPT         0x02
        uint8_t status;
 
        uint8_t status;
 
-       uint8_t lintel_count;
-
-       /* flag is there if column was taken by this pump. Note that
-        * we should also check ADC (current) to see if the column is
-        * still there. */
-#define I2C_MECHBOARD_COLUMN_L1              0x01
-#define I2C_MECHBOARD_COLUMN_L2              0x02
-#define I2C_MECHBOARD_COLUMN_R1              0x04
-#define I2C_MECHBOARD_COLUMN_R2              0x08
-       uint8_t column_flags;
-       
-       int16_t pump_left1;
-       int16_t pump_right1;
-       int16_t pump_left2;
-       int16_t pump_right2;
-
-#define I2C_MECHBOARD_CURRENT_COLUMN 85
-       int16_t pump_right1_current;
-       int16_t pump_right2_current;
-
-       uint16_t servo_lintel_left;
-       uint16_t servo_lintel_right;
+       uint8_t cob_count;
 };
 
 };
 
-#define I2C_REQ_SENSORBOARD_STATUS 0x82
+#define I2C_REQ_BALLBOARD_STATUS 0x82
 
 
-struct i2c_req_sensorboard_status {
+struct i2c_req_ballboard_status {
        struct i2c_cmd_hdr hdr;
        struct i2c_cmd_hdr hdr;
-
-       /* position sent by mainboard */
-       int16_t x;
-       int16_t y;
-       int16_t a;
-
-       /* PWM for pickup */
-       uint8_t enable_pickup_wheels;
 };
 
 };
 
-#define I2C_ANS_SENSORBOARD_STATUS 0x83
+#define I2C_ANS_BALLBOARD_STATUS 0x83
 
 
-struct i2c_ans_sensorboard_status {
+struct i2c_ans_ballboard_status {
        struct i2c_cmd_hdr hdr;
 
        struct i2c_cmd_hdr hdr;
 
-       uint8_t status;
-#define I2C_OPPONENT_NOT_THERE -1000
-       int16_t opponent_x;
-       int16_t opponent_y;
-       int16_t opponent_a;
-       int16_t opponent_d;
 
 
-#define I2C_SCAN_DONE 1
-#define I2C_SCAN_MAX_COLUMN 2
-       uint8_t scan_status;
+#define I2C_BALLBOARD_STATUS_F_READY         0x00
+#define I2C_BALLBOARD_STATUS_F_BUSY          0x01
+#define I2C_BALLBOARD_STATUS_F_EXCPT         0x02
+       uint8_t status;
 
 
-#define I2C_COLUMN_NO_DROPZONE -1
-       int8_t dropzone_h;
-       int16_t dropzone_x;
-       int16_t dropzone_y;
+       uint8_t ball_count;
 };
 
 #endif /* _I2C_PROTOCOL_H_ */
 };
 
 #endif /* _I2C_PROTOCOL_H_ */