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

Committer:
rattokiller
Date:
Sun Nov 05 14:20:26 2017 +0000
Revision:
0:a9753886e1e0
librerie utili

Who changed what in which revision?

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