1212 We don't care if the ESP NOW packet is corrupt or not. RTCM has its own CRC. RTK needs valid RTCM once every
1313 few seconds so a single dropped frame is not critical.
1414*/
15- #ifdef COMPILE_ESPNOW
1615
1716// Create a struct for ESP NOW pairing
1817typedef struct PairMessage {
@@ -23,6 +22,7 @@ typedef struct PairMessage {
2322} PairMessage;
2423
2524// Callback when data is sent
25+ #ifdef COMPILE_ESPNOW
2626void espnowOnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status)
2727{
2828 // Serial.print("Last Packet Send Status: ");
@@ -31,10 +31,12 @@ void espnowOnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status)
3131 // else
3232 // Serial.println("Delivery Fail");
3333}
34+ #endif
3435
3536// Callback when data is received
3637void espnowOnDataRecieved (const uint8_t *mac, const uint8_t *incomingData, int len)
3738{
39+ #ifdef COMPILE_ESPNOW
3840 if (espnowState == ESPNOW_PAIRING)
3941 {
4042 if (len == sizeof (PairMessage)) // First error check
@@ -66,10 +68,12 @@ void espnowOnDataRecieved(const uint8_t *mac, const uint8_t *incomingData, int l
6668 espnowIncomingRTCM = true ;
6769 lastEspnowRssiUpdate = millis ();
6870 }
71+ #endif
6972}
7073
7174// Callback for all RX Packets
7275// Get RSSI of all incoming management packets: https://esp32.com/viewtopic.php?t=13889
76+ #ifdef COMPILE_ESPNOW
7377void promiscuous_rx_cb (void *buf, wifi_promiscuous_pkt_type_t type)
7478{
7579 // All espnow traffic uses action frames which are a subtype of the mgmnt frames so filter out everything else.
@@ -79,11 +83,13 @@ void promiscuous_rx_cb(void *buf, wifi_promiscuous_pkt_type_t type)
7983 const wifi_promiscuous_pkt_t *ppkt = (wifi_promiscuous_pkt_t *)buf;
8084 packetRSSI = ppkt->rx_ctrl .rssi ;
8185}
86+ #endif
8287
8388// If WiFi is already enabled, simply add the LR protocol
8489// If the radio is off entirely, start the radio, turn on only the LR protocol
8590void espnowStart ()
8691{
92+ #ifdef COMPILE_ESPNOW
8793 if (wifiState == WIFI_OFF && espnowState == ESPNOW_OFF)
8894 {
8995 // Radio is off, turn it on
@@ -97,21 +103,19 @@ void espnowStart()
97103 // Enable WiFi + ESP-Now
98104 // Enable long range, PHY rate of ESP32 will be 512Kbps or 256Kbps
99105 esp_wifi_set_protocol (WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N | WIFI_PROTOCOL_LR);
100- Serial.println (" Wi-Fi on, ESP-Now added to protocols" );
106+ Serial.println (" WiFi on, ESP-Now added to protocols" );
101107 }
102108 // If ESP-Now is active, WiFi is active, do nothing
103109 else
104110 {
105- Serial.println (" Wi-Fi already on, ESP-Now already on" );
111+ Serial.println (" WiFi already on, ESP-Now already on" );
106112 }
107113
108114 // Init ESP-NOW
109115 if (esp_now_init () != ESP_OK) {
110- Serial.println (" Error initializing ESP-NOW " );
116+ Serial.println (" Error starting ESP-Now " );
111117 return ;
112118 }
113- else
114- Serial.println (" ESP-NOW Initialized" );
115119
116120 // Use promiscuous callback to capture RSSI of packet
117121 esp_wifi_set_promiscuous (true );
@@ -143,12 +147,16 @@ void espnowStart()
143147 }
144148 }
145149 }
150+
151+ Serial.println (" ESP-Now Started" );
152+ #endif
146153}
147154
148155// If WiFi is already enabled, simply remove the LR protocol
149156// If WiFi is off, stop the radio entirely
150157void espnowStop ()
151158{
159+ #ifdef COMPILE_ESPNOW
152160 if (espnowState == ESPNOW_OFF) return ;
153161
154162 if (wifiState == WIFI_OFF)
@@ -178,10 +186,8 @@ void espnowStop()
178186 Serial.println (" Error deinitializing ESP-NOW" );
179187 return ;
180188 }
181-
189+ # endif
182190 espnowSetState (ESPNOW_OFF);
183-
184- Serial.println (" ESP NOW Off" );
185191}
186192
187193// Start ESP-Now if needed, put ESP-Now into broadcast state
@@ -199,9 +205,11 @@ void espnowBeginPairing()
199205// Regularly call during pairing to see if we've received a Pairing message
200206bool espnowIsPaired ()
201207{
208+ #ifdef COMPILE_ESPNOW
202209 if (espnowState == ESPNOW_MAC_RECEIVED)
203210 {
204211 // Remove broadcast peer
212+ uint8_t broadcastMac[6 ] = {0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF };
205213 espnowRemovePeer (broadcastMac);
206214
207215 if (esp_now_is_peer_exist (receivedMAC) == true )
@@ -221,15 +229,16 @@ bool espnowIsPaired()
221229 espnowSendPairMessage (receivedMAC);
222230
223231 espnowSetState (ESPNOW_PAIRED);
224- Serial.println (" Pairing compete" );
225- return (true );
232+ return (true );
226233 }
227- return (false );
234+ #endif
235+ return (false );
228236}
229237
230238// Create special pair packet to a given MAC
231239esp_err_t espnowSendPairMessage (uint8_t *sendToMac)
232240{
241+ #ifdef COMPILE_ESPNOW
233242 // Assemble message to send
234243 PairMessage pairMessage;
235244
@@ -245,6 +254,9 @@ esp_err_t espnowSendPairMessage(uint8_t *sendToMac)
245254 pairMessage.crc += unitMACAddress[x];
246255
247256 return (esp_now_send (sendToMac, (uint8_t *) &pairMessage, sizeof (pairMessage))); // Send packet to given MAC
257+ #else
258+ return (ESP_OK);
259+ #endif
248260}
249261
250262// Add a given MAC address to the peer list
@@ -255,6 +267,7 @@ esp_err_t espnowAddPeer(uint8_t *peerMac)
255267
256268esp_err_t espnowAddPeer (uint8_t *peerMac, bool encrypt)
257269{
270+ #ifdef COMPILE_ESPNOW
258271 esp_now_peer_info_t peerInfo;
259272
260273 memcpy (peerInfo.peer_addr , peerMac, 6 );
@@ -268,15 +281,23 @@ esp_err_t espnowAddPeer(uint8_t *peerMac, bool encrypt)
268281 if (result != ESP_OK)
269282 log_d (" Failed to add peer" );
270283 return (result);
284+ #else
285+ return (ESP_OK);
286+ #endif
271287}
272288
273289// Remove a given MAC address from the peer list
274290esp_err_t espnowRemovePeer (uint8_t *peerMac)
275291{
292+ #ifdef COMPILE_ESPNOW
276293 esp_err_t result = esp_now_del_peer (peerMac);
277294 if (result != ESP_OK)
278295 log_d (" Failed to remove peer" );
279296 return (result);
297+ #else
298+ return (ESP_OK);
299+ #endif
300+
280301}
281302
282303// Update the state of the ESP Now state machine
@@ -285,6 +306,8 @@ void espnowSetState(ESPNOWState newState)
285306 if (espnowState == newState)
286307 Serial.print (" *" );
287308 espnowState = newState;
309+
310+ Serial.print (" espnowState: " );
288311 switch (newState)
289312 {
290313 case ESPNOW_OFF:
@@ -310,6 +333,7 @@ void espnowSetState(ESPNOWState newState)
310333
311334void espnowProcessRTCM (byte incoming)
312335{
336+ #ifdef COMPILE_ESPNOW
313337 if (espnowState == ESPNOW_PAIRED)
314338 {
315339 // Move this byte into ESP NOW to send buffer
@@ -326,6 +350,5 @@ void espnowProcessRTCM(byte incoming)
326350 espnowOutgoingRTCM = true ;
327351 }
328352 }
353+ #endif
329354}
330-
331- #endif // ifdef COMPILE_ESPNOW
0 commit comments