1+ // Enable data output from the NEO
2+ bool zedEnableLBandCommunication ()
3+ {
4+ bool response = true ;
5+
6+ #ifdef COMPILE_L_BAND
7+
8+ response &= theGNSS.setRXMCORcallbackPtr (&checkRXMCOR); // Enable callback to check if the PMP data is being decrypted successfully
9+
10+ if (productVariant == RTK_FACET_LBAND_DIRECT)
11+ {
12+ // Setup for ZED to NEO serial communication
13+ response &= theGNSS.setVal32 (UBLOX_CFG_UART2INPROT_UBX, true ); // Configure ZED for UBX input on UART2
14+
15+ // Disable PMP callback over I2C. Enable UARTs.
16+ response &= i2cLBand.setRXMPMPmessageCallbackPtr (nullptr ); // Disable PMP callback to push raw PMP over I2C
17+
18+ response &= i2cLBand.newCfgValset ();
19+ response &= i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_I2C, 0 ); // Disable UBX-RXM-PMP on NEO's I2C port
20+
21+ response &= i2cLBand.addCfgValset (UBLOX_CFG_UART2OUTPROT_UBX, 1 ); // Enable UBX output on NEO's UART2
22+ response &= i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART2, 1 ); // Output UBX-RXM-PMP on NEO's UART2
23+ response &= i2cLBand.addCfgValset (UBLOX_CFG_UART2_BAUDRATE, settings.radioPortBaud ); // Match baudrate with ZED
24+ }
25+ else if (productVariant == RTK_FACET_LBAND)
26+ {
27+ // Older versions of the Facet L-Band had solder jumpers that could be closed to directly connect the NEO
28+ // to the ZED. If the user has explicitly disabled I2C corrections, enable a UART connection.
29+ if (settings.useI2cForLbandCorrections == true )
30+ {
31+ response &= theGNSS.setVal32 (UBLOX_CFG_UART2INPROT_UBX, settings.enableUART2UBXIn );
32+
33+ i2cLBand.setRXMPMPmessageCallbackPtr (&pushRXMPMP); // Enable PMP callback to push raw PMP over I2C
34+
35+ response &= i2cLBand.newCfgValset ();
36+ response &= i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_I2C, 1 ); // Enable UBX-RXM-PMP on NEO's I2C port
37+
38+ response &= i2cLBand.addCfgValset (UBLOX_CFG_UART2OUTPROT_UBX, 0 ); // Disable UBX output on NEO's UART2
39+ response &= i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART2, 0 ); // Disable UBX-RXM-PMP on NEO's UART2
40+ }
41+ else // Setup ZED to NEO serial communication
42+ {
43+ response &= theGNSS.setVal32 (UBLOX_CFG_UART2INPROT_UBX, true ); // Configure ZED for UBX input on UART2
44+
45+ i2cLBand.setRXMPMPmessageCallbackPtr (nullptr ); // Disable PMP callback to push raw PMP over I2C
46+
47+ response &= i2cLBand.newCfgValset ();
48+ response &= i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_I2C, 0 ); // Disable UBX-RXM-PMP on NEO's I2C port
49+
50+ response &= i2cLBand.addCfgValset (UBLOX_CFG_UART2OUTPROT_UBX, 1 ); // Enable UBX output on UART2
51+ response &= i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART2, 1 ); // Output UBX-RXM-PMP on UART2
52+ response &=
53+ i2cLBand.addCfgValset (UBLOX_CFG_UART2_BAUDRATE, settings.radioPortBaud ); // Match baudrate with ZED
54+ }
55+ }
56+ else
57+ {
58+ systemPrintln (" zedEnableLBandCorrections: Unknown platform" );
59+ return (false );
60+ }
61+
62+ response &= i2cLBand.sendCfgValset ();
63+
64+ #endif
65+
66+ return (response);
67+ }
68+
69+ // Disable data output from the NEO
70+ bool zedDisableLBandCommunication ()
71+ {
72+ bool response = true ;
73+
74+ #ifdef COMPILE_L_BAND
75+ response &= i2cLBand.setRXMPMPmessageCallbackPtr (nullptr ); // Disable PMP callback no matter the platform
76+ response &= theGNSS.setRXMCORcallbackPtr (nullptr ); // Disable callback to check if the PMP data is being decrypted successfully
77+
78+ if (productVariant == RTK_FACET_LBAND_DIRECT)
79+ {
80+ response &= i2cLBand.newCfgValset ();
81+ response &= i2cLBand.addCfgValset (UBLOX_CFG_UART2OUTPROT_UBX, 0 ); // Disable UBX output from NEO's UART2
82+ }
83+ else if (productVariant == RTK_FACET_LBAND)
84+ {
85+ // Older versions of the Facet L-Band had solder jumpers that could be closed to directly connect the NEO
86+ // to the ZED. Check if the user has explicitly set I2C corrections.
87+ if (settings.useI2cForLbandCorrections == true )
88+ {
89+ response &= i2cLBand.newCfgValset ();
90+ response &= i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_I2C, 0 ); // Disable UBX-RXM-PMP from NEO's I2C port
91+ }
92+ else // Setup ZED to NEO serial communication
93+ {
94+ response &= i2cLBand.newCfgValset ();
95+ response &= i2cLBand.addCfgValset (UBLOX_CFG_UART2OUTPROT_UBX, 0 ); // Disable UBX output from NEO's UART2
96+ }
97+ }
98+ else
99+ {
100+ systemPrintln (" zedEnableLBandCorrections: Unknown platform" );
101+ return (false );
102+ }
103+
104+ response &= i2cLBand.sendCfgValset ();
105+
106+ #endif
107+
108+ return (response);
109+ }
0 commit comments