@@ -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