@@ -87,6 +87,8 @@ uart_dev_t* uart_driver_lte = &UART2;
87
87
uart_config_t lte_uart_config0 ;
88
88
uart_config_t lte_uart_config1 ;
89
89
90
+ static bool lte_legacyattach_flag = false;
91
+
90
92
extern TaskHandle_t xLTEUpgradeTaskHndl ;
91
93
extern TaskHandle_t mpTaskHandle ;
92
94
extern TaskHandle_t svTaskHandle ;
@@ -107,7 +109,7 @@ extern TaskHandle_t xLTETaskHndl;
107
109
static bool lte_push_at_command_ext (char * cmd_str , uint32_t timeout , const char * expected_rsp );
108
110
static bool lte_push_at_command (char * cmd_str , uint32_t timeout );
109
111
static void lte_pause_ppp (void );
110
- static bool lte_check_attached (void );
112
+ static bool lte_check_attached (bool legacy );
111
113
static void lte_check_init (void );
112
114
static bool lte_check_sim_present (void );
113
115
STATIC mp_obj_t lte_suspend (mp_obj_t self_in );
@@ -187,7 +189,7 @@ static void lte_pause_ppp(void) {
187
189
}
188
190
}
189
191
190
- static bool lte_check_attached (void ) {
192
+ static bool lte_check_attached (bool legacy ) {
191
193
char * pos ;
192
194
bool attached = false;
193
195
bool cgatt = false;
@@ -208,19 +210,25 @@ static bool lte_check_attached(void) {
208
210
if (((pos = strstr (modlte_rsp .data , "+CGATT" )) && (strlen (pos ) >= 7 ) && (pos [7 ] == '1' || pos [8 ] == '1' ))) {
209
211
cgatt = true;
210
212
}
211
- lte_push_at_command ("AT+CEREG?" , LTE_RX_TIMEOUT_MIN_MS );
212
- if (!cgatt ) {
213
- if (((pos = strstr (modlte_rsp .data , "+CEREG: 2,1," )) || (pos = strstr (modlte_rsp .data , "+CEREG: 2,5," )))
214
- && (strlen (pos ) >= 31 ) && (pos [30 ] == '7' || pos [30 ] == '9' )) {
215
- attached = true;
216
- }
217
- } else {
218
- if ((pos = strstr (modlte_rsp .data , "+CEREG: 2,1," )) || (pos = strstr (modlte_rsp .data , "+CEREG: 2,5," ))) {
219
- attached = true;
213
+ if (legacy ) {
214
+ lte_push_at_command ("AT+CEREG?" , LTE_RX_TIMEOUT_MIN_MS );
215
+ if (!cgatt ) {
216
+ if (((pos = strstr (modlte_rsp .data , "+CEREG: 2,1," )) || (pos = strstr (modlte_rsp .data , "+CEREG: 2,5," )))
217
+ && (strlen (pos ) >= 31 ) && (pos [30 ] == '7' || pos [30 ] == '9' )) {
218
+ attached = true;
219
+ }
220
220
} else {
221
- attached = false;
221
+ if ((pos = strstr (modlte_rsp .data , "+CEREG: 2,1," )) || (pos = strstr (modlte_rsp .data , "+CEREG: 2,5," ))) {
222
+ attached = true;
223
+ } else {
224
+ attached = false;
225
+ }
222
226
}
223
227
}
228
+ else
229
+ {
230
+ attached = cgatt ;
231
+ }
224
232
lte_push_at_command ("AT+CFUN?" , LTE_RX_TIMEOUT_MIN_MS );
225
233
if (lteppp_get_state () == E_LTE_ATTACHING ) {
226
234
// for some reason the modem has crashed, enabled the radios again...
@@ -360,6 +368,9 @@ static mp_obj_t lte_init_helper(lte_obj_t *self, const mp_arg_val_t *args) {
360
368
}
361
369
}
362
370
371
+ // set legacy flag
372
+ lte_legacyattach_flag = args [1 ].u_bool ;
373
+
363
374
// configure the carrier
364
375
lte_push_at_command ("AT+SQNCTM?" , LTE_RX_TIMEOUT_MAX_MS );
365
376
if (!strstr (modlte_rsp .data , carrier )) {
@@ -382,7 +393,8 @@ static mp_obj_t lte_init_helper(lte_obj_t *self, const mp_arg_val_t *args) {
382
393
383
394
static const mp_arg_t lte_init_args [] = {
384
395
{ MP_QSTR_id , MP_ARG_INT , {.u_int = 0 } },
385
- { MP_QSTR_carrier , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none } }
396
+ { MP_QSTR_carrier , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none }},
397
+ { MP_QSTR_legacyattach , MP_ARG_KW_ONLY | MP_ARG_BOOL , {.u_bool = false}}
386
398
};
387
399
388
400
static mp_obj_t lte_make_new (const mp_obj_type_t * type , mp_uint_t n_args , mp_uint_t n_kw , const mp_obj_t * all_args ) {
@@ -516,13 +528,18 @@ STATIC mp_obj_t lte_attach(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t
516
528
{ MP_QSTR_band , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none } },
517
529
{ MP_QSTR_apn , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none } },
518
530
{ MP_QSTR_log , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_false } },
531
+ { MP_QSTR_legacyattach , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none } },
519
532
};
520
533
521
534
// parse args
522
535
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
523
536
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
524
537
525
- lte_check_attached ();
538
+ if (args [3 ].u_obj != mp_const_none ) {
539
+ lte_legacyattach_flag = mp_obj_is_true (args [3 ].u_obj );
540
+ }
541
+
542
+ lte_check_attached (lte_legacyattach_flag );
526
543
527
544
if (lteppp_get_state () < E_LTE_ATTACHING ) {
528
545
// configuring scanning in all 6 bands
@@ -665,7 +682,7 @@ STATIC mp_obj_t lte_suspend(mp_obj_t self_in) {
665
682
break ;
666
683
}
667
684
}
668
- lte_check_attached ();
685
+ lte_check_attached (lte_legacyattach_flag );
669
686
}
670
687
return mp_const_none ;
671
688
}
@@ -675,7 +692,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(lte_suspend_obj, lte_suspend);
675
692
676
693
STATIC mp_obj_t lte_isattached (mp_obj_t self_in ) {
677
694
lte_check_init ();
678
- if (lte_check_attached ()) {
695
+ if (lte_check_attached (lte_legacyattach_flag )) {
679
696
return mp_const_true ;
680
697
}
681
698
return mp_const_false ;
@@ -699,7 +716,7 @@ STATIC mp_obj_t lte_connect(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t
699
716
args [1 ].u_bool = lte_check_legacy_version ();
700
717
}
701
718
702
- lte_check_attached ();
719
+ lte_check_attached (lte_legacyattach_flag );
703
720
lteppp_set_legacy (args [1 ].u_bool );
704
721
705
722
if (args [1 ].u_bool ) {
@@ -749,7 +766,7 @@ STATIC mp_obj_t lte_resume(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t
749
766
if (lteppp_get_state () == E_LTE_PPP ) {
750
767
nlr_raise (mp_obj_new_exception_msg (& mp_type_OSError , mpexception_os_request_not_possible ));
751
768
}
752
- lte_check_attached ();
769
+ lte_check_attached (lte_legacyattach_flag );
753
770
754
771
if (lteppp_get_state () == E_LTE_SUSPENDED || lteppp_get_state () == E_LTE_ATTACHED ) {
755
772
if (lteppp_get_state () == E_LTE_ATTACHED && lteppp_get_legacy () == E_LTE_LEGACY ) {
@@ -788,7 +805,7 @@ STATIC mp_obj_t lte_disconnect(mp_obj_t self_in) {
788
805
break ;
789
806
}
790
807
}
791
- lte_check_attached ();
808
+ lte_check_attached (lte_legacyattach_flag );
792
809
}
793
810
return mp_const_none ;
794
811
}
0 commit comments