Skip to content

Commit 43320c5

Browse files
authored
Merge pull request #187 from i-am-grub/msp-race-condition
MSP Race Condition
2 parents f421d8e + dcde590 commit 43320c5

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

src/Timer_main.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,11 @@ void OnDataRecv(uint8_t * mac_addr, uint8_t *data, uint8_t data_len)
147147
void OnDataRecv(const uint8_t * mac_addr, const uint8_t *data, int data_len)
148148
#endif
149149
{
150+
MSP recv_msp;
150151
DBGLN("ESP NOW DATA:");
151152
for(int i = 0; i < data_len; i++)
152153
{
153-
if (msp.processReceivedByte(data[i]))
154+
if (recv_msp.processReceivedByte(data[i]))
154155
{
155156
// Finished processing a complete packet
156157
// Only process packets from a bound MAC address
@@ -166,12 +167,12 @@ void OnDataRecv(const uint8_t * mac_addr, const uint8_t *data, int data_len)
166167
)
167168
{
168169
#if defined(PLATFORM_ESP8266)
169-
ProcessMSPPacketFromTimer(msp.getReceivedPacket(), millis());
170+
ProcessMSPPacketFromTimer(recv_msp.getReceivedPacket(), millis());
170171
#elif defined(PLATFORM_ESP32)
171-
xQueueSend(rxqueue, msp.getReceivedPacket(), (TickType_t)1024);
172+
xQueueSend(rxqueue, recv_msp.getReceivedPacket(), (TickType_t)1024);
172173
#endif
173174
}
174-
msp.markPacketReceived();
175+
recv_msp.markPacketReceived();
175176
}
176177
}
177178
blinkLED();

src/Tx_main.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,11 @@ void OnDataRecv(uint8_t * mac_addr, uint8_t *data, uint8_t data_len)
118118
void OnDataRecv(const uint8_t * mac_addr, const uint8_t *data, int data_len)
119119
#endif
120120
{
121+
MSP recv_msp;
121122
DBGLN("ESP NOW DATA:");
122123
for(int i = 0; i < data_len; i++)
123124
{
124-
if (msp.processReceivedByte(data[i]))
125+
if (recv_msp.processReceivedByte(data[i]))
125126
{
126127
// Finished processing a complete packet
127128
// Only process packets from a bound MAC address
@@ -132,9 +133,9 @@ void OnDataRecv(const uint8_t * mac_addr, const uint8_t *data, int data_len)
132133
firmwareOptions.uid[4] == mac_addr[4] &&
133134
firmwareOptions.uid[5] == mac_addr[5])
134135
{
135-
ProcessMSPPacketFromPeer(msp.getReceivedPacket());
136+
ProcessMSPPacketFromPeer(recv_msp.getReceivedPacket());
136137
}
137-
msp.markPacketReceived();
138+
recv_msp.markPacketReceived();
138139
}
139140
}
140141
blinkLED();

src/Vrx_main.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,13 @@ void OnDataRecv(uint8_t * mac_addr, uint8_t *data, uint8_t data_len)
151151
void OnDataRecv(const uint8_t * mac_addr, const uint8_t *data, int data_len)
152152
#endif
153153
{
154+
MSP recv_msp;
154155
DBGVLN("ESP NOW DATA:");
155156
for(int i = 0; i < data_len; i++)
156157
{
157158
DBGV("%x,", data[i]); // Debug prints
158159

159-
if (msp.processReceivedByte(data[i]))
160+
if (recv_msp.processReceivedByte(data[i]))
160161
{
161162
DBGVLN(""); // Extra line for serial output readability
162163
// Finished processing a complete packet
@@ -174,16 +175,16 @@ void OnDataRecv(const uint8_t * mac_addr, const uint8_t *data, int data_len)
174175
{
175176
gotInitialPacket = true;
176177
#if defined(PLATFORM_ESP8266)
177-
ProcessMSPPacket(msp.getReceivedPacket());
178+
ProcessMSPPacket(recv_msp.getReceivedPacket());
178179
#elif defined(PLATFORM_ESP32)
179-
xQueueSend(rxqueue, msp.getReceivedPacket(), (TickType_t)1024);
180+
xQueueSend(rxqueue, recv_msp.getReceivedPacket(), (TickType_t)1024);
180181
#endif
181182
}
182183
else
183184
{
184185
DBGLN("Failed MAC add check and not in bindingMode.");
185186
}
186-
msp.markPacketReceived();
187+
recv_msp.markPacketReceived();
187188
}
188189
}
189190
blinkLED();

0 commit comments

Comments
 (0)