Commit Graph

100 Commits (b43f27a7c75b21e401f2d155b41b7c49d1fedd07)

Author SHA1 Message Date
Cruz Monrreal 11901f115b
Merge pull request #6800 from kivaisan/fix_loracrypto_asserts
Lora: Fix LoRaMacCrypto asserts
2018-05-07 19:34:56 -05:00
Martin Kojtal f09ab67af2
Merge pull request #6740 from kivaisan/fix_max_tx_power
Lora: Fix max tx power check
2018-05-03 16:28:55 +01:00
Kimmo Vaisanen 5384cd6b63 Lora: Fix LoRaMacCrypto asserts
If Lora stack is built with incorrect mbedtls settings, crypto methods
should assert and return error value. This fixes MBED_ASSERTs to
work correctly.
2018-05-03 13:04:03 +03:00
Cruz Monrreal 46379d8438
Merge pull request #6741 from kivaisan/refactor_maccommand
Lora: Split add_mac_command() into separate methods
2018-04-30 11:58:33 -05:00
Hasnain Virk a6a1cee988 LoRaWAN: Memory corruption due to band mishandling
band_t structure in phy parameters was not being filled in properly
and we were spilling over the array boundary for bands.
In addition to that two utility functions are added to perform safety
checking taking in the frequency and filling out band information plus
boundry value checks.
2018-04-26 13:23:47 +03:00
Kimmo Vaisanen e9eb32b3ab Lora: Fix max tx power check
In LoRa TX power value 0 means the maximum allowed TX power and values >0
are limiting the allowed TX power to lower.

tx_config was incorrectly checking the power level and causing the maximum
TX power to be always used. Lora gateway can request node to use lower TX
power with LinkAdrReq MAC command.
2018-04-25 11:59:19 +03:00
Kimmo Vaisanen e7f01e3ccc Lora: Split add_mac_command() into separate methods
In order to have smaller and better testable methods, instead of having a big
switch-case -style add_mac_command(), each MAC command is now separated to an
own method.
2018-04-25 08:42:02 +03:00
Kimmo Vaisanen 2b2ce300ea Lora: Remove singleton construction of LoRaWANStack
After changing LoRaMacCrypto as C++ class, we no longer have static variables
in LoRa implementation. Therefore singleton pattern can be removed.
2018-04-20 16:01:55 +03:00
Kimmo Vaisanen b933cc6aeb Lora: Change LoRaCrypto to a C++ class
In order to get rid of static variables, LoRaCrypto functionality is now
in a C++ class.
2018-04-20 16:01:49 +03:00
Kimmo Vaisanen d336ceeee8 Lora: Make automatic uplink message configurable
Currently lora stack will automatically send an empty uplink message to lora gateway in case of:
- Node received message with pending bit set.
- Node received MAC command which requires instant response (sticky MAC command)
- Node received confirmed message in class C mode

This commit makes this configurable via config item

        "automatic-uplink-message": {
            "help": "In case of pending bit, class c confirmed message or sticky MAC command, stack will automatically send empty uplink message",
            "value": true
        }

Default value is true. If sending an empty message fails, stack will send event AUTOMATIC_UPLINK_ERROR application.

If automatic uplink sending is disabled, stack will send application UPLINK_REQUIRED -event to indicate
application should issue a new uplink to gateway as soon as possible.
2018-04-18 09:29:20 +03:00
Cruz Monrreal 4522405d06
Merge pull request #6588 from hasnainvirk/base_structs
[IOTCELL-741] Separating public data structures
2018-04-17 10:54:45 -05:00
Cruz Monrreal 4343253533
Merge pull request #6600 from hasnainvirk/fix_au915
[IOTCELL] Setting up channels for AU915
2018-04-13 10:47:21 -05:00
Hasnain Virk c34b5e6d6f [IOTCELL-741] Separating public data structures
Any data structure used in LoRaWANBase class should be available
in a separate header in order to make the code easy to port and
easy to read as the developer doesn't need to know about all the
internal data structures being used in Mbed LoRaWAN stack.
2018-04-13 10:41:06 +03:00
Cruz Monrreal 68ebbb0637
Merge pull request #6569 from kivaisan/LORAWAN_FEATURE_BRANCH
Lora: small fixes
2018-04-12 18:43:01 -05:00
Cruz Monrreal 94103f9306
Merge pull request #6586 from kivaisan/new_receive_method
Lora: Introduce new receive API which returns port and flags
2018-04-12 18:32:12 -05:00
Hasnain Virk ec34796fd5 [IOTCELL] Setting up channels for AU915
Bug was reported by @tpet93 and it was correctly diagnosed that channels
were not being set in the phy_params structure. This commit fixes the bug
and sets up channels correctly.
2018-04-11 15:41:22 +03:00
Antti Kauppila 67157fc3bd LoRa: Internal include paths corrected 2018-04-10 14:04:18 +03:00
Kimmo Vaisanen 19883f12f8 Lora: Introduce new receive API which returns port and flags
This is a fix for issue #6389.

Currently when application receives RX_DONE event from stack, it has to provide the correct port
value to receive method in order to read the received message. The problem is that current
API does not provide any way to know in to which port message was received.

This commit introduces a new receive() method, which instead of checking these values, will return
them to application.
2018-04-10 13:04:23 +03:00
Kimmo Vaisanen 01fd8804df Fix Coverity warning
Fixed Coverity warning "stored value is overwritten before it can be used".
2018-04-10 10:19:03 +03:00
Kimmo Vaisanen 10c269bcfa Add some debug traces 2018-04-10 10:19:03 +03:00
Kimmo Vaisanen f6decc0131 Initialize mcps_indication status
_mcps_indication.status is not initialized properly and it can cause incorrect
status value to be returned.
2018-04-10 10:13:40 +03:00
Kevin Bracey 96610a6aed LoRa: Improved region macro handling 2018-04-09 15:22:48 +03:00
Antti Kauppila 1a86bb3604 Removed default values from internal functions
- Also removed useless else from loraphy_target.h
2018-04-09 13:30:08 +03:00
Antti Kauppila db167af3c1 LoRa: Fixed doxygen error, enabled commented out code 2018-04-09 11:48:03 +03:00
Antti Kauppila fa062fff76 LoRa: Moved connect logic from LoRaWANStack to LoRaMac class
- Internal change only
2018-04-09 11:10:40 +03:00
Antti Kauppila 1310392d1b LoRa: Removed unneeded function and cleaned up some code 2018-04-09 11:10:40 +03:00
Antti Kauppila d1bbd21e01 LoRa: Improved handling of region selection
- This implements IOTCELL-697
- This touches API, but does not break it, old ones still work in a same manner!
2018-04-09 11:10:40 +03:00
Antti Kauppila 6ef331b9db LoRa: Fixed cflist decoding issue
- This fixes defect IOTCELL-754
2018-04-06 12:54:01 +03:00
Antti Kauppila 10ad173091 LoRa: Small fixes
- changed few static variables to have const
2018-04-03 14:58:01 +03:00
Kimmo Vaisanen c1983570b4 Fix compilance test compilation
Fix compilation of compilance test and at the same time refactor compliance
test handler. Renamed mcps_request as test_request as it is only used for
compliance test. Also fixed a bug with null buffer in send_compliance_test_frame_to_mac.
2018-03-21 14:39:18 +02:00
Antti Kauppila cbdeb7dc4b LoRa: Added API break warnings for lorawan_channelplan_t struct and it's components 2018-03-21 08:54:42 +02:00
Antti Kauppila dc98228139 LoRa: Struct cleanups
- Unneeded structs removed and replaced by variables in functions
2018-03-21 08:54:42 +02:00
Antti Kauppila 489eecf7df LoRa: LoRaMAC class refactored
- Internal change only, no functional changes
- Tested by running Green tea tests manually
2018-03-21 08:54:42 +02:00
Antti Kauppila 6b54478af4 LoRaWANStack is made independent of MAC sublayers
- Only internal changes, no API has been broke.
- Tested by manually running Green tea tests
2018-03-21 08:54:42 +02:00
Antti Kauppila b63c98e103 LoRa: LoRaPHY dependency removed from LoRaMacStack
- This is internal change, no functionality has been changed
- LoRaWanInterface cleaned up and code moved to LoRaMacStack
- Compliance code in LoRaMacStack moved to EOF
- Green tea tests have been run manually
- Doxygen updated accordingly

LoRA: reorder class members
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen fe225a8430 Remove redundant event from timer callbacks
Since our timers are now already using events, we no longer need to
defer timer callback calls.
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen c6eee4fd98 Simplify check for pending bit 2018-03-21 08:54:42 +02:00
Kimmo Vaisanen 32075b91b5 Fix reception of class C messages
- Do not put radio into sleep when message is received in class c mode
- Experimental feature for acknowledging confirmed downlink messages
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen a26fca8bf5 Add set_device_class API to change active device class
This API can be used to runtime change device class.

Please note that only class A and C are supported at the moment.
Trying to set class B will return LORAWAN_STATUS_UNSUPPORTED.

Fix set_device_class documentation

fix documentation
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen 4aba3434f4 Change minimum required channels from 6 to 2 (US915Hybrid)
https://github.com/Lora-net/LoRaMac-node/issues/362
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen 65b2dbc7dc Update DevStatusAnd format
In the DevStatusAns format, the protocol requires RFU(7:6) value = 0
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen e1fff2e738 Update handling for functions OnRadioRxError and OnRadioRxTimout.
This is especially important for class c devices.
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen 6c165e0f19 Changed mcps confirmation ul_frequency to channel 2018-03-21 08:54:42 +02:00
Kimmo Vaisanen e097429b69 Remove unused is_fPort_allowed method 2018-03-21 08:54:42 +02:00
Kimmo Vaisanen a9e1076572 Bug fix in RX timeout and RX error handling for class c nodes.
1. Do not stop the 2nd window timer, as it is not running.
2. Wait for the OnAckTimeout event, before setting MacDone
3. Process for class c also the 2nd window timeout part, as we do
   not have a 2nd window timer.
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen 591bc7da1f Add the possibility to set the default antenna gain. 2018-03-21 08:54:42 +02:00
Kimmo Vaisanen 256a3a5842 Fix calculation of the aggregated time-off.
Perform only an assignment.

https://github.com/Lora-net/LoRaMac-node/issues/282
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen c1ea418ac4 Fix rx slot handling
Store the rx slot temporarily. When in class C, this variable will be changed
in function OpenContinuousRx2Window.
2018-03-21 08:54:42 +02:00
Kimmo Vaisanen fc1696b74f Do only set the MacDone if the MAC is not in class c 2018-03-21 08:54:42 +02:00
Kimmo Vaisanen 6114f2b3d5 Fix an issue with sequence calls.
This issue is only present for a device in class c mode, which
has perform unconfirmed uplinks.

https://github.com/Lora-net/LoRaMac-node/issues/327
2018-03-21 08:54:42 +02:00