LoRa on Multitech with Semtech mote

Dependencies:   LoRaWAN-lib SX1272Lib lib_gps lib_mma8451q lib_mpl3115a2 mbed

Fork of LoRaWAN-NAMote72-Application-Demo_Multitech by Nagaraj Krishnamurthy

Committer:
nagarajkmurthy
Date:
Wed Jan 18 12:55:33 2017 +0000
Revision:
18:168062d45093
Parent:
5:6ffeac53b7cb
LoRa on Multitech using Semtech mote

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 */
ubhat 0:69f2e28d12c1 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;
ubhat 0:69f2e28d12c1 42 };
ubhat 0:69f2e28d12c1 43
ubhat 0:69f2e28d12c1 44 /*!
ubhat 0:69f2e28d12c1 45 * Strucure containing the Downlink status
ubhat 0:69f2e28d12c1 46 */
ubhat 0:69f2e28d12c1 47 struct sLoRaMacDownlinkStatus
ubhat 0:69f2e28d12c1 48 {
ubhat 0:69f2e28d12c1 49 int16_t Rssi;
ubhat 0:69f2e28d12c1 50 int8_t Snr;
ubhat 0:69f2e28d12c1 51 uint16_t DownlinkCounter;
ubhat 0:69f2e28d12c1 52 bool RxData;
ubhat 0:69f2e28d12c1 53 uint8_t Port;
ubhat 0:69f2e28d12c1 54 uint8_t *Buffer;
ubhat 0:69f2e28d12c1 55 uint8_t BufferSize;
ubhat 0:69f2e28d12c1 56 uint8_t RxSlot;
ubhat 0:69f2e28d12c1 57 };
ubhat 0:69f2e28d12c1 58
ubhat 0:69f2e28d12c1 59 /*!
ubhat 0:69f2e28d12c1 60 * Device states
ubhat 0:69f2e28d12c1 61 */
ubhat 0:69f2e28d12c1 62 enum eDevicState
ubhat 0:69f2e28d12c1 63 {
ubhat 0:69f2e28d12c1 64 DEVICE_STATE_INIT,
ubhat 0:69f2e28d12c1 65 DEVICE_STATE_JOIN,
ubhat 0:69f2e28d12c1 66 DEVICE_STATE_SEND,
ubhat 0:69f2e28d12c1 67 DEVICE_STATE_SLEEP
ubhat 0:69f2e28d12c1 68 };
ubhat 0:69f2e28d12c1 69
ubhat 0:69f2e28d12c1 70 extern sLoRaMacUplinkStatus LoRaMacUplinkStatus;
ubhat 0:69f2e28d12c1 71
ubhat 0:69f2e28d12c1 72 extern sLoRaMacDownlinkStatus LoRaMacDownlinkStatus;
ubhat 0:69f2e28d12c1 73
ubhat 0:69f2e28d12c1 74 extern eDevicState DeviceState;
ubhat 0:69f2e28d12c1 75
ubhat 0:69f2e28d12c1 76 /*!
ubhat 0:69f2e28d12c1 77 * \brief Initialize Device: Timer, MAC Services, MAC
ubhat 0:69f2e28d12c1 78 */
ubhat 0:69f2e28d12c1 79 void DeviceInit( void );
ubhat 0:69f2e28d12c1 80
ubhat 0:69f2e28d12c1 81 /*!
ubhat 0:69f2e28d12c1 82 * \brief Device Join update
ubhat 0:69f2e28d12c1 83 */
ubhat 0:69f2e28d12c1 84 void DeviceJoinUpdate( void );
ubhat 0:69f2e28d12c1 85
ubhat 0:69f2e28d12c1 86 /*!
ubhat 0:69f2e28d12c1 87 * \brief OTA: if device not joined, send JOIN REQUEST to network
ubhat 0:69f2e28d12c1 88 * ABP: Request DevAddr if not already set
ubhat 0:69f2e28d12c1 89 */
ubhat 0:69f2e28d12c1 90 void DeviceJoin( void );
ubhat 0:69f2e28d12c1 91
ubhat 0:69f2e28d12c1 92 /*!
ubhat 0:69f2e28d12c1 93 * \brief Prepares the payload of the frame to be transmitted
ubhat 0:69f2e28d12c1 94 *
ubhat 0:69f2e28d12c1 95 * \param [IN] port application port corresponding to which payload is generated
ubhat 0:69f2e28d12c1 96 */
ubhat 0:69f2e28d12c1 97 void PrepareTxFrame( uint8_t port );
ubhat 0:69f2e28d12c1 98
ubhat 0:69f2e28d12c1 99 /*!
ubhat 0:69f2e28d12c1 100 * \brief Send the frame
ubhat 0:69f2e28d12c1 101 *
ubhat 0:69f2e28d12c1 102 */
ubhat 0:69f2e28d12c1 103 bool SendFrame( void );
ubhat 0:69f2e28d12c1 104
ubhat 0:69f2e28d12c1 105 #endif // __LORA_DEVICE_STATE_H__