LoRaWAN-SX1272-Application-24-31-9sec

Dependencies:   X_NUCLEO_IKS01A1 driver_mbed_TH02 LoRaWAN-lib-v1_0_1 SX1272Lib mbed

Fork of LoRaWAN-SX1272-Application-24-31-9sec by Oleh Zvonarov

Committer:
emerette
Date:
Mon Jan 22 15:55:52 2018 +0000
Revision:
8:89039f83e9fc
Parent:
0:6cc76d70e2a1
1-22-2018

Who changed what in which revision?

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