Ahmed_PFE_Embarq_300415

Dependencies:   C12832 LM75B mbed

Fork of Ahmed_Embarq_Prog by ahmed ahmed

Revision:
1:197b9fed6092
Parent:
0:05a20e3e3179
--- a/_GPS/DecMsgGPGGA.h	Tue Apr 21 10:16:20 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-void DecodageGPGGA(unsigned char Ldata)  //-------------------------------------------------------
-{
-    static unsigned short CommaNbr;
-    static unsigned short ii,jj;
-    GpsData.GGA_Valid  = 0;
-    CommaNbr = 0;
-    for(ii=0;ii<Ldata;ii++)
-    {
-     if(_MsgGPSRx[ii]==',')
-      {
-        _PosV[CommaNbr] = ii;
-        CommaNbr++;
-      }
-    }
-    if(CommaNbr<11)goto LabFin; //Vérification de la longueur du message GPGGA
-                                //par le nombre des vergules
-//UTC of position
-    //extraction du temps UTC
-    jj=0;//Identification de la position de la première virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if((_DL<9)||(_DL>10)) goto LabFin;//Vérification de la longueur du message de temps
-    Set_Data(jj);
-    Validation_StrToFloat(_DL);
-    if(_Npt  !=1)    goto LabFin;
-    if(_Pospt!=6)    goto LabFin;
-    //Vérification de Time "hhmmss"
-    _hh=10*(_Data[0]-48)+(_Data[1]-48);//Extraction de l'heur
-    _mm=10*(_Data[2]-48)+(_Data[3]-48);//Extraction des minutes
-    _ss=10*(_Data[4]-48)+(_Data[5]-48);//Extraction des secondes
-    if((_hh>24)||(_mm>59)||(_ss>59))goto LabFin;
-//Latitude of position
-    //extraction du Lattitude
-    jj=1;//Identification de la position de la deuxième virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if((_DL<9)||(_DL>10)) goto LabFin;//Vérification de la longueur du message de lattitude
-    Set_Data(jj);
-    Validation_StrToFloat(_DL);
-    if(_Npt  !=1)    goto LabFin;
-    if(_Pospt!=4)    goto LabFin;
-    
-    //Vérification du Lattitude "LatDegLatMin,LatMin1LatMin2"
-    _LatDeg =10*(_Data[0]-48)+(_Data[1]-48);//Extraction des degrés du lattitude
-    _LatMin =10*(_Data[2]-48)+(_Data[3]-48);//Extraction des minutes du lattitude
-    _LatMin1=10*(_Data[5]-48)+(_Data[6]-48);//Extraction des deux chiffres minutes après la virgule du lattitude
-    _LatMin2=10*(_Data[7]-48)+(_Data[8]-48);//Extraction des deux chiffres minutes après la virgule du lattitude
-    if((_LatDeg>90)||(_LatMin>59)||(_LatMin1>99)||(_LatMin2>99))goto LabFin;
-    //Vérification de la direction du Lattitude LatDir(N ou S)
-    jj=2;//Identification de la position de la troisième virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if(_DL!=1) goto LabFin;//Vérification de la longueur du message de direction de latittude
-    Set_Data(jj);
-    _LatDir=_Data[0];//Extraction de le direction du latitude
-    if((_LatDir!='N')&&(_LatDir!='S'))goto LabFin;
-    // 01 byte
-    //Longitude of position
-    //extraction de la Longitude
-    jj=3;//Identification de la position de la quatrième virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if((_DL<10)||(_DL>11)) goto LabFin;//Vérification de la longueur du message de la longitude
-    Set_Data(jj);
-    Validation_StrToFloat(_DL);
-    if(_Npt  !=1)    goto LabFin;
-    if(_Pospt!=5)    goto LabFin;
-    //Vérification du La Longitude "LongDegLongMin,LongMin1LongMin2"
-    _LongDeg =100*(_Data[0]-48)+10*(_Data[1]-48)+(_Data[2]-48);//Extraction des degrés de la longitude
-    _LongMin =10*(_Data[3]-48)+(_Data[4]-48);//Extraction des minutes de la longitude
-    _LongMin1=10*(_Data[6]-48)+(_Data[7]-48);//Extraction des deux chiffres minutes après la virgule de la longitude
-    _LongMin2=10*(_Data[8]-48)+(_Data[9]-48);//Extraction des deux chiffres minutes après la virgule de la longitude
-    if((_LongDeg>180)||(_LongMin>59)||(_LongMin1>99)||(_LongMin2>99))goto LabFin;
-    //Vérification de la direction du Longitude LonDir(E ou W)
-    jj=4;//Identification de la position de la cinquième virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if(_DL!=1) goto LabFin;//Vérification de la longueur du message de direction de la longitude
-    Set_Data(jj);
-    _LongDir=_Data[0];//Extraction de le direction de la longitude
-    if((_LongDir!='E')&&(_LongDir!='W'))goto LabFin;
-//GPS Quality indicator
-    jj=5;//Identification de la position de la sixième virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if(_DL!=1) goto LabFin;//Vérification de la longueur du message de l'ndicateur de qualité GPS
-    Set_Data(jj);
-    Validation_StrToFloat(_DL);
-    if(_Npt  !=0)    goto LabFin;
-    if(_Pospt!=0)    goto LabFin;
-    _Qual=_Data[0]-48;//Extraction de l'information de la qualité du MsgGPs
-    if((_Qual<1)||(_Qual>2))goto LabFin;
-//Antenna altitude above mean-sea-level "SignHMSLHMSL_HHMSL_L,HMSL_1HMSL_2"  .
-    jj=8;//Identification de la position de la neuvième virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if(_DL<3) goto LabFin;//Vérification de la longueur du message de l'altitude
-    Set_Data(jj);
-    _SignHMSL='+';
-    if(_Data[0]=='-')
-    {
-      _DL=_DL-1;
-      _SignHMSL='-';
-      for(ii=0;ii<_DL;ii++) _Data[ii]=_Data[ii+1];
-    }
-    Validation_StrToFloat(_DL);
-    if(_Npt   !=1)  goto LabFin;
-    if(_Pospt ==0)  goto LabFin;    
-    switch (_Pospt)
-     {
-      case 1: {_HMSL_L = (_Data[0]-48)                ; _HMSL_H = 0; break;}
-      case 2: {_HMSL_L = (_Data[1]-48)+10*(_Data[0]-48); _HMSL_H = 0; break;}
-      case 3: {_HMSL_L = (_Data[2]-48)+10*(_Data[1]-48); _HMSL_H = (_Data[0]-48); break;}
-      case 4: {_HMSL_L = (_Data[3]-48)+10*(_Data[2]-48); _HMSL_H = (_Data[1]-48)+10*(_Data[0]-48); break;}
-      default : break;
-    }
-    _DL=_DL-_Pospt-1; //La longure de chiffre après la virgule
-    switch (_DL)
-     {
-      case 1: {_HMSL_1 = (_Data[_Pospt+1]-48)                      ; _HMSL_2 = 0; break;}
-      case 2: {_HMSL_1 = (_Data[_Pospt+2]-48)+10*(_Data[_Pospt+1]-48); _HMSL_2 = 0; break;}
-      case 3: {_HMSL_1 = (_Data[_Pospt+2]-48)+10*(_Data[_Pospt+1]-48); _HMSL_2 = _Data[_Pospt+3]-48; break;}
-      case 4: {_HMSL_1 = (_Data[_Pospt+2]-48)+10*(_Data[_Pospt+1]-48); _HMSL_2 = 10*(_Data[_Pospt+3]-48)+_Data[_Pospt+4]-48; break;}
-      default : break;
-    }    
-    //Antenna height unit
-    jj=9;//Identification de la position de la dixième virgule dans le MsgGPS
-    _DL=Get_Length(jj);
-    if(_DL!=1) goto LabFin;//Vérification de la longueur du message de l'unité de la hauteur
-    Set_Data(jj);
-    _HUnite=_Data[0];//Extraction de l'unité de la hauteur
-    if((_HMSL_H>35)||(_HUnite!='M'))goto LabFin;
-    
-          GpsData.GGA_Valid = 1;
-          GpsData.hh = _hh;
-          GpsData.mm = _mm;
-          GpsData.ss = _ss;
-         //----------------------------------------------------------------------------
-          GpsData.LatDeg   = _LatDeg;
-          GpsData.LatMin   = _LatMin;
-          GpsData.Latmmmm  = _LatMin1*100+_LatMin2;
-          GpsData.LatDir   = _LatDir;
-         //-----------------------------------------------------------------------------
-          GpsData.LongDeg  = _LongDeg;
-          GpsData.LongMin  = _LongMin;
-          GpsData.Longmmmm = _LongMin1*100+_LongMin2;
-          GpsData.LongDir  = _LongDir;
-         //-----------------------------------------------------------------------------
-          GpsData.Qual     = _Qual;
-         //-----------------------------------------------------------------------------
-          GpsData.HMSL     = _HMSL_H*100+_HMSL_L;
-          GpsData.SignHMSL = _SignHMSL;
-          GpsData.HUnite   = _HUnite;
-LabFin:
-asm{NOP}
-}
\ No newline at end of file