@@ -2709,72 +2709,71 @@ boolean SFE_UBLOX_GPS::getRELPOSNED(uint16_t maxWait)
27092709
27102710 return  (true );
27112711}
2712- boolean SFE_UBLOX_GPS::getEsfStatus  (uint16_t  maxWait)
2712+ boolean SFE_UBLOX_GPS::getEsfInfo  (uint16_t  maxWait)
27132713{
27142714 //  Requesting Data from the receiver
27152715 packetCfg.cls  = UBX_CLASS_ESF;
27162716 packetCfg.id  = UBX_ESF_STATUS;
27172717 packetCfg.len  = 0 ;
27182718 packetCfg.startingSpot  = 0 ;
27192719
2720-  if  (sendCommand (packetCfg, maxWait) ==  false )
2720+  if  (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
27212721 return  (false ); // If command send fails then bail
27222722
27232723 checkUblox ();
27242724
27252725 //  payload should be loaded. 
2726-  imuData.version  = extractByte (4 ); 
2727-  imuData.fusionMode  = extractByte (12 );
2728-  imuData.numSens  = extractByte (15 );
2726+  imuMeas.version  = extractByte (4 ); 
2727+  imuMeas.fusionMode  = extractByte (12 );
27292728
27302729 //  Individual Status Sensor in different function
27312730 return (true );
27322731}
27332732
27342733// 
2735- boolean SFE_UBLOX_GPS::getEsfInfo  (uint16_t  maxWait)
2734+ boolean SFE_UBLOX_GPS::getEsfMeas  (uint16_t  maxWait)
27362735{
27372736 packetCfg.cls  = UBX_CLASS_ESF;
27382737 packetCfg.id  = UBX_ESF_INS;
27392738 packetCfg.len  = 0 ;
27402739 packetCfg.startingSpot  = 0 ;
27412740
2742-  if  (sendCommand (packetCfg, maxWait) ==  false )
2741+  if  (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
27432742 return  (false ); // If command send fails then bail
27442743
27452744 checkUblox ();
27462745
27472746 //  Validity of each sensor value below 
27482747 uint32_t  validity = extractLong (0 ); 
27492748
2750-  imuData .xAngRateVald  = (validity && 0x0080 ) >> 8 ;
2751-  imuData .yAngRateVald  = (validity && 0x0100 ) >> 9 ; 
2752-  imuData .zAngRateVald  = (validity && 0x0200 ) >> 10 ; 
2753-  imuData .xAccelVald  = (validity && 0x0400 ) >> 11 ;
2754-  imuData .yAccelVald  = (validity && 0x0800 ) >> 12 ;
2755-  imuData .zAccelVald  = (validity && 0x1000 ) >> 13 ;
2749+  imuMeas .xAngRateVald  = (validity && 0x0080 ) >> 8 ;
2750+  imuMeas .yAngRateVald  = (validity && 0x0100 ) >> 9 ; 
2751+  imuMeas .zAngRateVald  = (validity && 0x0200 ) >> 10 ; 
2752+  imuMeas .xAccelVald  = (validity && 0x0400 ) >> 11 ;
2753+  imuMeas .yAccelVald  = (validity && 0x0800 ) >> 12 ;
2754+  imuMeas .zAccelVald  = (validity && 0x1000 ) >> 13 ;
27562755
2757-  imuData .xAngRate  = extractLong (12 ); //  deg/s
2758-  imuData .yAngRate  = extractLong (16 ); //  deg/s
2759-  imuData .zAngRate  = extractLong (20 ); //  deg/s
2756+  imuMeas .xAngRate  = extractLong (12 ); //  deg/s
2757+  imuMeas .yAngRate  = extractLong (16 ); //  deg/s
2758+  imuMeas .zAngRate  = extractLong (20 ); //  deg/s
27602759
2761-  imuData .xAccel  = extractLong (24 ); //  m/s
2762-  imuData .yAccel  = extractLong (28 ); //  m/s
2763-  imuData .zAccel  = extractLong (32 ); //  m/s
2760+  imuMeas .xAccel  = extractLong (24 ); //  m/s
2761+  imuMeas .yAccel  = extractLong (28 ); //  m/s
2762+  imuMeas .zAccel  = extractLong (32 ); //  m/s
27642763
27652764 return (true );
27662765}
27672766
27682767// 
2769- boolean SFE_UBLOX_GPS::getEsfMeas  (uint16_t  maxWait)
2768+ boolean SFE_UBLOX_GPS::getEsfDataInfo  (uint16_t  maxWait)
27702769{ 
27712770
27722771 packetCfg.cls  = UBX_CLASS_ESF;
27732772 packetCfg.id  = UBX_ESF_MEAS;
27742773 packetCfg.len  = 0 ;
27752774 packetCfg.startingSpot  = 0 ;
27762775
2777-  if  (sendCommand (packetCfg, maxWait) ==  false )
2776+  if  (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
27782777 return  (false ); // If command send fails then bail
27792778
27802779 checkUblox ();
@@ -2788,19 +2787,20 @@ boolean SFE_UBLOX_GPS::getEsfMeas(uint16_t maxWait)
27882787 uint8_t  numMeas = (flags && 0x1000 ) >> 15 ;
27892788
27902789 uint8_t  byteOffset = 4 ;
2790+  uint8_t  numSens = extractByte (15 );
27912791
2792-  for (uint8_t  i=0 ; i<imuData. numSens ; i++){
2792+  for (uint8_t  i=0 ; i<numSens; i++){
27932793
27942794 uint32_t  bitField = extractLong (4  + byteOffset * i);
2795-  imuData .dataType [i] = (bitField && 0xFF000000 ) >> 23 ; 
2796-  imuData .data [i] = (bitField && 0xFFFFFF );
2797-  imuData .dataTStamp [i] = extractLong (8  + byteOffset * i); 
2795+  imuMeas .dataType [i] = (bitField && 0xFF000000 ) >> 23 ; 
2796+  imuMeas .data [i] = (bitField && 0xFFFFFF );
2797+  imuMeas .dataTStamp [i] = extractLong (8  + byteOffset * i); 
27982798
27992799 }
28002800
28012801}
28022802
2803- boolean SFE_UBLOX_GPS::getEsfRaw  (uint16_t  maxWait)
2803+ boolean SFE_UBLOX_GPS::getEsfRawDataInfo  (uint16_t  maxWait)
28042804{
28052805
28062806 //  Need to know the number of sensor to get the correct data
@@ -2810,36 +2810,38 @@ boolean SFE_UBLOX_GPS::getEsfRaw(uint16_t maxWait)
28102810 packetCfg.len  = 0 ;
28112811 packetCfg.startingSpot  = 0 ;
28122812
2813-  if  (sendCommand (packetCfg, maxWait) ==  false )
2813+  if  (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
28142814 return  (false ); // If command send fails then bail
28152815
28162816 checkUblox ();
28172817
28182818 uint8_t  byteOffset = 8 ;
2819+  uint8_t  numSens = extractByte (15 );
28192820
2820-  for (uint8_t  i=0 ; i<imuData. numSens ; i++){
2821+  for (uint8_t  i=0 ; i<numSens; i++){
28212822
28222823 uint32_t  bitField = extractLong (4  + byteOffset * i);
2823-  imuData .rawDataType [i] = (bitField && 0xFF000000 ) >> 23 ; 
2824-  imuData .rawData [i] = (bitField && 0xFFFFFF );
2825-  imuData .rawTStamp [i] = extractLong (8  + byteOffset * i); 
2824+  imuMeas .rawDataType [i] = (bitField && 0xFF000000 ) >> 23 ; 
2825+  imuMeas .rawData [i] = (bitField && 0xFFFFFF );
2826+  imuMeas .rawTStamp [i] = extractLong (8  + byteOffset * i); 
28262827
28272828 }
28282829}
28292830
2830- boolean  SFE_UBLOX_GPS::getSensorStatus  (uint8_t  sensor)
2831+ sfe_ublox_status_e  SFE_UBLOX_GPS::getSensState  (uint8_t  sensor,  uint16_t  maxWait )
28312832{
28322833
28332834 packetCfg.cls  = UBX_CLASS_ESF;
28342835 packetCfg.id  = UBX_ESF_STATUS;
28352836 packetCfg.len  = 0 ;
28362837 packetCfg.startingSpot  = 0 ;
28372838
2838-  if  (sendCommand (packetCfg, maxWait) == false )
2839-  return  (false ); // If command send fails then bail
2839+  if  (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED)
2840+  return  (SFE_UBLOX_STATUS_FAIL); // If command send fails then bail
2841+ 
2842+  ubloxSen.numSens  = extractByte (15 );
28402843
2841-  uint8_t  numberSens = extactByte (15 )
2842-  if  (sensor > numberSens)
2844+  if  (sensor > ubloxSen.numSens )
28432845 return  SFE_UBLOX_STATUS_OUT_OF_RANGE;
28442846
28452847 checkUblox ();
@@ -2851,7 +2853,7 @@ boolean SFE_UBLOX_GPS::getSensorStatus(uint8_t sensor)
28512853
28522854 uint8_t  sensorFieldOne = extractByte (16  + offset * i); 
28532855 uint8_t  sensorFieldTwo = extractByte (17  + offset * i); 
2854-  ublox .freq  = extractByte (18  + offset * i); 
2856+  ubloxSen .freq  = extractByte (18  + offset * i); 
28552857 uint8_t  sensorFieldThr = extractByte (19  + offset * i); 
28562858
28572859 ubloxSen.senType  = (sensorFieldOne && 0x10 ) >> 5 ;
@@ -2866,6 +2868,8 @@ boolean SFE_UBLOX_GPS::getSensorStatus(uint8_t sensor)
28662868 ubloxSen.missMeas  = (sensorFieldThr && 0x04 ) >> 2 ; 
28672869 ubloxSen.noisyMeas  = (sensorFieldThr && 0x08 ) >> 3 ; 
28682870 }
2871+ 
2872+  return  SFE_UBLOX_STATUS_SUCCESS;
28692873
28702874}
28712875
0 commit comments