Polytech school project. RICM4 students, see http://air.imag.fr/index.php/Projets-2016-2017-Station_de_pompage_connect%C3%A9e for more information

Dependencies:   SX1272Lib mbed WakeUp

Fork of SX1272PingPong by Semtech

ordre.cpp

Committer:
chevamax
Date:
2017-04-01
Revision:
17:cce0eada6d82
Parent:
15:79a78f997f18

File content as of revision 17:cce0eada6d82:

#include "mbed.h"
#include "ordre.h"
#include "debug.h"

#define TEMPS_ATTENTE_REMPLISSAGE 10

char getiemebit1(char c, int i)
{
     return ((c>>(7-i)) & 1);
}

Ordre::Ordre(char* trameRecu){
    idEmetteur = trameRecu[1];
    idRecepteur = trameRecu[0];
    niveauCuve = trameRecu[2]>>3;
    ordreAFaire = (trameRecu[2]&0x4)>>2;
    /*debug("idEmetteur = ");
    for(int i=0; i < 8; i++){
        if(getiemebit1(trameRecu[1], i)){
            debug("1");
        }
        else{
            debug("0");
        }
    }
    debug("\r\n idRecepteur = ");
    for(int i=0; i < 8; i++){
        if(getiemebit1(trameRecu[0], i)){
            debug("1");
        }
        else{
            debug("0");
        }
    }
    debug("\r\n niveauCuve = ");
    for(int i=0; i < 8; i++){
        if(getiemebit1(niveauCuve, i)){
            debug("1");
        }
        else{
            debug("0");
        }
    }
    debug("\r\n ordreAfaire = ");
    for(int i=0; i < 8; i++){
        if(getiemebit1(ordreAFaire, i)){
            debug("1");
        }
        else{
            debug("0");
        }
    }
    debug("\r\n");*/
}

void Ordre::executerOrdre(Pompe p, Niveau n, char niveauCible){
    //TODO
    debug("Execution de l'ordre 10s \r\n");
    //wait(10);
    if(n.getNiveauCuve() < niveauCible){
        p.activerPompe();
    }
    while(n.getNiveauCuve() < niveauCible){
        wait(TEMPS_ATTENTE_REMPLISSAGE);
    }
    
    p.arreterPompe();
    debug("Fin execution ordre\r\n");
}

char Ordre::getIdEmetteur(){
    return idEmetteur;
}
char Ordre::getIdRecepteur(){
    return idRecepteur;
}
char Ordre::getNiveauCuve(){
    return niveauCuve;
}
char Ordre::getOrdreAFaire(){
    return ordreAFaire;
}