@@ -92,15 +92,19 @@ void MeshBase::HandlePeerDiscovery(const MeshBase::Message* msg, const void* buf
92
92
if (length != sizeof (PeerDiscoveryMessage))
93
93
return ;
94
94
const PeerDiscoveryMessage* pd = (struct PeerDiscoveryMessage *)buff;
95
- // if (msg. protocol_version != 1)
96
- // return;
95
+ if (pd-> protocol_version != 1 )
96
+ return ;
97
97
98
98
Peer* peer = GetPeer (msg->address_from );
99
99
if (peer == NULL )
100
100
{
101
101
// Found a new peer
102
- Serial.print (" New Peer: " );
103
- Serial.println (msg->address_from , DEC);
102
+ Serial.print (" New Peer. Address=" );
103
+ Serial.print (msg->address_from , DEC);
104
+ Serial.print (" uptime=" );
105
+ Serial.print (pd->uptime , DEC);
106
+ Serial.print (" num_peers=" );
107
+ Serial.println (pd->num_peers , DEC);
104
108
Peer* p = new Peer (msg->address_from );
105
109
peers.Add (p);
106
110
OnNewPeer (p);
@@ -119,7 +123,7 @@ void MeshBase::SendPeerDiscovery()
119
123
payload.application_capabilities = 0 ;
120
124
payload.num_peers = peers.length ;
121
125
payload.uptime = millis () / 1000 ;
122
- SendMessage (PEER_DISCOVERY, type_peer_discovery, &payload, sizeof (MeshBase::PeerDiscoveryMessage ), true );
126
+ SendMessage (PEER_DISCOVERY, type_peer_discovery, &payload, sizeof (payload ), true );
123
127
}
124
128
125
129
void MeshBase::SendMessage (uint32_t to, uint8_t type, const void * data, uint8_t length, bool is_broadcast)
@@ -132,12 +136,13 @@ void MeshBase::SendMessage(uint32_t to, uint8_t type, const void* data, uint8_t
132
136
msg->address_from = address;
133
137
msg->split_enabled = 0 ;
134
138
msg->split_part = 0 ;
139
+ memcpy (&buff[sizeof (Message)], data, min (length, 32 - sizeof (Message)));
135
140
radio.stopListening ();
136
141
if (is_broadcast)
137
142
radio.openWritingPipe (TO_BROADCAST (to));
138
143
else
139
144
radio.openWritingPipe (TO_ADDRESS (to));
140
- radio.write (data , length);
145
+ radio.write (buff , length + sizeof (Message) );
141
146
radio.startListening ();
142
147
}
143
148
0 commit comments