- struct i2c_cmd_cobboard_set_mode buf;
- buf.hdr.cmd = I2C_CMD_COBBOARD_SET_MODE;
- buf.mode = I2C_COBBOARD_MODE_HARVEST;
- return i2c_send_command(I2C_COBBOARD_ADDR, (uint8_t*)&buf, sizeof(buf));
+ /* XXXXXXXXX bad bad bad */
+ uint8_t mode = cobboard.mode | I2C_COBBOARD_MODE_EJECT;
+ i2c_cobboard_set_mode(mode);
+ time_wait_ms(500);
+ mode = cobboard.mode & (~I2C_COBBOARD_MODE_EJECT);
+ i2c_cobboard_set_mode(mode);
+ return 0;
+}
+
+int8_t i2c_cobboard_mode_harvest(uint8_t side)
+{
+ uint8_t mode = cobboard.mode;
+
+ if (side == I2C_LEFT_SIDE) {
+ mode |= I2C_COBBOARD_MODE_L_DEPLOY;
+ mode |= I2C_COBBOARD_MODE_L_HARVEST;
+ }
+ else {
+ mode |= I2C_COBBOARD_MODE_R_DEPLOY;
+ mode |= I2C_COBBOARD_MODE_R_HARVEST;
+ }
+ return i2c_cobboard_set_mode(mode);
+}
+
+int8_t i2c_cobboard_mode_deploy(uint8_t side)
+{
+ uint8_t mode = cobboard.mode;
+
+ if (side == I2C_LEFT_SIDE) {
+ mode &= ~(I2C_COBBOARD_MODE_L_DEPLOY | I2C_COBBOARD_MODE_L_HARVEST);
+ mode |= I2C_COBBOARD_MODE_L_DEPLOY;
+ }
+ else {
+ mode &= ~(I2C_COBBOARD_MODE_R_DEPLOY | I2C_COBBOARD_MODE_R_HARVEST);
+ mode |= I2C_COBBOARD_MODE_R_DEPLOY;
+ }
+ return i2c_cobboard_set_mode(mode);
+}
+
+int8_t i2c_cobboard_mode_pack(uint8_t side)
+{
+ uint8_t mode = cobboard.mode;
+
+ if (side == I2C_LEFT_SIDE)
+ mode &= ~(I2C_COBBOARD_MODE_L_DEPLOY | I2C_COBBOARD_MODE_L_HARVEST);
+ else
+ mode &= ~(I2C_COBBOARD_MODE_R_DEPLOY | I2C_COBBOARD_MODE_R_HARVEST);
+ return i2c_cobboard_set_mode(mode);