8000 Memory usage improvements · Networking-for-Arduino/ESPHost@56afeeb · GitHub
[go: up one dir, main page]

Skip to content

Commit 56afeeb

Browse files
committed
Memory usage improvements
Former-commit-id: 7a40ed3ae1c166ea6683c41f88b06a619436d779
1 parent 1485f71 commit 56afeeb

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

src/CEspCommunication.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ bool CEspCom::get_msg_from_esp(CMsg &msg) {
4545
return false;
4646
}
4747

48+
/* -------------------------------------------------------------------------- */
49+
void CEspCom::clearFromEspQueue() {
50+
/* -------------------------------------------------------------------------- */
51+
CEspCom::from_ESP32_queue = {};
52+
}
53+
4854
/* -------------------------------------------------------------------------- */
4955
bool CEspCom::send_msg_to_app(const uint8_t *buffer, uint16_t dim) {
5056
/* -------------------------------------------------------------------------- */
@@ -79,6 +85,13 @@ bool CEspCom::get_msg_from_app(uint8_t *buffer, uint16_t dim) {
7985
return rv;
8086
}
8187

88+
/* -------------------------------------------------------------------------- */
89+
void CEspCom::clearToEspQueue() {
90+
/* -------------------------------------------------------------------------- */
91+
CEspCom::to_ESP32_queue = {};
92+
}
93+
94+
8295
/* -------------------------------------------------------------------------- */
8396
bool CEspCom::storeStationMsg(CMsg &msg) {
8497
/* -------------------------------------------------------------------------- */

src/CEspCommunication.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class CEspCom {
6666

6767
static void clearStationRx();
6868
static void clearSoftApRx();
69+
static void clearFromEspQueue();
70+
static void clearToEspQueue();
6971

7072
};
7173

src/CEspControl.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,14 @@ int CEspControl::process_msgs_received(CCtrlMsgWrapper* response) {
184184
/* -------------------------------------------------------------------------- */
185185
int rv = ESP_CONTROL_EMPTY_RX_QUEUE;
186186
CMsg msg;
187+
bool res = false;
188+
do {
187189
/* get the message */
188190
__disable_irq();
189-
bool res = CEspCom::get_msg_from_esp(msg);
191+
res = CEspCom::get_msg_from_esp(msg);
192+
if(!res) {
193+
CEspCom::clearFromEspQueue();
194+
}
190195
__enable_irq();
191196
if(res) {
192197

@@ -218,7 +223,10 @@ int CEspControl::process_msgs_received(CCtrlMsgWrapper* response) {
218223
}
219224
else {
220225
rv = process_ctrl_messages(msg, response);
221-
}
226+
}
227+
if(rv == ESP_CONTROL_MSG_RX) {
228+
break;
229+
}
222230
}
223231
/* NETWORK_MESSAGES____________________________________________________ */
224232
else if(msg.get_if_type() == ESP_STA_IF) {
@@ -256,7 +264,7 @@ int CEspControl::process_msgs_received(CCtrlMsgWrapper* response) {
256264

257265
}
258266
}
259-
267+
} while(res);
260268
return rv;
261269
}
262270

src/EspSpiDriver.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,9 @@ bool esp_host_there_are_data_to_be_tx() {
302302
/* the function esp32_receive_msg_to_be_sent_on_SPI memset the tx buffer to 0 if there are no data to be tx*/
303303
__disable_irq();
304304
bool rv = CEspCom::get_msg_from_app((uint8_t*)esp32_spi_tx_buffer, MAX_SPI_BUFFER_SIZE);
305+
if(!rv) {
306+
CEspCom::clearToEspQueue();
307+
}
305308
__enable_irq();
306309
#ifdef ESP_HOST_DEBUG_ENABLED_AVOID
307310
Serial.print("**** TX data? ");

0 commit comments

Comments
 (0)
0