Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit 0cbbfb2

Browse files
committed
Renames functions so that they make sense with what they do
* correctly checks for ublox return code when using sendCommand() * Irons out a few typos
1 parent 9d59880 commit 0cbbfb2

File tree

3 files changed

+69
-68
lines changed

3 files changed

+69
-68
lines changed

examples/NEO-M8U/Example1_getIMU/Example1_getIMU.ino

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,35 +38,27 @@ void setup()
3838
}
3939

4040
myGPS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise)
41-
42-
if (myGPS.getUdrStatus())
43-
{
44-
Serial.print("Mode: ");
45-
Serial.println(myGPS.imuMetric.fusionMode);
46-
Serial.print("Number of Sensors: ");
47-
Serial.println(myGPS.imuMetric.numSens);
48-
}
4941
}
5042

5143
void loop()
5244
{
53-
if (myGPS.getUdrStatus())
54-
Serial.println(myGPS.imuMetric.fusionMode);
45+
if (myGPS.getEsfInfo())
46+
Serial.println(myGPS.imuMeas.fusionMode);
5547

56-
if (myGPS.getInsInfo())
48+
if (myGPS.getEsfMeas())
5749
{
5850
Serial.print("X validity: ");
59-
Serial.println(myGPS.imuMetric.xAngRateVald);
51+
Serial.println(myGPS.imuMeas.xAngRateVald);
6052
Serial.print("X: ");
61-
Serial.println(myGPS.imuMetric.xAngRate);
53+
Serial.println(myGPS.imuMeas.xAngRate);
6254
Serial.print("Y validity: ");
63-
Serial.println(myGPS.imuMetric.yAngRateVald);
55+
Serial.println(myGPS.imuMeas.yAngRateVald);
6456
Serial.print("Y: ");
65-
Serial.println(myGPS.imuMetric.yAngRate);
57+
Serial.println(myGPS.imuMeas.yAngRate);
6658
Serial.print("Z validity: ");
67-
Serial.println(myGPS.imuMetric.zAngRateVald);
59+
Serial.println(myGPS.imuMeas.zAngRateVald);
6860
Serial.print("Z: ");
69-
Serial.println(myGPS.imuMetric.zAngRate);
61+
Serial.println(myGPS.imuMeas.zAngRate);
7062
}
7163
delay(250);
7264
}

src/SparkFun_Ublox_Arduino_Library.cpp

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/SparkFun_Ublox_Arduino_Library.h

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -590,10 +590,11 @@ class SFE_UBLOX_GPS
590590
//Change the dynamic platform model using UBX-CFG-NAV5
591591
boolean setDynamicModel(dynModel newDynamicModel = DYN_MODEL_PORTABLE, uint16_t maxWait = 1100);
592592

593-
boolean getEsfStatus(uint16_t maxWait = 1100);
594593
boolean getEsfInfo(uint16_t maxWait = 1100);
595594
boolean getEsfMeas(uint16_t maxWait = 1100);
596-
boolean getEsfRaw(uint16_t maxWait = 1100);
595+
boolean getEsfDataInfo(uint16_t maxWait = 1100);
596+
boolean getEsfRawDataInfo(uint16_t maxWait = 1100);
597+
sfe_ublox_status_e getSensState(uint8_t sensor, uint16_t maxWait = 1100);
597598

598599
//Survey-in specific controls
599600
struct svinStructure
@@ -673,7 +674,6 @@ class SFE_UBLOX_GPS
673674
{
674675
uint8_t version;
675676
uint8_t fusionMode;
676-
uint8_t numSens = DEF_NUM_SENS;
677677

678678
uint8_t xAngRateVald;
679679
uint8_t yAngRateVald;
@@ -691,27 +691,32 @@ class SFE_UBLOX_GPS
691691
int32_t zAccel;
692692

693693
// The array size is based on testing directly on M8U and F9R
694-
uint32_t rawData[numSens];
695-
uint32_t rawDataType[numSens];
696-
uint32_t rawTstamp[numSens];
694+
uint32_t rawData[DEF_NUM_SENS];
695+
uint32_t rawDataType[DEF_NUM_SENS];
696+
uint32_t rawTStamp[DEF_NUM_SENS];
697697

698-
uint32_t data[numSens];
699-
uint32_t dataType[numSens];
700-
uint32_t dataTstamp[numSens];
701-
} imuData;
698+
uint32_t data[DEF_NUM_SENS];
699+
uint32_t dataType[DEF_NUM_SENS];
700+
uint32_t dataTStamp[DEF_NUM_SENS];
701+
} imuMeas;
702702

703703
struct indivImuData
704704
{
705+
706+
uint8_t numSens;
707+
705708
uint8_t senType;
706709
bool isUsed;
707710
bool isReady;
708711
uint8_t calibStatus;
709712
uint8_t timeStatus;
713+
710714
uint8_t freq; // Hz
711-
uint8_t badMeas;
712-
uint8_t badTag;
713-
uint8_t missMeas;
714-
uint8_t noisyMeas;
715+
716+
bool badMeas;
717+
bool badTag;
718+
bool missMeas;
719+
bool noisyMeas;
715720
} ubloxSen;
716721

717722
private:

0 commit comments

Comments
 (0)