54
54
#include "lora/mac/region/RegionEU868.h"
55
55
56
56
// openThread includes
57
+ #ifdef LORA_OPENTHREAD_ENABLED
57
58
#include <openthread/udp.h>
58
59
#include <openthread/instance.h>
59
60
#include <openthread/ip6.h>
70
71
#include "lora/ot-settings.h"
71
72
#include "lora/ot-log.h"
72
73
#include "lora/ot-task.h"
74
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
73
75
74
76
/******************************************************************************
75
77
DEFINE PRIVATE CONSTANTS
@@ -269,7 +271,7 @@ static const char *modlora_nvs_data_key[E_LORA_NVS_NUM_KEYS] = { "JOINED", "UPLN
269
271
"MACPARAMS" , "CHANNELS" , "SRVACK" , "MACNXTTX" ,
270
272
"MACBUFIDX" , "MACRPTIDX" , "MACBUF" , "MACRPTBUF" ,
271
273
"REGION" , "CHANMASK" , "CHANMASKREM" };
272
-
274
+ #ifdef LORA_OPENTHREAD_ENABLED
273
275
static otInstance * ot = NULL ;
274
276
bool ot_ready = false;
275
277
@@ -279,6 +281,7 @@ int otCliBufferLen = 0;
279
281
static char meshCliOutput [MESH_CLI_OUTPUT_SIZE ];
280
282
static int meshCliOutputLen = 0 ;
281
283
static bool meshCliOutputDone = false;
284
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
282
285
283
286
/******************************************************************************
284
287
DECLARE PUBLIC DATA
@@ -405,6 +408,7 @@ bool modlora_is_module_sleep(void)
405
408
}
406
409
}
407
410
411
+ #ifdef LORA_OPENTHREAD_ENABLED
408
412
int lora_ot_recv (uint8_t * buf , int8_t * rssi ) {
409
413
410
414
// put Lora into RX mode
@@ -429,6 +433,7 @@ void lora_ot_send(const uint8_t *buf, uint16_t len) {
429
433
430
434
otPlatLog (OT_LOG_LEVEL_INFO , 0 , "radio TX: %d" , len );
431
435
}
436
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
432
437
433
438
/******************************************************************************
434
439
DEFINE PRIVATE FUNCTIONS
@@ -2208,6 +2213,7 @@ STATIC mp_obj_t lora_nvram_erase (mp_obj_t self_in) {
2208
2213
}
2209
2214
STATIC MP_DEFINE_CONST_FUN_OBJ_1 (lora_nvram_erase_obj , lora_nvram_erase );
2210
2215
2216
+ #ifdef LORA_OPENTHREAD_ENABLED
2211
2217
/*
2212
2218
* openthread CLI callback, triggered when an response from openthread has to be published on REPL
2213
2219
*/
@@ -2312,6 +2318,7 @@ STATIC mp_obj_t lora_cli(mp_obj_t self_in, mp_obj_t data) {
2312
2318
return mp_obj_new_str ("" , 0 );
2313
2319
}
2314
2320
STATIC MP_DEFINE_CONST_FUN_OBJ_2 (lora_cli_obj , lora_cli );
2321
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2315
2322
2316
2323
2317
2324
STATIC const mp_map_elem_t lora_locals_dict_table [] = {
@@ -2338,8 +2345,10 @@ STATIC const mp_map_elem_t lora_locals_dict_table[] = {
2338
2345
{ MP_OBJ_NEW_QSTR (MP_QSTR_nvram_save ), (mp_obj_t )& lora_nvram_save_obj },
2339
2346
{ MP_OBJ_NEW_QSTR (MP_QSTR_nvram_restore ), (mp_obj_t )& lora_nvram_restore_obj },
2340
2347
{ MP_OBJ_NEW_QSTR (MP_QSTR_nvram_erase ), (mp_obj_t )& lora_nvram_erase_obj },
2348
+ #ifdef LORA_OPENTHREAD_ENABLED
2341
2349
{ MP_OBJ_NEW_QSTR (MP_QSTR_mesh ), (mp_obj_t )& lora_mesh_obj },
2342
2350
{ MP_OBJ_NEW_QSTR (MP_QSTR_cli ), (mp_obj_t )& lora_cli_obj },
2351
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2343
2352
2344
2353
// exceptions
2345
2354
{ MP_OBJ_NEW_QSTR (MP_QSTR_timeout ), (mp_obj_t )& mp_type_TimeoutError },
@@ -2409,10 +2418,12 @@ static int lora_socket_socket (mod_network_socket_obj_t *s, int *_errno) {
2409
2418
}
2410
2419
s -> sock_base .u .sd = 1 ;
2411
2420
2421
+ #ifdef LORA_OPENTHREAD_ENABLED
2412
2422
// if mesh is enabled, assume socket is for mesh, not for LoraWAN
2413
2423
if (ot_ready ) {
2414
2424
return mesh_socket_open (_errno );
2415
2425
}
2426
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2416
2427
2417
2428
uint32_t dr = DR_0 ;
2418
2429
switch (lora_obj .region ) {
@@ -2437,18 +2448,22 @@ static int lora_socket_socket (mod_network_socket_obj_t *s, int *_errno) {
2437
2448
2438
2449
static void lora_socket_close (mod_network_socket_obj_t * s ) {
2439
2450
s -> sock_base .u .sd = -1 ;
2451
+ #ifdef LORA_OPENTHREAD_ENABLED
2440
2452
mesh_socket_close ();
2453
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2441
2454
}
2442
2455
2443
2456
static int lora_socket_send (mod_network_socket_obj_t * s , const byte * buf , mp_uint_t len , int * _errno ) {
2444
2457
mp_int_t n_bytes = -1 ;
2445
2458
2446
2459
LORA_CHECK_SOCKET (s );
2447
2460
2461
+ #ifdef LORA_OPENTHREAD_ENABLED
2448
2462
if (ot_ready ) {
2449
2463
* _errno = MP_EOPNOTSUPP ;
2450
2464
return -1 ;
2451
2465
}
2466
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2452
2467
2453
2468
// is the radio able to transmit
2454
2469
if (lora_obj .pwr_mode == E_LORA_MODE_SLEEP ) {
@@ -2484,10 +2499,12 @@ static int lora_socket_send (mod_network_socket_obj_t *s, const byte *buf, mp_ui
2484
2499
static int lora_socket_recv (mod_network_socket_obj_t * s , byte * buf , mp_uint_t len , int * _errno ) {
2485
2500
LORA_CHECK_SOCKET (s );
2486
2501
2502
+ #ifdef LORA_OPENTHREAD_ENABLED
2487
2503
if (ot_ready ) {
2488
2504
* _errno = MP_EOPNOTSUPP ;
2489
2505
return -1 ;
2490
2506
}
2507
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2491
2508
2492
2509
int ret = lora_recv (buf , len , s -> sock_base .timeout , NULL );
2493
2510
if (ret < 0 ) {
@@ -2500,9 +2517,11 @@ static int lora_socket_recv (mod_network_socket_obj_t *s, byte *buf, mp_uint_t l
2500
2517
static int lora_socket_recvfrom (mod_network_socket_obj_t * s , byte * buf , mp_uint_t len , byte * ip , mp_uint_t * port , int * _errno ) {
2501
2518
LORA_CHECK_SOCKET (s );
2502
2519
2520
+ #ifdef LORA_OPENTHREAD_ENABLED
2503
2521
if (ot_ready ) {
2504
2522
return mesh_socket_recvfrom (buf , len , ip , port , _errno );
2505
2523
}
2524
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2506
2525
2507
2526
* port = 0 ; // in case there's no data received
2508
2527
int ret = lora_recv (buf , len , s -> sock_base .timeout , (uint32_t * )port );
@@ -2516,10 +2535,12 @@ static int lora_socket_recvfrom (mod_network_socket_obj_t *s, byte *buf, mp_uint
2516
2535
static int lora_socket_setsockopt (mod_network_socket_obj_t * s , mp_uint_t level , mp_uint_t opt , const void * optval , mp_uint_t optlen , int * _errno ) {
2517
2536
LORA_CHECK_SOCKET (s );
2518
2537
2538
+ #ifdef LORA_OPENTHREAD_ENABLED
2519
2539
if (ot_ready ) {
2520
2540
* _errno = MP_EOPNOTSUPP ;
2521
2541
return -1 ;
2522
2542
}
2543
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2523
2544
2524
2545
if (level != SOL_LORA ) {
2525
2546
* _errno = MP_EOPNOTSUPP ;
@@ -2548,10 +2569,12 @@ static int lora_socket_setsockopt(mod_network_socket_obj_t *s, mp_uint_t level,
2548
2569
static int lora_socket_settimeout (mod_network_socket_obj_t * s , mp_int_t timeout_ms , int * _errno ) {
2549
2570
LORA_CHECK_SOCKET (s );
2550
2571
2572
+ #ifdef LORA_OPENTHREAD_ENABLED
2551
2573
if (ot_ready ) {
2552
2574
* _errno = MP_EOPNOTSUPP ;
2553
2575
return -1 ;
2554
2576
}
2577
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2555
2578
2556
2579
s -> sock_base .timeout = timeout_ms ;
2557
2580
return 0 ;
@@ -2560,9 +2583,11 @@ static int lora_socket_settimeout (mod_network_socket_obj_t *s, mp_int_t timeout
2560
2583
static int lora_socket_bind (mod_network_socket_obj_t * s , byte * ip , mp_uint_t port , int * _errno ) {
2561
2584
LORA_CHECK_SOCKET (s );
2562
2585
2586
+ #ifdef LORA_OPENTHREAD_ENABLED
2563
2587
if (ot_ready ) {
2564
2588
return mesh_socket_bind (ip , port , _errno );
2565
2589
}
2590
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2566
2591
2567
2592
if (port > 224 ) {
2568
2593
* _errno = MP_EOPNOTSUPP ;
@@ -2577,10 +2602,12 @@ static int lora_socket_ioctl (mod_network_socket_obj_t *s, mp_uint_t request, mp
2577
2602
2578
2603
LORA_CHECK_SOCKET (s );
2579
2604
2605
+ #ifdef LORA_OPENTHREAD_ENABLED
2580
2606
if (ot_ready ) {
2581
2607
* _errno = MP_EOPNOTSUPP ;
2582
2608
return -1 ;
2583
2609
}
2610
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2584
2611
2585
2612
if (request == MP_STREAM_POLL ) {
2586
2613
mp_uint_t flags = arg ;
@@ -2600,9 +2627,11 @@ static int lora_socket_ioctl (mod_network_socket_obj_t *s, mp_uint_t request, mp
2600
2627
static int lora_socket_sendto (struct _mod_network_socket_obj_t * s , const byte * buf , mp_uint_t len , byte * ip , mp_uint_t port , int * _errno ) {
2601
2628
LORA_CHECK_SOCKET (s );
2602
2629
2630
+ #ifdef LORA_OPENTHREAD_ENABLED
2603
2631
if (ot_ready ) {
2604
2632
return mesh_socket_sendto (buf , len , ip , port , _errno );
2605
2633
}
2634
+ #endif // #ifdef LORA_OPENTHREAD_ENABLED
2606
2635
2607
2636
// not implemented for LoraWAN
2608
2637
* _errno = MP_EOPNOTSUPP ;
0 commit comments