diff --git a/src/ubx.cpp b/src/ubx.cpp index 5bd2a66..69ede08 100644 --- a/src/ubx.cpp +++ b/src/ubx.cpp @@ -636,6 +636,25 @@ int GPSDriverUBX::configureDevice(const GNSSSystemsMask &gnssSystems) return -1; } + if (_interface == Interface::UART) { + // Disable GPS protocols at I2C + cfg_valset_msg_size = initCfgValset(); + cfgValset(UBX_CFG_KEY_CFG_I2CINPROT_UBX, 0, cfg_valset_msg_size); + cfgValset(UBX_CFG_KEY_CFG_I2CINPROT_NMEA, 0, cfg_valset_msg_size); + cfgValset(UBX_CFG_KEY_CFG_I2CINPROT_RTCM3X, 0, cfg_valset_msg_size); + cfgValset(UBX_CFG_KEY_CFG_I2COUTPROT_UBX, 0, cfg_valset_msg_size); + cfgValset(UBX_CFG_KEY_CFG_I2COUTPROT_NMEA, 0, cfg_valset_msg_size); + cfgValset(UBX_CFG_KEY_CFG_I2COUTPROT_RTCM3X, 0, cfg_valset_msg_size); + + if (!sendMessage(UBX_MSG_CFG_VALSET, (uint8_t *)&_buf, cfg_valset_msg_size)) { + return -1; + } + + if (waitForAck(UBX_MSG_CFG_VALSET, UBX_CONFIG_TIMEOUT, true) < 0) { + return -1; + } + } + int uart2_baudrate = 230400; if (_mode == UBXMode::RoverWithMovingBase) { diff --git a/src/ubx.h b/src/ubx.h index 1bd5adc..283ea6a 100644 --- a/src/ubx.h +++ b/src/ubx.h @@ -255,6 +255,14 @@ #define UBX_TX_CFG_GNSS_FLAGS_GLONASS_L2 0x00100000 /**< GLONASS: Use L2 Signal */ /* Key ID's for CFG-VAL{GET,SET,DEL} */ +#define UBX_CFG_KEY_CFG_I2C_ENABLED 0x10510003 +#define UBX_CFG_KEY_CFG_I2CINPROT_UBX 0x10710001 +#define UBX_CFG_KEY_CFG_I2CINPROT_NMEA 0x10710002 +#define UBX_CFG_KEY_CFG_I2CINPROT_RTCM3X 0x10710004 +#define UBX_CFG_KEY_CFG_I2COUTPROT_UBX 0x10720001 +#define UBX_CFG_KEY_CFG_I2COUTPROT_NMEA 0x10720002 +#define UBX_CFG_KEY_CFG_I2COUTPROT_RTCM3X 0x10720004 + #define UBX_CFG_KEY_CFG_UART1_BAUDRATE 0x40520001 #define UBX_CFG_KEY_CFG_UART1_STOPBITS 0x20520002 #define UBX_CFG_KEY_CFG_UART1_DATABITS 0x20520003