X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fcommon%2Fi2c_commands.h;h=35605b8b54eceb3d3cc902fbd3f4b9334752243e;hp=fdb5d4910d8898dc78b3140f76ef12b154101e4f;hb=8d6a47e9e21a9a31f4bc12d32fb3d11091a4b305;hpb=821f753c0f88aff895d9feae59c442a6c446f96b diff --git a/projects/microb2010/common/i2c_commands.h b/projects/microb2010/common/i2c_commands.h index fdb5d49..35605b8 100644 --- a/projects/microb2010/common/i2c_commands.h +++ b/projects/microb2010/common/i2c_commands.h @@ -23,19 +23,17 @@ #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_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_AUTOBUILD_DEFAULT_DIST 210 - 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; -#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 { - } 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; - - 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; - /* mode type are defined above: I2C_MECHBOARD_MODE_xxx */ + /* mode type are defined above: I2C_COBBOARD_MODE_xxx */ 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 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; - - /* 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; - 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_ */