From 4bf627baa54d0926edd52ce2c88418dc39448316 Mon Sep 17 00:00:00 2001 From: Michael Ammann Date: Sat, 17 Dec 2022 20:23:03 +0100 Subject: [PATCH] add enable GNSS API (start / stop) --- keywords.txt | 1 + src/SparkFun_u-blox_GNSS_Arduino_Library.cpp | 14 ++++++++++++++ src/SparkFun_u-blox_GNSS_Arduino_Library.h | 1 + 3 files changed, 16 insertions(+) diff --git a/keywords.txt b/keywords.txt index 52cfef2..f9919f3 100644 --- a/keywords.txt +++ b/keywords.txt @@ -153,6 +153,7 @@ setOutputPort KEYWORD2 factoryReset KEYWORD2 hardReset KEYWORD2 softwareResetGNSSOnly KEYWORD2 +softwareEnableGNSS KEYWORD2 factoryDefault KEYWORD2 saveConfiguration KEYWORD2 diff --git a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp index 370ca57..c6e2479 100644 --- a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp +++ b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp @@ -7351,6 +7351,20 @@ void SFE_UBLOX_GNSS::softwareResetGNSSOnly() sendCommand(&packetCfg, 0); // don't expect ACK } +void SFE_UBLOX_GNSS::softwareEnableGNSS(bool enable) +{ + // Issue controlled software reset (GNSS only) + packetCfg.cls = UBX_CLASS_CFG; + packetCfg.id = UBX_CFG_RST; + packetCfg.len = 4; + packetCfg.startingSpot = 0; + payloadCfg[0] = 0; // hot start + payloadCfg[1] = 0; // hot start + payloadCfg[2] = enable ? 0x09 : 0x08; // 0x09 = start GNSS, 0x08 = stop GNSS + payloadCfg[3] = 0; // reserved + sendCommand(&packetCfg, 0); // don't expect ACK +} + // Reset module to factory defaults // This still works but it is the old way of configuring ublox modules. See getVal and setVal for the new methods bool SFE_UBLOX_GNSS::factoryDefault(uint16_t maxWait) diff --git a/src/SparkFun_u-blox_GNSS_Arduino_Library.h b/src/SparkFun_u-blox_GNSS_Arduino_Library.h index 18f2562..db4c873 100644 --- a/src/SparkFun_u-blox_GNSS_Arduino_Library.h +++ b/src/SparkFun_u-blox_GNSS_Arduino_Library.h @@ -854,6 +854,7 @@ class SFE_UBLOX_GNSS void factoryReset(); // Send factory reset sequence (i.e. load "default" configuration and perform hardReset) void hardReset(); // Perform a reset leading to a cold start (zero info start-up) void softwareResetGNSSOnly(); // Controlled Software Reset (GNSS only) only restarts the GNSS tasks, without reinitializing the full system or reloading any stored configuration. + void softwareEnableGNSS(bool enable); // Controlled Software Start / Stop (GNSS only) bool factoryDefault(uint16_t maxWait = defaultMaxWait); // Reset module to factory defaults // Save configuration to BBR / Flash