Library for LoRa communication using MultiTech MDOT.

Dependents:   mDot_test_rx adc_sensor_lora mDotEVBM2X mDot_AT_firmware ... more

Function documentation is in mDot.h

Warning

Using libmDot 2.0.3 and above with an existing application may require a change in the MacEvent handler!
Compile applications with mbed v121 and mbed-rtos v116 libraries.

In AT Command Firmware remove line 803.

CommandTerminal/CommandTerminal.cpp

        delete[] info->RxBuffer;

Likewise, if your application is handling events from the library asynchronously.

Committer:
Leon Lindenfelser
Date:
Fri Nov 18 11:10:04 2016 -0600
Revision:
17:0da384ba484b
Parent:
14:121e4c454964
Previous libmDot version "16:e4f80db195b6" has the wrong header files for mDot.h and mDotEvent.h. Use with mbed version 121 and mbed-rtos version 116.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mike Fiore 14:121e4c454964 1 /*
Mike Fiore 14:121e4c454964 2 / _____) _ | |
Mike Fiore 14:121e4c454964 3 ( (____ _____ ____ _| |_ _____ ____| |__
Mike Fiore 14:121e4c454964 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
Mike Fiore 14:121e4c454964 5 _____) ) ____| | | || |_| ____( (___| | | |
Mike Fiore 14:121e4c454964 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
Mike Fiore 14:121e4c454964 7 (C)2013 Semtech
Mike Fiore 14:121e4c454964 8
Mike Fiore 14:121e4c454964 9 Description: Generic radio driver definition
Mike Fiore 14:121e4c454964 10
Mike Fiore 14:121e4c454964 11 License: Revised BSD License, see LICENSE.TXT file include in the project
Mike Fiore 14:121e4c454964 12
Mike Fiore 14:121e4c454964 13 Maintainer: Miguel Luis and Gregory Cristian
Mike Fiore 14:121e4c454964 14 */
Mike Fiore 14:121e4c454964 15 #ifndef __LORAMACEVENT_H__
Mike Fiore 14:121e4c454964 16 #define __LORAMACEVENT_H__
Mike Fiore 14:121e4c454964 17
Mike Fiore 14:121e4c454964 18 /*!
Mike Fiore 14:121e4c454964 19 * LoRaMAC event flags
Mike Fiore 14:121e4c454964 20 */
Mike Fiore 14:121e4c454964 21 typedef union {
Mike Fiore 14:121e4c454964 22 uint8_t Value;
Mike Fiore 14:121e4c454964 23 struct {
Mike Fiore 14:121e4c454964 24 uint8_t :1;
Mike Fiore 14:121e4c454964 25 uint8_t Tx :1;
Mike Fiore 14:121e4c454964 26 uint8_t Rx :1;
Mike Fiore 14:121e4c454964 27 uint8_t RxData :1;
Mike Fiore 14:121e4c454964 28 uint8_t RxSlot :2;
Mike Fiore 14:121e4c454964 29 uint8_t LinkCheck :1;
Mike Fiore 14:121e4c454964 30 uint8_t JoinAccept :1;
Mike Fiore 14:121e4c454964 31 } Bits;
Mike Fiore 14:121e4c454964 32 } LoRaMacEventFlags;
Mike Fiore 14:121e4c454964 33
Mike Fiore 14:121e4c454964 34 typedef enum {
Mike Fiore 14:121e4c454964 35 LORAMAC_EVENT_INFO_STATUS_OK = 0,
Mike Fiore 14:121e4c454964 36 LORAMAC_EVENT_INFO_STATUS_ERROR,
Mike Fiore 14:121e4c454964 37 LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT,
Mike Fiore 14:121e4c454964 38 LORAMAC_EVENT_INFO_STATUS_RX_TIMEOUT,
Mike Fiore 14:121e4c454964 39 LORAMAC_EVENT_INFO_STATUS_RX_ERROR,
Mike Fiore 14:121e4c454964 40 LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL,
Mike Fiore 14:121e4c454964 41 LORAMAC_EVENT_INFO_STATUS_DOWNLINK_FAIL,
Mike Fiore 14:121e4c454964 42 LORAMAC_EVENT_INFO_STATUS_ADDRESS_FAIL,
Mike Fiore 14:121e4c454964 43 LORAMAC_EVENT_INFO_STATUS_MIC_FAIL,
Mike Fiore 14:121e4c454964 44 } LoRaMacEventInfoStatus;
Mike Fiore 14:121e4c454964 45
Mike Fiore 14:121e4c454964 46 /*!
Mike Fiore 14:121e4c454964 47 * LoRaMAC event information
Mike Fiore 14:121e4c454964 48 */
Mike Fiore 14:121e4c454964 49 typedef struct {
Mike Fiore 14:121e4c454964 50 LoRaMacEventInfoStatus Status;
Mike Fiore 14:121e4c454964 51 bool TxAckReceived;
Mike Fiore 14:121e4c454964 52 uint8_t TxNbRetries;
Mike Fiore 14:121e4c454964 53 uint8_t TxDatarate;
Mike Fiore 14:121e4c454964 54 uint8_t RxPort;
Mike Fiore 14:121e4c454964 55 uint8_t *RxBuffer;
Mike Fiore 14:121e4c454964 56 uint8_t RxBufferSize;
Mike Fiore 14:121e4c454964 57 int16_t RxRssi;
Mike Fiore 14:121e4c454964 58 uint8_t RxSnr;
Mike Fiore 14:121e4c454964 59 uint16_t Energy;
Mike Fiore 14:121e4c454964 60 uint8_t DemodMargin;
Mike Fiore 14:121e4c454964 61 uint8_t NbGateways;
Mike Fiore 14:121e4c454964 62 } LoRaMacEventInfo;
Mike Fiore 14:121e4c454964 63
Mike Fiore 14:121e4c454964 64 /*!
Mike Fiore 14:121e4c454964 65 * LoRaMAC events structure
Mike Fiore 14:121e4c454964 66 * Used to notify upper layers of MAC events
Mike Fiore 14:121e4c454964 67 */
Mike Fiore 14:121e4c454964 68 class LoRaMacEvent {
Mike Fiore 14:121e4c454964 69 public:
Mike Fiore 14:121e4c454964 70
Mike Fiore 14:121e4c454964 71 virtual ~LoRaMacEvent() {}
Mike Fiore 14:121e4c454964 72
Mike Fiore 14:121e4c454964 73 /*!
Mike Fiore 14:121e4c454964 74 * MAC layer event callback prototype.
Mike Fiore 14:121e4c454964 75 *
Mike Fiore 14:121e4c454964 76 * \param [IN] flags Bit field indicating the MAC events occurred
Mike Fiore 14:121e4c454964 77 * \param [IN] info Details about MAC events occurred
Mike Fiore 14:121e4c454964 78 */
Mike Fiore 14:121e4c454964 79 virtual void MacEvent(LoRaMacEventFlags *flags, LoRaMacEventInfo *info) {
Mike Fiore 14:121e4c454964 80
Mike Fiore 14:121e4c454964 81 if (flags->Bits.Rx) {
Mike Fiore 14:121e4c454964 82 delete[] info->RxBuffer;
Mike Fiore 14:121e4c454964 83 }
Mike Fiore 14:121e4c454964 84 }
Mike Fiore 14:121e4c454964 85
Mike Fiore 14:121e4c454964 86 virtual uint8_t MeasureBattery(void) {
Mike Fiore 14:121e4c454964 87 return 255;
Mike Fiore 14:121e4c454964 88 }
Mike Fiore 14:121e4c454964 89 };
Mike Fiore 14:121e4c454964 90
Mike Fiore 14:121e4c454964 91 #endif // __LORAMACEVENT_H__