Nico De Witte
/
i2c_mbed_trex_emulator
TRex motor controller emulator for Vives students
Diff: TRex.h
- Revision:
- 1:a525356bd830
- Parent:
- 0:17670db9a782
--- a/TRex.h Thu Nov 06 08:15:51 2014 +0000 +++ b/TRex.h Thu Nov 06 10:58:59 2014 +0000 @@ -1,11 +1,71 @@ #ifndef TREX_HEADER #define TREX_HEADER +enum StatusDataPacketFields { + STATUS_START = 0, + STATUS_ERROR = 1, + STATUS_BATTERY_MSB = 2, + STATUS_BATTERY_LSB = 3, + STATUS_LEFT_MOTOR_CURRENT_MSB = 4, + STATUS_LEFT_MOTOR_CURRENT_LSB = 5, + STATUS_LEFT_ENCODER_COUNT_MSB = 6, + STATUS_LEFT_ENCODER_COUNT_LSB = 7, + STATUS_RIGHT_MOTOR_CURRENT_MSB = 8, + STATUS_RIGHT_MOTOR_CURRENT_LSB = 9, + STATUS_RIGHT_ENCODER_COUNT_MSB = 10, + STATUS_RIGHT_ENCODER_COUNT_LSB = 11, + STATUS_ACCELEROMETER_X_MSB = 12, + STATUS_ACCELEROMETER_X_LSB = 13, + STATUS_ACCELEROMETER_Y_MSB = 14, + STATUS_ACCELEROMETER_Y_LSB = 15, + STATUS_ACCELEROMETER_Z_MSB = 16, + STATUS_ACCELEROMETER_Z_LSB = 17, + STATUS_IMPACT_X_MSB = 18, + STATUS_IMPACT_X_LSB = 19, + STATUS_IMPACT_Y_MSB = 20, + STATUS_IMPACT_Y_LSB = 21, + STATUS_IMPACT_Z_MSB = 22, + STATUS_IMPACT_Z_LSB = 23 +}; + +enum ErrorFlag { + CLEAR = 0, + START_BYTE = 1, + PWM_FREQ = 2, + SPEED = 4, + SERVO = 8, + IMPACT = 16, + BATTERY = 32, + I2C_ADDRESS = 64, + I2C_SPEED = 128 +}; + class TRex { - + public: + unsigned char startbyte; + unsigned char errorflags; + unsigned short batteryvoltage; + unsigned short leftmotorcurrent; + unsigned short rightmotorcurrent; + unsigned short leftencodercount; + unsigned short rightencodercount; + unsigned short accelero_x; + unsigned short accelero_y; + unsigned short accelero_z; + unsigned short impact_x; + unsigned short impact_y; + unsigned short impact_z; + + /* Number of bytes in the TREX byte array representation */ + const static int SIZE_TREX_DATA_PACKET = 24; public: /* Constructor */ TRex(); + void getStatusDataPacket(char * buffer); + void determineBatteryVoltage(void); + + private: + void toBigEndianByteArray(char * bytes, unsigned short value); };