light sensor

Dependencies:   X_NUCLEO_IKS01A1 LoRaWAN-lib SX1276Lib mbed

Fork of LoRaWAN-SX1276-Application-Demo by Uttam Bhat

Committer:
ubhat
Date:
Thu Apr 06 16:35:17 2017 +0000
Revision:
3:4bca7f8f731a
Parent:
2:78df92a365c2
Child:
4:a8706ec8a6d0
Added Cayenne Payload Format for IKAS Mems (PORT# 9)

Who changed what in which revision?

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