mQ Branch for NA mote testing

Dependencies:   LoRaWAN-lib SX1272Lib-mQ lib_gps lib_mma8451q lib_mpl3115a2 mbed

Fork of LoRaWAN-NAMote72-Application-Demo by Semtech

Committer:
mluis
Date:
Mon Apr 24 13:47:27 2017 +0000
Revision:
18:18408c3c2d0c
Parent:
5:6ffeac53b7cb
WARNING: Radio API timings changed from micro-seconds to milliseconds; ; Synchronized with https://github.com/Lora-net/LoRaMac-node git revision e506c246652fa44c3f24cecb89d0707b49ece739; Updated all libraries to the latest versions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ubhat 0:69f2e28d12c1 1 /*
ubhat 0:69f2e28d12c1 2 / _____) _ | |
ubhat 0:69f2e28d12c1 3 ( (____ _____ ____ _| |_ _____ ____| |__
ubhat 0:69f2e28d12c1 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
ubhat 0:69f2e28d12c1 5 _____) ) ____| | | || |_| ____( (___| | | |
ubhat 0:69f2e28d12c1 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
ubhat 0:69f2e28d12c1 7 (C)2015 Semtech
ubhat 0:69f2e28d12c1 8
ubhat 0:69f2e28d12c1 9 Description: Process function calls from various Device states
ubhat 0:69f2e28d12c1 10
ubhat 0:69f2e28d12c1 11 License: Revised BSD License, see LICENSE.TXT file include in the project
ubhat 0:69f2e28d12c1 12
ubhat 0:69f2e28d12c1 13 Maintainer: Uttam Bhat
ubhat 0:69f2e28d12c1 14 */
ubhat 0:69f2e28d12c1 15 #ifndef __LORA_DEVICE_STATE_H__
ubhat 0:69f2e28d12c1 16 #define __LORA_DEVICE_STATE_H__
ubhat 0:69f2e28d12c1 17
ubhat 0:69f2e28d12c1 18 #include "Common.h"
ubhat 0:69f2e28d12c1 19 #include "board.h"
ubhat 0:69f2e28d12c1 20 #include "LoRaMac.h"
ubhat 0:69f2e28d12c1 21 #include "LoRaEventProc.h"
ubhat 0:69f2e28d12c1 22 #include "SerialDisplay.h"
ubhat 0:69f2e28d12c1 23 #include "mbed.h"
ubhat 0:69f2e28d12c1 24 #include "LoRaMacLayerService.h"
ubhat 0:69f2e28d12c1 25
ubhat 0:69f2e28d12c1 26 /*!
ubhat 0:69f2e28d12c1 27 * Strucure containing the Uplink status
ubhat 0:69f2e28d12c1 28 */
ubhat 0:69f2e28d12c1 29 struct sLoRaMacUplinkStatus
ubhat 0:69f2e28d12c1 30 {
ubhat 0:69f2e28d12c1 31 /*!
ubhat 0:69f2e28d12c1 32 * MCPS-Request type
ubhat 0:69f2e28d12c1 33 */
mluis 18:18408c3c2d0c 34 Mcps_t Type;
ubhat 0:69f2e28d12c1 35 uint8_t Acked;
ubhat 0:69f2e28d12c1 36 int8_t Datarate;
ubhat 0:69f2e28d12c1 37 uint16_t UplinkCounter;
ubhat 0:69f2e28d12c1 38 uint8_t Port;
ubhat 0:69f2e28d12c1 39 uint8_t *Buffer;
ubhat 0:69f2e28d12c1 40 uint8_t BufferSize;
ubhat 0:69f2e28d12c1 41 int8_t TxPower;
mluis 18:18408c3c2d0c 42 uint32_t UpLinkFrequency;
ubhat 0:69f2e28d12c1 43 };
ubhat 0:69f2e28d12c1 44
ubhat 0:69f2e28d12c1 45 /*!
ubhat 0:69f2e28d12c1 46 * Strucure containing the Downlink status
ubhat 0:69f2e28d12c1 47 */
ubhat 0:69f2e28d12c1 48 struct sLoRaMacDownlinkStatus
ubhat 0:69f2e28d12c1 49 {
ubhat 0:69f2e28d12c1 50 int16_t Rssi;
ubhat 0:69f2e28d12c1 51 int8_t Snr;
ubhat 0:69f2e28d12c1 52 uint16_t DownlinkCounter;
ubhat 0:69f2e28d12c1 53 bool RxData;
ubhat 0:69f2e28d12c1 54 uint8_t Port;
ubhat 0:69f2e28d12c1 55 uint8_t *Buffer;
ubhat 0:69f2e28d12c1 56 uint8_t BufferSize;
ubhat 0:69f2e28d12c1 57 uint8_t RxSlot;
ubhat 0:69f2e28d12c1 58 };
ubhat 0:69f2e28d12c1 59
ubhat 0:69f2e28d12c1 60 /*!
mluis 18:18408c3c2d0c 61 * Structure containing OTAA Join status
mluis 18:18408c3c2d0c 62 */
mluis 18:18408c3c2d0c 63 struct sLoRaMacJoinStatus
mluis 18:18408c3c2d0c 64 {
mluis 18:18408c3c2d0c 65 int8_t LastDatarate;
mluis 18:18408c3c2d0c 66 int8_t Status;
mluis 18:18408c3c2d0c 67 };
mluis 18:18408c3c2d0c 68
mluis 18:18408c3c2d0c 69 /*!
ubhat 0:69f2e28d12c1 70 * Device states
ubhat 0:69f2e28d12c1 71 */
ubhat 0:69f2e28d12c1 72 enum eDevicState
ubhat 0:69f2e28d12c1 73 {
ubhat 0:69f2e28d12c1 74 DEVICE_STATE_INIT,
ubhat 0:69f2e28d12c1 75 DEVICE_STATE_JOIN,
ubhat 0:69f2e28d12c1 76 DEVICE_STATE_SEND,
ubhat 0:69f2e28d12c1 77 DEVICE_STATE_SLEEP
ubhat 0:69f2e28d12c1 78 };
ubhat 0:69f2e28d12c1 79
ubhat 0:69f2e28d12c1 80 extern sLoRaMacUplinkStatus LoRaMacUplinkStatus;
ubhat 0:69f2e28d12c1 81
ubhat 0:69f2e28d12c1 82 extern sLoRaMacDownlinkStatus LoRaMacDownlinkStatus;
ubhat 0:69f2e28d12c1 83
ubhat 0:69f2e28d12c1 84 extern eDevicState DeviceState;
ubhat 0:69f2e28d12c1 85
mluis 18:18408c3c2d0c 86 extern sLoRaMacJoinStatus LoRaMacJoinStatus;
mluis 18:18408c3c2d0c 87
ubhat 0:69f2e28d12c1 88 /*!
ubhat 0:69f2e28d12c1 89 * \brief Initialize Device: Timer, MAC Services, MAC
ubhat 0:69f2e28d12c1 90 */
ubhat 0:69f2e28d12c1 91 void DeviceInit( void );
ubhat 0:69f2e28d12c1 92
ubhat 0:69f2e28d12c1 93 /*!
ubhat 0:69f2e28d12c1 94 * \brief Device Join update
ubhat 0:69f2e28d12c1 95 */
ubhat 0:69f2e28d12c1 96 void DeviceJoinUpdate( void );
ubhat 0:69f2e28d12c1 97
ubhat 0:69f2e28d12c1 98 /*!
ubhat 0:69f2e28d12c1 99 * \brief OTA: if device not joined, send JOIN REQUEST to network
ubhat 0:69f2e28d12c1 100 * ABP: Request DevAddr if not already set
ubhat 0:69f2e28d12c1 101 */
ubhat 0:69f2e28d12c1 102 void DeviceJoin( void );
ubhat 0:69f2e28d12c1 103
ubhat 0:69f2e28d12c1 104 /*!
ubhat 0:69f2e28d12c1 105 * \brief Prepares the payload of the frame to be transmitted
ubhat 0:69f2e28d12c1 106 *
ubhat 0:69f2e28d12c1 107 * \param [IN] port application port corresponding to which payload is generated
ubhat 0:69f2e28d12c1 108 */
ubhat 0:69f2e28d12c1 109 void PrepareTxFrame( uint8_t port );
ubhat 0:69f2e28d12c1 110
ubhat 0:69f2e28d12c1 111 /*!
ubhat 0:69f2e28d12c1 112 * \brief Send the frame
ubhat 0:69f2e28d12c1 113 *
ubhat 0:69f2e28d12c1 114 */
ubhat 0:69f2e28d12c1 115 bool SendFrame( void );
ubhat 0:69f2e28d12c1 116
mluis 18:18408c3c2d0c 117 #endif // __LORA_DEVICE_STATE_H__