-#define I2C_CMD_MECHBOARD_SET_MODE 0x02
-
-struct i2c_cmd_mechboard_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
- 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