@@ -2709,72 +2709,71 @@ boolean SFE_UBLOX_GPS::getRELPOSNED(uint16_t maxWait)
2709
2709
2710
2710
return (true );
2711
2711
}
2712
- boolean SFE_UBLOX_GPS::getEsfStatus (uint16_t maxWait)
2712
+ boolean SFE_UBLOX_GPS::getEsfInfo (uint16_t maxWait)
2713
2713
{
2714
2714
// Requesting Data from the receiver
2715
2715
packetCfg.cls = UBX_CLASS_ESF;
2716
2716
packetCfg.id = UBX_ESF_STATUS;
2717
2717
packetCfg.len = 0 ;
2718
2718
packetCfg.startingSpot = 0 ;
2719
2719
2720
- if (sendCommand (packetCfg, maxWait) == false )
2720
+ if (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
2721
2721
return (false ); // If command send fails then bail
2722
2722
2723
2723
checkUblox ();
2724
2724
2725
2725
// 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 );
2729
2728
2730
2729
// Individual Status Sensor in different function
2731
2730
return (true );
2732
2731
}
2733
2732
2734
2733
//
2735
- boolean SFE_UBLOX_GPS::getEsfInfo (uint16_t maxWait)
2734
+ boolean SFE_UBLOX_GPS::getEsfMeas (uint16_t maxWait)
2736
2735
{
2737
2736
packetCfg.cls = UBX_CLASS_ESF;
2738
2737
packetCfg.id = UBX_ESF_INS;
2739
2738
packetCfg.len = 0 ;
2740
2739
packetCfg.startingSpot = 0 ;
2741
2740
2742
- if (sendCommand (packetCfg, maxWait) == false )
2741
+ if (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
2743
2742
return (false ); // If command send fails then bail
2744
2743
2745
2744
checkUblox ();
2746
2745
2747
2746
// Validity of each sensor value below
2748
2747
uint32_t validity = extractLong (0 );
2749
2748
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 ;
2756
2755
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
2760
2759
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
2764
2763
2765
2764
return (true );
2766
2765
}
2767
2766
2768
2767
//
2769
- boolean SFE_UBLOX_GPS::getEsfMeas (uint16_t maxWait)
2768
+ boolean SFE_UBLOX_GPS::getEsfDataInfo (uint16_t maxWait)
2770
2769
{
2771
2770
2772
2771
packetCfg.cls = UBX_CLASS_ESF;
2773
2772
packetCfg.id = UBX_ESF_MEAS;
2774
2773
packetCfg.len = 0 ;
2775
2774
packetCfg.startingSpot = 0 ;
2776
2775
2777
- if (sendCommand (packetCfg, maxWait) == false )
2776
+ if (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
2778
2777
return (false ); // If command send fails then bail
2779
2778
2780
2779
checkUblox ();
@@ -2788,19 +2787,20 @@ boolean SFE_UBLOX_GPS::getEsfMeas(uint16_t maxWait)
2788
2787
uint8_t numMeas = (flags && 0x1000 ) >> 15 ;
2789
2788
2790
2789
uint8_t byteOffset = 4 ;
2790
+ uint8_t numSens = extractByte (15 );
2791
2791
2792
- for (uint8_t i=0 ; i<imuData. numSens ; i++){
2792
+ for (uint8_t i=0 ; i<numSens; i++){
2793
2793
2794
2794
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);
2798
2798
2799
2799
}
2800
2800
2801
2801
}
2802
2802
2803
- boolean SFE_UBLOX_GPS::getEsfRaw (uint16_t maxWait)
2803
+ boolean SFE_UBLOX_GPS::getEsfRawDataInfo (uint16_t maxWait)
2804
2804
{
2805
2805
2806
2806
// Need to know the number of sensor to get the correct data
@@ -2810,36 +2810,38 @@ boolean SFE_UBLOX_GPS::getEsfRaw(uint16_t maxWait)
2810
2810
packetCfg.len = 0 ;
2811
2811
packetCfg.startingSpot = 0 ;
2812
2812
2813
- if (sendCommand (packetCfg, maxWait) == false )
2813
+ if (sendCommand (packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED )
2814
2814
return (false ); // If command send fails then bail
2815
2815
2816
2816
checkUblox ();
2817
2817
2818
2818
uint8_t byteOffset = 8 ;
2819
+ uint8_t numSens = extractByte (15 );
2819
2820
2820
- for (uint8_t i=0 ; i<imuData. numSens ; i++){
2821
+ for (uint8_t i=0 ; i<numSens; i++){
2821
2822
2822
2823
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);
2826
2827
2827
2828
}
2828
2829
}
2829
2830
2830
- boolean SFE_UBLOX_GPS::getSensorStatus (uint8_t sensor)
2831
+ sfe_ublox_status_e SFE_UBLOX_GPS::getSensState (uint8_t sensor, uint16_t maxWait )
2831
2832
{
2832
2833
2833
2834
packetCfg.cls = UBX_CLASS_ESF;
2834
2835
packetCfg.id = UBX_ESF_STATUS;
2835
2836
packetCfg.len = 0 ;
2836
2837
packetCfg.startingSpot = 0 ;
2837
2838
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 );
2840
2843
2841
- uint8_t numberSens = extactByte (15 )
2842
- if (sensor > numberSens)
2844
+ if (sensor > ubloxSen.numSens )
2843
2845
return SFE_UBLOX_STATUS_OUT_OF_RANGE;
2844
2846
2845
2847
checkUblox ();
@@ -2851,7 +2853,7 @@ boolean SFE_UBLOX_GPS::getSensorStatus(uint8_t sensor)
2851
2853
2852
2854
uint8_t sensorFieldOne = extractByte (16 + offset * i);
2853
2855
uint8_t sensorFieldTwo = extractByte (17 + offset * i);
2854
- ublox .freq = extractByte (18 + offset * i);
2856
+ ubloxSen .freq = extractByte (18 + offset * i);
2855
2857
uint8_t sensorFieldThr = extractByte (19 + offset * i);
2856
2858
2857
2859
ubloxSen.senType = (sensorFieldOne && 0x10 ) >> 5 ;
@@ -2866,6 +2868,8 @@ boolean SFE_UBLOX_GPS::getSensorStatus(uint8_t sensor)
2866
2868
ubloxSen.missMeas = (sensorFieldThr && 0x04 ) >> 2 ;
2867
2869
ubloxSen.noisyMeas = (sensorFieldThr && 0x08 ) >> 3 ;
2868
2870
}
2871
+
2872
+ return SFE_UBLOX_STATUS_SUCCESS;
2869
2873
2870
2874
}
2871
2875
0 commit comments