This class provides an API to communicate with a u-blox GNSS chip. The files here were originally part of the C027_Support library (https://developer.mbed.org/teams/ublox/code/C027_Support/ at revision 138:dafbbf31bf76) but have been separated out, primarily for use on the u-blox C030 board where the cellular interace portion of the C027_Support library will instead be provided through the new mbed Cellular API.
Dependents: example-ublox-at-cellular-interface-ext example-low-power-sleep example-C030-out-of-box-demo example-C030-out-of-box-demo ... more
Diff: gnss_operations.cpp
- Revision:
- 27:405a5e611635
- Parent:
- 25:f538f1dc4121
- Child:
- 31:9a1ce433f062
--- a/gnss_operations.cpp Fri Nov 09 15:59:33 2018 +0500 +++ b/gnss_operations.cpp Mon Nov 26 16:59:49 2018 +0500 @@ -401,9 +401,10 @@ * * */ -int GnssOperations::cfg_power_mode(Powermodes power_mode) +int GnssOperations::cfg_power_mode(Powermodes power_mode, bool minimumAcqTimeZero) { int length = 0; + const int minimumAcqTime_index = 22; unsigned char semi_continuous_pms[] = {0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; unsigned char semi_continuous_pm2[] = {0x02, 0x06, 0x00, 0x00, 0x02, 0x00, 0x43, 0x01, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x2C, 0x01, 0x00, 0x00, 0xCF, 0x40, 0x00, @@ -437,6 +438,12 @@ SEND_LOGGING_MESSAGE("Configuring SEMI_CONTINOUS"); length = GnssSerial::sendUbx(0x06, 0x86, semi_continuous_pms, sizeof(semi_continuous_pms)); wait(1); + + if(minimumAcqTimeZero) { + semi_continuous_pm2[minimumAcqTime_index] = 0x00; + semi_continuous_pm2[minimumAcqTime_index + 1] = 0x00; + } + length = GnssSerial::sendUbx(0x06, 0x3B, semi_continuous_pm2, sizeof(semi_continuous_pm2)); wait(1); length = GnssSerial::sendUbx(0x06, 0x08, semi_continuous_rate, sizeof(semi_continuous_rate)); @@ -447,6 +454,12 @@ SEND_LOGGING_MESSAGE("Configuring AGGRESSIVE_CONTINUOS"); length = GnssSerial::sendUbx(0x06, 0x86, aggresive_continuous_pms, sizeof(aggresive_continuous_pms)); wait(1); + + if(minimumAcqTimeZero) { + semi_continuous_pm2[minimumAcqTime_index] = 0x00; + semi_continuous_pm2[minimumAcqTime_index + 1] = 0x00; + } + length = GnssSerial::sendUbx(0x06, 0x3B, aggresive_continuous_pm2, sizeof(aggresive_continuous_pm2)); wait(1); length = GnssSerial::sendUbx(0x06, 0x08, aggressive_continuous_rate, sizeof(aggressive_continuous_rate)); @@ -457,6 +470,12 @@ SEND_LOGGING_MESSAGE("Configuring CONSERVATIVE_CONTINOUS"); length = GnssSerial::sendUbx(0x06, 0x86, conservative_continuous_pms, sizeof(conservative_continuous_pms)); wait(1); + + if(minimumAcqTimeZero) { + semi_continuous_pm2[minimumAcqTime_index] = 0x00; + semi_continuous_pm2[minimumAcqTime_index + 1] = 0x00; + } + length = GnssSerial::sendUbx(0x06, 0x3B, conservative_continuous_pm2, sizeof(conservative_continuous_pm2)); wait(1); length = GnssSerial::sendUbx(0x06, 0x08, conservative_continuous_rate, sizeof(conservative_continuous_rate));