main_imu, MPU6050 , racolta_dati sono per il funzionamento dell' accelerometro. my_img_sd è una libreria per gestire i dati su un sd sulla quale vengono forniti solamente le funzioni di lettura e scrittura a blocchi i file trasmetti sono la definizione e implementazione delle funzioni del protoccolo per la gestione dell' invio dei dati con il relativo formato
Dependencies: mbed
trasmetti.cpp@0:a9753886e1e0, 2017-11-05 (annotated)
- Committer:
- rattokiller
- Date:
- Sun Nov 05 14:20:26 2017 +0000
- Revision:
- 0:a9753886e1e0
librerie utili
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rattokiller | 0:a9753886e1e0 | 1 | #define tra_cpp |
rattokiller | 0:a9753886e1e0 | 2 | #include "trasmetti.h" |
rattokiller | 0:a9753886e1e0 | 3 | #include <cstring> |
rattokiller | 0:a9753886e1e0 | 4 | //#include <iostream> |
rattokiller | 0:a9753886e1e0 | 5 | |
rattokiller | 0:a9753886e1e0 | 6 | namespace mydati{ |
rattokiller | 0:a9753886e1e0 | 7 | |
rattokiller | 0:a9753886e1e0 | 8 | |
rattokiller | 0:a9753886e1e0 | 9 | |
rattokiller | 0:a9753886e1e0 | 10 | bool trasmetti::ins_in_testa(pacco* d,char priorita){ |
rattokiller | 0:a9753886e1e0 | 11 | coda* app; |
rattokiller | 0:a9753886e1e0 | 12 | app =new coda; |
rattokiller | 0:a9753886e1e0 | 13 | if(!app)return false; |
rattokiller | 0:a9753886e1e0 | 14 | app->dato=d; |
rattokiller | 0:a9753886e1e0 | 15 | app->priorita=priorita; |
rattokiller | 0:a9753886e1e0 | 16 | n++; |
rattokiller | 0:a9753886e1e0 | 17 | app->suc=testa; |
rattokiller | 0:a9753886e1e0 | 18 | testa=app; |
rattokiller | 0:a9753886e1e0 | 19 | delete [] d->txt; |
rattokiller | 0:a9753886e1e0 | 20 | return true; |
rattokiller | 0:a9753886e1e0 | 21 | |
rattokiller | 0:a9753886e1e0 | 22 | } |
rattokiller | 0:a9753886e1e0 | 23 | bool trasmetti::ins_in_coda(pacco* d,char priorita){ |
rattokiller | 0:a9753886e1e0 | 24 | |
rattokiller | 0:a9753886e1e0 | 25 | coda* app; |
rattokiller | 0:a9753886e1e0 | 26 | app =new coda; |
rattokiller | 0:a9753886e1e0 | 27 | if(!app)return false; |
rattokiller | 0:a9753886e1e0 | 28 | // pc.printf("funzione ins coda 1 \r\n"); |
rattokiller | 0:a9753886e1e0 | 29 | |
rattokiller | 0:a9753886e1e0 | 30 | app->dato=d; |
rattokiller | 0:a9753886e1e0 | 31 | |
rattokiller | 0:a9753886e1e0 | 32 | /* |
rattokiller | 0:a9753886e1e0 | 33 | app->dato=new pacco; |
rattokiller | 0:a9753886e1e0 | 34 | app->dato->n=d->n; |
rattokiller | 0:a9753886e1e0 | 35 | app->dato->txt=new char[d->n]; |
rattokiller | 0:a9753886e1e0 | 36 | strcpy(app->dato->txt,d->txt); |
rattokiller | 0:a9753886e1e0 | 37 | delete [] d->txt; |
rattokiller | 0:a9753886e1e0 | 38 | */ |
rattokiller | 0:a9753886e1e0 | 39 | |
rattokiller | 0:a9753886e1e0 | 40 | if(!n){testa=fine=app; n++;return true;} |
rattokiller | 0:a9753886e1e0 | 41 | //pc.printf("funzione ins coda 3 \r\n"); |
rattokiller | 0:a9753886e1e0 | 42 | fine->suc=app; |
rattokiller | 0:a9753886e1e0 | 43 | fine=app; |
rattokiller | 0:a9753886e1e0 | 44 | fine->suc=0; |
rattokiller | 0:a9753886e1e0 | 45 | n++; |
rattokiller | 0:a9753886e1e0 | 46 | return true; |
rattokiller | 0:a9753886e1e0 | 47 | }; |
rattokiller | 0:a9753886e1e0 | 48 | bool trasmetti::ins_priorita(pacco* d,char priorita){ |
rattokiller | 0:a9753886e1e0 | 49 | |
rattokiller | 0:a9753886e1e0 | 50 | coda* app; |
rattokiller | 0:a9753886e1e0 | 51 | app =new coda; |
rattokiller | 0:a9753886e1e0 | 52 | if(!app)return false; |
rattokiller | 0:a9753886e1e0 | 53 | app->dato=d; |
rattokiller | 0:a9753886e1e0 | 54 | |
rattokiller | 0:a9753886e1e0 | 55 | app->priorita=priorita; |
rattokiller | 0:a9753886e1e0 | 56 | |
rattokiller | 0:a9753886e1e0 | 57 | if(!n){app->suc=0;testa=fine=app; n++;return true;} |
rattokiller | 0:a9753886e1e0 | 58 | if(testa->priorita<priorita){n++;app->suc=testa; testa=app;return true;} |
rattokiller | 0:a9753886e1e0 | 59 | |
rattokiller | 0:a9753886e1e0 | 60 | coda* cerca = testa; |
rattokiller | 0:a9753886e1e0 | 61 | if(n!=1){ bool tr =true; |
rattokiller | 0:a9753886e1e0 | 62 | while(cerca->suc->suc!=0&&tr) |
rattokiller | 0:a9753886e1e0 | 63 | if(cerca->suc->priorita>=priorita) |
rattokiller | 0:a9753886e1e0 | 64 | { |
rattokiller | 0:a9753886e1e0 | 65 | cerca=cerca->suc; |
rattokiller | 0:a9753886e1e0 | 66 | } |
rattokiller | 0:a9753886e1e0 | 67 | else tr=false; |
rattokiller | 0:a9753886e1e0 | 68 | |
rattokiller | 0:a9753886e1e0 | 69 | app->suc=cerca->suc; |
rattokiller | 0:a9753886e1e0 | 70 | cerca->suc=app; |
rattokiller | 0:a9753886e1e0 | 71 | n++; |
rattokiller | 0:a9753886e1e0 | 72 | return true; |
rattokiller | 0:a9753886e1e0 | 73 | } |
rattokiller | 0:a9753886e1e0 | 74 | fine->suc=app; |
rattokiller | 0:a9753886e1e0 | 75 | fine=app; |
rattokiller | 0:a9753886e1e0 | 76 | fine->suc=0; |
rattokiller | 0:a9753886e1e0 | 77 | n++; |
rattokiller | 0:a9753886e1e0 | 78 | return true; |
rattokiller | 0:a9753886e1e0 | 79 | }; |
rattokiller | 0:a9753886e1e0 | 80 | |
rattokiller | 0:a9753886e1e0 | 81 | bool trasmetti::invio(){ // iovio i dati! |
rattokiller | 0:a9753886e1e0 | 82 | |
rattokiller | 0:a9753886e1e0 | 83 | if(!n)return false; |
rattokiller | 0:a9753886e1e0 | 84 | pacco* app; |
rattokiller | 0:a9753886e1e0 | 85 | extract(&app); |
rattokiller | 0:a9753886e1e0 | 86 | |
rattokiller | 0:a9753886e1e0 | 87 | if(!pc_trasmisione(app->n,app->txt))return false; |
rattokiller | 0:a9753886e1e0 | 88 | delete [] app->txt; |
rattokiller | 0:a9753886e1e0 | 89 | delete app; |
rattokiller | 0:a9753886e1e0 | 90 | |
rattokiller | 0:a9753886e1e0 | 91 | return true; |
rattokiller | 0:a9753886e1e0 | 92 | } |
rattokiller | 0:a9753886e1e0 | 93 | void trasmetti::extract(pacco** d){ |
rattokiller | 0:a9753886e1e0 | 94 | if(n!=0){ |
rattokiller | 0:a9753886e1e0 | 95 | |
rattokiller | 0:a9753886e1e0 | 96 | coda* app=testa; |
rattokiller | 0:a9753886e1e0 | 97 | *d=testa->dato; |
rattokiller | 0:a9753886e1e0 | 98 | testa=testa->suc; |
rattokiller | 0:a9753886e1e0 | 99 | n--; |
rattokiller | 0:a9753886e1e0 | 100 | |
rattokiller | 0:a9753886e1e0 | 101 | delete app; |
rattokiller | 0:a9753886e1e0 | 102 | } |
rattokiller | 0:a9753886e1e0 | 103 | |
rattokiller | 0:a9753886e1e0 | 104 | } |
rattokiller | 0:a9753886e1e0 | 105 | bool dati_imu::invia(char p){ |
rattokiller | 0:a9753886e1e0 | 106 | //da agiungere una stringa per il protocolla dei tipo dei dati... |
rattokiller | 0:a9753886e1e0 | 107 | //es #nomeclasse@dati |
rattokiller | 0:a9753886e1e0 | 108 | pacco* app; |
rattokiller | 0:a9753886e1e0 | 109 | app= new pacco; |
rattokiller | 0:a9753886e1e0 | 110 | app->n=nb_classe; |
rattokiller | 0:a9753886e1e0 | 111 | app->txt=new char[nb_classe+1]; |
rattokiller | 0:a9753886e1e0 | 112 | sprintf(app->txt,"A%03.0f%03.0f%03.0f%04.0f%04.0f%04.0f#%d",1000*ax+off_set_a,1000*ay+off_set_a,1000*az+off_set_a,10*gx+off_set_g,10*gy+off_set_g,10*gz+off_set_g,number()); |
rattokiller | 0:a9753886e1e0 | 113 | |
rattokiller | 0:a9753886e1e0 | 114 | |
rattokiller | 0:a9753886e1e0 | 115 | //app->txt=buffer; |
rattokiller | 0:a9753886e1e0 | 116 | /* |
rattokiller | 0:a9753886e1e0 | 117 | app->txt=new char[strlen(buffer)+1]; |
rattokiller | 0:a9753886e1e0 | 118 | //printf("ximu %d X \n",strlen(buffer)); |
rattokiller | 0:a9753886e1e0 | 119 | strcpy(app->txt,buffer); |
rattokiller | 0:a9753886e1e0 | 120 | */ |
rattokiller | 0:a9753886e1e0 | 121 | //*funzione se si vuole usare la trasmisione binaria |
rattokiller | 0:a9753886e1e0 | 122 | //memcpy((void*)app->txt,(void*)this,nb_classe); |
rattokiller | 0:a9753886e1e0 | 123 | |
rattokiller | 0:a9753886e1e0 | 124 | |
rattokiller | 0:a9753886e1e0 | 125 | |
rattokiller | 0:a9753886e1e0 | 126 | return telemetria.ins_in_coda(app,p); |
rattokiller | 0:a9753886e1e0 | 127 | } |
rattokiller | 0:a9753886e1e0 | 128 | |
rattokiller | 0:a9753886e1e0 | 129 | |
rattokiller | 0:a9753886e1e0 | 130 | |
rattokiller | 0:a9753886e1e0 | 131 | |
rattokiller | 0:a9753886e1e0 | 132 | bool estensimetro::invia(char p){ |
rattokiller | 0:a9753886e1e0 | 133 | pacco* app; |
rattokiller | 0:a9753886e1e0 | 134 | app= new pacco; |
rattokiller | 0:a9753886e1e0 | 135 | app->n=nb_classe; |
rattokiller | 0:a9753886e1e0 | 136 | app->txt=new char[nb_classe+1]; |
rattokiller | 0:a9753886e1e0 | 137 | sprintf(app->txt,"B%04.0f%04.0f%04.0f%04.0f#%d",ad,as,pd,ps,number()); |
rattokiller | 0:a9753886e1e0 | 138 | |
rattokiller | 0:a9753886e1e0 | 139 | |
rattokiller | 0:a9753886e1e0 | 140 | |
rattokiller | 0:a9753886e1e0 | 141 | return telemetria.ins_in_coda(app,p); |
rattokiller | 0:a9753886e1e0 | 142 | } |
rattokiller | 0:a9753886e1e0 | 143 | |
rattokiller | 0:a9753886e1e0 | 144 | bool ruota_fonica::invia(char p){ |
rattokiller | 0:a9753886e1e0 | 145 | pacco* app; |
rattokiller | 0:a9753886e1e0 | 146 | app= new pacco; |
rattokiller | 0:a9753886e1e0 | 147 | app->n=nb_classe; |
rattokiller | 0:a9753886e1e0 | 148 | app->txt=new char[nb_classe+1]; |
rattokiller | 0:a9753886e1e0 | 149 | |
rattokiller | 0:a9753886e1e0 | 150 | sprintf(app->txt,"C%04.0f%04.0f%04.0f%04.0f#%d",ad,as,pd,ps,number()); |
rattokiller | 0:a9753886e1e0 | 151 | //sprintf(app->txt,"C%04.0f%04.0f#%d",ad,as,pd,ps,number()); |
rattokiller | 0:a9753886e1e0 | 152 | |
rattokiller | 0:a9753886e1e0 | 153 | |
rattokiller | 0:a9753886e1e0 | 154 | return telemetria.ins_in_coda(app,p); |
rattokiller | 0:a9753886e1e0 | 155 | } |
rattokiller | 0:a9753886e1e0 | 156 | |
rattokiller | 0:a9753886e1e0 | 157 | bool motore::invia(char p){ |
rattokiller | 0:a9753886e1e0 | 158 | pacco* app; |
rattokiller | 0:a9753886e1e0 | 159 | app= new pacco; |
rattokiller | 0:a9753886e1e0 | 160 | app->n=nb_classe; |
rattokiller | 0:a9753886e1e0 | 161 | //char buffer[50]; |
rattokiller | 0:a9753886e1e0 | 162 | app->txt=new char[nb_classe+1]; |
rattokiller | 0:a9753886e1e0 | 163 | |
rattokiller | 0:a9753886e1e0 | 164 | |
rattokiller | 0:a9753886e1e0 | 165 | if(P_olio>10){pc.printf("errore olio troppo alto");P_olio=9.9;} |
rattokiller | 0:a9753886e1e0 | 166 | |
rattokiller | 0:a9753886e1e0 | 167 | if(velocita>10000){pc.printf("errore velocita troppo alta!");velocita=9999;} |
rattokiller | 0:a9753886e1e0 | 168 | //D 2000 7700 80800 9400 22 5#2 |
rattokiller | 0:a9753886e1e0 | 169 | sprintf(app->txt,"D%03d%03d%05.0f%04.0f%02.0f%d#%d",T_acqua,T_olio,RMP,velocita,10*P_olio,marcia,number()); |
rattokiller | 0:a9753886e1e0 | 170 | // pc.printf("funzione motore.invia \r\n"); |
rattokiller | 0:a9753886e1e0 | 171 | return telemetria.ins_in_coda(app,p); |
rattokiller | 0:a9753886e1e0 | 172 | } |
rattokiller | 0:a9753886e1e0 | 173 | bool allert::invia(const char* s){ |
rattokiller | 0:a9753886e1e0 | 174 | |
rattokiller | 0:a9753886e1e0 | 175 | |
rattokiller | 0:a9753886e1e0 | 176 | pacco* app; |
rattokiller | 0:a9753886e1e0 | 177 | app= new pacco; |
rattokiller | 0:a9753886e1e0 | 178 | app->n=strlen(s+1); |
rattokiller | 0:a9753886e1e0 | 179 | //app->txt=new char[app->n+1]; |
rattokiller | 0:a9753886e1e0 | 180 | app->txt=(char*)s; |
rattokiller | 0:a9753886e1e0 | 181 | |
rattokiller | 0:a9753886e1e0 | 182 | return telemetria.ins_in_testa(app); |
rattokiller | 0:a9753886e1e0 | 183 | } |
rattokiller | 0:a9753886e1e0 | 184 | } |
rattokiller | 0:a9753886e1e0 | 185 |