+ while (state_want_exit() == 0) {
+
+ /* init */
+ if (INIT(state_mode)) {
+ state_mode &= (~I2C_COBBOARD_MODE_INIT);
+ state_init();
+ }
+
+ /* pack/deply spickles, enable/disable roller */
+ if (L_DEPLOY(state_mode)) {
+ spickle_deploy(I2C_LEFT_SIDE);
+ left_cobroller_on();
+ }
+ else {
+ spickle_pack(I2C_LEFT_SIDE);
+ left_cobroller_off();
+ }
+ if (R_DEPLOY(state_mode)) {
+ spickle_deploy(I2C_RIGHT_SIDE);
+ right_cobroller_on();
+ }
+ else {
+ spickle_pack(I2C_RIGHT_SIDE);
+ right_cobroller_off();
+ }
+
+ /* harvest */
+ if (L_DEPLOY(state_mode) && L_HARVEST(state_mode))
+ state_do_harvest(I2C_LEFT_SIDE);
+ if (R_DEPLOY(state_mode) && R_HARVEST(state_mode))
+ state_do_harvest(I2C_RIGHT_SIDE);
+
+ /* eject */
+ if (EJECT(state_mode)) {
+ state_mode &= (~I2C_COBBOARD_MODE_EJECT);
+ state_do_eject();
+ }