@@ -41,42 +41,6 @@ SPDX-License-Identifier: BSD-3-Clause
41
41
#define INVALID_PORT 0xFF
42
42
#define MAX_CONFIRMED_MSG_RETRIES 255
43
43
44
- #ifdef MBED_CONF_LORA_PHY
45
- #if MBED_CONF_LORA_PHY == 0
46
- #include " lorawan/lorastack/phy/LoRaPHYEU868.h"
47
- static SingletonPtr<LoRaPHYEU868> lora_phy;
48
- #elif MBED_CONF_LORA_PHY == 1
49
- #include " lorawan/lorastack/phy/LoRaPHYAS923.h"
50
- static SingletonPtr<LoRaPHYAS923> lora_phy;
51
- #elif MBED_CONF_LORA_PHY == 2
52
- #include " lorawan/lorastack/phy/LoRaPHYAU915.h"
53
- static SingletonPtr<LoRaPHYAU915> lora_phy;
54
- #elif MBED_CONF_LORA_PHY == 3
55
- #include " lorawan/lorastack/phy/LoRaPHYCN470.h"
56
- static SingletonPtr<LoRaPHYCN470> lora_phy;
57
- #elif MBED_CONF_LORA_PHY == 4
58
- #include " lorawan/lorastack/phy/LoRaPHYCN779.h"
59
- static SingletonPtr<LoRaPHYCN779> lora_phy;
60
- #elif MBED_CONF_LORA_PHY == 5
61
- #include " lorawan/lorastack/phy/LoRaPHYEU433.h"
62
- static SingletonPtr<LoRaPHYEU433> lora_phy;
63
- #elif MBED_CONF_LORA_PHY == 6
64
- #include " lorawan/lorastack/phy/LoRaPHYIN865.h"
65
- static SingletonPtr<LoRaPHYIN865> lora_phy;
66
- #elif MBED_CONF_LORA_PHY == 7
67
- #include " lorawan/lorastack/phy/LoRaPHYKR920.h"
68
- static SingletonPtr<LoRaPHYKR920> lora_phy;
69
- #elif MBED_CONF_LORA_PHY == 8
70
- #include " lorawan/lorastack/phy/LoRaPHYUS915.h"
71
- static SingletonPtr<LoRaPHYUS915> lora_phy;
72
- #elif MBED_CONF_LORA_PHY == 9
73
- #include " lorawan/lorastack/phy/LoRaPHYUS915Hybrid.h"
74
- static SingletonPtr<LoRaPHYUS915Hybrid> lora_phy;
75
- #endif // MBED_CONF_LORA_PHY == VALUE
76
- #else
77
- #error "Must set LoRa PHY layer parameters."
78
- #endif // MBED_CONF_LORA_PHY
79
-
80
44
using namespace mbed ;
81
45
using namespace events ;
82
46
@@ -128,8 +92,9 @@ lora_mac_status_t LoRaWANStack::set_application_port(uint8_t port)
128
92
* Constructor and destructor *
129
93
****************************************************************************/
130
94
LoRaWANStack::LoRaWANStack ()
131
- : _device_current_state(DEVICE_STATE_NOT_INITIALIZED), _mac_handlers(NULL ),
132
- _num_retry(1 ), _queue(NULL ), _duty_cycle_on(LORAWAN_DUTYCYCLE_ON)
95
+ : _loramac(_lora_time), _lora_phy(_lora_time),
96
+ _device_current_state(DEVICE_STATE_NOT_INITIALIZED), _mac_handlers(NULL ),
97
+ _num_retry(1 ), _queue(NULL ), _duty_cycle_on(LORAWAN_DUTYCYCLE_ON)
133
98
{
134
99
#ifdef MBED_CONF_LORA_APP_PORT
135
100
// is_port_valid() is not virtual, so we can call it in constructor
@@ -170,7 +135,7 @@ radio_events_t *LoRaWANStack::bind_radio_driver(LoRaRadio& radio)
170
135
// Store pointer to callback routines inside MAC layer (non-IRQ safe)
171
136
_mac_handlers = _loramac.GetPhyEventHandlers ();
172
137
// passes the reference to radio driver down to PHY layer
173
- lora_phy. get ()-> set_radio_instance (radio);
138
+ _lora_phy. set_radio_instance (radio);
174
139
return _mac_handlers;
175
140
}
176
141
@@ -200,12 +165,13 @@ lora_mac_status_t LoRaWANStack::initialize_mac_layer(EventQueue *queue)
200
165
_compliance_test.app_data_buffer = compliance_test_buffer;
201
166
#endif
202
167
203
- TimerTimeCounterInit (queue);
168
+ _lora_time.TimerTimeCounterInit (queue);
169
+
204
170
LoRaMacPrimitives.MacMcpsConfirm = callback (this , &LoRaWANStack::mcps_confirm);
205
171
LoRaMacPrimitives.MacMcpsIndication = callback (this , &LoRaWANStack::mcps_indication);
206
172
LoRaMacPrimitives.MacMlmeConfirm = callback (this , &LoRaWANStack::mlme_confirm);
207
173
LoRaMacPrimitives.MacMlmeIndication = callback (this , &LoRaWANStack::mlme_indication);
208
- _loramac.LoRaMacInitialization (&LoRaMacPrimitives, &LoRaMacCallbacks, lora_phy. get () , queue);
174
+ _loramac.LoRaMacInitialization (&LoRaMacPrimitives, &LoRaMacCallbacks, &_lora_phy , queue);
209
175
210
176
mib_req.type = LORA_MIB_ADR;
211
177
mib_req.param .adr_enable = LORAWAN_ADR_ON;
@@ -276,7 +242,7 @@ lora_mac_status_t LoRaWANStack::send_compliance_test_frame_to_mac()
276
242
GetPhyParams_t phy_params;
277
243
PhyParam_t default_datarate;
278
244
phy_params.Attribute = PHY_DEF_TX_DR;
279
- default_datarate = lora_phy .get_phy_params (&phy_params);
245
+ default_datarate = _lora_phy .get_phy_params (&phy_params);
280
246
281
247
prepare_special_tx_frame (_compliance_test.app_port );
282
248
@@ -338,7 +304,7 @@ lora_mac_status_t LoRaWANStack::send_frame_to_mac()
338
304
GetPhyParams_t phy_params;
339
305
PhyParam_t default_datarate;
340
306
phy_params.Attribute = PHY_DEF_TX_DR;
341
- default_datarate = lora_phy. get ()-> get_phy_params (&phy_params);
307
+ default_datarate = _lora_phy. get_phy_params (&phy_params);
342
308
343
309
mcps_req.type = _tx_msg.type ;
344
310
@@ -514,7 +480,7 @@ lora_mac_status_t LoRaWANStack::add_channels(const lora_channelplan_t &channel_p
514
480
515
481
// Check first how many channels the selected PHY layer supports
516
482
get_phy.Attribute = PHY_MAX_NB_CHANNELS;
517
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
483
+ phy_param = _lora_phy. get_phy_params (&get_phy);
518
484
max_num_channels = (uint8_t ) phy_param.Value ;
519
485
520
486
// check if user is setting more channels than supported
@@ -558,17 +524,17 @@ lora_mac_status_t LoRaWANStack::drop_channel_list()
558
524
559
525
// Check first how many channels the selected PHY layer supports
560
526
get_phy.Attribute = PHY_MAX_NB_CHANNELS;
561
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
527
+ phy_param = _lora_phy. get_phy_params (&get_phy);
562
528
max_num_channels = (uint8_t ) phy_param.Value ;
563
529
564
530
// Now check the channel mask for enabled channels
565
531
get_phy.Attribute = PHY_CHANNELS_MASK;
566
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
532
+ phy_param = _lora_phy. get_phy_params (&get_phy);
567
533
channel_masks = phy_param.ChannelsMask ;
568
534
569
535
// Now check the channel mask for default channels
570
536
get_phy.Attribute = PHY_CHANNELS_DEFAULT_MASK;
571
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
537
+ phy_param = _lora_phy. get_phy_params (&get_phy);
572
538
default_channel_masks = phy_param.ChannelsMask ;
573
539
574
540
for (uint8_t i = 0 ; i < max_num_channels; i++) {
@@ -607,7 +573,7 @@ lora_mac_status_t LoRaWANStack::remove_a_channel(uint8_t channel_id)
607
573
608
574
// Check first how many channels the selected PHY layer supports
609
575
get_phy.Attribute = PHY_MAX_NB_CHANNELS;
610
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
576
+ phy_param = _lora_phy. get_phy_params (&get_phy);
611
577
max_num_channels = (uint8_t ) phy_param.Value ;
612
578
613
579
// According to specification channel IDs start from 0 and last valid
@@ -619,7 +585,7 @@ lora_mac_status_t LoRaWANStack::remove_a_channel(uint8_t channel_id)
619
585
620
586
// Now check the Default channel mask
621
587
get_phy.Attribute = PHY_CHANNELS_DEFAULT_MASK;
622
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
588
+ phy_param = _lora_phy. get_phy_params (&get_phy);
623
589
channel_masks = phy_param.ChannelsMask ;
624
590
625
591
// check if the channel ID give belongs to a default channel
@@ -654,12 +620,12 @@ lora_mac_status_t LoRaWANStack::get_enabled_channels(lora_channelplan_t& channel
654
620
655
621
// Check first how many channels the selected PHY layer supports
656
622
get_phy.Attribute = PHY_MAX_NB_CHANNELS;
657
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
623
+ phy_param = _lora_phy. get_phy_params (&get_phy);
658
624
max_num_channels = (uint8_t ) phy_param.Value ;
659
625
660
626
// Now check the Default channel mask
661
627
get_phy.Attribute = PHY_CHANNELS_MASK;
662
- phy_param = lora_phy. get ()-> get_phy_params (&get_phy);
628
+ phy_param = _lora_phy. get_phy_params (&get_phy);
663
629
channel_masks = phy_param.ChannelsMask ;
664
630
665
631
// Request Mib to get channels
0 commit comments