/*
- * Copyright Droids Corporation (2007)
- *
+ * Copyright Droids Corporation (2010)
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
#define _I2C_COMMANDS_H_
#define I2C_OPPONENT_NOT_THERE -1000
+#define I2C_BEACON_NOT_FOUND -1000
#define I2C_MAINBOARD_ADDR 1
#define I2C_COBBOARD_ADDR 2
#define I2C_RIGHT_SIDE 1
#define I2C_AUTO_SIDE 2
#define I2C_CENTER_SIDE 3
+#define I2C_NO_SIDE 4
#define I2C_COLOR_YELLOW 0
#define I2C_COLOR_BLUE 1
#define I2C_COBBOARD_MODE_HARVEST 0x01 /* harvest mode */
#define I2C_COBBOARD_MODE_EJECT 0x02 /* eject cobs */
#define I2C_COBBOARD_MODE_INIT 0x03 /* init state machine */
+#define I2C_COBBOARD_MODE_KICKSTAND_UP 0x04 /* help to climb the hill */
+#define I2C_COBBOARD_MODE_KICKSTAND_DOWN 0x05 /* help to climb the hill */
uint8_t mode;
};
#define I2C_BALLBOARD_MODE_OFF 0x01
#define I2C_BALLBOARD_MODE_HARVEST 0x02
#define I2C_BALLBOARD_MODE_EJECT 0x03
-#define I2C_BALLBOARD_MODE_PREP_L_FORK 0x04
-#define I2C_BALLBOARD_MODE_TAKE_L_FORK 0x05
-#define I2C_BALLBOARD_MODE_PREP_R_FORK 0x06
-#define I2C_BALLBOARD_MODE_TAKE_R_FORK 0x07
+#define I2C_BALLBOARD_MODE_PREP_FORK 0x04
+#define I2C_BALLBOARD_MODE_TAKE_FORK 0x05
uint8_t mode;
};
+#define I2C_CMD_BALLBOARD_SET_BEACON 0x04
+
+struct i2c_cmd_ballboard_start_beacon {
+ struct i2c_cmd_hdr hdr;
+ uint8_t enable;
+};
+
/****/
/* requests and their answers */
/****/
#define I2C_COBBOARD_SPK_DEPLOY 0x01 /* deploy the spickle */
#define I2C_COBBOARD_SPK_AUTOHARVEST 0x02 /* auto harvest the cobs */
#define I2C_COBBOARD_SPK_NO_MOVE 0x04 /* if enabled, don't change state */
+#define I2C_COBBOARD_SPK_WEAK 0x08 /* if enabled, current limit */
uint8_t lspickle;
uint8_t rspickle;
};
/* mode type are defined above: I2C_COBBOARD_MODE_xxx */
uint8_t mode;
-#define I2C_COBBOARD_STATUS_READY 0x00
-#define I2C_COBBOARD_STATUS_OFF 0x01
-#define I2C_COBBOARD_STATUS_LBUSY 0x02
-#define I2C_COBBOARD_STATUS_RBUSY 0x03
-#define I2C_COBBOARD_STATUS_EJECT 0x04
+#define I2C_COBBOARD_STATUS_READY 0x00
+#define I2C_COBBOARD_STATUS_OFF 0x01
+#define I2C_COBBOARD_STATUS_LBUSY 0x02
+#define I2C_COBBOARD_STATUS_RBUSY 0x03
+#define I2C_COBBOARD_STATUS_EJECT 0x04
+#define I2C_COBBOARD_STATUS_KICKSTAND_UP 0x05
+#define I2C_COBBOARD_STATUS_KICKSTAND_DOWN 0x06
uint8_t status;
uint8_t cob_count;
struct i2c_req_ballboard_status {
struct i2c_cmd_hdr hdr;
+
+ /* position sent by mainboard */
+ int16_t x;
+ int16_t y;
+ int16_t a;
};
#define I2C_ANS_BALLBOARD_STATUS 0x83
#define I2C_BALLBOARD_STATUS_F_EXCPT 0x02
uint8_t status;
+ int16_t opponent_x;
+ int16_t opponent_y;
+ int16_t opponent_a;
+ int16_t opponent_d;
+
uint8_t ball_count;
/* detection of cobs */