Skip to content

Commit 47bec82

Browse files
authored
Merge pull request #295 from LeeLeahy2/mac-address
Properly display and use the MAC addresses
2 parents f486223 + 67c6982 commit 47bec82

File tree

9 files changed

+46
-35
lines changed

9 files changed

+46
-35
lines changed

Firmware/RTK_Surveyor/Begin.ino

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,9 @@ void beginBoard()
143143
Serial.printf("SparkFun RTK %s v%d.%d-%s\r\n", platformPrefix, FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR, __DATE__);
144144

145145
//Get unit MAC address
146-
esp_read_mac(unitMACAddress, ESP_MAC_WIFI_STA);
147-
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
146+
esp_read_mac(wifiMACAddress, ESP_MAC_WIFI_STA);
147+
memcpy(btMACAddress, wifiMACAddress, sizeof(wifiMACAddress));
148+
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
148149

149150
//For all boards, check reset reason. If reset was due to wdt or panic, append last log
150151
loadSettingsPartial(); //Get resetCount

Firmware/RTK_Surveyor/Bluetooth.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ void bluetoothStart()
103103
else if(systemState >= STATE_BASE_NOT_STARTED && systemState <= STATE_BASE_FIXED_TRANSMITTING)
104104
strcpy(stateName, "Base-");
105105

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

108108
// Select Bluetooth setup
109109
if (settings.bluetoothRadioType == BLUETOOTH_RADIO_OFF)

Firmware/RTK_Surveyor/Display.ino

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -359,11 +359,10 @@ void updateDisplay()
359359
if (iconsRadio & ICON_MAC_ADDRESS)
360360
{
361361
char macAddress[5];
362-
#ifdef COMPILE_BT
363-
sprintf(macAddress, "%02X%02X", unitMACAddress[4], unitMACAddress[5]);
364-
#else
365-
sprintf(macAddress, "%02X%02X", 0, 0); //If BT is not available, print zeroes
366-
#endif
362+
const uint8_t * rtkMacAddress = getMacAddress();
363+
364+
//Print only last two digits of MAC
365+
sprintf(macAddress, "%02X%02X", rtkMacAddress[4], rtkMacAddress[5]);
367366
oled.setFont(QW_FONT_5X7); //Set font to smallest
368367
oled.setCursor(0, 3);
369368
oled.print(macAddress);
@@ -404,12 +403,10 @@ void updateDisplay()
404403
else if (iconsRadio & ICON_MAC_ADDRESS_2DIGIT)
405404
{
406405
char macAddress[5];
406+
const uint8_t * rtkMacAddress = getMacAddress();
407+
407408
//Print only last two digits of MAC
408-
#ifdef COMPILE_BT
409-
sprintf(macAddress, "%02X", unitMACAddress[5]);
410-
#else
411-
sprintf(macAddress, "%02X", 0); //If BT is not available, print zeroes
412-
#endif
409+
sprintf(macAddress, "%02X%02X", rtkMacAddress[4], rtkMacAddress[5]);
413410
oled.setFont(QW_FONT_5X7); //Set font to smallest
414411
oled.setCursor(14, 3);
415412
oled.print(macAddress);
@@ -1845,9 +1842,6 @@ void paintSystemTest()
18451842

18461843
int charHeight = 7;
18471844

1848-
char macAddress[5];
1849-
sprintf(macAddress, "%02X%02X", unitMACAddress[4], unitMACAddress[5]);
1850-
18511845
drawFrame(); //Outside edge
18521846

18531847
//Test SD, accel, batt, GNSS, mux
@@ -1923,6 +1917,11 @@ void paintSystemTest()
19231917
oled.print("FAIL");
19241918
}
19251919

1920+
//Get the last two digits of MAC
1921+
char macAddress[5];
1922+
const uint8_t * rtkMacAddress = getMacAddress();
1923+
sprintf(macAddress, "%02X%02X", rtkMacAddress[4], rtkMacAddress[5]);
1924+
19261925
//Display MAC address
19271926
oled.setCursor(xOffset, yOffset + (5 * charHeight) ); //x, y
19281927
oled.print(macAddress);
@@ -2512,15 +2511,16 @@ void paintKeyProvisionFail(uint16_t displayTime)
25122511

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

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

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

25262526
y += fontHeight;
@@ -2543,3 +2543,14 @@ void paintEspNowPaired()
25432543
{
25442544
displayMessage("ESP-Now Paired", 2000);
25452545
}
2546+
2547+
const uint8_t * getMacAddress ()
2548+
{
2549+
static const uint8_t zero[6] = {0, 0, 0, 0, 0, 0};
2550+
2551+
if (bluetoothState != BT_OFF)
2552+
return btMACAddress;
2553+
else if (wifiState != WIFI_OFF)
2554+
return wifiMACAddress;
2555+
return zero;
2556+
}

Firmware/RTK_Surveyor/ESPNOW.ino

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,15 +262,13 @@ esp_err_t espnowSendPairMessage(uint8_t *sendToMac)
262262
PairMessage pairMessage;
263263

264264
//Get unit MAC address
265-
uint8_t unitMACAddress[6];
266-
esp_read_mac(unitMACAddress, ESP_MAC_WIFI_STA);
267-
memcpy(pairMessage.macAddress, unitMACAddress, 6);
265+
memcpy(pairMessage.macAddress, wifiMACAddress, 6);
268266
pairMessage.encrypt = false;
269267
pairMessage.channel = 0;
270268

271269
pairMessage.crc = 0; //Calculate CRC
272270
for (int x = 0 ; x < 6 ; x++)
273-
pairMessage.crc += unitMACAddress[x];
271+
pairMessage.crc += wifiMACAddress[x];
274272

275273
return (esp_now_send(sendToMac, (uint8_t *) &pairMessage, sizeof(pairMessage))); //Send packet to given MAC
276274
#else

Firmware/RTK_Surveyor/Form.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ void createSettingsString(char* settingsCSV)
383383

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

389389
char apDaysRemaining[20];

Firmware/RTK_Surveyor/RTK_Surveyor.ino

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,9 @@ const uint8_t ESPNOW_MAX_PEERS = 5; //Maximum of 5 rovers
368368

369369
//Global variables
370370
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
371-
uint8_t unitMACAddress[6]; //Use MAC address in BT broadcast and display
371+
#define lbandMACAddress btMACAddress
372+
uint8_t wifiMACAddress[6]; //Display this address in the system menu
373+
uint8_t btMACAddress[6]; //Display this address when Bluetooth is enabled, otherwise display wifiMACAddress
372374
char deviceName[70]; //The serial string that is broadcast. Ex: 'Surveyor Base-BC61'
373375
const byte menuTimeout = 15; //Menus will exit/timeout after this number of seconds
374376
int systemTime_minutes = 0; //Used to test if logging is less than max minutes

Firmware/RTK_Surveyor/menuMain.ino

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -311,15 +311,10 @@ void menuRadio()
311311
if (settings.radioType == RADIO_ESPNOW)
312312
{
313313
//Pretty print the MAC of all radios
314-
315-
//Get unit MAC address
316-
uint8_t unitMACAddress[6];
317-
esp_read_mac(unitMACAddress, ESP_MAC_WIFI_STA);
318-
319314
Serial.print(" Radio MAC: ");
320315
for (int x = 0 ; x < 5 ; x++)
321-
Serial.printf("%02X:", unitMACAddress[x]);
322-
Serial.printf("%02X\n\r", unitMACAddress[5]);
316+
Serial.printf("%02X:", wifiMACAddress[x]);
317+
Serial.printf("%02X\n\r", wifiMACAddress[5]);
323318

324319
if (settings.espnowPeerCount > 0)
325320
{

Firmware/RTK_Surveyor/menuPP.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ bool provisionDevice()
170170
client.setCACert(AWS_PUBLIC_CERT);
171171

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

175175
#ifdef WHITELISTED_ID
176176
//Override ID with testing ID
@@ -882,7 +882,7 @@ void menuPointPerfect()
882882
Serial.println("Menu: PointPerfect Corrections");
883883

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

888888
Serial.print("Days until keys expire: ");

Firmware/RTK_Surveyor/menuSystem.ino

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ void menuSystem()
6666
printNEOInfo();
6767
}
6868

69-
//Display MAC address
69+
//Display Bluetooth MAC address
7070
char macAddress[5];
71-
sprintf(macAddress, "%02X%02X", unitMACAddress[4], unitMACAddress[5]);
71+
sprintf(macAddress, "%02X%02X", btMACAddress[4], btMACAddress[5]);
7272
Serial.print("Bluetooth (");
7373
Serial.print(macAddress);
7474
Serial.print("): ");
@@ -107,6 +107,10 @@ void menuSystem()
107107
Serial.println();
108108

109109
#ifdef COMPILE_WIFI
110+
Serial.print("WiFi MAC Address: ");
111+
Serial.printf("%02X-%02X-%02X-%02X-%02X-%02X\r\n", wifiMACAddress[0],
112+
wifiMACAddress[1], wifiMACAddress[2], wifiMACAddress[3],
113+
wifiMACAddress[4], wifiMACAddress[5]);
110114
if (wifiState == WIFI_CONNECTED)
111115
wifiDisplayIpAddress();
112116
#endif

0 commit comments

Comments
 (0)