Comments (3)
TBH, I've not tried putting the UBX message into PROGMEM. I think there is an initialization problem, something to do with the constructor needing to "execute" instead of the storage being evaluated by the compiler. You should be able to use send_request
, though. I'm working up an example...
from neogps.
Ok, there are three ways to send the reset command:
- Construct a
cfg_reset_t
variable in RAM, set its members and use thesend_request
method. - Define a byte array in PROGMEM and send it with the utility function
sendUBX
(see ubloxRate.ino). - Cast the address of the PROGMEM byte array to a
cfg_reset_t *
and usesend_request_P
Here is the code to do it all three ways:
static const uint8_t ubxReset[] __PROGMEM =
{ ublox::UBX_CFG, ublox::UBX_CFG_RST,
UBX_MSG_LEN(ublox::cfg_reset_t), 0, // a word length... MSB is 0
0x00, 0x00, // Hotstart or...
// 0x01, 0x00, // ... Warmstart or...
// 0xff, 0xff, // ... Coldstart
0x02, // reset mode
0x00 // reserved
};
void resetGPS()
{
const uint8_t WAY = 3; // pick 1,2 or 3
switch (WAY) {
case 1:
{
ublox::cfg_reset_t cfg_cold; // RAM local variable
cfg_cold.clear_bbr_section =
// Hotstart
{ false };
// Warmstart
// { true, false };
// Coldstart
// { true, true, true, true, true, true, true, true, true,
// true, // reserved1 is 2 bits
// true, true, true,
// true, // reserved2 is 1 bit
// true };
cfg_cold.reset_mode = ublox::cfg_reset_t::CONTROLLED_SW_RESET_GPS_ONLY;
cfg_cold.reserved = 0;
gps.send_request( cfg_cold );
}
break;
case 2:
sendUBX( ubxReset, sizeof(ubxReset) ); // just send the PROGMEM bytes
break;
case 3:
{
const ublox::cfg_reset_t *cfg_cold_ptr = (const ublox::cfg_reset_t *) ubxReset;
gps.send_request_P( *cfg_cold_ptr );
}
break;
}
} // resetGPS
There were two problems with the code you were trying:
- The UBX message length does not include the header bytes, so the byte array had the wrong length value (see helper macro
UBX_MSG_LEN
). - The is a bug in
send_request_P
. It was not accessing the PROGMEM msgClass, msgID and length members correctly. I've checked in a new version of ubxGPS.cpp with a fix. This is not in the release yet, just get that one file.
from neogps.
I tested option 3 and it worked perfectly! Thank you! Now I will implement a power off command to save battery usage on my device. Cheers! 👍
from neogps.
Related Issues (20)
- And if GPS loose the fix? HOT 5
- Distance skipping heavily, even when stationary
- Confused??? how getting higer refresh rate? HOT 1
- possible incorrect counting of GNSS satellites
- NMEA senteces not valid? HOT 2
- listen() function on NeoSWSerial not working
- ubloxRate example and send_P
- LAST_SENTENCE_IN_INTERVAL is not properly defined in NMEAGPS_cfg.h although I think it is? HOT 1
- add up distances? (odometer) HOT 1
- Doesn't build when using ESP32 core 2.0.4 with Arduino
- use on LGT8F328P
- running velocity NED
- Using with nrf52832
- Is this repo still active?
- Documentation for location_t.OffsetBy is incorrect
- How to query RTK Status? HOT 1
- Can't compile error in file NMEAGPS.cpp
- Keyword for Weekday ?
- GPS week rollover bug
- E220_400MM22S Sending Lat and Long
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neogps.