Évan Laverdure
/
APP4
routeur done
Fork of APP4 by
Diff: routeur.cpp
- Revision:
- 4:aac38b016952
- Parent:
- 2:7515831bb5f5
--- a/routeur.cpp Mon Feb 24 15:40:33 2014 +0000 +++ b/routeur.cpp Mon Feb 24 19:06:11 2014 +0000 @@ -1,6 +1,84 @@ #include "routeur.hpp" +const char COORD_ADRESS[8] = {0x00, 0x13, 0xA2, 0x00, 0x40, 0x0A, 0x2F, 0xB3}; + Routeur::Routeur(PinName _tx, PinName _rx) : - trame(_tx, _rx) + trame(_tx, _rx), accel(p9, p10), piton(p30) +{ + DigitalOut reset(p8); + + reset = 0; + wait(0.4); + reset = 1; + wait(4); +} + +void Routeur::initAccel() +{ + // Mise de l'accéléromètre en standby + writeRegister(CTRL_REG1, 0x10); + + // Set offset de l'accéléromètre + writeRegister(0x31, 0xEE); + + // activate de l'accéléromètre + char c; + readRegister(CTRL_REG1, &c); + writeRegister(CTRL_REG1, c | 0x01); +} + +void Routeur::sendSwitchValue() +{ + switchValue[0] = piton; + + trame.sendTransmitRequest(COORD_ADRESS, switchValue, 1); +} + +void Routeur::sendAccelValues() +{ + int ack = readRegisters(OUT_X_MSB, 6, accelValues); + + trame.sendTransmitRequest(COORD_ADRESS, accelValues, 6); +} + +int Routeur::readRegister(char reg, char* data) { -} \ No newline at end of file + int ack = 0; + accel.start(); + ack = accel.write(DATA_REG_W); + ack = accel.write(reg); + accel.start(); + ack = accel.write(DATA_REG_R); + data[0] = accel.read(0); + accel.stop(); + + return ack; +} + +int Routeur::readRegisters(char reg, int range, char* data) +{ + int ack = 0; + accel.start(); + ack = accel.write(DATA_REG_W); + ack = accel.write(reg); + accel.start(); + ack = accel.write(DATA_REG_R); + for (int i = 0; i < range - 1; i++) + data[i] = accel.read(1); + data[range - 1] = accel.read(0); + accel.stop(); + + return ack; +} + +int Routeur::writeRegister(char reg, char data) +{ + int ack = 0; + accel.start(); + ack = accel.write(DATA_REG_W); + ack = accel.write(reg); + ack = accel.write(data); + accel.stop(); + + return ack; +}