routeur done

Dependencies:   mbed

Fork of APP4 by Évan Laverdure

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers routeur.cpp Source File

routeur.cpp

00001 #include "routeur.hpp"
00002 
00003 const char COORD_ADRESS[8] = {0x00, 0x13, 0xA2, 0x00, 0x40, 0x0A, 0x2F, 0xB3};
00004 
00005 Routeur::Routeur(PinName _tx, PinName _rx) :
00006     trame(_tx, _rx), accel(p9, p10), piton(p30)
00007 {
00008     DigitalOut reset(p8);
00009     
00010     reset = 0;
00011     wait(0.4);
00012     reset = 1;
00013     wait(4);
00014 }
00015 
00016 void Routeur::initAccel()
00017 {
00018     // Mise de l'accéléromètre en standby
00019     writeRegister(CTRL_REG1, 0x10);
00020     
00021     // Set offset de l'accéléromètre
00022     writeRegister(0x31, 0xEE);
00023     
00024     // activate de l'accéléromètre
00025     char c;
00026     readRegister(CTRL_REG1, &c);
00027     writeRegister(CTRL_REG1, c | 0x01);
00028 }
00029 
00030 void Routeur::sendSwitchValue()
00031 {
00032     switchValue[0] = piton;
00033     
00034     trame.sendTransmitRequest(COORD_ADRESS, switchValue, 1);
00035 }
00036 
00037 void Routeur::sendAccelValues()
00038 {
00039     int ack = readRegisters(OUT_X_MSB, 6, accelValues);
00040     
00041     trame.sendTransmitRequest(COORD_ADRESS, accelValues, 6);
00042 }
00043 
00044 int Routeur::readRegister(char reg, char* data)
00045 {
00046     int ack = 0;
00047     accel.start();
00048     ack = accel.write(DATA_REG_W);
00049     ack = accel.write(reg);
00050     accel.start();
00051     ack = accel.write(DATA_REG_R);
00052     data[0] = accel.read(0);
00053     accel.stop();
00054     
00055     return ack;
00056 }
00057 
00058 int Routeur::readRegisters(char reg, int range, char* data)
00059 {
00060     int ack = 0;
00061     accel.start();
00062     ack = accel.write(DATA_REG_W);
00063     ack = accel.write(reg);
00064     accel.start();
00065     ack = accel.write(DATA_REG_R);
00066     for (int i = 0; i < range - 1; i++)
00067         data[i] = accel.read(1);
00068     data[range - 1] = accel.read(0);
00069     accel.stop();
00070     
00071     return ack;
00072 }
00073 
00074 int Routeur::writeRegister(char reg, char data)
00075 {
00076     int ack = 0;
00077     accel.start();
00078     ack = accel.write(DATA_REG_W);
00079     ack = accel.write(reg);
00080     ack = accel.write(data);
00081     accel.stop();
00082     
00083     return ack;
00084 }