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
5 changes: 3 additions & 2 deletions Firmware/RTK_Surveyor/Begin.ino
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,9 @@ void beginBoard()
Serial.printf("SparkFun RTK %s v%d.%d-%s\r\n", platformPrefix, FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR, __DATE__);

//Get unit MAC address
esp_read_mac(unitMACAddress, ESP_MAC_WIFI_STA);
unitMACAddress[5] += 2; //Convert MAC address to Bluetooth MAC (add 2): https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/system.html#mac-address
esp_read_mac(wifiMACAddress, ESP_MAC_WIFI_STA);
memcpy(btMACAddress, wifiMACAddress, sizeof(wifiMACAddress));
btMACAddress[5] += 2; //Convert MAC address to Bluetooth MAC (add 2): https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/system.html#mac-address

//For all boards, check reset reason. If reset was due to wdt or panic, append last log
loadSettingsPartial(); //Get resetCount
Expand Down
2 changes: 1 addition & 1 deletion Firmware/RTK_Surveyor/Bluetooth.ino
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ void bluetoothStart()
else if(systemState >= STATE_BASE_NOT_STARTED && systemState <= STATE_BASE_FIXED_TRANSMITTING)
strcpy(stateName, "Base-");

sprintf(deviceName, "%s %s%02X%02X", platformPrefix, stateName, unitMACAddress[4], unitMACAddress[5]);
sprintf(deviceName, "%s %s%02X%02X", platformPrefix, stateName, btMACAddress[4], btMACAddress[5]);

// Select Bluetooth setup
if (settings.bluetoothRadioType == BLUETOOTH_RADIO_OFF)
Expand Down
41 changes: 26 additions & 15 deletions Firmware/RTK_Surveyor/Display.ino
Original file line number Diff line number Diff line change
Expand Up @@ -359,11 +359,10 @@ void updateDisplay()
if (iconsRadio & ICON_MAC_ADDRESS)
{
char macAddress[5];
#ifdef COMPILE_BT
sprintf(macAddress, "%02X%02X", unitMACAddress[4], unitMACAddress[5]);
#else
sprintf(macAddress, "%02X%02X", 0, 0); //If BT is not available, print zeroes
#endif
const uint8_t * rtkMacAddress = getMacAddress();

//Print only last two digits of MAC
sprintf(macAddress, "%02X%02X", rtkMacAddress[4], rtkMacAddress[5]);
oled.setFont(QW_FONT_5X7); //Set font to smallest
oled.setCursor(0, 3);
oled.print(macAddress);
Expand Down Expand Up @@ -404,12 +403,10 @@ void updateDisplay()
else if (iconsRadio & ICON_MAC_ADDRESS_2DIGIT)
{
char macAddress[5];
const uint8_t * rtkMacAddress = getMacAddress();

//Print only last two digits of MAC
#ifdef COMPILE_BT
sprintf(macAddress, "%02X", unitMACAddress[5]);
#else
sprintf(macAddress, "%02X", 0); //If BT is not available, print zeroes
#endif
sprintf(macAddress, "%02X%02X", rtkMacAddress[4], rtkMacAddress[5]);
oled.setFont(QW_FONT_5X7); //Set font to smallest
oled.setCursor(14, 3);
oled.print(macAddress);
Expand Down Expand Up @@ -1845,9 +1842,6 @@ void paintSystemTest()

int charHeight = 7;

char macAddress[5];
sprintf(macAddress, "%02X%02X", unitMACAddress[4], unitMACAddress[5]);

drawFrame(); //Outside edge

//Test SD, accel, batt, GNSS, mux
Expand Down Expand Up @@ -1923,6 +1917,11 @@ void paintSystemTest()
oled.print("FAIL");
}

//Get the last two digits of MAC
char macAddress[5];
const uint8_t * rtkMacAddress = getMacAddress();
sprintf(macAddress, "%02X%02X", rtkMacAddress[4], rtkMacAddress[5]);

//Display MAC address
oled.setCursor(xOffset, yOffset + (5 * charHeight) ); //x, y
oled.print(macAddress);
Expand Down Expand Up @@ -2512,15 +2511,16 @@ void paintKeyProvisionFail(uint16_t displayTime)

//The MAC address is characters long so we have to split it onto two lines
char hardwareID[13];
sprintf(hardwareID, "%02X%02X%02X", unitMACAddress[0], unitMACAddress[1], unitMACAddress[2]);
const uint8_t * rtkMacAddress = getMacAddress();
sprintf(hardwareID, "%02X%02X%02X", rtkMacAddress[0], rtkMacAddress[1], rtkMacAddress[2]);
String macAddress = String(hardwareID);

y += fontHeight;
textX = x - (oled.getStringWidth(macAddress) / 2);
oled.setCursor(textX, y);
oled.print(hardwareID);

sprintf(hardwareID, "%02X%02X%02X", unitMACAddress[3], unitMACAddress[4], unitMACAddress[5]);
sprintf(hardwareID, "%02X%02X%02X", rtkMacAddress[3], rtkMacAddress[4], rtkMacAddress[5]);
macAddress = String(hardwareID);

y += fontHeight;
Expand All @@ -2543,3 +2543,14 @@ void paintEspNowPaired()
{
displayMessage("ESP-Now Paired", 2000);
}

const uint8_t * getMacAddress ()
{
static const uint8_t zero[6] = {0, 0, 0, 0, 0, 0};

if (bluetoothState != BT_OFF)
return btMACAddress;
else if (wifiState != WIFI_OFF)
return wifiMACAddress;
return zero;
}
6 changes: 2 additions & 4 deletions Firmware/RTK_Surveyor/ESPNOW.ino
Original file line number Diff line number Diff line change
Expand Up @@ -249,15 +249,13 @@ esp_err_t espnowSendPairMessage(uint8_t *sendToMac)
PairMessage pairMessage;

//Get unit MAC address
uint8_t unitMACAddress[6];
esp_read_mac(unitMACAddress, ESP_MAC_WIFI_STA);
memcpy(pairMessage.macAddress, unitMACAddress, 6);
memcpy(pairMessage.macAddress, wifiMACAddress, 6);
pairMessage.encrypt = false;
pairMessage.channel = 0;

pairMessage.crc = 0; //Calculate CRC
for (int x = 0 ; x < 6 ; x++)
pairMessage.crc += unitMACAddress[x];
pairMessage.crc += wifiMACAddress[x];

return (esp_now_send(sendToMac, (uint8_t *) &pairMessage, sizeof(pairMessage))); //Send packet to given MAC
#else
Expand Down
2 changes: 1 addition & 1 deletion Firmware/RTK_Surveyor/Form.ino
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ void createSettingsString(char* settingsCSV)

//L-Band
char hardwareID[13];
sprintf(hardwareID, "%02X%02X%02X%02X%02X%02X", unitMACAddress[0], unitMACAddress[1], unitMACAddress[2], unitMACAddress[3], unitMACAddress[4], unitMACAddress[5]); //Get ready for JSON
sprintf(hardwareID, "%02X%02X%02X%02X%02X%02X", lbandMACAddress[0], lbandMACAddress[1], lbandMACAddress[2], lbandMACAddress[3], lbandMACAddress[4], lbandMACAddress[5]); //Get ready for JSON
stringRecord(settingsCSV, "hardwareID", hardwareID);

char apDaysRemaining[20];
Expand Down
4 changes: 3 additions & 1 deletion Firmware/RTK_Surveyor/RTK_Surveyor.ino
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,9 @@ const uint8_t ESPNOW_MAX_PEERS = 5; //Maximum of 5 rovers

//Global variables
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
uint8_t unitMACAddress[6]; //Use MAC address in BT broadcast and display
#define lbandMACAddress btMACAddress
uint8_t wifiMACAddress[6]; //Display this address in the system menu
uint8_t btMACAddress[6]; //Display this address when Bluetooth is enabled, otherwise display wifiMACAddress
char deviceName[70]; //The serial string that is broadcast. Ex: 'Surveyor Base-BC61'
const byte menuTimeout = 15; //Menus will exit/timeout after this number of seconds
int systemTime_minutes = 0; //Used to test if logging is less than max minutes
Expand Down
9 changes: 2 additions & 7 deletions Firmware/RTK_Surveyor/menuMain.ino
Original file line number Diff line number Diff line change
Expand Up @@ -311,15 +311,10 @@ void menuRadio()
if (settings.radioType == RADIO_ESPNOW)
{
//Pretty print the MAC of all radios

//Get unit MAC address
uint8_t unitMACAddress[6];
esp_read_mac(unitMACAddress, ESP_MAC_WIFI_STA);

Serial.print(" Radio MAC: ");
for (int x = 0 ; x < 5 ; x++)
Serial.printf("%02X:", unitMACAddress[x]);
Serial.printf("%02X\n\r", unitMACAddress[5]);
Serial.printf("%02X:", wifiMACAddress[x]);
Serial.printf("%02X\n\r", wifiMACAddress[5]);

if (settings.espnowPeerCount > 0)
{
Expand Down
4 changes: 2 additions & 2 deletions Firmware/RTK_Surveyor/menuPP.ino
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ bool provisionDevice()
client.setCACert(AWS_PUBLIC_CERT);

char hardwareID[13];
sprintf(hardwareID, "%02X%02X%02X%02X%02X%02X", unitMACAddress[0], unitMACAddress[1], unitMACAddress[2], unitMACAddress[3], unitMACAddress[4], unitMACAddress[5]); //Get ready for JSON
sprintf(hardwareID, "%02X%02X%02X%02X%02X%02X", lbandMACAddress[0], lbandMACAddress[1], lbandMACAddress[2], lbandMACAddress[3], lbandMACAddress[4], lbandMACAddress[5]); //Get ready for JSON

#ifdef WHITELISTED_ID
//Override ID with testing ID
Expand Down Expand Up @@ -882,7 +882,7 @@ void menuPointPerfect()
Serial.println("Menu: PointPerfect Corrections");

char hardwareID[13];
sprintf(hardwareID, "%02X%02X%02X%02X%02X%02X", unitMACAddress[0], unitMACAddress[1], unitMACAddress[2], unitMACAddress[3], unitMACAddress[4], unitMACAddress[5]); //Get ready for JSON
sprintf(hardwareID, "%02X%02X%02X%02X%02X%02X", lbandMACAddress[0], lbandMACAddress[1], lbandMACAddress[2], lbandMACAddress[3], lbandMACAddress[4], lbandMACAddress[5]); //Get ready for JSON
Serial.printf("Device ID: %s\n\r", hardwareID);

Serial.print("Days until keys expire: ");
Expand Down
8 changes: 6 additions & 2 deletions Firmware/RTK_Surveyor/menuSystem.ino
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ void menuSystem()
printNEOInfo();
}

//Display MAC address
//Display Bluetooth MAC address
char macAddress[5];
sprintf(macAddress, "%02X%02X", unitMACAddress[4], unitMACAddress[5]);
sprintf(macAddress, "%02X%02X", btMACAddress[4], btMACAddress[5]);
Serial.print("Bluetooth (");
Serial.print(macAddress);
Serial.print("): ");
Expand Down Expand Up @@ -107,6 +107,10 @@ void menuSystem()
Serial.println();

#ifdef COMPILE_WIFI
Serial.print("WiFi MAC Address: ");
Serial.printf("%02X-%02X-%02X-%02X-%02X-%02X\r\n", wifiMACAddress[0],
wifiMACAddress[1], wifiMACAddress[2], wifiMACAddress[3],
wifiMACAddress[4], wifiMACAddress[5]);
if (wifiState == WIFI_CONNECTED)
wifiDisplayIpAddress();
#endif
Expand Down