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:   SX1276Lib mbed

Fork of SX1276PingPong by Semtech

Committer:
chevamax
Date:
Sat Apr 01 12:14:27 2017 +0000
Revision:
16:1643ac8ba29f
Version finale

Who changed what in which revision?

UserRevisionLine numberNew 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 }