diff --git a/examples/ZED-F9P/Example8_GetHighPrecisionPositionAndAccuracy/Example8_GetHighPrecisionPositionAndAccuracy.ino b/examples/ZED-F9P/Example10_GetHighPrecisionPositionAndAccuracy/Example10_GetHighPrecisionPositionAndAccuracy.ino similarity index 100% rename from examples/ZED-F9P/Example8_GetHighPrecisionPositionAndAccuracy/Example8_GetHighPrecisionPositionAndAccuracy.ino rename to examples/ZED-F9P/Example10_GetHighPrecisionPositionAndAccuracy/Example10_GetHighPrecisionPositionAndAccuracy.ino diff --git a/examples/ZED-F9P/Example9_GetHighPrecisionPositionUsingDouble/Example9_GetHighPrecisionPositionUsingDouble.ino b/examples/ZED-F9P/Example11_GetHighPrecisionPositionUsingDouble/Example11_GetHighPrecisionPositionUsingDouble.ino similarity index 100% rename from examples/ZED-F9P/Example9_GetHighPrecisionPositionUsingDouble/Example9_GetHighPrecisionPositionUsingDouble.ino rename to examples/ZED-F9P/Example11_GetHighPrecisionPositionUsingDouble/Example11_GetHighPrecisionPositionUsingDouble.ino diff --git a/examples/ZED-F9P/Example6_GetVal/Example6_GetVal.ino b/examples/ZED-F9P/Example6_GetVal/Example6_GetVal.ino index a0d2766..4763a83 100644 --- a/examples/ZED-F9P/Example6_GetVal/Example6_GetVal.ino +++ b/examples/ZED-F9P/Example6_GetVal/Example6_GetVal.ino @@ -1,12 +1,12 @@ /* - Send UBX binary commands to enable RTCM sentences on Ublox ZED-F9P module + Get a device's I2C address using advanced getVal method By: Nathan Seidle SparkFun Electronics Date: January 9th, 2019 License: MIT. See license file for more information but you can basically do whatever you want with this code. - Ublox changed how to configure their modules in 2019. As of version 23 of the UBX protocol the + u-blox changed how to configure their modules in 2019. As of version 23 of the UBX protocol the UBX-CFG commands are deprecated; they still work, they just recommend using VALSET, VALGET, and VALDEL commands instead. This example shows how to use this new command structure. @@ -32,27 +32,29 @@ long lastTime = 0; //Simple local timer. Limits amount if I2C traffic to Ublox m void setup() { Serial.begin(115200); - while (!Serial); //Wait for user to open terminal - Serial.println("Ublox getVal example"); + while (!Serial) + ; //Wait for user to open terminal + Serial.println("u-blox getVal example"); Wire.begin(); Wire.setClock(400000); //Increase I2C clock speed to 400kHz if (myGPS.begin() == false) //Connect to the Ublox module using Wire port { - Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing.")); - while (1); + Serial.println(F("u-blox GPS not detected at default I2C address. Please check wiring. Freezing.")); + while (1) + ; } myGPS.enableDebugging(); //Enable debug messages over Serial (default) //myGPS.enableDebugging(SerialUSB); //Enable debug messages over Serial USB - uint8_t currentI2Caddress = myGPS.getVal8(0x20510001); + uint8_t currentI2Caddress = myGPS.getVal8(UBLOX_CFG_I2C_ADDRESS); Serial.print("Current I2C address (should be 0x42): 0x"); Serial.println(currentI2Caddress >> 1, HEX); //Ublox module returns a shifted 8-bit address. Make it 7-bit unshifted. - while(1); - + while (1) + ; } void loop() @@ -83,4 +85,4 @@ void loop() Serial.println(); } -} +} \ No newline at end of file diff --git a/examples/ZED-F9P/Example7_SetVal/Example7_SetVal.ino b/examples/ZED-F9P/Example7_SetVal/Example7_SetVal.ino index 8f7e6df..a425ef9 100644 --- a/examples/ZED-F9P/Example7_SetVal/Example7_SetVal.ino +++ b/examples/ZED-F9P/Example7_SetVal/Example7_SetVal.ino @@ -1,12 +1,12 @@ /* - Send UBX binary commands to enable RTCM sentences on Ublox ZED-F9P module + Send UBX binary commands to enable RTCM sentences on u-blox ZED-F9P module By: Nathan Seidle SparkFun Electronics Date: January 9th, 2019 License: MIT. See license file for more information but you can basically do whatever you want with this code. - Ublox changed how to configure their modules in 2019. As of version 23 of the UBX protocol the + u-blox changed how to configure their modules in 2019. As of version 23 of the UBX protocol the UBX-CFG commands are deprecated; they still work, they just recommend using VALSET, VALGET, and VALDEL commands instead. This example shows how to use this new command structure. @@ -27,21 +27,23 @@ #include "SparkFun_Ublox_Arduino_Library.h" //http://librarymanager/All#SparkFun_Ublox_GPS SFE_UBLOX_GPS myGPS; -long lastTime = 0; //Simple local timer. Limits amount if I2C traffic to Ublox module. +long lastTime = 0; //Simple local timer. Limits amount if I2C traffic to u-blox module. void setup() { Serial.begin(115200); - while (!Serial); //Wait for user to open terminal - Serial.println("Ublox getVal example"); + while (!Serial) + ; //Wait for user to open terminal + Serial.println("u-blox getVal example"); Wire.begin(); Wire.setClock(400000); //Increase I2C clock speed to 400kHz - if (myGPS.begin() == false) //Connect to the Ublox module using Wire port + if (myGPS.begin() == false) //Connect to the u-blox module using Wire port { - Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing.")); - while (1); + Serial.println(F("u-blox GPS not detected at default I2C address. Please check wiring. Freezing.")); + while (1) + ; } myGPS.enableDebugging(); //Enable debug messages over Serial (default) @@ -49,27 +51,26 @@ void setup() bool setValueSuccess; - //These key values are hard coded. You can obtain them from the ZED-F9P interface description doc + //These key values are hard coded and defined in u-blox_config_keys.h. + //You can obtain them from the ZED-F9P interface description doc //or from u-center's Messages->CFG->VALSET window. Keys must be 32-bit. - //setValueSuccess = myGPS.setVal(0x10930006, 0); //Enable high precision NMEA - setValueSuccess = myGPS.setVal(0x30210001, 100); //Set measurement rate to 100ms (10Hz update rate) - //setValueSuccess = myGPS.setVal(0x30210001, 1000); //Set measurement rate to 1000ms (1Hz update rate) + //setValueSuccess = myGPS.setVal(UBLOX_CFG_NMEA_HIGHPREC, 0); //Enable high precision NMEA + setValueSuccess = myGPS.setVal(UBLOX_CFG_RATE_MEAS, 100); //Set measurement rate to 100ms (10Hz update rate) + //setValueSuccess = myGPS.setVal(UBLOX_CFG_RATE_MEAS, 1000); //Set measurement rate to 1000ms (1Hz update rate) //Below is the original way we enabled the RTCM message on the I2C port. After that, we show how to do the same //but with setVal(). //Original: myGPS.enableRTCMmessage(UBX_RTCM_1005, COM_PORT_I2C, 1); //Enable message 1005 to output through I2C port, message every second //setValueSuccess = myGPS.setVal(0x209102bd, 1); //Set output rate of msg 1005 over the I2C port to once per second - if(setValueSuccess == true) + if (setValueSuccess == true) { Serial.println("Value was successfully set"); } else Serial.println("Value set failed"); - } void loop() { - } diff --git a/examples/ZED-F9P/Example8_GetSetPortSettings/Example8_GetSetPortSettings.ino b/examples/ZED-F9P/Example8_GetSetPortSettings/Example8_GetSetPortSettings.ino new file mode 100644 index 0000000..1ade20a --- /dev/null +++ b/examples/ZED-F9P/Example8_GetSetPortSettings/Example8_GetSetPortSettings.ino @@ -0,0 +1,98 @@ +/* + Configuring port settings using the newer getVal/setVal methods + By: Nathan Seidle + SparkFun Electronics + Date: October 23rd, 2020 + License: MIT. See license file for more information but you can + basically do whatever you want with this code. + + This example shows how to query a u-blox module for its UART1 settings and + then change them if the settings aren't what we want. + + Note: getVal/setVal/delVal are only support in u-blox protocol versions 27 and higher. + + Feel like supporting open source hardware? + Buy a board from SparkFun! + ZED-F9P RTK2: https://www.sparkfun.com/products/15136 + + Hardware Connections: + Plug a Qwiic cable into the GPS and a RedBoard + If you don't have a platform with a Qwiic connection use the SparkFun Qwiic Breadboard Jumper (https://www.sparkfun.com/products/14425) + Open the serial monitor at 115200 baud to see the output +*/ + +#include //Needed for I2C to GPS + +#include "SparkFun_Ublox_Arduino_Library.h" //http://librarymanager/All#SparkFun_Ublox_GPS +SFE_UBLOX_GPS myGPS; + +void setup() +{ + Serial.begin(115200); + while (!Serial) + ; //Wait for user to open terminal + Serial.println("SparkFun u-blox Example"); + + Wire.begin(); + + if (myGPS.begin() == false) //Connect to the u-blox module using Wire port + { + Serial.println(F("u-blox GPS not detected at default I2C address. Please check wiring. Freezing.")); + while (1) + ; + } + + bool response = true; + + //Read the settings from RAM (what the module is running right now, not BBR, Flash, or default) + uint8_t currentUART1Setting_ubx = myGPS.getVal8(UBLOX_CFG_UART1INPROT_UBX); + uint8_t currentUART1Setting_nmea = myGPS.getVal8(UBLOX_CFG_UART1INPROT_NMEA); + uint8_t currentUART1Setting_rtcm3 = myGPS.getVal8(UBLOX_CFG_UART1INPROT_RTCM3X); + + Serial.print("currentUART1Setting_ubx: "); + Serial.println(currentUART1Setting_ubx); + Serial.print("currentUART1Setting_nmea: "); + Serial.println(currentUART1Setting_nmea); + Serial.print("currentUART1Setting_rtcm3: "); + Serial.println(currentUART1Setting_rtcm3); + + //Check if NMEA and RTCM are enabled for UART1 + if (currentUART1Setting_ubx == 0 || currentUART1Setting_nmea == 0) + { + Serial.println("Updating UART1 configuration"); + + //setVal sets the values for RAM, BBR, and Flash automatically so no .saveConfiguration() is needed + response &= myGPS.setVal8(UBLOX_CFG_UART1INPROT_UBX, 1); //Enable UBX on UART1 Input + response &= myGPS.setVal8(UBLOX_CFG_UART1INPROT_NMEA, 1); //Enable NMEA on UART1 Input + response &= myGPS.setVal8(UBLOX_CFG_UART1INPROT_RTCM3X, 0); //Disable RTCM on UART1 Input + + if (response == false) + Serial.println("SetVal failed"); + else + Serial.println("SetVal succeeded"); + } + else + Serial.println("No port change needed"); + + //Change speed of UART2 + uint32_t currentUART2Baud = myGPS.getVal32(UBLOX_CFG_UART2_BAUDRATE); + Serial.print("currentUART2Baud: "); + Serial.println(currentUART2Baud); + + if (currentUART2Baud != 57600) + { + response &= myGPS.setVal32(UBLOX_CFG_UART2_BAUDRATE, 57600); + if (response == false) + Serial.println("SetVal failed"); + else + Serial.println("SetVal succeeded"); + } + else + Serial.println("No baud change needed"); + + Serial.println("Done"); +} + +void loop() +{ +} \ No newline at end of file diff --git a/examples/ZED-F9P/Example10_multiSetVal/Example10_multiSetVal.ino b/examples/ZED-F9P/Example9_multiSetVal/Example9_multiSetVal.ino similarity index 54% rename from examples/ZED-F9P/Example10_multiSetVal/Example10_multiSetVal.ino rename to examples/ZED-F9P/Example9_multiSetVal/Example9_multiSetVal.ino index 2c12dc3..ed1b471 100644 --- a/examples/ZED-F9P/Example10_multiSetVal/Example10_multiSetVal.ino +++ b/examples/ZED-F9P/Example9_multiSetVal/Example9_multiSetVal.ino @@ -1,5 +1,5 @@ /* - Send UBX binary commands to enable RTCM sentences on Ublox ZED-F9P module + Send UBX binary commands to enable RTCM sentences on u-blox ZED-F9P module Based on Example7 By: Nathan Seidle SparkFun Electronics Updated by Paul Clark to demonstrate setVal8/16/32, newCfgValset8/16/32, addCfgValset8/16/32 and sendCfgValset8/16/32 @@ -7,7 +7,7 @@ License: MIT. See license file for more information but you can basically do whatever you want with this code. - Ublox changed how to configure their modules in 2019. As of version 23 of the UBX protocol the + u-blox changed how to configure their modules in 2019. As of version 23 of the UBX protocol the UBX-CFG commands are deprecated; they still work, they just recommend using VALSET, VALGET, and VALDEL commands instead. This example shows how to use this new command structure. @@ -31,16 +31,18 @@ SFE_UBLOX_GPS myGPS; void setup() { Serial.begin(115200); - while (!Serial); //Wait for user to open terminal - Serial.println("Ublox multi setVal example"); + while (!Serial) + ; //Wait for user to open terminal + Serial.println("u-blox multi setVal example"); Wire.begin(); Wire.setClock(400000); //Increase I2C clock speed to 400kHz - if (myGPS.begin() == false) //Connect to the Ublox module using Wire port + if (myGPS.begin() == false) //Connect to the u-blox module using Wire port { - Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing.")); - while (1); + Serial.println(F("u-blox GPS not detected at default I2C address. Please check wiring. Freezing.")); + while (1) + ; } myGPS.enableDebugging(); //Enable debug messages over Serial (default) @@ -55,25 +57,25 @@ void setup() //U2, I2, E2 and X2 values are 16-bit //U4, I4, R4, E4, X4 values are 32-bit - setValueSuccess &= myGPS.setVal8(0x10930006, 0); //Enable high precision NMEA (value is 8-bit (L / U1)) - //setValueSuccess &= myGPS.setVal16(0x30210001, 200); //Set measurement rate to 100ms (10Hz update rate) (value is 16-bit (U2)) - //setValueSuccess &= myGPS.setVal16(0x30210001, 200, 1); //Set rate setting in RAM instead of BBR - setValueSuccess &= myGPS.setVal16(0x30210001, 1000); //Set measurement rate to 1000ms (1Hz update rate) (value is 16-bit (U2)) + setValueSuccess &= myGPS.setVal8(UBLOX_CFG_NMEA_HIGHPREC, 0); //Enable high precision NMEA (value is 8-bit (L / U1)) + //setValueSuccess &= myGPS.setVal16(UBLOX_CFG_RATE_MEAS, 200); //Set measurement rate to 100ms (10Hz update rate) (value is 16-bit (U2)) + //setValueSuccess &= myGPS.setVal16(UBLOX_CFG_RATE_MEAS, 200, 1); //Set rate setting in RAM instead of BBR + setValueSuccess &= myGPS.setVal16(UBLOX_CFG_RATE_MEAS, 1000); //Set measurement rate to 1000ms (1Hz update rate) (value is 16-bit (U2)) //Below is the original way we enabled a single RTCM message on the I2C port. After that, we show how to do the same //but with multiple messages all in one go using newCfgValset, addCfgValset and sendCfgValset. //Original: myGPS.enableRTCMmessage(UBX_RTCM_1005, COM_PORT_I2C, 1); //Enable message 1005 to output through I2C port, message every second //Begin with newCfgValset8/16/32 - setValueSuccess &= myGPS.newCfgValset8(0x209102bd, 1); //Set output rate of msg 1005 over the I2C port to once per measurement (value is 8-bit (U1)) - //setValueSuccess &= myGPS.newCfgValset8(0x209102bd, 1, 7); //Set this and the following settings into Flash/RAM/BBR instead of BBR + setValueSuccess &= myGPS.newCfgValset8(CFG_MSGOUT_RTCM_3X_TYPE1005_I2C, 1); //Set output rate of msg 1005 over the I2C port to once per measurement (value is 8-bit (U1)) + //setValueSuccess &= myGPS.newCfgValset8(CFG_MSGOUT_RTCM_3X_TYPE1005_I2C, 1, 7); //Set this and the following settings into Flash/RAM/BBR instead of BBR //Add extra keyIDs and values using addCfgValset8/16/32 - setValueSuccess &= myGPS.addCfgValset8(0x209102cc, 1); //Set output rate of msg 1077 over the I2C port to once per measurement (value is 8-bit (U1)) - setValueSuccess &= myGPS.addCfgValset8(0x209102d1, 1); //Set output rate of msg 1087 over the I2C port to once per measurement (value is 8-bit (U1)) - setValueSuccess &= myGPS.addCfgValset8(0x209102d6, 1); //Set output rate of msg 1127 over the I2C port to once per measurement (value is 8-bit (U1)) - setValueSuccess &= myGPS.addCfgValset8(0x20910318, 1); //Set output rate of msg 1097 over the I2C port to once per measurement (value is 8-bit (U1)) + setValueSuccess &= myGPS.addCfgValset8(CFG_MSGOUT_RTCM_3X_TYPE1077_I2C, 1); //Set output rate of msg 1077 over the I2C port to once per measurement (value is 8-bit (U1)) + setValueSuccess &= myGPS.addCfgValset8(CFG_MSGOUT_RTCM_3X_TYPE1087_I2C, 1); //Set output rate of msg 1087 over the I2C port to once per measurement (value is 8-bit (U1)) + setValueSuccess &= myGPS.addCfgValset8(CFG_MSGOUT_RTCM_3X_TYPE1127_I2C, 1); //Set output rate of msg 1127 over the I2C port to once per measurement (value is 8-bit (U1)) + setValueSuccess &= myGPS.addCfgValset8(CFG_MSGOUT_RTCM_3X_TYPE1097_I2C, 1); //Set output rate of msg 1097 over the I2C port to once per measurement (value is 8-bit (U1)) // Add the final value and send the packet using sendCfgValset8/16/32 - setValueSuccess &= myGPS.sendCfgValset8(0x20910303, 10); //Set output rate of msg 1230 over the I2C port to once every 10 measurements (value is 8-bit (U1)) + setValueSuccess &= myGPS.sendCfgValset8(CFG_MSGOUT_RTCM_3X_TYPE1230_I2C, 10); //Set output rate of msg 1230 over the I2C port to once every 10 measurements (value is 8-bit (U1)) if (setValueSuccess == true) { @@ -85,5 +87,4 @@ void setup() void loop() { - } diff --git a/keywords.txt b/keywords.txt index d5ec567..b395ec6 100644 --- a/keywords.txt +++ b/keywords.txt @@ -64,7 +64,10 @@ setUART2Output KEYWORD2 setUSBOutput KEYWORD2 setSPIOutput KEYWORD2 +getVal KEYWORD2 getVal8 KEYWORD2 +getVal16 KEYWORD2 +getVal32 KEYWORD2 setVal KEYWORD2 setVal8 KEYWORD2 setVal16 KEYWORD2 diff --git a/src/SparkFun_Ublox_Arduino_Library.cpp b/src/SparkFun_Ublox_Arduino_Library.cpp index cd7d997..930f709 100644 --- a/src/SparkFun_Ublox_Arduino_Library.cpp +++ b/src/SparkFun_Ublox_Arduino_Library.cpp @@ -2,6 +2,7 @@ This is a library written for the u-blox ZED-F9P and NEO-M8P-2 SparkFun sells these at its website: www.sparkfun.com Do you like this library? Help support SparkFun. Buy a board! + https://www.sparkfun.com/products/16481 https://www.sparkfun.com/products/15136 https://www.sparkfun.com/products/15005 https://www.sparkfun.com/products/15733 @@ -1639,32 +1640,11 @@ boolean SFE_UBLOX_GPS::factoryDefault(uint16_t maxWait) return (sendCommand(&packetCfg, maxWait) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK } -//Given a group, ID and size, return the value of this config spot -//The 32-bit key is put together from group/ID/size. See other getVal to send key directly. -//Configuration of modern u-blox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P -uint8_t SFE_UBLOX_GPS::getVal8(uint16_t group, uint16_t id, uint8_t size, uint8_t layer, uint16_t maxWait) -{ - //Create key - uint32_t key = 0; - key |= (uint32_t)id; - key |= (uint32_t)group << 16; - key |= (uint32_t)size << 28; - - if (_printDebug == true) - { - _debugSerial->print(F("key: 0x")); - _debugSerial->print(key, HEX); - _debugSerial->println(); - } - - return getVal8(key, layer, maxWait); -} - -//Given a key, return its value +//Given a key, load the payload with data that can then be extracted to 8, 16, or 32 bits //This function takes a full 32-bit key -//Default layer is BBR +//Default layer is RAM //Configuration of modern u-blox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P -uint8_t SFE_UBLOX_GPS::getVal8(uint32_t key, uint8_t layer, uint16_t maxWait) +sfe_ublox_status_e SFE_UBLOX_GPS::getVal(uint32_t key, uint8_t layer, uint16_t maxWait) { packetCfg.cls = UBX_CLASS_CFG; packetCfg.id = UBX_CFG_VALGET; @@ -1707,25 +1687,77 @@ uint8_t SFE_UBLOX_GPS::getVal8(uint32_t key, uint8_t layer, uint16_t maxWait) sfe_ublox_status_e retVal = sendCommand(&packetCfg, maxWait); if (_printDebug == true) { - _debugSerial->print(F("getVal8: sendCommand returned: ")); + _debugSerial->print(F("getVal: sendCommand returned: ")); _debugSerial->println(statusString(retVal)); } - if (retVal != SFE_UBLOX_STATUS_DATA_RECEIVED) // We are expecting data and an ACK - return (0); //If command send fails then bail //Verify the response is the correct length as compared to what the user called (did the module respond with 8-bits but the user called getVal32?) //Response is 8 bytes plus cfg data //if(packet->len > 8+1) - //Pull the requested value from the response - //Response starts at 4+1*N with the 32-bit key so the actual data we're looking for is at 8+1*N + //The response is now sitting in payload, ready for extraction + return (retVal); +} + +//Given a key, return its value +//This function takes a full 32-bit key +//Default layer is RAM +//Configuration of modern Ublox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P +uint8_t SFE_UBLOX_GPS::getVal8(uint32_t key, uint8_t layer, uint16_t maxWait) +{ + if (getVal(key, layer, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED) + return (0); + return (extractByte(8)); } +uint16_t SFE_UBLOX_GPS::getVal16(uint32_t key, uint8_t layer, uint16_t maxWait) +{ + if (getVal(key, layer, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED) + return (0); + + return (extractInt(8)); +} +uint32_t SFE_UBLOX_GPS::getVal32(uint32_t key, uint8_t layer, uint16_t maxWait) +{ + if (getVal(key, layer, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED) + return (0); + + return (extractLong(8)); +} + +//Form 32-bit key from group/id/size +uint32_t SFE_UBLOX_GPS::createKey(uint16_t group, uint16_t id, uint8_t size) +{ + uint32_t key = 0; + key |= (uint32_t)id; + key |= (uint32_t)group << 16; + key |= (uint32_t)size << 28; + return (key); +} + +//Given a group, ID and size, return the value of this config spot +//The 32-bit key is put together from group/ID/size. See other getVal to send key directly. +//Configuration of modern Ublox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P +uint8_t SFE_UBLOX_GPS::getVal8(uint16_t group, uint16_t id, uint8_t size, uint8_t layer, uint16_t maxWait) +{ + uint32_t key = createKey(group, id, size); + return getVal8(key, layer, maxWait); +} +uint16_t SFE_UBLOX_GPS::getVal16(uint16_t group, uint16_t id, uint8_t size, uint8_t layer, uint16_t maxWait) +{ + uint32_t key = createKey(group, id, size); + return getVal16(key, layer, maxWait); +} +uint32_t SFE_UBLOX_GPS::getVal32(uint16_t group, uint16_t id, uint8_t size, uint8_t layer, uint16_t maxWait) +{ + uint32_t key = createKey(group, id, size); + return getVal32(key, layer, maxWait); +} //Given a key, set a 16-bit value //This function takes a full 32-bit key -//Default layer is BBR -//Configuration of modern u-blox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P +//Default layer is all: RAM+BBR+Flash +//Configuration of modern Ublox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P uint8_t SFE_UBLOX_GPS::setVal(uint32_t key, uint16_t value, uint8_t layer, uint16_t maxWait) { return setVal16(key, value, layer, maxWait); @@ -1733,8 +1765,8 @@ uint8_t SFE_UBLOX_GPS::setVal(uint32_t key, uint16_t value, uint8_t layer, uint1 //Given a key, set a 16-bit value //This function takes a full 32-bit key -//Default layer is BBR -//Configuration of modern u-blox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P +//Default layer is all: RAM+BBR+Flash +//Configuration of modern Ublox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P uint8_t SFE_UBLOX_GPS::setVal16(uint32_t key, uint16_t value, uint8_t layer, uint16_t maxWait) { packetCfg.cls = UBX_CLASS_CFG; @@ -1765,8 +1797,8 @@ uint8_t SFE_UBLOX_GPS::setVal16(uint32_t key, uint16_t value, uint8_t layer, uin //Given a key, set an 8-bit value //This function takes a full 32-bit key -//Default layer is BBR -//Configuration of modern u-blox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P +//Default layer is all: RAM+BBR+Flash +//Configuration of modern Ublox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P uint8_t SFE_UBLOX_GPS::setVal8(uint32_t key, uint8_t value, uint8_t layer, uint16_t maxWait) { packetCfg.cls = UBX_CLASS_CFG; @@ -1796,8 +1828,8 @@ uint8_t SFE_UBLOX_GPS::setVal8(uint32_t key, uint8_t value, uint8_t layer, uint1 //Given a key, set a 32-bit value //This function takes a full 32-bit key -//Default layer is BBR -//Configuration of modern u-blox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P +//Default layer is all: RAM+BBR+Flash +//Configuration of modern Ublox modules is now done via getVal/setVal/delVal, ie protocol v27 and above found on ZED-F9P uint8_t SFE_UBLOX_GPS::setVal32(uint32_t key, uint32_t value, uint8_t layer, uint16_t maxWait) { packetCfg.cls = UBX_CLASS_CFG; diff --git a/src/SparkFun_Ublox_Arduino_Library.h b/src/SparkFun_Ublox_Arduino_Library.h index adfdf44..4d8d184 100644 --- a/src/SparkFun_Ublox_Arduino_Library.h +++ b/src/SparkFun_Ublox_Arduino_Library.h @@ -2,6 +2,7 @@ This is a library written for the u-blox ZED-F9P and NEO-M8P-2 SparkFun sells these at its website: www.sparkfun.com Do you like this library? Help support SparkFun. Buy a board! + https://www.sparkfun.com/products/16481 https://www.sparkfun.com/products/15136 https://www.sparkfun.com/products/15005 https://www.sparkfun.com/products/15733 @@ -49,6 +50,8 @@ #include +#include "u-blox_config_keys.h" + // Define Serial for SparkFun SAMD based boards. // Boards like the RedBoard Turbo use SerialUSB (not Serial). // But other boards like the SAMD51 Thing Plus use Serial (not SerialUSB). @@ -342,32 +345,6 @@ const uint8_t COM_TYPE_UBX = (1 << 0); const uint8_t COM_TYPE_NMEA = (1 << 1); const uint8_t COM_TYPE_RTCM3 = (1 << 5); -//The following consts are used to generate KEY values for the advanced protocol functions of VELGET/SET/DEL -const uint8_t VAL_SIZE_1 = 0x01; //One bit -const uint8_t VAL_SIZE_8 = 0x02; //One byte -const uint8_t VAL_SIZE_16 = 0x03; //Two bytes -const uint8_t VAL_SIZE_32 = 0x04; //Four bytes -const uint8_t VAL_SIZE_64 = 0x05; //Eight bytes - -//These are the Bitfield layers definitions for the UBX-CFG-VALSET message (not to be confused with Bitfield deviceMask in UBX-CFG-CFG) -const uint8_t VAL_LAYER_RAM = (1 << 0); -const uint8_t VAL_LAYER_BBR = (1 << 1); -const uint8_t VAL_LAYER_FLASH = (1 << 2); - -//Below are various Groups, IDs, and sizes for various settings -//These can be used to call getVal/setVal/delVal -const uint8_t VAL_GROUP_I2COUTPROT = 0x72; -const uint8_t VAL_GROUP_I2COUTPROT_SIZE = VAL_SIZE_1; //All fields in I2C group are currently 1 bit - -const uint8_t VAL_ID_I2COUTPROT_UBX = 0x01; -const uint8_t VAL_ID_I2COUTPROT_NMEA = 0x02; -const uint8_t VAL_ID_I2COUTPROT_RTCM3 = 0x03; - -const uint8_t VAL_GROUP_I2C = 0x51; -const uint8_t VAL_GROUP_I2C_SIZE = VAL_SIZE_8; //All fields in I2C group are currently 1 byte - -const uint8_t VAL_ID_I2C_ADDRESS = 0x01; - // Configuration Sub-Section mask definitions for saveConfigSelective (UBX-CFG-CFG) const uint32_t VAL_CFG_SUBSEC_IOPORT = 0x00000001; // ioPort - communications port settings (causes IO system reset!) const uint32_t VAL_CFG_SUBSEC_MSGCONF = 0x00000002; // msgConf - message configuration @@ -579,21 +556,28 @@ class SFE_UBLOX_GPS //General configuration (used only on protocol v27 and higher - ie, ZED-F9P) //It is probably safe to assume that users of the ZED-F9P will be using I2C / Qwiic. //If they are using Serial then the higher baud rate will also help. So let's leave maxWait set to 250ms. - uint8_t getVal8(uint16_t group, uint16_t id, uint8_t size, uint8_t layer = VAL_LAYER_BBR, uint16_t maxWait = 250); //Returns the value at a given group/id/size location - uint8_t getVal8(uint32_t keyID, uint8_t layer = VAL_LAYER_BBR, uint16_t maxWait = 250); //Returns the value at a given group/id/size location - uint8_t setVal(uint32_t keyID, uint16_t value, uint8_t layer = VAL_LAYER_BBR, uint16_t maxWait = 250); //Sets the 16-bit value at a given group/id/size location - uint8_t setVal8(uint32_t keyID, uint8_t value, uint8_t layer = VAL_LAYER_BBR, uint16_t maxWait = 250); //Sets the 8-bit value at a given group/id/size location - uint8_t setVal16(uint32_t keyID, uint16_t value, uint8_t layer = VAL_LAYER_BBR, uint16_t maxWait = 250); //Sets the 16-bit value at a given group/id/size location - uint8_t setVal32(uint32_t keyID, uint32_t value, uint8_t layer = VAL_LAYER_BBR, uint16_t maxWait = 250); //Sets the 32-bit value at a given group/id/size location - uint8_t newCfgValset8(uint32_t keyID, uint8_t value, uint8_t layer = VAL_LAYER_BBR); //Define a new UBX-CFG-VALSET with the given KeyID and 8-bit value - uint8_t newCfgValset16(uint32_t keyID, uint16_t value, uint8_t layer = VAL_LAYER_BBR); //Define a new UBX-CFG-VALSET with the given KeyID and 16-bit value - uint8_t newCfgValset32(uint32_t keyID, uint32_t value, uint8_t layer = VAL_LAYER_BBR); //Define a new UBX-CFG-VALSET with the given KeyID and 32-bit value - uint8_t addCfgValset8(uint32_t keyID, uint8_t value); //Add a new KeyID and 8-bit value to an existing UBX-CFG-VALSET ubxPacket - uint8_t addCfgValset16(uint32_t keyID, uint16_t value); //Add a new KeyID and 16-bit value to an existing UBX-CFG-VALSET ubxPacket - uint8_t addCfgValset32(uint32_t keyID, uint32_t value); //Add a new KeyID and 32-bit value to an existing UBX-CFG-VALSET ubxPacket - uint8_t sendCfgValset8(uint32_t keyID, uint8_t value, uint16_t maxWait = 250); //Add the final KeyID and 8-bit value to an existing UBX-CFG-VALSET ubxPacket and send it - uint8_t sendCfgValset16(uint32_t keyID, uint16_t value, uint16_t maxWait = 250); //Add the final KeyID and 16-bit value to an existing UBX-CFG-VALSET ubxPacket and send it - uint8_t sendCfgValset32(uint32_t keyID, uint32_t value, uint16_t maxWait = 250); //Add the final KeyID and 32-bit value to an existing UBX-CFG-VALSET ubxPacket and send it + uint32_t createKey(uint16_t group, uint16_t id, uint8_t size); //Form 32-bit key from group/id/size + + sfe_ublox_status_e getVal(uint32_t keyID, uint8_t layer = VAL_LAYER_RAM, uint16_t maxWait = 250); //Load payload with response + uint8_t getVal8(uint32_t keyID, uint8_t layer = VAL_LAYER_RAM, uint16_t maxWait = 250); //Returns the value at a given key location + uint16_t getVal16(uint32_t keyID, uint8_t layer = VAL_LAYER_RAM, uint16_t maxWait = 250); //Returns the value at a given key location + uint32_t getVal32(uint32_t keyID, uint8_t layer = VAL_LAYER_RAM, uint16_t maxWait = 250); //Returns the value at a given key location + uint8_t getVal8(uint16_t group, uint16_t id, uint8_t size, uint8_t layer = VAL_LAYER_RAM, uint16_t maxWait = 250); //Returns the value at a given group/id/size location + uint16_t getVal16(uint16_t group, uint16_t id, uint8_t size, uint8_t layer = VAL_LAYER_RAM, uint16_t maxWait = 250); //Returns the value at a given group/id/size location + uint32_t getVal32(uint16_t group, uint16_t id, uint8_t size, uint8_t layer = VAL_LAYER_RAM, uint16_t maxWait = 250); //Returns the value at a given group/id/size location + uint8_t setVal(uint32_t keyID, uint16_t value, uint8_t layer = VAL_LAYER_ALL, uint16_t maxWait = 250); //Sets the 16-bit value at a given group/id/size location + uint8_t setVal8(uint32_t keyID, uint8_t value, uint8_t layer = VAL_LAYER_ALL, uint16_t maxWait = 250); //Sets the 8-bit value at a given group/id/size location + uint8_t setVal16(uint32_t keyID, uint16_t value, uint8_t layer = VAL_LAYER_ALL, uint16_t maxWait = 250); //Sets the 16-bit value at a given group/id/size location + uint8_t setVal32(uint32_t keyID, uint32_t value, uint8_t layer = VAL_LAYER_ALL, uint16_t maxWait = 250); //Sets the 32-bit value at a given group/id/size location + uint8_t newCfgValset8(uint32_t keyID, uint8_t value, uint8_t layer = VAL_LAYER_BBR); //Define a new UBX-CFG-VALSET with the given KeyID and 8-bit value + uint8_t newCfgValset16(uint32_t keyID, uint16_t value, uint8_t layer = VAL_LAYER_BBR); //Define a new UBX-CFG-VALSET with the given KeyID and 16-bit value + uint8_t newCfgValset32(uint32_t keyID, uint32_t value, uint8_t layer = VAL_LAYER_BBR); //Define a new UBX-CFG-VALSET with the given KeyID and 32-bit value + uint8_t addCfgValset8(uint32_t keyID, uint8_t value); //Add a new KeyID and 8-bit value to an existing UBX-CFG-VALSET ubxPacket + uint8_t addCfgValset16(uint32_t keyID, uint16_t value); //Add a new KeyID and 16-bit value to an existing UBX-CFG-VALSET ubxPacket + uint8_t addCfgValset32(uint32_t keyID, uint32_t value); //Add a new KeyID and 32-bit value to an existing UBX-CFG-VALSET ubxPacket + uint8_t sendCfgValset8(uint32_t keyID, uint8_t value, uint16_t maxWait = 250); //Add the final KeyID and 8-bit value to an existing UBX-CFG-VALSET ubxPacket and send it + uint8_t sendCfgValset16(uint32_t keyID, uint16_t value, uint16_t maxWait = 250); //Add the final KeyID and 16-bit value to an existing UBX-CFG-VALSET ubxPacket and send it + uint8_t sendCfgValset32(uint32_t keyID, uint32_t value, uint16_t maxWait = 250); //Add the final KeyID and 32-bit value to an existing UBX-CFG-VALSET ubxPacket and send it //Functions used for RTK and base station setup //It is probably safe to assume that users of the RTK will be using I2C / Qwiic. So let's leave maxWait set to 250ms. diff --git a/src/u-blox_config_keys.h b/src/u-blox_config_keys.h new file mode 100644 index 0000000..deef696 --- /dev/null +++ b/src/u-blox_config_keys.h @@ -0,0 +1,547 @@ +/* + This is a library written for the u-blox ZED-F9P and NEO-M8P-2 + SparkFun sells these at its website: www.sparkfun.com + Do you like this library? Help support SparkFun. Buy a board! + https://www.sparkfun.com/products/16481 + https://www.sparkfun.com/products/15136 + https://www.sparkfun.com/products/15005 + https://www.sparkfun.com/products/15733 + https://www.sparkfun.com/products/15193 + https://www.sparkfun.com/products/15210 + + Written by Nathan Seidle @ SparkFun Electronics, September 6th, 2018 + + This library handles configuring and handling the responses + from a u-blox GPS module. Works with most modules from u-blox including + the Zed-F9P, NEO-M8P-2, NEO-M9N, ZOE-M8Q, SAM-M8Q, and many others. + + https://github.com/sparkfun/SparkFun_Ublox_Arduino_Library + + Development environment specifics: + Arduino IDE 1.8.5 + + SparkFun code, firmware, and software is released under the MIT License(http://opensource.org/licenses/MIT). + The MIT License (MIT) + Copyright (c) 2016 SparkFun Electronics + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the Software is furnished to + do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef __u_blox_config_keys_h__ +#define __u_blox_config_keys_h__ + +//The following consts are used to generate KEY values for the advanced protocol functions of VELGET/SET/DEL +const uint8_t VAL_SIZE_1 = 0x01; //One bit +const uint8_t VAL_SIZE_8 = 0x02; //One byte +const uint8_t VAL_SIZE_16 = 0x03; //Two bytes +const uint8_t VAL_SIZE_32 = 0x04; //Four bytes +const uint8_t VAL_SIZE_64 = 0x05; //Eight bytes + +//These are the Bitfield layers definitions for the UBX-CFG-VALSET message (not to be confused with Bitfield deviceMask in UBX-CFG-CFG) +const uint8_t VAL_LAYER_RAM = (1 << 0); +const uint8_t VAL_LAYER_BBR = (1 << 1); +const uint8_t VAL_LAYER_FLASH = (1 << 2); +const uint8_t VAL_LAYER_ALL = VAL_LAYER_RAM | VAL_LAYER_BBR | VAL_LAYER_FLASH; //Not valid with getVal() + +//Below are various Groups, IDs, and sizes for various settings +//These can be used to call getVal/setVal/delVal +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint8_t VAL_ID_PROT_UBX = 0x01; +const uint8_t VAL_ID_PROT_NMEA = 0x02; +const uint8_t VAL_ID_PROT_RTCM3 = 0x04; + +const uint8_t VAL_GROUP_I2C = 0x51; +const uint8_t VAL_GROUP_I2COUTPROT = 0x72; +const uint8_t VAL_GROUP_UART1INPROT = 0x73; +const uint8_t VAL_GROUP_UART1OUTPROT = 0x74; +const uint8_t VAL_GROUP_UART2INPROT = 0x75; +const uint8_t VAL_GROUP_UART2OUTPROT = 0x76; +const uint8_t VAL_GROUP_USBINPROT = 0x77; +const uint8_t VAL_GROUP_USBOUTPROT = 0x78; + +const uint8_t VAL_GROUP_UART_SIZE = VAL_SIZE_1; //All fields in UART group are currently 1 bit +const uint8_t VAL_GROUP_I2C_SIZE = VAL_SIZE_8; //All fields in I2C group are currently 1 byte + +const uint8_t VAL_ID_I2C_ADDRESS = 0x01; + +//Below are the key values for a given configuration setting + +//CFG-NMEA +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint32_t UBLOX_CFG_NMEA_PROTVER = 0x10930001; +const uint32_t UBLOX_CFG_NMEA_MAXSVS = 0x10930002; +const uint32_t UBLOX_CFG_NMEA_COMPAT = 0x10930003; +const uint32_t UBLOX_CFG_NMEA_CONSIDER = 0x10930004; +const uint32_t UBLOX_CFG_NMEA_LIMIT82 = 0x10930005; +const uint32_t UBLOX_CFG_NMEA_HIGHPREC = 0x10930006; +const uint32_t UBLOX_CFG_NMEA_SVNUMBERING = 0x20930007; +const uint32_t UBLOX_CFG_NMEA_FILT_GPS = 0x10930011; +const uint32_t UBLOX_CFG_NMEA_FILT_SBAS = 0x10930012; +const uint32_t UBLOX_CFG_NMEA_FILT_GAL = 0x10930013; +const uint32_t UBLOX_CFG_NMEA_FILT_QZSS = 0x10930015; +const uint32_t UBLOX_CFG_NMEA_FILT_GLO = 0x10930016; +const uint32_t UBLOX_CFG_NMEA_FILT_BDS = 0x10930017; +const uint32_t UBLOX_CFG_NMEA_OUT_INVFIX = 0x10930021; +const uint32_t UBLOX_CFG_NMEA_OUT_MSKFIX = 0x10930022; +const uint32_t UBLOX_CFG_NMEA_OUT_INVTIME = 0x10930023; +const uint32_t UBLOX_CFG_NMEA_OUT_INVDATE = 0x10930024; +const uint32_t UBLOX_CFG_NMEA_OUT_ONLYGPS = 0x10930025; +const uint32_t UBLOX_CFG_NMEA_OUT_FROZENCOG = 0x10930026; +const uint32_t UBLOX_CFG_NMEA_MAINTALKERID = 0x20930031; +const uint32_t UBLOX_CFG_NMEA_GSVTALKERID = 0x20930032; +const uint32_t UBLOX_CFG_NMEA_BDSTALKERID = 0x30930033; + +//CFG-RATE +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint32_t UBLOX_CFG_RATE_MEAS = 0x30210001; +const uint32_t UBLOX_CFG_RATE_NAV = 0x30210002; +const uint32_t UBLOX_CFG_RATE_TIMEREF = 0x20210003; + +//CFG-I2C +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint32_t UBLOX_CFG_I2C_ADDRESS = 0x20510001; +const uint32_t UBLOX_CFG_I2C_ENABLED = 0x10510003; + +const uint32_t UBLOX_CFG_I2CINPROT_UBX = 0x10710001; +const uint32_t UBLOX_CFG_I2CINPROT_NMEA = 0x10710002; +const uint32_t UBLOX_CFG_I2CINPROT_RTCM3X = 0x10710004; + +const uint32_t UBLOX_CFG_I2COUTPROT_UBX = 0x10720001; +const uint32_t UBLOX_CFG_I2COUTPROT_NMEA = 0x10720002; +const uint32_t UBLOX_CFG_I2COUTPROT_RTCM3X = 0x10720004; + +//CFG-UART1 +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint32_t UBLOX_CFG_UART1_BAUDRATE = 0x40520001; +const uint32_t UBLOX_CFG_UART1_ENABLED = 0x10520005; + +const uint32_t UBLOX_CFG_UART1INPROT_UBX = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART1INPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_UBX << (8 * 0)); //0x10730001 +const uint32_t UBLOX_CFG_UART1INPROT_NMEA = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART1INPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_NMEA << (8 * 0)); +const uint32_t UBLOX_CFG_UART1INPROT_RTCM3X = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART1INPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_RTCM3 << (8 * 0)); + +const uint32_t UBLOX_CFG_UART1OUTPROT_UBX = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART1OUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_UBX << (8 * 0)); +const uint32_t UBLOX_CFG_UART1OUTPROT_NMEA = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART1OUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_NMEA << (8 * 0)); +const uint32_t UBLOX_CFG_UART1OUTPROT_RTCM3X = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART1OUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_RTCM3 << (8 * 0)); + +//CFG-UART2 +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint32_t UBLOX_CFG_UART2_BAUDRATE = 0x40530001; +const uint32_t UBLOX_CFG_UART2_ENABLED = 0x10530005; + +const uint32_t UBLOX_CFG_UART2INPROT_UBX = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART2INPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_UBX << (8 * 0)); +const uint32_t UBLOX_CFG_UART2INPROT_NMEA = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART2INPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_NMEA << (8 * 0)); +const uint32_t UBLOX_CFG_UART2INPROT_RTCM3X = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART2INPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_RTCM3 << (8 * 0)); + +const uint32_t UBLOX_CFG_UART2OUTPROT_UBX = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART2OUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_UBX << (8 * 0)); +const uint32_t UBLOX_CFG_UART2OUTPROT_NMEA = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART2OUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_NMEA << (8 * 0)); +const uint32_t UBLOX_CFG_UART2OUTPROT_RTCM3X = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_UART2OUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_RTCM3 << (8 * 0)); + +//CFG-USB +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint32_t UBLOX_CFG_USBINPROT_UBX = 0x10770001; +const uint32_t UBLOX_CFG_USBINPROT_NMEA = 0x10770002; +const uint32_t UBLOX_CFG_USBINPROT_RTCM3X = 0x10770004; + +const uint32_t UBLOX_CFG_USBOUTPROT_UBX = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_USBOUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_UBX << (8 * 0)); +const uint32_t UBLOX_CFG_USBOUTPROT_NMEA = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_USBOUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_NMEA << (8 * 0)); +const uint32_t UBLOX_CFG_USBOUTPROT_RTCM3X = ((VAL_GROUP_UART_SIZE << 4) << (8 * 3)) | (VAL_GROUP_USBOUTPROT << (8 * 2)) | (0x00 << (8 * 1)) | (VAL_ID_PROT_RTCM3 << (8 * 0)); + +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +// CFG-MSGOUT: Message output configuration +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// For each message and port a separate output rate (per second, per epoch) can be configured. +#define CFG_MSGOUT_NMEA_ID_DTM_I2C 0x209100a6 //Output rate of the NMEA-GX-DTM message on port I2C +#define CFG_MSGOUT_NMEA_ID_DTM_SPI 0x209100aa //Output rate of the NMEA-GX-DTM message on port SPI +#define CFG_MSGOUT_NMEA_ID_DTM_UART1 0x209100a7 //Output rate of the NMEA-GX-DTM message on port UART1 +#define CFG_MSGOUT_NMEA_ID_DTM_UART2 0x209100a8 //Output rate of the NMEA-GX-DTM message on port UART2 +#define CFG_MSGOUT_NMEA_ID_DTM_USB 0x209100a9 //Output rate of the NMEA-GX-DTM message on port USB +#define CFG_MSGOUT_NMEA_ID_GBS_I2C 0x209100dd //Output rate of the NMEA-GX-GBS message on port I2C +#define CFG_MSGOUT_NMEA_ID_GBS_SPI 0x209100e1 //Output rate of the NMEA-GX-GBS message on port SPI +#define CFG_MSGOUT_NMEA_ID_GBS_UART1 0x209100de //Output rate of the NMEA-GX-GBS message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GBS_UART2 0x209100df //Output rate of the NMEA-GX-GBS message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GBS_USB 0x209100e0 //Output rate of the NMEA-GX-GBS message on port USB +#define CFG_MSGOUT_NMEA_ID_GGA_I2C 0x209100ba //Output rate of the NMEA-GX-GGA message on port I2C +#define CFG_MSGOUT_NMEA_ID_GGA_SPI 0x209100be //Output rate of the NMEA-GX-GGA message on port SPI +#define CFG_MSGOUT_NMEA_ID_GGA_UART1 0x209100bb //Output rate of the NMEA-GX-GGA message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GGA_UART2 0x209100bc //Output rate of the NMEA-GX-GGA message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GGA_USB 0x209100bd //Output rate of the NMEA-GX-GGA message on port USB +#define CFG_MSGOUT_NMEA_ID_GLL_I2C 0x209100c9 //Output rate of the NMEA-GX-GLL message on port I2C +#define CFG_MSGOUT_NMEA_ID_GLL_SPI 0x209100cd //Output rate of the NMEA-GX-GLL message on port SPI +#define CFG_MSGOUT_NMEA_ID_GLL_UART1 0x209100ca //Output rate of the NMEA-GX-GLL message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GLL_UART2 0x209100cb //Output rate of the NMEA-GX-GLL message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GLL_USB 0x209100cc //Output rate of the NMEA-GX-GLL message on port USB +#define CFG_MSGOUT_NMEA_ID_GNS_I2C 0x209100b5 //Output rate of the NMEA-GX-GNS message on port I2C +#define CFG_MSGOUT_NMEA_ID_GNS_SPI 0x209100b9 //Output rate of the NMEA-GX-GNS message on port SPI +#define CFG_MSGOUT_NMEA_ID_GNS_UART1 0x209100b6 //Output rate of the NMEA-GX-GNS message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GNS_UART2 0x209100b7 //Output rate of the NMEA-GX-GNS message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GNS_USB 0x209100b8 //Output rate of the NMEA-GX-GNS message on port USB +#define CFG_MSGOUT_NMEA_ID_GRS_I2C 0x209100ce //Output rate of the NMEA-GX-GRS message on port I2C +#define CFG_MSGOUT_NMEA_ID_GRS_SPI 0x209100d2 //Output rate of the NMEA-GX-GRS message on port SPI +#define CFG_MSGOUT_NMEA_ID_GRS_UART1 0x209100cf //Output rate of the NMEA-GX-GRS message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GRS_UART2 0x209100d0 //Output rate of the NMEA-GX-GRS message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GRS_USB 0x209100d1 //Output rate of the NMEA-GX-GRS message on port USB +#define CFG_MSGOUT_NMEA_ID_GSA_I2C 0x209100bf //Output rate of the NMEA-GX-GSA message on port I2C +#define CFG_MSGOUT_NMEA_ID_GSA_SPI 0x209100c3 //Output rate of the NMEA-GX-GSA message on port SPI +#define CFG_MSGOUT_NMEA_ID_GSA_UART1 0x209100c0 //Output rate of the NMEA-GX-GSA message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GSA_UART2 0x209100c1 //Output rate of the NMEA-GX-GSA message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GSA_USB 0x209100c2 //Output rate of the NMEA-GX-GSA message on port USB +#define CFG_MSGOUT_NMEA_ID_GST_I2C 0x209100d3 //Output rate of the NMEA-GX-GST message on port I2C +#define CFG_MSGOUT_NMEA_ID_GST_SPI 0x209100d7 //Output rate of the NMEA-GX-GST message on port SPI +#define CFG_MSGOUT_NMEA_ID_GST_UART1 0x209100d4 //Output rate of the NMEA-GX-GST message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GST_UART2 0x209100d5 //Output rate of the NMEA-GX-GST message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GST_USB 0x209100d6 //Output rate of the NMEA-GX-GST message on port USB +#define CFG_MSGOUT_NMEA_ID_GSV_I2C 0x209100c4 //Output rate of the NMEA-GX-GSV message on port I2C +#define CFG_MSGOUT_NMEA_ID_GSV_SPI 0x209100c8 //Output rate of the NMEA-GX-GSV message on port SPI +#define CFG_MSGOUT_NMEA_ID_GSV_UART1 0x209100c5 //Output rate of the NMEA-GX-GSV message on port UART1 +#define CFG_MSGOUT_NMEA_ID_GSV_UART2 0x209100c6 //Output rate of the NMEA-GX-GSV message on port UART2 +#define CFG_MSGOUT_NMEA_ID_GSV_USB 0x209100c7 //Output rate of the NMEA-GX-GSV message on port USB +#define CFG_MSGOUT_NMEA_ID_RLM_I2C 0x20910400 //Output rate of the NMEA-GX-RLM message on port I2C +#define CFG_MSGOUT_NMEA_ID_RLM_SPI 0x20910404 //Output rate of the NMEA-GX-RLM message on port SPI +#define CFG_MSGOUT_NMEA_ID_RLM_UART1 0x20910401 //Output rate of the NMEA-GX-RLM message on port UART1 +#define CFG_MSGOUT_NMEA_ID_RLM_UART2 0x20910402 //Output rate of the NMEA-GX-RLM message on port UART2 +#define CFG_MSGOUT_NMEA_ID_RLM_USB 0x20910403 //Output rate of the NMEA-GX-RLM message on port USB +#define CFG_MSGOUT_NMEA_ID_RMC_I2C 0x209100ab //Output rate of the NMEA-GX-RMC message on port I2C +#define CFG_MSGOUT_NMEA_ID_RMC_SPI 0x209100af //Output rate of the NMEA-GX-RMC message on port SPI +#define CFG_MSGOUT_NMEA_ID_RMC_UART1 0x209100ac //Output rate of the NMEA-GX-RMC message on port UART1 +#define CFG_MSGOUT_NMEA_ID_RMC_UART2 0x209100ad //Output rate of the NMEA-GX-RMC message on port UART2 +#define CFG_MSGOUT_NMEA_ID_RMC_USB 0x209100ae //Output rate of the NMEA-GX-RMC message on port USB +#define CFG_MSGOUT_NMEA_ID_VLW_I2C 0x209100e7 //Output rate of the NMEA-GX-VLW message on port I2C +#define CFG_MSGOUT_NMEA_ID_VLW_SPI 0x209100eb //Output rate of the NMEA-GX-VLW message on port SPI +#define CFG_MSGOUT_NMEA_ID_VLW_UART1 0x209100e8 //Output rate of the NMEA-GX-VLW message on port UART1 +#define CFG_MSGOUT_NMEA_ID_VLW_UART2 0x209100e9 //Output rate of the NMEA-GX-VLW message on port UART2 +#define CFG_MSGOUT_NMEA_ID_VLW_USB 0x209100ea //Output rate of the NMEA-GX-VLW message on port USB +#define CFG_MSGOUT_NMEA_ID_VTG_I2C 0x209100b0 //Output rate of the NMEA-GX-VTG message on port I2C +#define CFG_MSGOUT_NMEA_ID_VTG_SPI 0x209100b4 //Output rate of the NMEA-GX-VTG message on port SPI +#define CFG_MSGOUT_NMEA_ID_VTG_UART1 0x209100b1 //Output rate of the NMEA-GX-VTG message on port UART1 +#define CFG_MSGOUT_NMEA_ID_VTG_UART2 0x209100b2 //Output rate of the NMEA-GX-VTG message on port UART2 +#define CFG_MSGOUT_NMEA_ID_VTG_USB 0x209100b3 //Output rate of the NMEA-GX-VTG message on port USB +#define CFG_MSGOUT_NMEA_ID_ZDA_I2C 0x209100d8 //Output rate of the NMEA-GX-ZDA message on port I2C +#define CFG_MSGOUT_NMEA_ID_ZDA_SPI 0x209100dc //Output rate of the NMEA-GX-ZDA message on port SPI +#define CFG_MSGOUT_NMEA_ID_ZDA_UART1 0x209100d9 //Output rate of the NMEA-GX-ZDA message on port UART1 +#define CFG_MSGOUT_NMEA_ID_ZDA_UART2 0x209100da //Output rate of the NMEA-GX-ZDA message on port UART2 +#define CFG_MSGOUT_NMEA_ID_ZDA_USB 0x209100db //Output rate of the NMEA-GX-ZDA message on port USB +#define CFG_MSGOUT_PUBX_ID_POLYP_I2C 0x209100ec //Output rate of the NMEA-GX-PUBX00 message on port I2C +#define CFG_MSGOUT_PUBX_ID_POLYP_SPI 0x209100f0 //Output rate of the NMEA-GX-PUBX00 message on port SPI +#define CFG_MSGOUT_PUBX_ID_POLYP_UART1 0x209100ed //Output rate of the NMEA-GX-PUBX00 message on port UART1 +#define CFG_MSGOUT_PUBX_ID_POLYP_UART2 0x209100ee //Output rate of the NMEA-GX-PUBX00 message on port UART2 +#define CFG_MSGOUT_PUBX_ID_POLYP_USB 0x209100ef //Output rate of the NMEA-GX-PUBX00 message on port USB +#define CFG_MSGOUT_PUBX_ID_POLYS_I2C 0x209100f1 //Output rate of the NMEA-GX-PUBX03 message on port I2C +#define CFG_MSGOUT_PUBX_ID_POLYS_SPI 0x209100f5 //Output rate of the NMEA-GX-PUBX03 message on port SPI +#define CFG_MSGOUT_PUBX_ID_POLYS_UART1 0x209100f2 //Output rate of the NMEA-GX-PUBX03 message on port UART1 +#define CFG_MSGOUT_PUBX_ID_POLYS_UART2 0x209100f3 //Output rate of the NMEA-GX-PUBX03 message on port UART2 +#define CFG_MSGOUT_PUBX_ID_POLYS_USB 0x209100f4 //Output rate of the NMEA-GX-PUBX03 message on port USB +#define CFG_MSGOUT_PUBX_ID_POLYT_I2C 0x209100f6 //Output rate of the NMEA-GX-PUBX04 message on port I2C +#define CFG_MSGOUT_PUBX_ID_POLYT_SPI 0x209100fa //Output rate of the NMEA-GX-PUBX04 message on port SPI +#define CFG_MSGOUT_PUBX_ID_POLYT_UART1 0x209100f7 //Output rate of the NMEA-GX-PUBX04 message on port UART1 +#define CFG_MSGOUT_PUBX_ID_POLYT_UART2 0x209100f8 //Output rate of the NMEA-GX-PUBX04 message on port UART2 +#define CFG_MSGOUT_PUBX_ID_POLYT_USB 0x209100f9 //Output rate of the NMEA-GX-PUBX04 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1005_I2C 0x209102bd //Output rate of the RTCM-3X-TYPE1005 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1005_SPI 0x209102c1 //Output rate of the RTCM-3X-TYPE1005 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1005_UART1 0x209102be //Output rate of the RTCM-3X-TYPE1005 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1005_UART2 0x209102bf //Output rate of the RTCM-3X-TYPE1005 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1005_USB 0x209102c0 //Output rate of the RTCM-3X-TYPE1005 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1074_I2C 0x2091035e //Output rate of the RTCM-3X-TYPE1074 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1074_SPI 0x20910362 //Output rate of the RTCM-3X-TYPE1074 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1074_UART1 0x2091035f //Output rate of the RTCM-3X-TYPE1074 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1074_UART2 0x20910360 //Output rate of the RTCM-3X-TYPE1074 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1074_USB 0x20910361 //Output rate of the RTCM-3X-TYPE1074 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1077_I2C 0x209102cc //Output rate of the RTCM-3X-TYPE1077 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1077_SPI 0x209102d0 //Output rate of the RTCM-3X-TYPE1077 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1077_UART1 0x209102cd //Output rate of the RTCM-3X-TYPE1077 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1077_UART2 0x209102ce //Output rate of the RTCM-3X-TYPE1077 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1077_USB 0x209102cf //Output rate of the RTCM-3X-TYPE1077 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1084_I2C 0x20910363 //Output rate of the RTCM-3X-TYPE1084 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1084_SPI 0x20910367 //Output rate of the RTCM-3X-TYPE1084 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1084_UART1 0x20910364 //Output rate of the RTCM-3X-TYPE1084 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1084_UART2 0x20910365 //Output rate of the RTCM-3X-TYPE1084 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1084_USB 0x20910366 //Output rate of the RTCM-3X-TYPE1084 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1087_I2C 0x209102d1 //Output rate of the RTCM-3X-TYPE1087 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1087_SPI 0x209102d5 //Output rate of the RTCM-3X-TYPE1087 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1087_UART1 0x209102d2 //Output rate of the RTCM-3X-TYPE1087 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1087_UART2 0x209102d3 //Output rate of the RTCM-3X-TYPE1087 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1087_USB 0x209102d4 //Output rate of the RTCM-3X-TYPE1087 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1094_I2C 0x20910368 //Output rate of the RTCM-3X-TYPE1094 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1094_SPI 0x2091036c //Output rate of the RTCM-3X-TYPE1094 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1094_UART1 0x20910369 //Output rate of the RTCM-3X-TYPE1094 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1094_UART2 0x2091036a //Output rate of the RTCM-3X-TYPE1094 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1094_USB 0x2091036b //Output rate of the RTCM-3X-TYPE1094 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1097_I2C 0x20910318 //Output rate of the RTCM-3X-TYPE1097 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1097_SPI 0x2091031c //Output rate of the RTCM-3X-TYPE1097 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1097_UART1 0x20910319 //Output rate of the RTCM-3X-TYPE1097 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1097_UART2 0x2091031a //Output rate of the RTCM-3X-TYPE1097 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1097_USB 0x2091031b //Output rate of the RTCM-3X-TYPE1097 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1124_I2C 0x2091036d //Output rate of the RTCM-3X-TYPE1124 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1124_SPI 0x20910371 //Output rate of the RTCM-3X-TYPE1124 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1124_UART1 0x2091036e //Output rate of the RTCM-3X-TYPE1124 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1124_UART2 0x2091036f //Output rate of the RTCM-3X-TYPE1124 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1124_USB 0x20910370 //Output rate of the RTCM-3X-TYPE1124 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1127_I2C 0x209102d6 //Output rate of the RTCM-3X-TYPE1127 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1127_SPI 0x209102da //Output rate of the RTCM-3X-TYPE1127 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1127_UART1 0x209102d7 //Output rate of the RTCM-3X-TYPE1127 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1127_UART2 0x209102d8 //Output rate of the RTCM-3X-TYPE1127 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1127_USB 0x209102d9 //Output rate of the RTCM-3X-TYPE1127 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE1230_I2C 0x20910303 //Output rate of the RTCM-3X-TYPE1230 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE1230_SPI 0x20910307 //Output rate of the RTCM-3X-TYPE1230 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE1230_UART1 0x20910304 //Output rate of the RTCM-3X-TYPE1230 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE1230_UART2 0x20910305 //Output rate of the RTCM-3X-TYPE1230 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE1230_USB 0x20910306 //Output rate of the RTCM-3X-TYPE1230 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE4072_0_I2C 0x209102fe //Output rate of the RTCM-3X-TYPE4072_0 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE4072_0_SPI 0x20910302 //Output rate of the RTCM-3X-TYPE4072_0 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE4072_0_UART1 0x209102ff //Output rate of the RTCM-3X-TYPE4072_0 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE4072_0_UART2 0x20910300 //Output rate of the RTCM-3X-TYPE4072_0 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE4072_0_USB 0x20910301 //Output rate of the RTCM-3X-TYPE4072_0 message on port USB +#define CFG_MSGOUT_RTCM_3X_TYPE4072_1_I2C 0x20910381 //Output rate of the RTCM-3X-TYPE4072_1 message on port I2C +#define CFG_MSGOUT_RTCM_3X_TYPE4072_1_SPI 0x20910385 //Output rate of the RTCM-3X-TYPE4072_1 message on port SPI +#define CFG_MSGOUT_RTCM_3X_TYPE4072_1_UART1 0x20910382 //Output rate of the RTCM-3X-TYPE4072_1 message on port UART1 +#define CFG_MSGOUT_RTCM_3X_TYPE4072_1_UART2 0x20910383 //Output rate of the RTCM-3X-TYPE4072_1 message on port UART2 +#define CFG_MSGOUT_RTCM_3X_TYPE4072_1_USB 0x20910384 //Output rate of the RTCM-3X-TYPE4072_1 message on port USB +#define CFG_MSGOUT_UBX_LOG_INFO_I2C 0x20910259 //Output rate of the UBX-LOG-INFO message on port I2C +#define CFG_MSGOUT_UBX_LOG_INFO_SPI 0x2091025d //Output rate of the UBX-LOG-INFO message on port SPI +#define CFG_MSGOUT_UBX_LOG_INFO_UART1 0x2091025a //Output rate of the UBX-LOG-INFO message on port UART1 +#define CFG_MSGOUT_UBX_LOG_INFO_UART2 0x2091025b //Output rate of the UBX-LOG-INFO message on port UART2 +#define CFG_MSGOUT_UBX_LOG_INFO_USB 0x2091025c //Output rate of the UBX-LOG-INFO message on port USB +#define CFG_MSGOUT_UBX_MON_COMMS_I2C 0x2091034f //Output rate of the UBX-MON-COMMS message on port I2C +#define CFG_MSGOUT_UBX_MON_COMMS_SPI 0x20910353 //Output rate of the UBX-MON-COMMS message on port SPI +#define CFG_MSGOUT_UBX_MON_COMMS_UART1 0x20910350 //Output rate of the UBX-MON-COMMS message on port UART1 +#define CFG_MSGOUT_UBX_MON_COMMS_UART2 0x20910351 //Output rate of the UBX-MON-COMMS message on port UART2 +#define CFG_MSGOUT_UBX_MON_COMMS_USB 0x20910352 //Output rate of the UBX-MON-COMMS message on port USB +#define CFG_MSGOUT_UBX_MON_HW2_I2C 0x209101b9 //Output rate of the UBX-MON-HW2 message on port I2C +#define CFG_MSGOUT_UBX_MON_HW2_SPI 0x209101bd //Output rate of the UBX-MON-HW2 message on port SPI +#define CFG_MSGOUT_UBX_MON_HW2_UART1 0x209101ba //Output rate of the UBX-MON-HW2 message on port UART1 +#define CFG_MSGOUT_UBX_MON_HW2_UART2 0x209101bb //Output rate of the UBX-MON-HW2 message on port UART2 +#define CFG_MSGOUT_UBX_MON_HW2_USB 0x209101bc //Output rate of the UBX-MON-HW2 message on port USB +#define CFG_MSGOUT_UBX_MON_HW3_I2C 0x20910354 //Output rate of the UBX-MON-HW3 message on port I2C +#define CFG_MSGOUT_UBX_MON_HW3_SPI 0x20910358 //Output rate of the UBX-MON-HW3 message on port SPI +#define CFG_MSGOUT_UBX_MON_HW3_UART1 0x20910355 //Output rate of the UBX-MON-HW3 message on port UART1 +#define CFG_MSGOUT_UBX_MON_HW3_UART2 0x20910356 //Output rate of the UBX-MON-HW3 message on port UART2 +#define CFG_MSGOUT_UBX_MON_HW3_USB 0x20910357 //Output rate of the UBX-MON-HW3 message on port USB +#define CFG_MSGOUT_UBX_MON_HW_I2C 0x209101b4 //Output rate of the UBX-MON-HW message on port I2C +#define CFG_MSGOUT_UBX_MON_HW_SPI 0x209101b8 //Output rate of the UBX-MON-HW message on port SPI +#define CFG_MSGOUT_UBX_MON_HW_UART1 0x209101b5 //Output rate of the UBX-MON-HW message on port UART1 +#define CFG_MSGOUT_UBX_MON_HW_UART2 0x209101b6 //Output rate of the UBX-MON-HW message on port UART2 +#define CFG_MSGOUT_UBX_MON_HW_USB 0x209101b7 //Output rate of the UBX-MON-HW message on port USB +#define CFG_MSGOUT_UBX_MON_IO_I2C 0x209101a5 //Output rate of the UBX-MON-IO message on port I2C +#define CFG_MSGOUT_UBX_MON_IO_SPI 0x209101a9 //Output rate of the UBX-MON-IO message on port SPI +#define CFG_MSGOUT_UBX_MON_IO_UART1 0x209101a6 //Output rate of the UBX-MON-IO message on port UART1 +#define CFG_MSGOUT_UBX_MON_IO_UART2 0x209101a7 //Output rate of the UBX-MON-IO message on port UART2 +#define CFG_MSGOUT_UBX_MON_IO_USB 0x209101a8 //Output rate of the UBX-MON-IO message on port USB +#define CFG_MSGOUT_UBX_MON_MSGPP_I2C 0x20910196 //Output rate of the UBX-MON-MSGPP message on port I2C +#define CFG_MSGOUT_UBX_MON_MSGPP_SPI 0x2091019a //Output rate of the UBX-MON-MSGPP message on port SPI +#define CFG_MSGOUT_UBX_MON_MSGPP_UART1 0x20910197 //Output rate of the UBX-MON-MSGPP message on port UART1 +#define CFG_MSGOUT_UBX_MON_MSGPP_UART2 0x20910198 //Output rate of the UBX-MON-MSGPP message on port UART2 +#define CFG_MSGOUT_UBX_MON_MSGPP_USB 0x20910199 //Output rate of the UBX-MON-MSGPP message on port USB +#define CFG_MSGOUT_UBX_MON_RF_I2C 0x20910359 //Output rate of the UBX-MON-RF message on port I2C +#define CFG_MSGOUT_UBX_MON_RF_SPI 0x2091035d //Output rate of the UBX-MON-RF message on port SPI +#define CFG_MSGOUT_UBX_MON_RF_UART1 0x2091035a //Output rate of the UBX-MON-RF message on port UART1 +#define CFG_MSGOUT_UBX_MON_RF_UART2 0x2091035b //Output rate of the UBX-MON-RF message on port UART2 +#define CFG_MSGOUT_UBX_MON_RF_USB 0x2091035c // Output rate of the UBX-MON-RF message on port USB +#define CFG_MSGOUT_UBX_MON_RXBUF_I2C 0x209101a0 // Output rate of the UBX-MON-RXBUF message on port I2C +#define CFG_MSGOUT_UBX_MON_RXBUF_SPI 0x209101a4 // Output rate of the UBX-MON-RXBUF message on port SPI +#define CFG_MSGOUT_UBX_MON_RXBUF_UART1 0x209101a1 // Output rate of the UBX-MON-RXBUF message on port UART1 +#define CFG_MSGOUT_UBX_MON_RXBUF_UART2 0x209101a2 // Output rate of the UBX-MON-RXBUF message on port UART2 +#define CFG_MSGOUT_UBX_MON_RXBUF_USB 0x209101a3 // Output rate of the UBX-MON-RXBUF message on port USB +#define CFG_MSGOUT_UBX_MON_RXR_I2C 0x20910187 // Output rate of the UBX-MON-RXR message on port I2C +#define CFG_MSGOUT_UBX_MON_RXR_SPI 0x2091018b // Output rate of the UBX-MON-RXR message on port SPI +#define CFG_MSGOUT_UBX_MON_RXR_UART1 0x20910188 // Output rate of the UBX-MON-RXR message on port UART1 +#define CFG_MSGOUT_UBX_MON_RXR_UART2 0x20910189 // Output rate of the UBX-MON-RXR message on port UART2 +#define CFG_MSGOUT_UBX_MON_RXR_USB 0x2091018a // Output rate of the UBX-MON-RXR message on port USB +#define CFG_MSGOUT_UBX_MON_SPAN_I2C 0x2091038b // Output rate of the UBX-MON-SPAN message on port I2C +#define CFG_MSGOUT_UBX_MON_SPAN_SPI 0x2091038f // Output rate of the UBX-MON-SPAN message on port SPI +#define CFG_MSGOUT_UBX_MON_SPAN_UART1 0x2091038c // Output rate of the UBX-MON-SPAN message on port UART1 +#define CFG_MSGOUT_UBX_MON_SPAN_UART2 0x2091038d // Output rate of the UBX-MON-SPAN message on port UART2 +#define CFG_MSGOUT_UBX_MON_SPAN_USB 0x2091038e // Output rate of the UBX-MON-SPAN message on port USB +#define CFG_MSGOUT_UBX_MON_TXBUF_I2C 0x2091019b // Output rate of the UBX-MON-TXBUF message on port I2C +#define CFG_MSGOUT_UBX_MON_TXBUF_SPI 0x2091019f // Output rate of the UBX-MON-TXBUF message on port SPI +#define CFG_MSGOUT_UBX_MON_TXBUF_UART1 0x2091019c // Output rate of the UBX-MON-TXBUF message on port UART1 +#define CFG_MSGOUT_UBX_MON_TXBUF_UART2 0x2091019d // Output rate of the UBX-MON-TXBUF message on port UART2 +#define CFG_MSGOUT_UBX_MON_TXBUF_USB 0x2091019e // Output rate of the UBX-MON-TXBUF message on port USB +#define CFG_MSGOUT_UBX_NAV_CLOCK_I2C 0x20910065 // Output rate of the UBX-NAV-CLOCK message on port I2C +#define CFG_MSGOUT_UBX_NAV_CLOCK_SPI 0x20910069 // Output rate of the UBX-NAV-CLOCK message on port SPI +#define CFG_MSGOUT_UBX_NAV_CLOCK_UART1 0x20910066 // Output rate of the UBX-NAV-CLOCK message on port UART1 +#define CFG_MSGOUT_UBX_NAV_CLOCK_UART2 0x20910067 // Output rate of the UBX-NAV-CLOCK message on port UART2 +#define CFG_MSGOUT_UBX_NAV_CLOCK_USB 0x20910068 // Output rate of the UBX-NAV-CLOCK message on port USB +#define CFG_MSGOUT_UBX_NAV_DOP_I2C 0x20910038 // Output rate of the UBX-NAV-DOP message on port I2C +#define CFG_MSGOUT_UBX_NAV_DOP_SPI 0x2091003c // Output rate of the UBX-NAV-DOP message on port SPI +#define CFG_MSGOUT_UBX_NAV_DOP_UART1 0x20910039 // Output rate of the UBX-NAV-DOP message on port UART1 +#define CFG_MSGOUT_UBX_NAV_DOP_UART2 0x2091003a // Output rate of the UBX-NAV-DOP message on port UART2 +#define CFG_MSGOUT_UBX_NAV_DOP_USB 0x2091003b // Output rate of the UBX-NAV-DOP message on port USB +#define CFG_MSGOUT_UBX_NAV_EOE_I2C 0x2091015f // Output rate of the UBX-NAV-EOE message on port I2C +#define CFG_MSGOUT_UBX_NAV_EOE_SPI 0x20910163 // Output rate of the UBX-NAV-EOE message on port SPI +#define CFG_MSGOUT_UBX_NAV_EOE_UART1 0x20910160 // Output rate of the UBX-NAV-EOE message on port UART1 +#define CFG_MSGOUT_UBX_NAV_EOE_UART2 0x20910161 // Output rate of the UBX-NAV-EOE message on port UART2 +#define CFG_MSGOUT_UBX_NAV_EOE_USB 0x20910162 // Output rate of the UBX-NAV-EOE message on port USB +#define CFG_MSGOUT_UBX_NAV_GEOFENCE_I2C 0x209100a1 // Output rate of the UBX-NAV-GEOFENCE message on port I2C +#define CFG_MSGOUT_UBX_NAV_GEOFENCE_SPI 0x209100a5 // Output rate of the UBX-NAV-GEOFENCE message on port SPI +#define CFG_MSGOUT_UBX_NAV_GEOFENCE_UART1 0x209100a2 // Output rate of the UBX-NAV-GEOFENCE message on port UART1 +#define CFG_MSGOUT_UBX_NAV_GEOFENCE_UART2 0x209100a3 // Output rate of the UBX-NAV-GEOFENCE message on port UART2 +#define CFG_MSGOUT_UBX_NAV_GEOFENCE_USB 0x209100a4 // Output rate of the UBX-NAV-GEOFENCE message on port USB +#define CFG_MSGOUT_UBX_NAV_HPPOSECEF_I2C 0x2091002e // Output rate of the UBX-NAV-HPPOSECEF message on port I2C +#define CFG_MSGOUT_UBX_NAV_HPPOSECEF_SPI 0x20910032 // Output rate of the UBX-NAV-HPPOSECEF message on port SPI +#define CFG_MSGOUT_UBX_NAV_HPPOSECEF_UART1 0x2091002f // Output rate of the UBX-NAV-HPPOSECEF message on port UART1 +#define CFG_MSGOUT_UBX_NAV_HPPOSECEF_UART2 0x20910030 // Output rate of the UBX-NAV-HPPOSECEF message on port UART2 +#define CFG_MSGOUT_UBX_NAV_HPPOSECEF_USB 0x20910031 // Output rate of the UBX-NAV-HPPOSECEF message on port USB +#define CFG_MSGOUT_UBX_NAV_HPPOSLLH_I2C 0x20910033 // Output rate of the UBX-NAV-HPPOSLLH message on port I2C +#define CFG_MSGOUT_UBX_NAV_HPPOSLLH_SPI 0x20910037 // Output rate of the UBX-NAV-HPPOSLLH message on port SPI +#define CFG_MSGOUT_UBX_NAV_HPPOSLLH_UART1 0x20910034 // Output rate of the UBX-NAV-HPPOSLLH message on port UART1 +#define CFG_MSGOUT_UBX_NAV_HPPOSLLH_UART2 0x20910035 // Output rate of the UBX-NAV-HPPOSLLH message on port UART2 +#define CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB 0x20910036 // Output rate of the UBX-NAV-HPPOSLLH message on port USB +#define CFG_MSGOUT_UBX_NAV_ODO_I2C 0x2091007e // Output rate of the UBX-NAV-ODO message on port I2C +#define CFG_MSGOUT_UBX_NAV_ODO_SPI 0x20910082 // Output rate of the UBX-NAV-ODO message on port SPI +#define CFG_MSGOUT_UBX_NAV_ODO_UART1 0x2091007f // Output rate of the UBX-NAV-ODO message on port UART1 +#define CFG_MSGOUT_UBX_NAV_ODO_UART2 0x20910080 // Output rate of the UBX-NAV-ODO message on port UART2 +#define CFG_MSGOUT_UBX_NAV_ODO_USB 0x20910081 // Output rate of the UBX-NAV-ODO message on port USB +#define CFG_MSGOUT_UBX_NAV_ORB_I2C 0x20910010 // Output rate of the UBX-NAV-ORB message on port I2C +#define CFG_MSGOUT_UBX_NAV_ORB_SPI 0x20910014 // Output rate of the UBX-NAV-ORB message on port SPI +#define CFG_MSGOUT_UBX_NAV_ORB_UART1 0x20910011 // Output rate of the UBX-NAV-ORB message on port UART1 +#define CFG_MSGOUT_UBX_NAV_ORB_UART2 0x20910012 // Output rate of the UBX-NAV-ORB message on port UART2 +#define CFG_MSGOUT_UBX_NAV_ORB_USB 0x20910013 // Output rate of the UBX-NAV-ORB message on port USB +#define CFG_MSGOUT_UBX_NAV_POSECEF_I2C 0x20910024 // Output rate of the UBX-NAV-POSECEF message on port I2C +#define CFG_MSGOUT_UBX_NAV_POSECEF_SPI 0x20910028 // Output rate of the UBX-NAV-POSECEF message on port SPI +#define CFG_MSGOUT_UBX_NAV_POSECEF_UART1 0x20910025 // Output rate of the UBX-NAV-POSECEF message on port UART1 +#define CFG_MSGOUT_UBX_NAV_POSECEF_UART2 0x20910026 // Output rate of the UBX-NAV-POSECEF message on port UART2 +#define CFG_MSGOUT_UBX_NAV_POSECEF_USB 0x20910027 // Output rate of the UBX-NAV-POSECEF message on port USB +#define CFG_MSGOUT_UBX_NAV_POSLLH_I2C 0x20910029 // Output rate of the UBX-NAV-POSLLH message on port I2C +#define CFG_MSGOUT_UBX_NAV_POSLLH_SPI 0x2091002d // Output rate of the UBX-NAV-POSLLH message on port SPI +#define CFG_MSGOUT_UBX_NAV_POSLLH_UART1 0x2091002a // Output rate of the UBX-NAV-POSLLH message on port UART1 +#define CFG_MSGOUT_UBX_NAV_POSLLH_UART2 0x2091002b // Output rate of the UBX-NAV-POSLLH message on port UART2 +#define CFG_MSGOUT_UBX_NAV_POSLLH_USB 0x2091002c // Output rate of the UBX-NAV-POSLLH message on port USB +#define CFG_MSGOUT_UBX_NAV_PVT_I2C 0x20910006 // Output rate of the UBX-NAV-PVT message on port I2C +#define CFG_MSGOUT_UBX_NAV_PVT_SPI 0x2091000a // Output rate of the UBX-NAV-PVT message on port SPI +#define CFG_MSGOUT_UBX_NAV_PVT_UART1 0x20910007 // Output rate of the UBX-NAV-PVT message on port UART1 +#define CFG_MSGOUT_UBX_NAV_PVT_UART2 0x20910008 // Output rate of the UBX-NAV-PVT message on port UART2 +#define CFG_MSGOUT_UBX_NAV_PVT_USB 0x20910009 // Output rate of the UBX-NAV-PVT message on port USB +#define CFG_MSGOUT_UBX_NAV_RELPOSNED_I2C 0x2091008d // Output rate of the UBX-NAV-RELPOSNED message on port I2C +#define CFG_MSGOUT_UBX_NAV_RELPOSNED_SPI 0x20910091 // Output rate of the UBX-NAV-RELPOSNED message on port SPI +#define CFG_MSGOUT_UBX_NAV_RELPOSNED_UART1 0x2091008e // Output rate of the UBX-NAV-RELPOSNED message on port UART1 +#define CFG_MSGOUT_UBX_NAV_RELPOSNED_UART2 0x2091008f // Output rate of the UBX-NAV-RELPOSNED message on port UART2 +#define CFG_MSGOUT_UBX_NAV_RELPOSNED_USB 0x20910090 // Output rate of the UBX-NAV-RELPOSNED message on port USB +#define CFG_MSGOUT_UBX_NAV_SAT_I2C 0x20910015 // Output rate of the UBX-NAV-SAT message on port I2C +#define CFG_MSGOUT_UBX_NAV_SAT_SPI 0x20910019 // Output rate of the UBX-NAV-SAT message on port SPI +#define CFG_MSGOUT_UBX_NAV_SAT_UART1 0x20910016 // Output rate of the UBX-NAV-SAT message on port UART1 +#define CFG_MSGOUT_UBX_NAV_SAT_UART2 0x20910017 // Output rate of the UBX-NAV-SAT message on port UART2 +#define CFG_MSGOUT_UBX_NAV_SAT_USB 0x20910018 // Output rate of the UBX-NAV-SAT message on port USB +#define CFG_MSGOUT_UBX_NAV_SBAS_I2C 0x2091006a // Output rate of the UBX-NAV-SBAS message on port I2C +#define CFG_MSGOUT_UBX_NAV_SBAS_SPI 0x2091006e // Output rate of the UBX-NAV-SBAS message on port SPI +#define CFG_MSGOUT_UBX_NAV_SBAS_UART1 0x2091006b // Output rate of the UBX-NAV-SBAS message on port UART1 +#define CFG_MSGOUT_UBX_NAV_SBAS_UART2 0x2091006c // Output rate of the UBX-NAV-SBAS message on port UART2 +#define CFG_MSGOUT_UBX_NAV_SBAS_USB 0x2091006d // Output rate of the UBX-NAV-SBAS message on port USB +#define CFG_MSGOUT_UBX_NAV_SIG_I2C 0x20910345 // Output rate of the UBX-NAV-SIG message on port I2C +#define CFG_MSGOUT_UBX_NAV_SIG_SPI 0x20910349 // Output rate of the UBX-NAV-SIG message on port SPI +#define CFG_MSGOUT_UBX_NAV_SIG_UART1 0x20910346 // Output rate of the UBX-NAV-SIG message on port UART1 +#define CFG_MSGOUT_UBX_NAV_SIG_UART2 0x20910347 // Output rate of the UBX-NAV-SIG message on port UART2 +#define CFG_MSGOUT_UBX_NAV_SIG_USB 0x20910348 // Output rate of the UBX-NAV-SIG message on port USB +#define CFG_MSGOUT_UBX_NAV_SLAS_I2C 0x20910336 // Output rate of the UBX-NAV-SLAS message on port I2C +#define CFG_MSGOUT_UBX_NAV_SLAS_SPI 0x2091033a // Output rate of the UBX-NAV-SLAS message on port SPI +#define CFG_MSGOUT_UBX_NAV_SLAS_UART1 0x20910337 // Output rate of the UBX-NAV-SLAS message on port UART1 +#define CFG_MSGOUT_UBX_NAV_SLAS_UART2 0x20910338 // Output rate of the UBX-NAV-SLAS message on port UART2 +#define CFG_MSGOUT_UBX_NAV_SLAS_USB 0x20910339 // Output rate of the UBX-NAV-SLAS message on port USB +#define CFG_MSGOUT_UBX_NAV_STATUS_I2C 0x2091001a // Output rate of the UBX-NAV-STATUS message on port I2C +#define CFG_MSGOUT_UBX_NAV_STATUS_SPI 0x2091001e // Output rate of the UBX-NAV-STATUS message on port SPI +#define CFG_MSGOUT_UBX_NAV_STATUS_UART1 0x2091001b // Output rate of the UBX-NAV-STATUS message on port UART1 +#define CFG_MSGOUT_UBX_NAV_STATUS_UART2 0x2091001c // Output rate of the UBX-NAV-STATUS message on port UART2 +#define CFG_MSGOUT_UBX_NAV_STATUS_USB 0x2091001d // Output rate of the UBX-NAV-STATUS message on port USB +#define CFG_MSGOUT_UBX_NAV_SVIN_I2C 0x20910088 // Output rate of the UBX-NAV-SVIN message on port I2C +#define CFG_MSGOUT_UBX_NAV_SVIN_SPI 0x2091008c // Output rate of the UBX-NAV-SVIN message on port SPI +#define CFG_MSGOUT_UBX_NAV_SVIN_UART1 0x20910089 // Output rate of the UBX-NAV-SVIN message on port UART1 +#define CFG_MSGOUT_UBX_NAV_SVIN_UART2 0x2091008a // Output rate of the UBX-NAV-SVIN message on port UART2 +#define CFG_MSGOUT_UBX_NAV_SVIN_USB 0x2091008b // Output rate of the UBX-NAV-SVIN message on port USB +#define CFG_MSGOUT_UBX_NAV_TIMEBDS_I2C 0x20910051 // Output rate of the UBX-NAV-TIMEBDS message on port I2C +#define CFG_MSGOUT_UBX_NAV_TIMEBDS_SPI 0x20910055 // Output rate of the UBX-NAV-TIMEBDS message on port SPI +#define CFG_MSGOUT_UBX_NAV_TIMEBDS_UART1 0x20910052 // Output rate of the UBX-NAV-TIMEBDS message on port UART1 +#define CFG_MSGOUT_UBX_NAV_TIMEBDS_UART2 0x20910053 // Output rate of the UBX-NAV-TIMEBDS message on port UART2 +#define CFG_MSGOUT_UBX_NAV_TIMEBDS_USB 0x20910054 // Output rate of the UBX-NAV-TIMEBDS message on port USB +#define CFG_MSGOUT_UBX_NAV_TIMEGAL_I2C 0x20910056 // Output rate of the UBX-NAV-TIMEGAL message on port I2C +#define CFG_MSGOUT_UBX_NAV_TIMEGAL_SPI 0x2091005a // Output rate of the UBX-NAV-TIMEGAL message on port SPI +#define CFG_MSGOUT_UBX_NAV_TIMEGAL_UART1 0x20910057 // Output rate of the UBX-NAV-TIMEGAL message on port UART1 +#define CFG_MSGOUT_UBX_NAV_TIMEGAL_UART2 0x20910058 // Output rate of the UBX-NAV-TIMEGAL message on port UART2 +#define CFG_MSGOUT_UBX_NAV_TIMEGAL_USB 0x20910059 // Output rate of the UBX-NAV-TIMEGAL message on port USB +#define CFG_MSGOUT_UBX_NAV_TIMEGLO_I2C 0x2091004c // Output rate of the UBX-NAV-TIMEGLO message on port I2C +#define CFG_MSGOUT_UBX_NAV_TIMEGLO_SPI 0x20910050 // Output rate of the UBX-NAV-TIMEGLO message on port SPI +#define CFG_MSGOUT_UBX_NAV_TIMEGLO_UART1 0x2091004d // Output rate of the UBX-NAV-TIMEGLO message on port UART1 +#define CFG_MSGOUT_UBX_NAV_TIMEGLO_UART2 0x2091004e // Output rate of the UBX-NAV-TIMEGLO message on port UART2 +#define CFG_MSGOUT_UBX_NAV_TIMEGLO_USB 0x2091004f // Output rate of the UBX-NAV-TIMEGLO message on port USB +#define CFG_MSGOUT_UBX_NAV_TIMEGPS_I2C 0x20910047 // Output rate of the UBX-NAV-TIMEGPS message on port I2C +#define CFG_MSGOUT_UBX_NAV_TIMEGPS_SPI 0x2091004b // Output rate of the UBX-NAV-TIMEGPS message on port SPI +#define CFG_MSGOUT_UBX_NAV_TIMEGPS_UART1 0x20910048 // Output rate of the UBX-NAV-TIMEGPS message on port UART1 +#define CFG_MSGOUT_UBX_NAV_TIMEGPS_UART2 0x20910049 // Output rate of the UBX-NAV-TIMEGPS message on port UART2 +#define CFG_MSGOUT_UBX_NAV_TIMEGPS_USB 0x2091004a // Output rate of the UBX-NAV-TIMEGPS message on port USB +#define CFG_MSGOUT_UBX_NAV_TIMELS_I2C 0x20910060 // Output rate of the UBX-NAV-TIMELS message on port I2C +#define CFG_MSGOUT_UBX_NAV_TIMELS_SPI 0x20910064 // Output rate of the UBX-NAV-TIMELS message on port SPI +#define CFG_MSGOUT_UBX_NAV_TIMELS_UART1 0x20910061 // Output rate of the UBX-NAV-TIMELS message on port UART1 +#define CFG_MSGOUT_UBX_NAV_TIMELS_UART2 0x20910062 // Output rate of the UBX-NAV-TIMELS message on port UART2 +#define CFG_MSGOUT_UBX_NAV_TIMELS_USB 0x20910063 // Output rate of the UBX-NAV-TIMELS message on port USB +#define CFG_MSGOUT_UBX_NAV_TIMEQZSS_I2C 0x20910386 // Output rate of the UBX-NAV-TIMEQZSSmessage on port I2C +#define CFG_MSGOUT_UBX_NAV_TIMEQZSS_SPI 0x2091038a // Output rate of the UBX-NAV-TIMEQZSSmessage on port SPI +#define CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART1 0x20910387 // Output rate of the UBX-NAV-TIMEQZSSmessage on port UART1 +#define CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART2 0x20910388 // Output rate of the UBX-NAV-TIMEQZSSmessage on port UART2 +#define CFG_MSGOUT_UBX_NAV_TIMEQZSS_USB 0x20910389 // Output rate of the UBX-NAV-TIMEQZSSmessage on port USB +#define CFG_MSGOUT_UBX_NAV_TIMEUTC_I2C 0x2091005b // Output rate of the UBX-NAV-TIMEUTC message on port I2C +#define CFG_MSGOUT_UBX_NAV_TIMEUTC_SPI 0x2091005f // Output rate of the UBX-NAV-TIMEUTC message on port SPI +#define CFG_MSGOUT_UBX_NAV_TIMEUTC_UART1 0x2091005c // Output rate of the UBX-NAV-TIMEUTC message on port UART1 +#define CFG_MSGOUT_UBX_NAV_TIMEUTC_UART2 0x2091005d // Output rate of the UBX-NAV-TIMEUTC message on port UART2 +#define CFG_MSGOUT_UBX_NAV_TIMEUTC_USB 0x2091005e // Output rate of the UBX-NAV-TIMEUTC message on port USB +#define CFG_MSGOUT_UBX_NAV_VELECEF_I2C 0x2091003d // Output rate of the UBX-NAV-VELECEF message on port I2C +#define CFG_MSGOUT_UBX_NAV_VELECEF_SPI 0x20910041 // Output rate of the UBX-NAV-VELECEF message on port SPI +#define CFG_MSGOUT_UBX_NAV_VELECEF_UART1 0x2091003e // Output rate of the UBX-NAV-VELECEF message on port UART1 +#define CFG_MSGOUT_UBX_NAV_VELECEF_UART2 0x2091003f // Output rate of the UBX-NAV-VELECEF message on port UART2 +#define CFG_MSGOUT_UBX_NAV_VELECEF_USB 0x20910040 // Output rate of the UBX-NAV-VELECEF message on port USB +#define CFG_MSGOUT_UBX_NAV_VELNED_I2C 0x20910042 // Output rate of the UBX-NAV-VELNED message on port I2C +#define CFG_MSGOUT_UBX_NAV_VELNED_SPI 0x20910046 // Output rate of the UBX-NAV-VELNED message on port SPI +#define CFG_MSGOUT_UBX_NAV_VELNED_UART1 0x20910043 // Output rate of the UBX-NAV-VELNED message on port UART1 +#define CFG_MSGOUT_UBX_NAV_VELNED_UART2 0x20910044 // Output rate of the UBX-NAV-VELNED message on port UART2 +#define CFG_MSGOUT_UBX_NAV_VELNED_USB 0x20910045 // Output rate of the UBX-NAV-VELNED message on port USB +#define CFG_MSGOUT_UBX_RXM_MEASX_I2C 0x20910204 // Output rate of the UBX-RXM-MEASX message on port I2C +#define CFG_MSGOUT_UBX_RXM_MEASX_SPI 0x20910208 // Output rate of the UBX-RXM-MEASX message on port SPI +#define CFG_MSGOUT_UBX_RXM_MEASX_UART1 0x20910205 // Output rate of the UBX-RXM-MEASX message on port UART1 +#define CFG_MSGOUT_UBX_RXM_MEASX_UART2 0x20910206 // Output rate of the UBX-RXM-MEASX message on port UART2 +#define CFG_MSGOUT_UBX_RXM_MEASX_USB 0x20910207 // Output rate of the UBX-RXM-MEASX message on port USB +#define CFG_MSGOUT_UBX_RXM_RAWX_I2C 0x209102a4 // Output rate of the UBX-RXM-RAWX message on port I2C +#define CFG_MSGOUT_UBX_RXM_RAWX_SPI 0x209102a8 // Output rate of the UBX-RXM-RAWX message on port SPI +#define CFG_MSGOUT_UBX_RXM_RAWX_UART1 0x209102a5 // Output rate of the UBX-RXM-RAWX message on port UART1 +#define CFG_MSGOUT_UBX_RXM_RAWX_UART2 0x209102a6 // Output rate of the UBX-RXM-RAWX message on port UART2 +#define CFG_MSGOUT_UBX_RXM_RAWX_USB 0x209102a7 // Output rate of the UBX-RXM-RAWX message on port USB +#define CFG_MSGOUT_UBX_RXM_RLM_I2C 0x2091025e // Output rate of the UBX-RXM-RLM message on port I2C +#define CFG_MSGOUT_UBX_RXM_RLM_SPI 0x20910262 // Output rate of the UBX-RXM-RLM message on port SPI +#define CFG_MSGOUT_UBX_RXM_RLM_UART1 0x2091025f // Output rate of the UBX-RXM-RLM message on port UART1 +#define CFG_MSGOUT_UBX_RXM_RLM_UART2 0x20910260 // Output rate of the UBX-RXM-RLM message on port UART2 +#define CFG_MSGOUT_UBX_RXM_RLM_USB 0x20910261 // Output rate of the UBX-RXM-RLM message on port USB +#define CFG_MSGOUT_UBX_RXM_RTCM_I2C 0x20910268 // Output rate of the UBX-RXM-RTCM message on port I2C +#define CFG_MSGOUT_UBX_RXM_RTCM_SPI 0x2091026c // Output rate of the UBX-RXM-RTCM message on port SPI +#define CFG_MSGOUT_UBX_RXM_RTCM_UART1 0x20910269 // Output rate of the UBX-RXM-RTCM message on port UART1 +#define CFG_MSGOUT_UBX_RXM_RTCM_UART2 0x2091026a // Output rate of the UBX-RXM-RTCM message on port UART2 +#define CFG_MSGOUT_UBX_RXM_RTCM_USB 0x2091026b // Output rate of the UBX-RXM-RTCM message on port USB +#define CFG_MSGOUT_UBX_RXM_SFRBX_I2C 0x20910231 // Output rate of the UBX-RXM-SFRBX message on port I2C +#define CFG_MSGOUT_UBX_RXM_SFRBX_SPI 0x20910235 // Output rate of the UBX-RXM-SFRBX message on port SPI +#define CFG_MSGOUT_UBX_RXM_SFRBX_UART1 0x20910232 // Output rate of the UBX-RXM-SFRBX message on port UART1 +#define CFG_MSGOUT_UBX_RXM_SFRBX_UART2 0x20910233 // Output rate of the UBX-RXM-SFRBX message on port UART2 +#define CFG_MSGOUT_UBX_RXM_SFRBX_USB 0x20910234 // Output rate of the UBX-RXM-SFRBX message on port USB +#define CFG_MSGOUT_UBX_TIM_TM2_I2C 0x20910178 // Output rate of the UBX-TIM-TM2 message on port I2C +#define CFG_MSGOUT_UBX_TIM_TM2_SPI 0x2091017c // Output rate of the UBX-TIM-TM2 message on port SPI +#define CFG_MSGOUT_UBX_TIM_TM2_UART1 0x20910179 // Output rate of the UBX-TIM-TM2 message on port UART1 +#define CFG_MSGOUT_UBX_TIM_TM2_UART2 0x2091017a // Output rate of the UBX-TIM-TM2 message on port UART2 +#define CFG_MSGOUT_UBX_TIM_TM2_USB 0x2091017b // Output rate of the UBX-TIM-TM2 message on port USB +#define CFG_MSGOUT_UBX_TIM_TP_I2C 0x2091017d // Output rate of the UBX-TIM-TP message on port I2C +#define CFG_MSGOUT_UBX_TIM_TP_SPI 0x20910181 // Output rate of the UBX-TIM-TP message on port SPI +#define CFG_MSGOUT_UBX_TIM_TP_UART1 0x2091017e // Output rate of the UBX-TIM-TP message on port UART1 +#define CFG_MSGOUT_UBX_TIM_TP_UART2 0x2091017f // Output rate of the UBX-TIM-TP message on port UART2 +#define CFG_MSGOUT_UBX_TIM_TP_USB 0x20910180 // Output rate of the UBX-TIM-TP message on port USB +#define CFG_MSGOUT_UBX_TIM_VRFY_I2C 0x20910092 // Output rate of the UBX-TIM-VRFY message on port I2C +#define CFG_MSGOUT_UBX_TIM_VRFY_SPI 0x20910096 // Output rate of the UBX-TIM-VRFY message on port SPI +#define CFG_MSGOUT_UBX_TIM_VRFY_UART1 0x20910093 // Output rate of the UBX-TIM-VRFY message on port UART1 +#define CFG_MSGOUT_UBX_TIM_VRFY_UART2 0x20910094 // Output rate of the UBX-TIM-VRFY message on port UART2 +#define CFG_MSGOUT_UBX_TIM_VRFY_USB 0x20910095 // Output rate of the UBX-TIM-VRFY message on port USB +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +#endif