@@ -149,7 +149,7 @@ void espnowStart()
149149// If WiFi is off, stop the radio entirely
150150void espnowStop ()
151151{
152- if (espnowState == ESPNOW_OFF) return ;
152+ if (espnowState == ESPNOW_OFF) return ;
153153
154154 if (wifiState == WIFI_OFF)
155155 {
@@ -184,7 +184,7 @@ void espnowStop()
184184 Serial.println (" ESP NOW Off" );
185185}
186186
187- // Begin broadcasting our MAC and wait for remote unit to respond
187+ // Start ESP-Now if needed, put ESP-Now into broadcast state
188188void espnowBeginPairing ()
189189{
190190 espnowStart ();
@@ -194,55 +194,37 @@ void espnowBeginPairing()
194194 espnowAddPeer (broadcastMac, false ); // Encryption is not supported for multicast addresses
195195
196196 espnowSetState (ESPNOW_PAIRING);
197+ }
197198
198- // Begin sending our MAC every 250ms until a remote device sends us there info
199- randomSeed (millis ());
200-
201- Serial.println (" Begin pairing. Place other unit in pairing mode. Press any key to exit." );
202- while (Serial.available ()) Serial.read ();
203-
204- while (1 )
199+ // Regularly call during pairing to see if we've received a Pairing message
200+ bool espnowIsPaired ()
201+ {
202+ if (espnowState == ESPNOW_MAC_RECEIVED)
205203 {
206- if (Serial.available ()) break ;
204+ // Remove broadcast peer
205+ espnowRemovePeer (broadcastMac);
207206
208- int timeout = 1000 + random (0 , 100 ); // Delay 1000 to 1100ms
209- for (int x = 0 ; x < timeout ; x++)
207+ if (esp_now_is_peer_exist (receivedMAC) == true )
208+ log_d (" Peer already exists" );
209+ else
210210 {
211- delay (1 );
211+ // Add new peer to system
212+ espnowAddPeer (receivedMAC);
212213
213- if (espnowState == ESPNOW_MAC_RECEIVED)
214- {
215- // Remove broadcast peer
216- espnowRemovePeer (broadcastMac);
217-
218- if (esp_now_is_peer_exist (receivedMAC) == true )
219- log_d (" Peer already exists" );
220- else
221- {
222- // Add new peer to system
223- espnowAddPeer (receivedMAC);
224-
225- // Record this MAC to peer list
226- memcpy (settings.espnowPeers [settings.espnowPeerCount ], receivedMAC, 6 );
227- settings.espnowPeerCount ++;
228- settings.espnowPeerCount %= ESPNOW_MAX_PEERS;
229- }
230-
231- // Send message directly to the received MAC (not unicast), then exit
232- espnowSendPairMessage (receivedMAC);
233-
234- espnowSetState (ESPNOW_PAIRED);
235- Serial.println (" Pairing compete" );
236- return ;
237- }
214+ // Record this MAC to peer list
215+ memcpy (settings.espnowPeers [settings.espnowPeerCount ], receivedMAC, 6 );
216+ settings.espnowPeerCount ++;
217+ settings.espnowPeerCount %= ESPNOW_MAX_PEERS;
238218 }
239219
240- espnowSendPairMessage (broadcastMac); // Send unit's MAC address over broadcast, no ack, no encryption
220+ // Send message directly to the received MAC (not unicast), then exit
221+ espnowSendPairMessage (receivedMAC);
241222
242- Serial.println (" Scanning for other radio..." );
223+ espnowSetState (ESPNOW_PAIRED);
224+ Serial.println (" Pairing compete" );
225+ return (true );
243226 }
244-
245- Serial.println (" User pressed button. Pairing canceled." );
227+ return (false );
246228}
247229
248230// Create special pair packet to a given MAC
0 commit comments