diff --git a/README.md b/README.md index 6b4c0d3e..41a7f066 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,6 @@ # Arduino-LMIC library ("MCCI LoRaWAN LMIC Library") -This repository contains the IBM LMIC (LoRaWAN-MAC-in-C) library, slightly -modified to run in the Arduino environment, allowing using the SX1272, -SX1276 transceivers and compatible modules (such as some HopeRF RFM9x -modules and the Murata LoRa modules). - -> Note on names: the library was originally ported to Arduino by Matthijs Kooijman and Thomas Telkamp, and was named Arduino LMIC. Subsequently, MCCI did a lot of work to support other regions, and ultimately took over maintenance. The Arduino IDE doesn't like two libraries with the same name, so we had to come up with a new name. So in the IDE, it will appear as MCCI LoRaWAN LMIC Library; but all us know it by the primary header file, which is ``. - -Information about the LoRaWAN protocol is summarized in [LoRaWAN-at-a-glance](doc/LoRaWAN-at-a-glance.pdf). Full information is available from the [LoRa Alliance](https://lora-alliance.org). - -A support forum is available at [forum.mcci.io](https://forum.mcci.io/c/device-software/arduino-lmic/5). - -The base Arduino library mostly exposes the functions defined by LMIC. It makes no -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 files in the doc subdirectory. - -A separate library, [MCCI `arduino-lorawan`](https://github.com/mcci-catena/arduino-lorawan), provides a higher level, more Arduino-like wrapper which may be useful. - -The examples in this library (apart from the compliance sketch) are somewhat primitive. A very complete cross-platform Arduino application based on the LMIC has been published by Leonel Lopes Parente ([`@lnlp`](https://github.com/lnlp)) as [LMIC-node](https://github.com/lnlp/LMIC-node). That application specifically targets The Things Network. - -Although the wrappers in this library are designed to make the LMIC useful in the Arduino environment, the maintainers have tried to be careful to keep the core LMIC code generally useful. For example, I use this library without modification (but with wrappers) on a RISC-V platform in a non-Arduino environment. - -[![GitHub release](https://img.shields.io/github/release/mcci-catena/arduino-lmic.svg)](https://github.com/mcci-catena/arduino-lmic/releases/latest) [![GitHub commits](https://img.shields.io/github/commits-since/mcci-catena/arduino-lmic/latest.svg)](https://github.com/mcci-catena/arduino-lmic/compare/v4.0.0...master) [![Arduino CI](https://img.shields.io/github/workflow/status/mcci-catena/arduino-lmic/Arduino%20CI)](https://github.com/mcci-catena/arduino-lmic/actions) +[![GitHub release](https://img.shields.io/github/release/mcci-catena/arduino-lmic.svg)](https://github.com/mcci-catena/arduino-lmic/releases/latest) [![GitHub commits](https://img.shields.io/github/commits-since/mcci-catena/arduino-lmic/latest.svg)](https://github.com/mcci-catena/arduino-lmic/compare/v4.1.0...master) [![Arduino CI](https://img.shields.io/github/workflow/status/mcci-catena/arduino-lmic/Arduino%20CI)](https://github.com/mcci-catena/arduino-lmic/actions) **Contents:** @@ -39,6 +17,7 @@ Although the wrappers in this library are designed to make the LMIC useful in th +- [Introduction](#introduction) - [Installing](#installing) - [Getting Help](#getting-help) - [If it's not working](#if-its-not-working) @@ -117,6 +96,31 @@ Although the wrappers in this library are designed to make the LMIC useful in th +## Introduction + +This repository contains the IBM LMIC (LoRaWAN-MAC-in-C) library, slightly +modified to run in the Arduino environment, allowing using the SX1272, +SX1276 transceivers and compatible modules (such as some HopeRF RFM9x +modules and the Murata LoRa modules). + +> Note on names: the library was originally ported to Arduino by Matthijs Kooijman and Thomas Telkamp, and was named Arduino LMIC. Subsequently, MCCI did a lot of work to support other regions, and ultimately took over maintenance. The Arduino IDE doesn't like two libraries with the same name, so we had to come up with a new name. So in the IDE, it will appear as MCCI LoRaWAN LMIC Library; but all us know it by the primary header file, which is ``. + +Information about the LoRaWAN protocol is summarized in [LoRaWAN-at-a-glance](doc/LoRaWAN-at-a-glance.pdf). Full information is available from the [LoRa Alliance](https://lora-alliance.org). + +A support forum is available at [forum.mcci.io](https://forum.mcci.io/c/device-software/arduino-lmic/5). + +The base Arduino library mostly exposes the functions defined by LMIC. It makes no +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 files in the doc subdirectory. + +A separate library, [MCCI `arduino-lorawan`](https://github.com/mcci-catena/arduino-lorawan), provides a higher level, more Arduino-like wrapper which may be useful. + +The examples in this library (apart from the compliance sketch) are somewhat primitive. A very complete cross-platform Arduino application based on the LMIC has been published by Leonel Lopes Parente ([`@lnlp`](https://github.com/lnlp)) as [LMIC-node](https://github.com/lnlp/LMIC-node). That application specifically targets The Things Network. + +Although the wrappers in this library are designed to make the LMIC useful in the Arduino environment, the maintainers have tried to be careful to keep the core LMIC code generally useful. For example, I use this library without modification (but with wrappers) on a RISC-V platform in a non-Arduino environment. + + ## Installing To install this library: @@ -169,7 +173,7 @@ us know (creating a GitHub issue is probably the best way for that). ### PDF/Word Documentation -The `doc` directory contains [LMIC-v4.0.0.pdf](doc/LMIC-v4.0.0.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. +The `doc` directory contains [LMIC-v4.1.0.pdf](doc/LMIC-v4.1.0.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 Arduino-specific details in this document. ### Adding Regions @@ -1240,7 +1244,7 @@ function uflt12f(rawUflt12) ## Release History -- HEAD contains the following changes +- v4.1 contains the following changes - Adapt `ttn-otaa-network-time` example to be compatible with [PaulStoffregen/Time](https://github.com/PaulStoffregen/Time) v1.6.1, which deletes `Time.h` in favor of `TimeLib.h` [#763](https://github.com/mcci-catena/arduino-lmic/issues/763). Version is v4.0.1-pre1. - Add support for TTGO LoRa32-OLED v2.1.6. (Thanks to [@ChrSchultz](https://github.com/ChrSchultz), [#692](https://github.com/mcci-catena/arduino-lmic/pull/692).) - Correct max TX EIRP for Japan to 13 dBm. (Thanks to [@ryos36](https://github.com/ryos36), [#662](https://github.com/mcci-catena/arduino-lmic/pull/662).) @@ -1249,6 +1253,8 @@ function uflt12f(rawUflt12) - Fix typos in this document ([#780](https://github.com/mcci-catena/arduino-lmic/issues/780), thanks [@PeeJay](https://github.com/PeeJay)). - Fix additional warnings on non-ARM platforms ([#791](https://github.com/mcci-catena/arduino-lmic/issues/791), thanks [@d-a-v](https://github.com/d-a-v)). - Allow application to set the value to be used in `DeviceStatusAns` MAC messages ([#576](https://github.com/mcci-catena/arduino-lmic/issues/576) and [#560](https://github.com/mcci-catena/arduino-lmic/issues/560), thanks to [@altishchenko](https://github.com/altishchenko)). + - Minor adjustments to the compliance sketch ([#800](https://github.com/mcci-catena/arduino-lmic/issues/576)). + - Update the LMIC reference manual to `LMIC-v4.1.0.pdf`. - v4.0 is a major release; changes are significant enough to be "likely breaking". It includes the following changes. diff --git a/doc/LMIC-v4.0.0-redline.pdf b/doc/LMIC-v4.0.0-redline.pdf deleted file mode 100644 index c5145f04..00000000 Binary files a/doc/LMIC-v4.0.0-redline.pdf and /dev/null differ diff --git a/doc/LMIC-v4.0.0.docx b/doc/LMIC-v4.0.0.docx deleted file mode 100644 index 6c2ae620..00000000 Binary files a/doc/LMIC-v4.0.0.docx and /dev/null differ diff --git a/doc/LMIC-v4.1.0-redline.pdf b/doc/LMIC-v4.1.0-redline.pdf new file mode 100644 index 00000000..db9ea957 Binary files /dev/null and b/doc/LMIC-v4.1.0-redline.pdf differ diff --git a/doc/LMIC-v4.1.0.docx b/doc/LMIC-v4.1.0.docx new file mode 100644 index 00000000..d3ec2a5e Binary files /dev/null and b/doc/LMIC-v4.1.0.docx differ diff --git a/doc/LMIC-v4.0.0.pdf b/doc/LMIC-v4.1.0.pdf similarity index 51% rename from doc/LMIC-v4.0.0.pdf rename to doc/LMIC-v4.1.0.pdf index cab8735b..7da1b376 100644 Binary files a/doc/LMIC-v4.0.0.pdf and b/doc/LMIC-v4.1.0.pdf differ diff --git a/library.properties b/library.properties index 4b571b30..e0b33e5c 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=MCCI LoRaWAN LMIC library -version=4.0.0 +version=4.1.0 author=IBM, Matthijs Kooijman, Terry Moore, ChaeHee Won, Frank Rose maintainer=Terry Moore sentence=Arduino port of the LMIC (LoraWAN-MAC-in-C) framework provided by IBM. diff --git a/src/lmic/lmic.h b/src/lmic/lmic.h index 33d24cce..ef696e87 100644 --- a/src/lmic/lmic.h +++ b/src/lmic/lmic.h @@ -106,7 +106,7 @@ extern "C"{ ((((major)*UINT32_C(1)) << 24) | (((minor)*UINT32_C(1)) << 16) | (((patch)*UINT32_C(1)) << 8) | (((local)*UINT32_C(1)) << 0)) #define ARDUINO_LMIC_VERSION \ - ARDUINO_LMIC_VERSION_CALC(4, 1, 0, 1) /* 4.1.0-pre1 */ + ARDUINO_LMIC_VERSION_CALC(4, 1, 0, 0) /* 4.1.0 */ #define ARDUINO_LMIC_VERSION_GET_MAJOR(v) \ ((((v)*UINT32_C(1)) >> 24u) & 0xFFu)