Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 0 additions & 85 deletions Firmware/RTK_Surveyor/Begin.ino
Original file line number Diff line number Diff line change
Expand Up @@ -703,91 +703,6 @@ bool beginExternalTriggers()
return (response);
}

//Check if NEO-D9S is connected. Configure if available.
void beginLBand()
{
if (settings.enablePointPerfectCorrections == false) return; //If user has turned off PointPerfect, skip everything

if (i2cLBand.begin(Wire, 0x43) == false) //Connect to the u-blox NEO-D9S using Wire port. The D9S default I2C address is 0x43 (not 0x42)
{
log_d("L-Band not detected");
return;
}

//Check the firmware version of the NEO-D9S. Based on Example21_ModuleInfo.
if (i2cLBand.getModuleInfo(1100) == true) // Try to get the module info
{
//i2cLBand.minfo.extension[1] looks like 'FWVER=HPG 1.12'
strcpy(neoFirmwareVersion, i2cLBand.minfo.extension[1]);

//Remove 'FWVER='. It's extraneous and = causes settings file parsing issues
char *ptr = strstr(neoFirmwareVersion, "FWVER=");
if (ptr != NULL)
strcpy(neoFirmwareVersion, ptr + strlen("FWVER="));

printNEOInfo(); //Print module firmware version
}

if (online.gnss == true)
{
i2cGNSS.checkUblox(); //Regularly poll to get latest data and any RTCM
i2cGNSS.checkCallbacks(); //Process any callbacks: ie, eventTriggerReceived
}

//If we have a fix, check which frequency to use
if (fixType == 2 || fixType == 3 || fixType == 4 || fixType == 5) //2D, 3D, 3D+DR, or Time
{
if ( (longitude > -125 && longitude < -67) && (latitude > -90 && latitude < 90))
{
log_d("Setting L-Band to US");
settings.LBandFreq = 1556290000; //We are in US band
}
else if ( (longitude > -25 && longitude < 70) && (latitude > -90 && latitude < 90))
{
log_d("Setting L-Band to EU");
settings.LBandFreq = 1545260000; //We are in EU band
}
else
{
Serial.println("Unknown band area");
settings.LBandFreq = 1556290000; //Default to US
}
recordSystemSettings();
}
else
log_d("No fix available for L-Band frequency determination");

bool response = true;
response &= i2cLBand.setVal32(UBLOX_CFG_PMP_CENTER_FREQUENCY, settings.LBandFreq); // Default 1539812500 Hz
response &= i2cLBand.setVal16(UBLOX_CFG_PMP_SEARCH_WINDOW, 2200); // Default 2200 Hz
response &= i2cLBand.setVal8(UBLOX_CFG_PMP_USE_SERVICE_ID, 0); // Default 1
response &= i2cLBand.setVal16(UBLOX_CFG_PMP_SERVICE_ID, 21845); // Default 50821
response &= i2cLBand.setVal16(UBLOX_CFG_PMP_DATA_RATE, 2400); // Default 2400 bps
response &= i2cLBand.setVal8(UBLOX_CFG_PMP_USE_DESCRAMBLER, 1); // Default 1
response &= i2cLBand.setVal16(UBLOX_CFG_PMP_DESCRAMBLER_INIT, 26969); // Default 23560
response &= i2cLBand.setVal8(UBLOX_CFG_PMP_USE_PRESCRAMBLING, 0); // Default 0
response &= i2cLBand.setVal64(UBLOX_CFG_PMP_UNIQUE_WORD, 16238547128276412563ull);
response &= i2cLBand.setVal(UBLOX_CFG_MSGOUT_UBX_RXM_PMP_I2C, 1); // Ensure UBX-RXM-PMP is enabled on the I2C port
response &= i2cLBand.setVal(UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART1, 1); // Output UBX-RXM-PMP on UART1
response &= i2cLBand.setVal(UBLOX_CFG_UART2OUTPROT_UBX, 1); // Enable UBX output on UART2
response &= i2cLBand.setVal(UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART2, 1); // Output UBX-RXM-PMP on UART2
response &= i2cLBand.setVal32(UBLOX_CFG_UART1_BAUDRATE, 38400); // match baudrate with ZED default
response &= i2cLBand.setVal32(UBLOX_CFG_UART2_BAUDRATE, 38400); // match baudrate with ZED default

if (response == false)
Serial.println("L-Band failed to configure");

i2cLBand.softwareResetGNSSOnly(); // Do a restart

i2cLBand.setRXMPMPmessageCallbackPtr(&pushRXMPMP); // Call pushRXMPMP when new PMP data arrives. Push it to the GNSS

i2cGNSS.setRXMCORcallbackPtr(&checkRXMCOR); // Check if the PMP data is being decrypted successfully

log_d("L-Band online");

online.lband = true;
}

void beginIdleTasks()
{
if (settings.enablePrintIdleTime == true)
Expand Down
13 changes: 1 addition & 12 deletions Firmware/RTK_Surveyor/RTK_Surveyor.ino
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const int FIRMWARE_VERSION_MINOR = 4;
#define COMPILE_WIFI //Comment out to remove WiFi functionality
#define COMPILE_BT //Comment out to remove Bluetooth functionality
#define COMPILE_AP //Comment out to remove Access Point functionality
#define COMPILE_L_BAND //Comment out to remove L-Band functionality
#define COMPILE_ESPNOW //Comment out to remove ESP-Now functionality
#define ENABLE_DEVELOPER //Uncomment this line to enable special developer modes (don't check power button at startup)

Expand Down Expand Up @@ -333,18 +334,6 @@ unsigned long timeSinceLastIncomingSetting = 0;

//PointPerfect Corrections
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
SFE_UBLOX_GNSS_ADD i2cLBand; // NEO-D9S
const char* pointPerfectKeyTopic = "/pp/ubx/0236/Lb";

//The PointPerfect token is provided at compile time via build flags
#ifndef POINTPERFECT_TOKEN
#define POINTPERFECT_TOKEN 0xAA, 0xBB, 0xCC, 0xDD, 0x00, 0x11, 0x22, 0x33, 0x0A, 0x0B, 0x0C, 0x0D, 0x00, 0x01, 0x02, 0x03
#endif

uint8_t pointPerfectTokenArray[16] = {POINTPERFECT_TOKEN}; //Token in HEX form

const char* pointPerfectAPI = "https://api.thingstream.io/ztp/pointperfect/credentials";
void checkRXMCOR(UBX_RXM_COR_data_t *ubxDataStruct);
float lBandEBNO = 0.0; //Used on system status menu
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Expand Down
4 changes: 4 additions & 0 deletions Firmware/RTK_Surveyor/States.ino
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,7 @@ void updateSystemState()
}
break;

#ifdef COMPILE_L_BAND
case (STATE_KEYS_STARTED):
{
if (rtcWaitTime == 0) rtcWaitTime = millis();
Expand Down Expand Up @@ -897,6 +898,7 @@ void updateSystemState()
changeState(settings.lastState); //Go to either rover or base
}
break;
#endif //COMPILE_L_BAND

case (STATE_ESPNOW_PAIR):
{
Expand Down Expand Up @@ -1012,6 +1014,7 @@ void changeState(SystemState newState)
case (STATE_PROFILE):
Serial.print("State: Profile");
break;
#ifdef COMPILE_L_BAND
case (STATE_KEYS_STARTED):
Serial.print("State: Keys Started ");
break;
Expand Down Expand Up @@ -1048,6 +1051,7 @@ void changeState(SystemState newState)
case (STATE_KEYS_PROVISION_WIFI_TIMEOUT):
Serial.print("State: Keys Provision - WiFi Timeout");
break;
#endif //COMPILE_L_BAND

case (STATE_ESPNOW_PAIR):
Serial.print("State: ESP-Now Pair");
Expand Down
Loading