LR Initial Publish

Dependencies:   X_NUCLEO_IKS01A2 driver_mbed_TH02 mbed LoRaWAN-lib-v1_0_1 SX1272Lib

Fork of Training-Aug2018-SX1272-X-NUCLEO-IKS01A2 by Uttam Bhat

Committer:
ubhat
Date:
Sun Aug 19 20:08:35 2018 +0000
Revision:
10:bba416e2c3e1
Parent:
0:6cc76d70e2a1
Create Application with SX1272 + X-NUCLEO-IKS01A2

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: User-defined applications such as GPS, Temp, Accelerometer, LED indications etc.
ubhat 0:6cc76d70e2a1 10 Event based actions such as LED blink on Tx, LED toggle on downlink etc
ubhat 0:6cc76d70e2a1 11
ubhat 0:6cc76d70e2a1 12 License: Revised BSD License, see LICENSE.TXT file include in the project
ubhat 0:6cc76d70e2a1 13
ubhat 0:6cc76d70e2a1 14 Maintainer: Uttam Bhat
ubhat 0:6cc76d70e2a1 15 */
ubhat 0:6cc76d70e2a1 16
ubhat 0:6cc76d70e2a1 17 #ifndef __APPLICATION_H__
ubhat 0:6cc76d70e2a1 18 #define __APPLICATION_H__
ubhat 0:6cc76d70e2a1 19
ubhat 0:6cc76d70e2a1 20 #include "board.h"
ubhat 0:6cc76d70e2a1 21 #include "Common.h"
ubhat 0:6cc76d70e2a1 22 #include "SerialDisplay.h"
ubhat 0:6cc76d70e2a1 23
ubhat 0:6cc76d70e2a1 24 /*!
ubhat 0:6cc76d70e2a1 25 * LED ON/OFF definition
ubhat 0:6cc76d70e2a1 26 */
ubhat 0:6cc76d70e2a1 27 #define LED_ON 0
ubhat 0:6cc76d70e2a1 28 #define LED_OFF 1
ubhat 0:6cc76d70e2a1 29
ubhat 0:6cc76d70e2a1 30 /*!
ubhat 0:6cc76d70e2a1 31 * LED types
ubhat 0:6cc76d70e2a1 32 */
ubhat 0:6cc76d70e2a1 33 enum eLedType
ubhat 0:6cc76d70e2a1 34 {
ubhat 0:6cc76d70e2a1 35 Red = 0,// Red LED
ubhat 0:6cc76d70e2a1 36 Yellow = 1, // Yellow LED
ubhat 0:6cc76d70e2a1 37 Green = 2, // Green LED
ubhat 0:6cc76d70e2a1 38 Usr = 3, // USR LED
ubhat 0:6cc76d70e2a1 39 };
ubhat 0:6cc76d70e2a1 40
ubhat 0:6cc76d70e2a1 41 /*!
ubhat 0:6cc76d70e2a1 42 * user-defined Application names
ubhat 0:6cc76d70e2a1 43 */
ubhat 0:6cc76d70e2a1 44 enum eAppType
ubhat 0:6cc76d70e2a1 45 {
ubhat 0:6cc76d70e2a1 46 AppPressr = 0, // Pressure measurement application
ubhat 0:6cc76d70e2a1 47 AppTemp, // Temperature measurement application
ubhat 0:6cc76d70e2a1 48 AppHumid, // Humidity measurement application
ubhat 0:6cc76d70e2a1 49 AppBat, // Battery measurement application
ubhat 0:6cc76d70e2a1 50 AppRamp, // Generate Ramp bytes
ubhat 0:6cc76d70e2a1 51 AppAccl, // Accelerometer application
ubhat 10:bba416e2c3e1 52 AppGyro, // Gyrometer application
ubhat 0:6cc76d70e2a1 53 AppPushButton, // Push button application example
ubhat 0:6cc76d70e2a1 54 };
ubhat 0:6cc76d70e2a1 55
ubhat 0:6cc76d70e2a1 56 /*!
ubhat 0:6cc76d70e2a1 57 * Application
ubhat 0:6cc76d70e2a1 58 */
ubhat 0:6cc76d70e2a1 59 class Application
ubhat 0:6cc76d70e2a1 60 {
ubhat 0:6cc76d70e2a1 61 public:
ubhat 0:6cc76d70e2a1 62 /*!
ubhat 0:6cc76d70e2a1 63 * \brief Initializes TX buffer address to private pointer
ubhat 0:6cc76d70e2a1 64 *
ubhat 0:6cc76d70e2a1 65 * \param [IN] memptr pointer to TX buffer
ubhat 0:6cc76d70e2a1 66 */
ubhat 0:6cc76d70e2a1 67 Application( uint8_t * memptr );
ubhat 0:6cc76d70e2a1 68
ubhat 0:6cc76d70e2a1 69 /*!
ubhat 0:6cc76d70e2a1 70 * \brief Application Destructor
ubhat 0:6cc76d70e2a1 71 */
ubhat 0:6cc76d70e2a1 72 ~Application( );
ubhat 0:6cc76d70e2a1 73
ubhat 0:6cc76d70e2a1 74 /*!
ubhat 0:6cc76d70e2a1 75 * \brief Call application type and append to application buffer
ubhat 0:6cc76d70e2a1 76 *
ubhat 0:6cc76d70e2a1 77 * \param [IN] AppType application type: GPS, Battery, Temp etc.
ubhat 0:6cc76d70e2a1 78 */
ubhat 0:6cc76d70e2a1 79 void ApplicationCall( eAppType AppType );
ubhat 0:6cc76d70e2a1 80
ubhat 0:6cc76d70e2a1 81 /*!
ubhat 0:6cc76d70e2a1 82 * \brief Append data to the TX buffer
ubhat 0:6cc76d70e2a1 83 *
ubhat 0:6cc76d70e2a1 84 * \param [IN] pData pointer to the data to be appended to TX buffer
ubhat 0:6cc76d70e2a1 85 * \param [IN] Len lenght of the data to be appended to TX buffer
ubhat 0:6cc76d70e2a1 86 */
ubhat 0:6cc76d70e2a1 87 void ApplicationAppendData( uint8_t *pData, uint8_t len );
ubhat 0:6cc76d70e2a1 88
ubhat 0:6cc76d70e2a1 89 /*!
ubhat 0:6cc76d70e2a1 90 * \brief Point the pointer corresponding to the TX buffer to specified index
ubhat 0:6cc76d70e2a1 91 *
ubhat 0:6cc76d70e2a1 92 * \param [IN] ptrPos index to where to point to in the TX buffer
ubhat 0:6cc76d70e2a1 93 */
ubhat 0:6cc76d70e2a1 94 void ApplicationPtrPos( uint8_t ptrPos );
ubhat 0:6cc76d70e2a1 95
ubhat 0:6cc76d70e2a1 96 private:
ubhat 0:6cc76d70e2a1 97 /*!
ubhat 0:6cc76d70e2a1 98 * Index to the application buffer
ubhat 0:6cc76d70e2a1 99 */
ubhat 0:6cc76d70e2a1 100 uint8_t BuffPtr;
ubhat 0:6cc76d70e2a1 101 /*!
ubhat 0:6cc76d70e2a1 102 * Application buffer address pointer
ubhat 0:6cc76d70e2a1 103 */
ubhat 0:6cc76d70e2a1 104 uint8_t *BuffAddr;
ubhat 0:6cc76d70e2a1 105 };
ubhat 0:6cc76d70e2a1 106
ubhat 0:6cc76d70e2a1 107 class TimerLed
ubhat 0:6cc76d70e2a1 108 {
ubhat 0:6cc76d70e2a1 109 public:
ubhat 0:6cc76d70e2a1 110 TimerEvent_t LedTimer;
ubhat 0:6cc76d70e2a1 111 TimerLed( eLedType );
ubhat 0:6cc76d70e2a1 112 ~TimerLed( );
ubhat 0:6cc76d70e2a1 113 };
ubhat 0:6cc76d70e2a1 114
ubhat 0:6cc76d70e2a1 115 extern TimerLed RedLedTimer;
ubhat 0:6cc76d70e2a1 116
ubhat 0:6cc76d70e2a1 117 extern TimerLed YellowLedTimer;
ubhat 0:6cc76d70e2a1 118
ubhat 0:6cc76d70e2a1 119 extern TimerLed GreenLedTimer;
ubhat 0:6cc76d70e2a1 120
ubhat 0:6cc76d70e2a1 121 extern Application LoRaApp;
ubhat 0:6cc76d70e2a1 122
ubhat 0:6cc76d70e2a1 123 extern bool AppLed;
ubhat 0:6cc76d70e2a1 124
ubhat 0:6cc76d70e2a1 125 extern bool VerticalStatus;
ubhat 0:6cc76d70e2a1 126
ubhat 0:6cc76d70e2a1 127 #ifdef USE_CAYENNE_LPP
ubhat 10:bba416e2c3e1 128 extern uint8_t maxLPPsize[5];
ubhat 0:6cc76d70e2a1 129 #endif
ubhat 0:6cc76d70e2a1 130
ubhat 0:6cc76d70e2a1 131 /*!
ubhat 0:6cc76d70e2a1 132 * \brief Blink LED
ubhat 0:6cc76d70e2a1 133 *
ubhat 0:6cc76d70e2a1 134 * \param [IN] led Red, yellow or green LED
ubhat 0:6cc76d70e2a1 135 * \param [IN] time time in usec for which the LED must be ON
ubhat 0:6cc76d70e2a1 136 */
ubhat 0:6cc76d70e2a1 137 void BlinkLED( eLedType led, uint32_t time );
ubhat 0:6cc76d70e2a1 138
ubhat 0:6cc76d70e2a1 139 /*!
ubhat 0:6cc76d70e2a1 140 * \brief Turn LED ON if OFF; OFF if ON
ubhat 0:6cc76d70e2a1 141 *
ubhat 0:6cc76d70e2a1 142 * \param [IN] led Red, yellow or green LED
ubhat 0:6cc76d70e2a1 143 */
ubhat 0:6cc76d70e2a1 144 void ToggleLED( eLedType led );
ubhat 0:6cc76d70e2a1 145
ubhat 0:6cc76d70e2a1 146 /*!
ubhat 0:6cc76d70e2a1 147 * \brief Control the State of the LED
ubhat 0:6cc76d70e2a1 148 *
ubhat 0:6cc76d70e2a1 149 * \param [IN] led Red, yellow or green LED
ubhat 0:6cc76d70e2a1 150 * \param [IN] state ON or OFF
ubhat 0:6cc76d70e2a1 151 */
ubhat 0:6cc76d70e2a1 152 void CtrlLED( eLedType led, uint8_t state );
ubhat 0:6cc76d70e2a1 153
ubhat 0:6cc76d70e2a1 154 void CheckOrientation( void );
ubhat 0:6cc76d70e2a1 155
ubhat 0:6cc76d70e2a1 156 #endif // __APPLICATION_H__