8000 lte: callback LTE_EVENT_BREAK · pycom/pycom-micropython-sigfox@9cc50b2 · GitHub
[go: up one dir, main page]

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

Appearance settings
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 9cc50b2

Browse files
committed
lte: callback LTE_EVENT_BREAK
- disable the existing LTE_EVENT_COVERAGE_LOST - disable sending +++ at a break
1 parent 4937349 commit 9cc50b2

File tree

3 files changed

+60
-46
lines changed

3 files changed

+60
-46
lines changed

esp32/lte/lteppp.c

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "esp32_mphal.h"
3030
#include "lwip/dns.h"
3131
#include "modlte.h"
32+
#include "str_utils.h"
3233

3334
/******************************************************************************
3435
DEFINE CONSTANTS
@@ -569,11 +570,11 @@ static void TASK_LTE (void *pvParameters) {
569570
if(!expect_continuation)
570571
xQueueSend(xRxQueue, (void *)lte_task_rsp, (TickType_t)portMAX_DELAY);
571572
}
572-
else if(state == E_LTE_PPP && lte_uart_break_evt)
573-
{
574-
lteppp_send_at_cmd("+++", LTE_PPP_BACK_OFF_TIME_MS);
575-
lteppp_suspend();
576-
}
573+
//else if(state == E_LTE_PPP && lte_uart_break_evt)
574+
//{
575+
// lteppp_send_at_cmd("+++", LTE_PPP_BACK_OFF_TIME_MS);
576+
// lteppp_suspend();
577+
//}
577578
else
578579
{
579580
if (state == E_LTE_PPP) {
@@ -621,34 +622,37 @@ static void TASK_LTE (void *pvParameters) {
621622

622623
static void TASK_UART_EVT (void *pvParameters) {
623624
uart_event_t event;
624-
uint8_t buff[50] = {0};
625+
//uint8_t buff[50] = {0};
625626
for(;;) {
626627
//Waiting for UART event.
627628
if(xQueueReceive(uart0_queue, (void * )&event, (portTickType)portMAX_DELAY)) {
628629

629-
switch(event.type)
630-
{
630+
switch(event.type) {
631631
case UART_DATA:
632-
if (lte_uart_break_evt) {
633-
634-
uint32_t rx_len = uart_read_bytes(LTE_UART_ID, buff, LTE_UART_BUFFER_SIZE,
635-
LTE_TRX_WAIT_MS(LTE_UART_BUFFER_SIZE) / portTICK_RATE_MS);
636-
637-
if ((rx_len) && (strstr((const char *)buff, "OK") != NULL))
638-
{
639-
if(strstr((const char *)buff, "+CEREG: 4") != NULL)
640-
{
641-
modlte_urc_events(LTE_EVENT_COVERAGE_LOST);
642-
}
643-
644-
lte_uart_break_evt = false;
645-
}
646-
}
632+
// if (lte_uart_break_evt) {
633+
634+
// uint32_t rx_len = uart_read_bytes(LTE_UART_ID, buff, LTE_UART_BUFFER_SIZE,
635+
// LTE_TRX_WAIT_MS(LTE_UART_BUFFER_SIZE) / portTICK_RATE_MS);
636+
637+
// MSG("uart_data evt + break (%u)\n", rx_len);
638+
// hexdump(buff, rx_len);
639+
// if ((rx_len) && (strstr((const char *)buff, "OK") != NULL)) {
640+
// MSG("OK\n");
641+
// if(strstr((const char *)buff, "+CEREG: 4") != NULL) {
642+
// MSG("CEREG 4, trigger callback\n");
643+
// modlte_urc_events(LTE_EVENT_COVERAGE_LOST);
644+
// }
645+
// lte_uart_break_evt = false;
646+
// MSG("break=false\n");
647+
// }
648+
// }
647649
break;
648650
case UART_BREAK:
651+
// MSG("LTE_UART: uart_break evt, ppp=%u (4=ppp)\n", lteppp_get_state());
649652
if (E_LTE_PPP == lteppp_get_state()) {
650653
lte_uart_break_evt = true;
651654
MSG("uart_break evt and ppp, so break=true\n");
655+
modlte_urc_events(LTE_EVENT_BREAK);
652656
} else {
653657
// this should not happen, because the sequans modem only issues a break event when in ppp
654658
MSG("uart_break evt, but no ppp, so do nothing\n");

esp32/mods/modlte.c

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@
105105
/******************************************************************************
106106
DECLARE PRIVATE DATA
107107
******************************************************************************/
108-
static lte_obj_t lte_obj = {.init = false, .trigger = LTE_TRIGGER_NONE, .events = 0, .handler = NULL, .handler_arg = NULL};
108+
static lte_obj_t lte_obj = {.init = false, .trigger = LTE_EVENT_NONE, .events = 0, .handler = NULL, .handler_arg = NULL};
109109
static lte_task_rsp_data_t modlte_rsp;
110110
uart_dev_t* uart_driver_0 = &UART0;
111111
uart_dev_t* uart_driver_lte = &UART2;
@@ -171,18 +171,22 @@ void modlte_start_modem(void)
171171

172172
void modlte_urc_events(lte_events_t events)
173173
{
174-
switch(events)
174+
// set the events to report to the user, the clearing is done upon reading via lte_events()
175+
if ( (events & LTE_EVENT_COVERAGE_LOST)
176+
&& (lte_obj.trigger & LTE_EVENT_COVERAGE_LOST) )
175177
{
176-
case LTE_EVENT_COVERAGE_LOST:
177-
if ((lte_obj.trigger & LTE_TRIGGER_SIG_LOST)) {
178-
lte_obj.events |= (uint32_t)LTE_TRIGGER_SIG_LOST;
179-
}
180-
mp_irq_queue_interrupt(lte_callback_handler, &lte_obj);
181-
break;
182-
default:
183-
break;
178+
lte_obj.events |= (uint32_t)LTE_EVENT_COVERAGE_LOST;
184179
}
180+
if ( (events & LTE_EVENT_BREAK)
181+
&& (lte_obj.trigger & LTE_EVENT_BREAK) )
182+
{
183+
lte_obj.events |= (uint32_t)LTE_EVENT_BREAK;
184+
}
185+
186+
//MSG("urc(%u) l.trig=%u l.eve=%d\n", events, lte_obj.trigger, lte_obj.events);
187+
mp_irq_queue_interrupt(lte_callback_handler, &lte_obj);
185188
}
189+
186190
//*****************************************************************************
187191
// DEFINE STATIC FUNCTIONS
188192
//*****************************************************************************
@@ -192,10 +196,10 @@ static void lte_callback_handler(void* arg)
192196
lte_obj_t *self = arg;
193197

194198
if (self->handler && self->handler != mp_const_none) {
195-
MSG("call callback(handler=%p, arg=%p)\n", self->handler_arg, self->handler);
199+
//MSG("call callback(handler=%p, arg=%p)\n", self->handler_arg, self->handler);
196200
mp_call_function_1(self->handler, self->handler_arg);
197201
}else{
198-
MSG("no callback\n");
202+
//MSG("no callback\n");
199203
}
200204

201205
}
@@ -1598,7 +1602,8 @@ STATIC const mp_map_elem_t lte_locals_dict_table[] = {
15981602
// class constants
15991603
{ MP_OBJ_NEW_QSTR(MP_QSTR_IP), MP_OBJ_NEW_QSTR(MP_QSTR_IP) },
16001604
{ MP_OBJ_NEW_QSTR(MP_QSTR_IPV4V6), MP_OBJ_NEW_QSTR(MP_QSTR_IPV4V6) },
1601-
{ MP_OBJ_NEW_QSTR(MP_QSTR_EVENT_COVERAGE_LOSS), MP_OBJ_NEW_SMALL_INT(LTE_TRIGGER_SIG_LOST) },
1605+
{ MP_OBJ_NEW_QSTR(MP_QSTR_EVENT_COVERAGE_LOSS), MP_OBJ_NEW_SMALL_INT(LTE_EVENT_COVERAGE_LOST) },
1606+
{ MP_OBJ_NEW_QSTR(MP_QSTR_EVENT_BREAK), MP_OBJ_NEW_SMALL_INT(LTE_EVENT_BREAK) },
16021607
// PSM Power Saving Mode
16031608
{ MP_OBJ_NEW_QSTR(MP_QSTR_PSM_PERIOD_2S), MP_OBJ_NEW_SMALL_INT(PSM_PERIOD_2S) },
16041609
{ MP_OBJ_NEW_QSTR(MP_QSTR_PSM_PERIOD_30S), MP_OBJ_NEW_SMALL_INT(PSM_PERIOD_30S) },

esp32/mods/modlte.h

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,19 @@
1616

1717
#define LTE_MAX_RX_SIZE 1024
1818

19-
#define LTE_TRIGGER_NONE 0x00000000
20-
#define LTE_TRIGGER_SIG_LOST 0x00000001
19+
// // trigger and event definitions used in Micropython API
20+
// #define LTE_EVENT_NONE 0x00000000
21+
// #define LTE_EVENT_COVERAGE_LOST 0x00000001
22+
// #define LTE_EVENT_BREAK 0x00000002
23+
24+
25+
typedef enum
26+
{
27+
LTE_EVENT_NONE = 0x00000000,
28+
LTE_EVENT_COVERAGE_LOST = 0x00000001,
29+
LTE_EVENT_BREAK = 0x00000002,
30+
}lte_events_t;
31+
2132

2233
typedef struct _lte_obj_t {
2334
mp_obj_base_t base;
@@ -26,18 +37,12 @@ typedef struct _lte_obj_t {
2637
uint8_t cid;
2738
bool init;
2839
bool carrier;
29-
uint32_t trigger;
30-
int32_t events;
40+
lte_events_t trigger;
41+
lte_events_t events;
3142
mp_obj_t handler;
3243
mp_obj_t handler_arg;
3344
} lte_obj_t;
3445

35-
typedef enum
36-
{
37-
LTE_EVENT_COVERAGE_LOST = 0,
38-
LTE_EVENT_MAX
39-
}lte_events_t;
40-
4146

4247
/******************************************************************************
4348
DECLARE PUBLIC FUNCTIONS

0 commit comments

Comments
 (0)
0