void MeshBase::HandlePeerDiscovery(const MeshBase::Message* msg, const void* buff, uint8_t length) { if (length != sizeof(PeerDiscoveryMessage)) return; const PeerDiscoveryMessage* pd = (struct PeerDiscoveryMessage*)buff; if (pd->protocol_version != 1) return; Peer* peer = GetPeer(msg->address_from); if (peer == NULL) { // Found a new peer Serial.print("New Peer. Address="); Serial.print(msg->address_from, DEC); Serial.print(" uptime="); Serial.print(pd->uptime, DEC); Serial.print(" num_peers="); Serial.println(pd->num_peers, DEC); Peer* p = new Peer(msg->address_from); peers.Add(p); OnNewPeer(p); } else { // Existing peer, reset timer peer->time = 0; } }
void MeshBase::HandlePeerDiscovery(void* buff, uint8_t length) { if (length != sizeof(PeerDiscoveryMessage)) return; PeerDiscoveryMessage from = *(PeerDiscoveryMessage*)buff; // Dont know why, but this keeps happening? /*if (from == 0) return;*/ Peer* peer = GetPeer(from.address); if (peer == NULL) { // Found a new peer Serial.print("New Peer: "); Serial.println(from.address, DEC); Peer* p = new Peer(from.address); peers.Add(p); OnNewPeer(p); } else { // Existing peer, reset timer peer->time = 0; } }