@@ -52,8 +52,8 @@ void MeshBase::Update()
52
52
bool done = false ;
53
53
do {
54
54
uint8_t len = radio.getDynamicPayloadSize ();
55
- uint8_t buff[40 ];
56
- done = radio.read (buff, min ( len, sizeof (buff)) );
55
+ byte buff[MAX_PAYLOAD_SIZE ];
56
+ done = radio.read (buff, len);
57
57
HandlePacket (buff, len);
58
58
} while (!done);
59
59
}
@@ -85,7 +85,7 @@ void MeshBase::HandlePacket(const byte* data, uint8_t len)
85
85
const MeshBase::Message* msg = (struct MeshBase ::Message*)data;
86
86
uint8_t payload_length = len - sizeof (Message);
87
87
const byte* payload = data + sizeof (Message);
88
- if (msg->split_enabled )
88
+ if (msg->split_more || msg-> split_part != 0 )
89
89
{
90
90
// Re-assembly needed
91
91
// TODO: Re-assemble packets
@@ -98,6 +98,7 @@ void MeshBase::HandlePacket(const byte* data, uint8_t len)
98
98
OnMessage (msg, payload, payload_length);
99
99
break ;
100
100
}
101
+ delete data;
101
102
}
102
103
}
103
104
@@ -148,13 +149,13 @@ void MeshBase::SendMessage(uint32_t to, uint8_t type, const void* data, uint8_t
148
149
msg->ttl = 0 ;
149
150
msg->type = type;
150
151
msg->address_from = address;
151
- msg->split_enabled = length > MAX_PAYLOAD_SIZE;
152
152
153
153
uint8_t num_pkts = (length / MAX_PAYLOAD_SIZE) + 1 ;
154
154
for (uint8_t num = 0 ; num < num_pkts; ++num)
155
155
{
156
156
uint8_t remaining_length = length - (num * MAX_PAYLOAD_SIZE);
157
157
msg->split_part = num;
158
+ msg->split_more = remaining_length > MAX_PAYLOAD_SIZE;
158
159
memcpy (buff + sizeof (Message), (const byte*)data + (num * MAX_PAYLOAD_SIZE), min (remaining_length, MAX_PAYLOAD_SIZE));
159
160
160
161
radio.stopListening ();
0 commit comments