Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit28eaec7

Browse files
committed
Tweaking for reliability.
1 parent1465f44 commit28eaec7

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

‎MeshBase.cpp

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void MeshBase::Begin()
2727
{
2828
radio.begin();
2929
radio.enableDynamicPayloads();
30-
radio.setRetries(2,1);
30+
radio.setRetries(4,2);
3131
radio.openReadingPipe(1,TO_BROADCAST(PEER_DISCOVERY));
3232
radio.setAutoAck(0,true);
3333
radio.setAutoAck(1,false);
@@ -145,6 +145,9 @@ void MeshBase::HandlePacket(const byte* data, uint8_t len)
145145
const MeshBase::MessageHeader* header = (structMeshBase::MessageHeader*)data;
146146
uint8_t payload_length = len -sizeof(MessageHeader);
147147
const byte* payload = data +sizeof(MessageHeader);
148+
if (header->protocol_version !=1)
149+
return;
150+
148151
Message* s = assembly_list.Find<const MessageHeader*>(header, &FindStream);
149152
if (s ==NULL) {
150153
s =newMessage(*header);
@@ -221,20 +224,29 @@ void MeshBase::SendMessage(uint32_t to, uint8_t type, const void* data, uint8_t
221224
msg->split_part = num;
222225
msg->split_more = remaining_length > MAX_PAYLOAD_SIZE;
223226
memcpy(buff +sizeof(MessageHeader), (const byte*)data + (num * MAX_PAYLOAD_SIZE),min(remaining_length, MAX_PAYLOAD_SIZE));
227+
uint8_t wire_size =min(remaining_length +sizeof(MessageHeader), MAX_PACKET_SIZE);
224228

225229
radio.stopListening();
230+
bool result =true;
226231
if (is_broadcast)
227232
radio.openWritingPipe(TO_BROADCAST(to));
228233
else
229234
radio.openWritingPipe(TO_ADDRESS(to));
230-
radio.write(buff,min(remaining_length +sizeof(MessageHeader), MAX_PACKET_SIZE));
235+
if (is_broadcast) {
236+
//radio.startWrite(buff, wire_size);
237+
result = radio.write(buff, wire_size);
238+
}else {
239+
result = radio.write(buff, wire_size);
240+
}
231241
radio.startListening();
232-
Serial.print(" T Sending pkt split_part=");
233-
Serial.print(msg->split_part);
234-
Serial.print(" split_more=");
235-
Serial.print(msg->split_more);
236-
Serial.print(" length=");
237-
Serial.println(min(remaining_length, MAX_PAYLOAD_SIZE));
242+
if (!is_broadcast)
243+
{
244+
Serial.print(" T Sending pkt split_part=");
245+
Serial.print(msg->split_part);
246+
Serial.print(" result=");
247+
Serial.println(result);
248+
}
249+
delay(100);
238250
}
239251
}
240252

‎MeshBase.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ class MeshBase
1818
Peer(uint32_t address) : address(address), time(0) {}
1919
};
2020

21-
structMessageHeader
22-
{
21+
structMessageHeader {
2322
uint8_tprotocol_version :4;
2423
uint8_tttl :4;
2524
uint8_tmsg_id;
@@ -53,6 +52,7 @@ class MeshBase
5352
voidBegin();
5453
voidUpdate();
5554
voidSendMessage(uint32_t address,uint8_t type,constvoid* data,uint8_t length);
55+
voidSendMessage(uint32_t address,uint8_t type,constvoid* data,uint8_t length,bool is_broadcast);
5656
uint32_tGetAddress()const {return address; }
5757
boolIsReady()const {return address !=0; }
5858
protected:
@@ -66,7 +66,6 @@ class MeshBase
6666
unsignedlonglast_peer_check_time;
6767

6868
voidSendPeerDiscovery();
69-
voidSendMessage(uint32_t address,uint8_t type,constvoid* data,uint8_t length,bool is_broadcast);
7069
voidHandlePeerDiscovery(const MessageHeader* msg,constvoid* buff,uint8_t length);
7170
voidHandlePacket(const byte* data,uint8_t length);
7271
voidChooseAddress();

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp