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

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));