Skip to content

Commit b9e7f47

Browse files
authored
Merge pull request #422 from mcci-catena/issue421
Fix #421: library.properties to v3.0.99; fix README nits.
2 parents 59f1a1a + bffb6c1 commit b9e7f47

File tree

2 files changed

+36
-10
lines changed

2 files changed

+36
-10
lines changed

README.md

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Arduino-LMIC library
22

3-
This repository contains the IBM LMIC (LoraMAC-in-C) library, slightly
3+
This repository contains the IBM LMIC (LoRaWAN-MAC-in-C) library, slightly
44
modified to run in the Arduino environment, allowing using the SX1272,
55
SX1276 transceivers and compatible modules (such as some HopeRF RFM9x
66
modules and the Murata LoRa modules).
@@ -38,6 +38,9 @@ requires C99 mode to be enabled by default.
3838
- [PDF/Word Documentation](#pdfword-documentation)
3939
- [Adding Regions](#adding-regions)
4040
- [Known bugs and issues](#known-bugs-and-issues)
41+
- [Timing Issues](#timing-issues)
42+
- [Working with MCCI Murata-based boards](#working-with-mcci-murata-based-boards)
43+
- [Event-Handling Issues](#event-handling-issues)
4144
- [Configuration](#configuration)
4245
- [Selecting the LoRaWAN Region Configuration](#selecting-the-lorawan-region-configuration)
4346
- [eu868, as923, in866, kr920](#eu868-as923-in866-kr920)
@@ -127,13 +130,12 @@ What certainly works:
127130
- Custom frequencies and data rate settings.
128131
- Over-the-air activation (OTAA / joining).
129132
- Receiving downlink packets in the RX1 and RX2 windows.
130-
- Some MAC command processing.
133+
- MAC command processing.
131134

132135
What has not been tested:
133136

134-
- Receiving and processing all MAC commands.
135137
- Class B operation.
136-
- FSK has not been extensively tested.
138+
- FSK has not been extensively tested. (Testing with the RedwoodComm RWC5020A analyzer in 2019 indicated that FSK downlink is stable but not reliable. This prevents successful completion of LoRaWAN pre-certification in regions that require support for FSK.)
137139

138140
If you try one of these untested features and it works, be sure to let
139141
us know (creating a GitHub issue is probably the best way for that).
@@ -142,15 +144,39 @@ us know (creating a GitHub issue is probably the best way for that).
142144

143145
### PDF/Word Documentation
144146

145-
The `doc` directory contains [LMiC-v2.3.pdf](doc/LMiC-v2.3.pdf), which documents the library APIs and use. It's based on the original IBM documentation, but has been adapted for this version of the library. However, as this library is used for more than Arduino, that document is supplemented by practical details in this document.
147+
The `doc` directory contains [LMIC-v3.0.99.pdf](doc/LMIC-v3.0.99.pdf), which documents the library APIs and use. It's based on the original IBM documentation, but has been adapted for this version of the library. However, as this library is used for more than Arduino, that document is supplemented by practical details in this document.
146148

147149
### Adding Regions
148150

149-
There is a general framework for adding new region support. [HOWTO-ADD-REGION.md](./HOWTO-ADD-REGION.md) has step-by-step instructions for adding a region.
151+
There is a general framework for adding support for a new region. [HOWTO-ADD-REGION.md](./HOWTO-ADD-REGION.md) has step-by-step instructions for adding a region.
150152

151153
### Known bugs and issues
152154

153-
See the list of bugs at [mcci-catena/arduino-lmic](https://github.com/mcci-catena/arduino-lmic/issues).
155+
See the list of bugs at [`mcci-catena/arduino-lmic`](https://github.com/mcci-catena/arduino-lmic/issues).
156+
157+
#### Timing Issues
158+
159+
The LoRaWAN technology for class A devices requires devices to meet hard real-time deadlines. The Arduino environment doesn't provide built-in support for this, and this port of the LMIC doesn't really ensure it, either. It is your responsibility, when constructing your application, to ensure that you call `os_runloop_once()` "often enough".
160+
161+
How often is often enough?
162+
163+
It depends on what the LMIC is doing. For Class A devices, when the LMIC is idle, `os_runloop_once()` need not be called at all. However, during a message transmit, it's critical to ensure that `os_runloop_once()` is called frequently prior to hard deadlines. The API `os_queryTimeCriticalJobs()` can be used to check whether there are any deadlines due soon. Before doing work that takes `n` milliseconds, call `os_queryTimeCriticalJobs(ms2osticks(n))`, and skip the work if the API indicates that the LMIC needs attention.
164+
165+
However, in the current implementation, the LMIC is tracking the completion of uplink transmits. This is done by checking for transmit-complete indications, which is done by polling. So you must also continually call `os_runloop_once()` while waiting for a transmit to be completed. This is an area for future improvement.
166+
167+
#### Working with MCCI Murata-based boards
168+
169+
The Board Support Package V2.5.0 for the MCCI Murata-based boards ([MCCI Catena 4610](https://mcci.io/catena4610), [MCCI Catena 4612](https://mcci.io/catena4612), etc.) has a defect in clock calibration that prevents the compliance script from being used without modification. The update to V2.6.0 is expected to solve this issue.
170+
171+
#### Event-Handling Issues
172+
173+
The LMIC has a simple event notification system. When an interesting event occurs, it calls a user-provided function.
174+
175+
This function is sometimes called at time critical moments.
176+
177+
This means that your event function should avoid doing any time-critical work.
178+
179+
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.
154180

155181
## Configuration
156182

@@ -1096,7 +1122,7 @@ function uflt12f(rawUflt12)
10961122

10971123
## Release History
10981124

1099-
- HEAD adds the following changes (this is not an exhaustive list)
1125+
- 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.
11001126

11011127
- [#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.
11021128
- [#401](https://github.com/mcci-catena/arduino-lmic/issues/401) adds 865 MHz through 868 MHz to the "1%" band for EU.

library.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
name=MCCI LoRaWAN LMIC library
2-
version=2.3.2
2+
version=3.0.99
33
author=IBM, Matthis Kooijman, Terry Moore, ChaeHee Won, Frank Rose
44
maintainer=Terry Moore <tmm@mcci.com>
55
sentence=Arduino port of the LMIC (LoraWAN-MAC-in-C) framework provided by IBM.
6-
paragraph=Supports SX1272/SX1276 and HopeRF RFM92/RFM95 tranceivers. Refactored to support multiple bandplans beyond the original two supported by the IBM LMIC code. Various enhancements and bug fixes from MCCI and The Things Network New York. Original IBM URL http://www.research.ibm.com/labs/zurich/ics/lrsc/lmic.html.
6+
paragraph=Supports LoRaWAN 1.0.2/1.0.3 Class A devices implemented using the Semtech SX1272/SX1276 (including HopeRF RFM92/RFM95 and Murata modules). Support for EU868, US, AU, AS923, KR and IN regional plans. Untested support for Class B and FSK operation. Various enhancements and bug fixes from MCCI and The Things Network New York. Original IBM URL http://www.research.ibm.com/labs/zurich/ics/lrsc/lmic.html.
77
category=Communication
88
url=https://github.com/mcci-catena/arduino-lmic
99
architectures=*

0 commit comments

Comments
 (0)