routeur done

Dependencies:   mbed

Fork of APP4 by Évan Laverdure

routeur.cpp

Committer:
RufflesAllD
Date:
2014-02-24
Revision:
4:aac38b016952
Parent:
2:7515831bb5f5

File content as of revision 4:aac38b016952:

#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), 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)
{
    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;
}