From 088408e0536574fb6e179f785f48a8f95aa94bfa Mon Sep 17 00:00:00 2001 From: PaulZC Date: Mon, 7 Feb 2022 10:02:45 +0000 Subject: [PATCH] Remove setAutoRXMPMPcallback. setAutoRXMPMPcallbackPtr is the way to go... --- keywords.txt | 6 +- src/SparkFun_u-blox_GNSS_Arduino_Library.cpp | 60 ++++---------------- src/SparkFun_u-blox_GNSS_Arduino_Library.h | 1 - src/u-blox_structs.h | 1 - 4 files changed, 16 insertions(+), 52 deletions(-) diff --git a/keywords.txt b/keywords.txt index 1213ac5..7ee9bd2 100644 --- a/keywords.txt +++ b/keywords.txt @@ -183,19 +183,24 @@ getVal KEYWORD2 getVal8 KEYWORD2 getVal16 KEYWORD2 getVal32 KEYWORD2 +getVal64 KEYWORD2 setVal KEYWORD2 setVal8 KEYWORD2 setVal16 KEYWORD2 setVal32 KEYWORD2 +setVal64 KEYWORD2 newCfgValset8 KEYWORD2 newCfgValset16 KEYWORD2 newCfgValset32 KEYWORD2 +newCfgValset64 KEYWORD2 addCfgValset8 KEYWORD2 addCfgValset16 KEYWORD2 addCfgValset32 KEYWORD2 +addCfgValset64 KEYWORD2 sendCfgValset8 KEYWORD2 sendCfgValset16 KEYWORD2 sendCfgValset32 KEYWORD2 +sendCfgValset64 KEYWORD2 getNAVPOSECEF KEYWORD2 setAutoNAVPOSECEF KEYWORD2 @@ -356,7 +361,6 @@ initPacketUBXAOPSTATUS KEYWORD2 flushAOPSTATUS KEYWORD2 logAOPSTATUS KEYWORD2 -setAutoRXMPMPcallback KEYWORD2 setAutoRXMPMPcallbackPtr KEYWORD2 getRXMSFRBX KEYWORD2 diff --git a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp index f696d63..05da70d 100644 --- a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp +++ b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp @@ -3183,12 +3183,6 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg) memcpy(&packetUBXRXMPMP->callbackData->version, &packetUBXRXMPMP->data.version, sizeof(UBX_RXM_PMP_data_t)); packetUBXRXMPMP->automaticFlags.flags.bits.callbackCopyValid = true; } - - //Check if we need to copy the data into the file buffer - if (packetUBXRXMPMP->automaticFlags.flags.bits.addToFileBuffer) - { - storePacket(msg); - } } } else if (msg->id == UBX_RXM_SFRBX) @@ -4485,7 +4479,7 @@ void SFE_UBLOX_GNSS::checkCallbacks(void) // _debugSerial->println(F("checkCallbacks: calling callback for NAV POSECEF")); packetUBXNAVPOSECEF->callbackPointer(*packetUBXNAVPOSECEF->callbackData); // Call the callback } - else if (packetUBXNAVPOSECEF->callbackPointerPtr != NULL) // If the pointer to the callback has been defined + if (packetUBXNAVPOSECEF->callbackPointerPtr != NULL) // If the pointer to the callback has been defined { // if (_printDebug == true) // _debugSerial->println(F("checkCallbacks: calling callbackPtr for NAV POSECEF")); @@ -4764,12 +4758,6 @@ void SFE_UBLOX_GNSS::checkCallbacks(void) && (packetUBXRXMPMP->callbackData != NULL) // If RAM has been allocated for the copy of the data && (packetUBXRXMPMP->automaticFlags.flags.bits.callbackCopyValid == true)) // If the copy of the data is valid { - if (packetUBXRXMPMP->callbackPointer != NULL) // If the pointer to the callback has been defined - { - // if (_printDebug == true) - // _debugSerial->println(F("checkCallbacks: calling callback for RXM PMP")); - packetUBXRXMPMP->callbackPointer(*packetUBXRXMPMP->callbackData); // Call the callback - } if (packetUBXRXMPMP->callbackPointerPtr != NULL) // If the pointer to the callback has been defined { // if (_printDebug == true) @@ -11021,31 +11009,6 @@ void SFE_UBLOX_GNSS::logAOPSTATUS(bool enabled) // ***** RXM PMP automatic support -// Callback is passed all of the data. Heavy on the stack. May cause problems on some platforms. -bool SFE_UBLOX_GNSS::setAutoRXMPMPcallback(void (*callbackPointer)(UBX_RXM_PMP_data_t)) -{ - if (packetUBXRXMPMP == NULL) initPacketUBXRXMPMP(); //Check that RAM has been allocated for the data - if (packetUBXRXMPMP == NULL) //Only attempt this if RAM allocation was successful - return false; - - if (packetUBXRXMPMP->callbackData == NULL) //Check if RAM has been allocated for the callback copy - { - packetUBXRXMPMP->callbackData = new UBX_RXM_PMP_data_t; //Allocate RAM for the main struct - } - - if (packetUBXRXMPMP->callbackData == NULL) - { -#ifndef SFE_UBLOX_REDUCED_PROG_MEM - if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging - _debugSerial->println(F("setAutoRXMPMPcallback: RAM alloc failed!")); -#endif - return (false); - } - - packetUBXRXMPMP->callbackPointer = callbackPointer; - return (true); -} - // Callback receives a pointer to the data, instead of _all_ the data. Much kinder on the stack! bool SFE_UBLOX_GNSS::setAutoRXMPMPcallbackPtr(void (*callbackPointer)(UBX_RXM_PMP_data_t *)) { @@ -11084,7 +11047,6 @@ bool SFE_UBLOX_GNSS::initPacketUBXRXMPMP() return (false); } packetUBXRXMPMP->automaticFlags.flags.all = 0; - packetUBXRXMPMP->callbackPointer = NULL; packetUBXRXMPMP->callbackPointerPtr = NULL; packetUBXRXMPMP->callbackData = NULL; packetUBXRXMPMP->moduleQueried = false; @@ -13069,7 +13031,7 @@ bool SFE_UBLOX_GNSS::getHNRINS(uint16_t maxWait) //The GPS is automatically reporting, we just check whether we got unread data // if (_printDebug == true) // { - // _debugSerial->println(F("getHNRDyn: Autoreporting")); + // _debugSerial->println(F("getHNRINS: Autoreporting")); // } checkUbloxInternal(&packetCfg, UBX_CLASS_HNR, UBX_HNR_INS); return packetUBXHNRINS->moduleQueried.moduleQueried.bits.all; @@ -13079,7 +13041,7 @@ bool SFE_UBLOX_GNSS::getHNRINS(uint16_t maxWait) //Someone else has to call checkUblox for us... // if (_printDebug == true) // { - // _debugSerial->println(F("getHNRDyn: Exit immediately")); + // _debugSerial->println(F("getHNRINS: Exit immediately")); // } return (false); } @@ -13087,7 +13049,7 @@ bool SFE_UBLOX_GNSS::getHNRINS(uint16_t maxWait) { // if (_printDebug == true) // { - // _debugSerial->println(F("getHNRDyn: Polling")); + // _debugSerial->println(F("getHNRINS: Polling")); // } //The GPS is not automatically reporting HNR vehicle dynamics so we have to poll explicitly @@ -13106,14 +13068,14 @@ bool SFE_UBLOX_GNSS::getHNRINS(uint16_t maxWait) { // if (_printDebug == true) // { - // _debugSerial->println(F("getHNRDyn: data in packetCfg was OVERWRITTEN by another message (but that's OK)")); + // _debugSerial->println(F("getHNRINS: data in packetCfg was OVERWRITTEN by another message (but that's OK)")); // } return (true); } // if (_printDebug == true) // { - // _debugSerial->print(F("getHNRDyn retVal: ")); + // _debugSerial->print(F("getHNRINS retVal: ")); // _debugSerial->println(statusString(retVal)); // } return (false); @@ -13122,21 +13084,21 @@ bool SFE_UBLOX_GNSS::getHNRINS(uint16_t maxWait) return (false); // Trap. We should never get here... } -//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRDyn +//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRINS //works. bool SFE_UBLOX_GNSS::setAutoHNRINS(bool enable, uint16_t maxWait) { return setAutoHNRINSrate(enable ? 1 : 0, true, maxWait); } -//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRDyn +//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRINS //works. bool SFE_UBLOX_GNSS::setAutoHNRINS(bool enable, bool implicitUpdate, uint16_t maxWait) { return setAutoHNRINSrate(enable ? 1 : 0, implicitUpdate, maxWait); } -//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRDyn +//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRINS //works. bool SFE_UBLOX_GNSS::setAutoHNRINSrate(uint8_t rate, bool implicitUpdate, uint16_t maxWait) { @@ -13181,7 +13143,7 @@ bool SFE_UBLOX_GNSS::setAutoHNRINScallback(void (*callbackPointer)(UBX_HNR_INS_d { #ifndef SFE_UBLOX_REDUCED_PROG_MEM if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging - _debugSerial->println(F("setAutoHNRDyncallback: RAM alloc failed!")); + _debugSerial->println(F("setAutoHNRINScallback: RAM alloc failed!")); #endif return (false); } @@ -13206,7 +13168,7 @@ bool SFE_UBLOX_GNSS::setAutoHNRINScallbackPtr(void (*callbackPointerPtr)(UBX_HNR { #ifndef SFE_UBLOX_REDUCED_PROG_MEM if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging - _debugSerial->println(F("setAutoHNRDyncallbackPtr: RAM alloc failed!")); + _debugSerial->println(F("setAutoHNRINScallbackPtr: RAM alloc failed!")); #endif return (false); } diff --git a/src/SparkFun_u-blox_GNSS_Arduino_Library.h b/src/SparkFun_u-blox_GNSS_Arduino_Library.h index 9c10900..e675cfe 100644 --- a/src/SparkFun_u-blox_GNSS_Arduino_Library.h +++ b/src/SparkFun_u-blox_GNSS_Arduino_Library.h @@ -1096,7 +1096,6 @@ public: // Note: on the NEO-D9S, the UBX-RXM-PMP messages are enabled by default on all ports. // You can disable them by calling (e.g.) setVal8(UBLOX_CFG_MSGOUT_UBX_RXM_PMP_I2C, 0) // The NEO-D9S does not support UBX-CFG-MSG - bool setAutoRXMPMPcallback(void (*callbackPointer)(UBX_RXM_PMP_data_t)); // Callback is passed all of the data. Heavy on the stack. May cause problems on some platforms. bool setAutoRXMPMPcallbackPtr(void (*callbackPointerPtr)(UBX_RXM_PMP_data_t *)); // Callback receives a pointer to the data, instead of _all_ the data. Much kinder on the stack! bool getRXMSFRBX(uint16_t maxWait = defaultMaxWait); // RXM SFRBX diff --git a/src/u-blox_structs.h b/src/u-blox_structs.h index d20be08..216c071 100644 --- a/src/u-blox_structs.h +++ b/src/u-blox_structs.h @@ -1513,7 +1513,6 @@ typedef struct ubxAutomaticFlags automaticFlags; UBX_RXM_PMP_data_t data; bool moduleQueried; - void (*callbackPointer)(UBX_RXM_PMP_data_t); void (*callbackPointerPtr)(UBX_RXM_PMP_data_t *); UBX_RXM_PMP_data_t *callbackData; } UBX_RXM_PMP_t;