Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compliance check improvements and bug fixes #443

Merged
merged 31 commits into from
Sep 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
316427e
Fix #423: don't get stuck if LMIC is busy
terrillmoore Sep 6, 2019
af6649d
Fix #426: cater temporarily to defect in MCI Catena STM BSP
terrillmoore Sep 6, 2019
b168b9d
Fix #427: select subband 0 for all US-like regions
terrillmoore Sep 6, 2019
d4c4a81
Fix #425: disable duty-cycle limitation during test
terrillmoore Sep 6, 2019
7bf26f9
Fix #424: return to app mode on port 224 join command
terrillmoore Sep 6, 2019
34d61a6
Fix typo in comment
terrillmoore Sep 6, 2019
eebb1cd
Fix #428: log the MIC bytes on error
terrillmoore Sep 6, 2019
f88f83c
Fix #429: dont set FSK power < 11 for PAboost mode
terrillmoore Sep 6, 2019
d2ed33f
Fix #430: increase min rx to tx gap to 0.5 sec
terrillmoore Sep 6, 2019
b30d0ba
Add logging of frame counts in compliance app
terrillmoore Sep 6, 2019
1e55789
Parameterize fixes for MCCI BSP limitations; 2.5.0.10 fixes USB
terrillmoore Sep 8, 2019
ed69e67
Fix error messages in STM32 clock cal code
terrillmoore Sep 8, 2019
69501b6
Fix #249: add reentrancy protection in engineUpdate()
terrillmoore Sep 8, 2019
2849ceb
Fix #434: wrong FSK detection in LMIC*_isFsk()
terrillmoore Sep 9, 2019
a4d2494
Fix #435: correct spelling error LMICbandplan_txDoneFSK
terrillmoore Sep 9, 2019
319c686
Fix #436: FSK irqs set OPMODE_STANDBY before SLEEP
terrillmoore Sep 9, 2019
c6f9295
Fix #439: set RegDetectOptimize[2..0] to 3'b011
terrillmoore Sep 9, 2019
1d1ff10
Add a comment
terrillmoore Sep 9, 2019
59cca34
Fix #438: use clock error in FSK rx timing
terrillmoore Sep 9, 2019
92dc08f
Fix comment
terrillmoore Sep 9, 2019
a253285
Version is v3.0.99.1
terrillmoore Sep 9, 2019
14ea892
Fix #441: handle TX busy at FSMSTATE_TESTMODE
terrillmoore Sep 9, 2019
f99a0d1
Fix typo in comment
terrillmoore Sep 9, 2019
76f7bd5
Silence AVR warnings on ARDUINO_LMIC_VERSION
terrillmoore Sep 9, 2019
42da75b
Fix #442: make RX timing closer to Semtech's
terrillmoore Sep 9, 2019
8df712a
version is v3.0.99.3
terrillmoore Sep 10, 2019
b57531e
Improve clock cal for STM32L0 in compliance sketch
terrillmoore Sep 10, 2019
eee3933
Shink compliance a little
terrillmoore Sep 10, 2019
3206214
Don't build EU compliance sketch for now -- too big
terrillmoore Sep 10, 2019
bec1cfd
Fix #383: clean up compile warnings found by CI testing
terrillmoore Sep 10, 2019
e691f50
Update documentation / revision history
terrillmoore Sep 10, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,9 @@ script:
- _notavr || { _projcfg COMPILE_REGRESSION_TEST CFG_in866 CFG_sx1276_radio && arduino --verify --board $(_avropts) $PWD/examples/raw-feather/raw-feather.ino ; }

# make sure the compliance sketch compiles on AVR in all regions. This also requires class-A only
# unfortunately EU currently is a little too large, so we don't do EU.
- _notavr || { _projcfg_class_a CFG_us915 CFG_sx1276_radio && arduino --verify --board $(_avropts) $PWD/examples/compliance-otaa-halconfig/compliance-otaa-halconfig.ino ; }
- _notavr || { _projcfg_class_a CFG_eu868 CFG_sx1276_radio && arduino --verify --board $(_avropts) $PWD/examples/compliance-otaa-halconfig/compliance-otaa-halconfig.ino ; }
# - _notavr || { _projcfg_class_a CFG_eu868 CFG_sx1276_radio && arduino --verify --board $(_avropts) $PWD/examples/compliance-otaa-halconfig/compliance-otaa-halconfig.ino ; }
- _notavr || { _projcfg_class_a CFG_au921 CFG_sx1276_radio && arduino --verify --board $(_avropts) $PWD/examples/compliance-otaa-halconfig/compliance-otaa-halconfig.ino ; }
- _notavr || { _projcfg_class_a CFG_as923 CFG_sx1276_radio && arduino --verify --board $(_avropts) $PWD/examples/compliance-otaa-halconfig/compliance-otaa-halconfig.ino ; }
- _notavr || { _projcfg_class_a CFG_as923jp CFG_sx1276_radio && arduino --verify --board $(_avropts) $PWD/examples/compliance-otaa-halconfig/compliance-otaa-halconfig.ino ; }
Expand Down
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ attempt to wrap them in a higher level API that is more in the Arduino
style. To find out how to use the library itself, see the examples, or
see the PDF file in the doc subdirectory.

The [MCCI arduino-lorawan](https://github.com/mcci-catena/arduino-lorawan) library provides a higher level, more Arduino-like wrapper which may be useful.
The [MCCI `arduino-lorawan`](https://github.com/mcci-catena/arduino-lorawan) library provides a higher level, more Arduino-like wrapper which may be useful.

This library requires Arduino IDE version 1.6.6 or above, since it
requires C99 mode to be enabled by default.
Expand Down Expand Up @@ -176,7 +176,7 @@ This function is sometimes called at time critical moments.

This means that your event function should avoid doing any time-critical work.

Furthermore, the event function may be called in situations where it's not safe to call the LMIC message send APIs. Please be careful to defer all work from your event function to your `loop()` function. See the compliance example sketch for an elaborate version of how this can be done.
Furthermore, in versions of the LMIC prior to v3.0.99.3, the event function may be called in situations where it's not safe to call the general LMIC APIs. In those older LMIC versions, please be careful to defer all work from your event function to your `loop()` function. See the compliance example sketch for an elaborate version of how this can be done.

## Configuration

Expand Down Expand Up @@ -355,7 +355,9 @@ Code to handle registered callbacks for transmit, receive, and events can be sup

#### Disabling external reference to `onEvent()`

In some embedded systems, `onEvent()` may be defined for some other purpose; so the weak reference to the function `onEvent` will be satisfied, causing the LMIC to try to call that function. All reference to `onEvent()` can be suppressed by setting `LMIC_ENABLE_onEvent` to 0. This C preprocessor macro is always defined as a post-condition of `#include "config.h"`; if non-zero, a weak reference to `onEvent()` will be used; if zero, the user `onEvent()` function is not supported, and the client must register an event handler explicitly.
In V3 of the LMIC, you do not need to define a function named `onEvent`. The LMIC will notice that there's no such function, and will suppress the call. However, be cautious -- in a large software package, `onEvent()` may be defined for some other purpose. The LMIC has no way of knowing that this is not the LMIC's `onEvent`, so it will call the function, and this may cause problems.

All reference to `onEvent()` can be suppressed by setting `LMIC_ENABLE_onEvent` to 0. This C preprocessor macro is always defined as a post-condition of `#include "config.h"`; if non-zero, a weak reference to `onEvent()` will be used; if zero, the user `onEvent()` function is not supported, and the client must register an event handler explicitly. See the PDF documentation for details on `LMIC_registerEventCb()`.

#### Enabling long messages

Expand Down Expand Up @@ -1124,9 +1126,10 @@ function uflt12f(rawUflt12)

- v3.0.99 (still in pre-release) adds the following changes. (This is not an exhaustive list.) Note that the behavior of the LMIC changes in important ways, as it now enforces the LoRaWAN mandated maximum frame size for a given data rate. For Class A devices, this may cause your device to go silent after join, if you're not able to handle the frame size dictated by the parameters downloaded to the device by the network during join. The library will attempt to find a data rate that will work, but there is no guarantee that the network has provided such a data rate.

- [#443](https://github.com/mcci-catena/arduino-lmic/pull/443) addresses a number of problems found in cooperation with [RedwoodComm](https://redwoodcomm.com). They suggested a timing improvement to speed testing; this lead to the discovery of a number of problems. Some were in the compliance framework, but one corrects timing for very high spreading factors, several ([#442](https://github.com/mcci-catena/arduino-lmic/issues/442), [#436](https://github.com/mcci-catena/arduino-lmic/issues/438), [#435](https://github.com/mcci-catena/arduino-lmic/issues/435), [#434](https://github.com/mcci-catena/arduino-lmic/issues/434) fix glaring problems in FSK support; [#249](https://github.com/mcci-catena/arduino-lmic/issues/249) greatly enhances stability by making API calls much less likely to crash the LMIC if it's active. Version is v3.0.99.3.
- [#388](https://github.com/mcci-catena/arduino-lmic/issues/388), [#389](https://github.com/mcci-catena/arduino-lmic/issues/390), [#390](https://github.com/mcci-catena/arduino-lmic/issues/390) change the LMIC to honor the maximum frame size for a given DR in the current region. This proves to be a breaking change for many applications, especially in the US, because DR0 in the US supports only an 11-byte payload, and many apps were ignoring this. Additional error codes were defined so that apps can detect and recover from this situation, but they must detect; otherwise they run the risk of being blocked from the network by the LMIC. Because of this change, the next version of the LMIC will be V3.1 or higher, and the LMIC version for development is bumped to 3.0.99.0.
- [#401](https://github.com/mcci-catena/arduino-lmic/issues/401) adds 865 MHz through 868 MHz to the "1%" band for EU.
- [#395]((https://github.com/mcci-catena/arduino-lmic/pull/395) corrects pin-mode initialization if using `hal_interrupt_init()`.
- [#395](https://github.com/mcci-catena/arduino-lmic/pull/395) corrects pin-mode initialization if using `hal_interrupt_init()`.
- [#385](https://github.com/mcci-catena/arduino-lmic/issues/385) corrects an error handling data rate selection for `TxParamSetupReq`, found in US-915 certification testing. (v2.3.2.71)
- [#378](https://github.com/mcci-catena/arduino-lmic/pull/378) completely reworks MAC downlink handling. Resulting code passes the LoRaWAN V1.5 EU certification test. (v2.3.2.70)
- [#360](https://github.com/mcci-catena/arduino-lmic/issues/360) adds support for the KR-920 regional plan.
Expand Down
Loading