Polytech school project. RICM4 students, see http://air.imag.fr/index.php/Projets-2016-2017-Station_de_pompage_connect%C3%A9e for more information
Fork of SX1276PingPong by
trame.cpp@16:1643ac8ba29f, 2017-04-01 (annotated)
- Committer:
- chevamax
- Date:
- Sat Apr 01 12:14:27 2017 +0000
- Revision:
- 16:1643ac8ba29f
Version finale
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chevamax | 16:1643ac8ba29f | 1 | #include "mbed.h" |
chevamax | 16:1643ac8ba29f | 2 | #include "trame.h" |
chevamax | 16:1643ac8ba29f | 3 | #include "debug.h" |
chevamax | 16:1643ac8ba29f | 4 | |
chevamax | 16:1643ac8ba29f | 5 | TrameData::TrameData(char idE, char idS, int nbNiveau, char etatP, char niveau, char batterie){ |
chevamax | 16:1643ac8ba29f | 6 | idEmetteur = idE; |
chevamax | 16:1643ac8ba29f | 7 | idStation = idS; |
chevamax | 16:1643ac8ba29f | 8 | if(nbNiveau >= 63){ |
chevamax | 16:1643ac8ba29f | 9 | nombreNiveau = 0x1F; |
chevamax | 16:1643ac8ba29f | 10 | }else{ |
chevamax | 16:1643ac8ba29f | 11 | nombreNiveau = (char) nbNiveau; |
chevamax | 16:1643ac8ba29f | 12 | } |
chevamax | 16:1643ac8ba29f | 13 | mettreAJourEtatPompe(etatP); |
chevamax | 16:1643ac8ba29f | 14 | mettreAJourNiveauCuve(niveau); |
chevamax | 16:1643ac8ba29f | 15 | mettreAJourNiveauBatterie(batterie); |
chevamax | 16:1643ac8ba29f | 16 | trame[4]=0; |
chevamax | 16:1643ac8ba29f | 17 | |
chevamax | 16:1643ac8ba29f | 18 | } |
chevamax | 16:1643ac8ba29f | 19 | char getiemebit(char c, int i) |
chevamax | 16:1643ac8ba29f | 20 | { |
chevamax | 16:1643ac8ba29f | 21 | return ((c>>(7-i)) & 1); |
chevamax | 16:1643ac8ba29f | 22 | } |
chevamax | 16:1643ac8ba29f | 23 | |
chevamax | 16:1643ac8ba29f | 24 | |
chevamax | 16:1643ac8ba29f | 25 | TrameData::TrameData(char* Buff){ |
chevamax | 16:1643ac8ba29f | 26 | idStation = Buff[0]; |
chevamax | 16:1643ac8ba29f | 27 | idEmetteur = Buff[1]; |
chevamax | 16:1643ac8ba29f | 28 | etatPompe = Buff[2]>>7; |
chevamax | 16:1643ac8ba29f | 29 | nombreNiveau = (Buff[2] & 0x7C) >> 2; |
chevamax | 16:1643ac8ba29f | 30 | niveauCuve = ((Buff[2] & 0x3)<<3) | ((Buff[3] & 0xE0)>>5); |
chevamax | 16:1643ac8ba29f | 31 | niveauBatterie = (Buff[3] & 0xF); |
chevamax | 16:1643ac8ba29f | 32 | trame[4]=0; |
chevamax | 16:1643ac8ba29f | 33 | |
chevamax | 16:1643ac8ba29f | 34 | /* |
chevamax | 16:1643ac8ba29f | 35 | |
chevamax | 16:1643ac8ba29f | 36 | |
chevamax | 16:1643ac8ba29f | 37 | |
chevamax | 16:1643ac8ba29f | 38 | //Etat Pompe |
chevamax | 16:1643ac8ba29f | 39 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 40 | if(getiemebit(etatPompe, i)){ |
chevamax | 16:1643ac8ba29f | 41 | debug("1"); |
chevamax | 16:1643ac8ba29f | 42 | } |
chevamax | 16:1643ac8ba29f | 43 | else{ |
chevamax | 16:1643ac8ba29f | 44 | debug("0"); |
chevamax | 16:1643ac8ba29f | 45 | } |
chevamax | 16:1643ac8ba29f | 46 | } |
chevamax | 16:1643ac8ba29f | 47 | debug("\r\n"); |
chevamax | 16:1643ac8ba29f | 48 | //nombreNiveau |
chevamax | 16:1643ac8ba29f | 49 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 50 | if(getiemebit(nombreNiveau, i)){ |
chevamax | 16:1643ac8ba29f | 51 | debug("1"); |
chevamax | 16:1643ac8ba29f | 52 | } |
chevamax | 16:1643ac8ba29f | 53 | else{ |
chevamax | 16:1643ac8ba29f | 54 | debug("0"); |
chevamax | 16:1643ac8ba29f | 55 | } |
chevamax | 16:1643ac8ba29f | 56 | } |
chevamax | 16:1643ac8ba29f | 57 | debug("\r\n niveauCuve \r\n"); |
chevamax | 16:1643ac8ba29f | 58 | //niveauCuve |
chevamax | 16:1643ac8ba29f | 59 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 60 | if(getiemebit(niveauCuve, i)){ |
chevamax | 16:1643ac8ba29f | 61 | debug("1"); |
chevamax | 16:1643ac8ba29f | 62 | } |
chevamax | 16:1643ac8ba29f | 63 | else{ |
chevamax | 16:1643ac8ba29f | 64 | debug("0"); |
chevamax | 16:1643ac8ba29f | 65 | } |
chevamax | 16:1643ac8ba29f | 66 | } |
chevamax | 16:1643ac8ba29f | 67 | |
chevamax | 16:1643ac8ba29f | 68 | debug("\r\n"); |
chevamax | 16:1643ac8ba29f | 69 | //niveauBatterie |
chevamax | 16:1643ac8ba29f | 70 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 71 | if(getiemebit(niveauBatterie, i)){ |
chevamax | 16:1643ac8ba29f | 72 | debug("1"); |
chevamax | 16:1643ac8ba29f | 73 | } |
chevamax | 16:1643ac8ba29f | 74 | else{ |
chevamax | 16:1643ac8ba29f | 75 | debug("0"); |
chevamax | 16:1643ac8ba29f | 76 | } |
chevamax | 16:1643ac8ba29f | 77 | }*/ |
chevamax | 16:1643ac8ba29f | 78 | } |
chevamax | 16:1643ac8ba29f | 79 | |
chevamax | 16:1643ac8ba29f | 80 | char TrameData::getIdEmetteur(){ |
chevamax | 16:1643ac8ba29f | 81 | return idEmetteur; |
chevamax | 16:1643ac8ba29f | 82 | } |
chevamax | 16:1643ac8ba29f | 83 | char TrameData::getIdStation(){ |
chevamax | 16:1643ac8ba29f | 84 | return idStation; |
chevamax | 16:1643ac8ba29f | 85 | } |
chevamax | 16:1643ac8ba29f | 86 | |
chevamax | 16:1643ac8ba29f | 87 | char* TrameData::creerTrame(){ |
chevamax | 16:1643ac8ba29f | 88 | trame[0] = idStation; |
chevamax | 16:1643ac8ba29f | 89 | trame[1] = idEmetteur; |
chevamax | 16:1643ac8ba29f | 90 | trame[2] = (etatPompe<<7)|(nombreNiveau<<2)|(niveauCuve>>3); |
chevamax | 16:1643ac8ba29f | 91 | trame[3] = (niveauCuve<<5)|(niveauBatterie); |
chevamax | 16:1643ac8ba29f | 92 | trame[4] = 0; |
chevamax | 16:1643ac8ba29f | 93 | |
chevamax | 16:1643ac8ba29f | 94 | /*char courant; |
chevamax | 16:1643ac8ba29f | 95 | for(int j=0; j<4;j++){ |
chevamax | 16:1643ac8ba29f | 96 | courant = trame[j]; |
chevamax | 16:1643ac8ba29f | 97 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 98 | if(getiemebit(courant, i)){ |
chevamax | 16:1643ac8ba29f | 99 | debug("1"); |
chevamax | 16:1643ac8ba29f | 100 | } |
chevamax | 16:1643ac8ba29f | 101 | else{ |
chevamax | 16:1643ac8ba29f | 102 | debug("0"); |
chevamax | 16:1643ac8ba29f | 103 | } |
chevamax | 16:1643ac8ba29f | 104 | } |
chevamax | 16:1643ac8ba29f | 105 | debug(" "); |
chevamax | 16:1643ac8ba29f | 106 | } |
chevamax | 16:1643ac8ba29f | 107 | debug("\r\n"); |
chevamax | 16:1643ac8ba29f | 108 | |
chevamax | 16:1643ac8ba29f | 109 | |
chevamax | 16:1643ac8ba29f | 110 | //Etat Pompe |
chevamax | 16:1643ac8ba29f | 111 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 112 | if(getiemebit(etatPompe, i)){ |
chevamax | 16:1643ac8ba29f | 113 | debug("1"); |
chevamax | 16:1643ac8ba29f | 114 | } |
chevamax | 16:1643ac8ba29f | 115 | else{ |
chevamax | 16:1643ac8ba29f | 116 | debug("0"); |
chevamax | 16:1643ac8ba29f | 117 | } |
chevamax | 16:1643ac8ba29f | 118 | } |
chevamax | 16:1643ac8ba29f | 119 | debug("\r\n"); |
chevamax | 16:1643ac8ba29f | 120 | //nombreNiveau |
chevamax | 16:1643ac8ba29f | 121 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 122 | if(getiemebit(nombreNiveau, i)){ |
chevamax | 16:1643ac8ba29f | 123 | debug("1"); |
chevamax | 16:1643ac8ba29f | 124 | } |
chevamax | 16:1643ac8ba29f | 125 | else{ |
chevamax | 16:1643ac8ba29f | 126 | debug("0"); |
chevamax | 16:1643ac8ba29f | 127 | } |
chevamax | 16:1643ac8ba29f | 128 | } |
chevamax | 16:1643ac8ba29f | 129 | debug("\r\n"); |
chevamax | 16:1643ac8ba29f | 130 | //niveauCuve |
chevamax | 16:1643ac8ba29f | 131 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 132 | if(getiemebit(niveauCuve, i)){ |
chevamax | 16:1643ac8ba29f | 133 | debug("1"); |
chevamax | 16:1643ac8ba29f | 134 | } |
chevamax | 16:1643ac8ba29f | 135 | else{ |
chevamax | 16:1643ac8ba29f | 136 | debug("0"); |
chevamax | 16:1643ac8ba29f | 137 | } |
chevamax | 16:1643ac8ba29f | 138 | } |
chevamax | 16:1643ac8ba29f | 139 | |
chevamax | 16:1643ac8ba29f | 140 | debug("\r\n"); |
chevamax | 16:1643ac8ba29f | 141 | //niveauBatterie |
chevamax | 16:1643ac8ba29f | 142 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 143 | if(getiemebit(niveauBatterie, i)){ |
chevamax | 16:1643ac8ba29f | 144 | debug("1"); |
chevamax | 16:1643ac8ba29f | 145 | } |
chevamax | 16:1643ac8ba29f | 146 | else{ |
chevamax | 16:1643ac8ba29f | 147 | debug("0"); |
chevamax | 16:1643ac8ba29f | 148 | } |
chevamax | 16:1643ac8ba29f | 149 | } |
chevamax | 16:1643ac8ba29f | 150 | |
chevamax | 16:1643ac8ba29f | 151 | //debug("%c ; %c ; %c\r\n",trame[0],trame[1],trame[2]); |
chevamax | 16:1643ac8ba29f | 152 | char courant; |
chevamax | 16:1643ac8ba29f | 153 | debug("%d\r\n", sizeof(char)); |
chevamax | 16:1643ac8ba29f | 154 | for(int j=0; j<3;j++){ |
chevamax | 16:1643ac8ba29f | 155 | courant = trame[j]; |
chevamax | 16:1643ac8ba29f | 156 | for(int i=0; i < 8; i++){ |
chevamax | 16:1643ac8ba29f | 157 | if(getiemebit(courant, i)){ |
chevamax | 16:1643ac8ba29f | 158 | debug("1"); |
chevamax | 16:1643ac8ba29f | 159 | } |
chevamax | 16:1643ac8ba29f | 160 | else{ |
chevamax | 16:1643ac8ba29f | 161 | debug("0"); |
chevamax | 16:1643ac8ba29f | 162 | } |
chevamax | 16:1643ac8ba29f | 163 | } |
chevamax | 16:1643ac8ba29f | 164 | debug(" "); |
chevamax | 16:1643ac8ba29f | 165 | } |
chevamax | 16:1643ac8ba29f | 166 | debug("\r\n"); |
chevamax | 16:1643ac8ba29f | 167 | */ |
chevamax | 16:1643ac8ba29f | 168 | |
chevamax | 16:1643ac8ba29f | 169 | return trame; |
chevamax | 16:1643ac8ba29f | 170 | } |
chevamax | 16:1643ac8ba29f | 171 | void TrameData::mettreAJourEtatPompe(char etatP){ |
chevamax | 16:1643ac8ba29f | 172 | etatPompe = etatP; |
chevamax | 16:1643ac8ba29f | 173 | } |
chevamax | 16:1643ac8ba29f | 174 | void TrameData::mettreAJourNiveauCuve(char niveau){ |
chevamax | 16:1643ac8ba29f | 175 | niveauCuve = niveau; |
chevamax | 16:1643ac8ba29f | 176 | } |
chevamax | 16:1643ac8ba29f | 177 | void TrameData::mettreAJourNiveauBatterie(char niveau){ |
chevamax | 16:1643ac8ba29f | 178 | niveauBatterie = niveau; |
chevamax | 16:1643ac8ba29f | 179 | } |