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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ordre.cpp Source File

ordre.cpp

00001 #include "mbed.h"
00002 #include "ordre.h"
00003 #include "debug.h"
00004 
00005 #define TEMPS_ATTENTE_REMPLISSAGE 10
00006 
00007 char getiemebit1(char c, int i)
00008 {
00009      return ((c>>(7-i)) & 1);
00010 }
00011 
00012 Ordre::Ordre(char* trameRecu){
00013     idEmetteur = trameRecu[1];
00014     idRecepteur = trameRecu[0];
00015     niveauCuve = trameRecu[2]>>3;
00016     ordreAFaire = (trameRecu[2]&0x4)>>2;
00017     /*debug("idEmetteur = ");
00018     for(int i=0; i < 8; i++){
00019         if(getiemebit1(trameRecu[1], i)){
00020             debug("1");
00021         }
00022         else{
00023             debug("0");
00024         }
00025     }
00026     debug("\r\n idRecepteur = ");
00027     for(int i=0; i < 8; i++){
00028         if(getiemebit1(trameRecu[0], i)){
00029             debug("1");
00030         }
00031         else{
00032             debug("0");
00033         }
00034     }
00035     debug("\r\n niveauCuve = ");
00036     for(int i=0; i < 8; i++){
00037         if(getiemebit1(niveauCuve, i)){
00038             debug("1");
00039         }
00040         else{
00041             debug("0");
00042         }
00043     }
00044     debug("\r\n ordreAfaire = ");
00045     for(int i=0; i < 8; i++){
00046         if(getiemebit1(ordreAFaire, i)){
00047             debug("1");
00048         }
00049         else{
00050             debug("0");
00051         }
00052     }
00053     debug("\r\n");*/
00054 }
00055 
00056 void Ordre::executerOrdre(Pompe p, Niveau n, char niveauCible){
00057     //TODO
00058     debug("Execution de l'ordre 10s \r\n");
00059     //wait(10);
00060     if(n.getNiveauCuve() < niveauCible){
00061         p.activerPompe();
00062     }
00063     while(n.getNiveauCuve() < niveauCible){
00064         wait(TEMPS_ATTENTE_REMPLISSAGE);
00065     }
00066     
00067     p.arreterPompe();
00068     debug("Fin execution ordre\r\n");
00069 }
00070 
00071 char Ordre::getIdEmetteur(){
00072     return idEmetteur;
00073 }
00074 char Ordre::getIdRecepteur(){
00075     return idRecepteur;
00076 }
00077 char Ordre::getNiveauCuve(){
00078     return niveauCuve;
00079 }
00080 char Ordre::getOrdreAFaire(){
00081     return ordreAFaire;
00082 }