10000 esp32: Improve LTE stability. Forbid sending AT commands while in con… · tdamsma/pycom-micropython-sigfox@7c0b797 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7c0b797

Browse files
author
Daniel Campora
committed
esp32: Improve LTE stability. Forbid sending AT commands while in connected (data mode) state.
1 parent ae3a294 commit 7c0b797

File tree

4 files changed

+97
-122
lines changed

4 files changed

+97
-122
lines changed

esp32/lte/lteppp.c

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void lteppp_init(void) {
9191

9292
void lteppp_start (void) {
9393
uart_set_hw_flow_ctrl(LTE_UART_ID, UART_HW_FLOWCTRL_CTS_RTS, 64);
94-
mp_hal_delay_ms(5);
94+
vTaskDelay(5);
9595
}
9696

9797
void lteppp_set_state(lte_state_t state) {
@@ -101,13 +101,16 @@ void lteppp_set_state(lte_state_t state) {
101101
}
102102

103103
void lteppp_connect (void) {
104+
uart_flush(LTE_UART_ID);
105+
vTaskDelay(25);
104106
pppapi_set_default(lteppp_pcb);
105107
pppapi_set_auth(lteppp_pcb, PPPAUTHTYPE_PAP, "", "");
106108
pppapi_connect(lteppp_pcb, 0);
107109
}
108110

109111
void lteppp_disconnect(void) {
110112
pppapi_close(lteppp_pcb, 0);
113+
vTaskDelay(150);
111114
}
112115

113116
void lteppp_send_at_command (lte_task_cmd_data_t *cmd, lte_task_rsp_data_t *rsp) {
@@ -223,6 +226,14 @@ static void TASK_LTE (void *pvParameters) {
223226
break;
224227
}
225228
}
229+
230+
lteppp_send_at_cmd("ATH", LTE_RX_TIMEOUT_MIN_MS);
231+
while (true) {
232+
vTaskDelay(LTE_RX_TIMEOUT_MIN_MS);
233+
if (lteppp_send_at_cmd("AT", LTE_RX_TIMEOUT_MIN_MS)) {
234+
break;
235+
}
236+
}
226237
}
227238

228239
lteppp_send_at_cmd("AT", LTE_RX_TIMEOUT_MIN_MS);
@@ -243,6 +254,13 @@ static void TASK_LTE (void *pvParameters) {
243254
break;
244255
}
245256
}
257+
lteppp_send_at_cmd("ATH", LTE_RX_TIMEOUT_MIN_MS);
258+
while (true) {
259+
vTaskDelay(LTE_RX_TIMEOUT_MIN_MS);
260+
if (lteppp_send_at_cmd("AT", LTE_RX_TIMEOUT_MIN_MS)) {
261+
break;
262+
}
263+
}
246264
}
247265
}
248266

@@ -268,17 +286,12 @@ static void TASK_LTE (void *pvParameters) {
268286

269287
// enable PSM if not already enabled
270288
lteppp_send_at_cmd("AT+CPSMS?", LTE_RX_TIMEOUT_MAX_MS);
271-
if (!strstr(lteppp_trx_buffer, "+CPSMS: 0")) {
272-
lteppp_send_at_cmd("AT+CPSMS=0", LTE_RX_TIMEOUT_MIN_MS);
289+
if (!strstr(lteppp_trx_buffer, "+CPSMS: 1")) {
290+
lteppp_send_at_cmd("AT+CPSMS=1", LTE_RX_TIMEOUT_MIN_MS);
273291
}
274292
// enable low power mode
275293
lteppp_send_at_cmd("AT!=\"setlpm airplane=1 enable=1\"", LTE_RX_TIMEOUT_MAX_MS);
276294

277-
if (!sim_present) {
278-
// uart_set_hw_flow_ctrl(LTE_UART_ID, UART_HW_FLOWCTRL_DISABLE, 0);
279-
// uart_set_rts(LTE_UART_ID, false);
280-
}
281-
282295
lteppp_init_complete = true;
283296

284297
for (;;) {
@@ -307,11 +320,13 @@ static void TASK_LTE (void *pvParameters) {
307320

308321
static bool lteppp_send_at_cmd_exp (const char *cmd, uint32_t timeout, const char *expected_rsp) {
309322
uint32_t cmd_len = strlen(cmd);
323+
// char tmp_buf[128];
310324

311325
// printf("cmd: %s\n", cmd);
312326

313327
// flush the rx buffer first
314328
uart_flush(LTE_UART_ID);
329+
// uart_read_bytes(LTE_UART_ID, (uint8_t *)tmp_buf, sizeof(tmp_buf), 5 / portTICK_RATE_MS);
315330
// then send the command
316331
uart_write_bytes(LTE_UART_ID, cmd, cmd_len);
317332
if (strcmp(cmd, "+++")) {

esp32/lte/lteppp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
#define LTE_OK_RSP "OK"
2525
#define LTE_CONNECT_RSP "CONNECT"
26-
#define LTE_RX_TIMEOUT_MAX_MS (20000)
26+
#define LTE_RX_TIMEOUT_MAX_MS (9500)
2727
#define LTE_RX_TIMEOUT_MIN_MS (250)
2828
#define LTE_PPP_BACK_OFF_TIME_MS (1150)
2929

esp32/mods/modbt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ static const mp_obj_type_t mod_bt_gatts_char_type;
219219

220220
static esp_ble_adv_params_t bt_adv_params = {
221221
.adv_int_min = 0x20,
222-
.adv_int_max = 0x40,
222+
.adv_int_max = 0x20,
223223
.adv_type = ADV_TYPE_IND,
224224
.own_addr_type = BLE_ADDR_TYPE_PUBLIC,
225225
.channel_map = ADV_CHNL_ALL,

0 commit comments

Comments
 (0)
0