Sending IKS01A1 temperature sensor to LoRaWAN port-5 uplink

Dependencies:   X_NUCLEO_IKS01A1 mbed LoRaWAN-lib SX1276Lib

Fork of LoRaWAN-demo-76 by Semtech

Use IKS01A1 sensor shield with SX1272 shield or SX1276 shield.

Sends temperature sensor to LoRaWAN uplink port 5.


Remove SB22 and SB23 from IKS01A1 before using

SB28 conflicts with DIO0 on radio. (TxDone RxDone)

SB22 conflicts with RxTx on radio. (antenna switch)

Committer:
dudmuck
Date:
Tue Aug 16 00:16:25 2016 +0000
Revision:
8:7b1d5fb9cf72
Parent:
3:9c6f7f082151
added IKS01A1 temperature sensing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mluis 0:92bca02df485 1 /*
mluis 0:92bca02df485 2 / _____) _ | |
mluis 0:92bca02df485 3 ( (____ _____ ____ _| |_ _____ ____| |__
mluis 0:92bca02df485 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
mluis 0:92bca02df485 5 _____) ) ____| | | || |_| ____( (___| | | |
mluis 0:92bca02df485 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
mluis 0:92bca02df485 7 (C)2015 Semtech
mluis 0:92bca02df485 8
mluis 0:92bca02df485 9 Description: VT100 terminal support class
mluis 0:92bca02df485 10
mluis 0:92bca02df485 11 License: Revised BSD License, see LICENSE.TXT file include in the project
mluis 0:92bca02df485 12
mluis 0:92bca02df485 13 Maintainer: Miguel Luis and Gregory Cristian
mluis 0:92bca02df485 14 */
mluis 0:92bca02df485 15 #ifndef __VT100_H__
mluis 0:92bca02df485 16 #define __VT100_H__
mluis 0:92bca02df485 17
mluis 3:9c6f7f082151 18 #ifndef STRING_STACK_LIMIT
mluis 3:9c6f7f082151 19 #define STRING_STACK_LIMIT 120
mluis 3:9c6f7f082151 20 #endif
mluis 3:9c6f7f082151 21
mluis 3:9c6f7f082151 22 /**
mluis 3:9c6f7f082151 23 * Implements VT100 terminal commands support.
mluis 3:9c6f7f082151 24 * Implments also the same behaviour has RawSerial class. The only difference
mluis 3:9c6f7f082151 25 * is located in putc fucntion where writeable check is made befor sending the character.
mluis 3:9c6f7f082151 26 */
mluis 3:9c6f7f082151 27 class VT100 : public SerialBase
mluis 0:92bca02df485 28 {
mluis 0:92bca02df485 29 public:
mluis 0:92bca02df485 30 enum TextAttributes
mluis 0:92bca02df485 31 {
mluis 0:92bca02df485 32 ATTR_OFF = 0,
mluis 0:92bca02df485 33 BOLD = 1,
mluis 0:92bca02df485 34 USCORE = 4,
mluis 0:92bca02df485 35 BLINK = 5,
mluis 0:92bca02df485 36 REVERSE = 7,
mluis 0:92bca02df485 37 BOLD_OFF = 21,
mluis 0:92bca02df485 38 USCORE_OFF = 24,
mluis 0:92bca02df485 39 BLINK_OFF = 25,
mluis 0:92bca02df485 40 REVERSE_OFF = 27,
mluis 0:92bca02df485 41 };
mluis 0:92bca02df485 42
mluis 0:92bca02df485 43 enum Colors
mluis 0:92bca02df485 44 {
mluis 0:92bca02df485 45 BLACK = 0,
mluis 0:92bca02df485 46 RED = 1,
mluis 0:92bca02df485 47 GREEN = 2,
mluis 0:92bca02df485 48 BROWN = 3,
mluis 0:92bca02df485 49 BLUE = 4,
mluis 0:92bca02df485 50 MAGENTA = 5,
mluis 0:92bca02df485 51 CYAN = 6,
mluis 0:92bca02df485 52 WHITE = 7,
mluis 0:92bca02df485 53 };
mluis 3:9c6f7f082151 54
mluis 3:9c6f7f082151 55 VT100( PinName tx, PinName rx ): SerialBase( tx, rx )
mluis 0:92bca02df485 56 {
mluis 0:92bca02df485 57 this->baud( 115200 );
mluis 0:92bca02df485 58 // initializes terminal to "power-on" settings
mluis 0:92bca02df485 59 // ESC c
mluis 0:92bca02df485 60 this->printf( "\x1B\x63" );
mluis 0:92bca02df485 61 }
mluis 0:92bca02df485 62
mluis 0:92bca02df485 63 void ClearScreen( uint8_t param )
mluis 0:92bca02df485 64 {
mluis 0:92bca02df485 65 // ESC [ Ps J
mluis 0:92bca02df485 66 // 0 Clear screen from cursor down
mluis 0:92bca02df485 67 // 1 Clear screen from cursor up
mluis 0:92bca02df485 68 // 2 Clear entire screen
mluis 0:92bca02df485 69 this->printf( "\x1B[%dJ", param );
mluis 0:92bca02df485 70 }
mluis 0:92bca02df485 71
mluis 0:92bca02df485 72 void ClearLine( uint8_t param )
mluis 0:92bca02df485 73 {
mluis 0:92bca02df485 74 // ESC [ Ps K
mluis 0:92bca02df485 75 // 0 Erase from the active position to the end of the line, inclusive (default)
mluis 0:92bca02df485 76 // 1 Erase from the start of the screen to the active position, inclusive
mluis 0:92bca02df485 77 // 2 Erase all of the line, inclusive
mluis 0:92bca02df485 78 this->printf( "\x1B[%dK", param );
mluis 0:92bca02df485 79 }
mluis 0:92bca02df485 80
mluis 0:92bca02df485 81 void SetAttribute( uint8_t attr )
mluis 0:92bca02df485 82 {
mluis 0:92bca02df485 83 // ESC [ Ps;...;Ps m
mluis 0:92bca02df485 84 this->printf( "\x1B[%dm", attr );
mluis 0:92bca02df485 85 }
mluis 0:92bca02df485 86
mluis 0:92bca02df485 87 void SetAttribute( uint8_t attr, uint8_t fgcolor, uint8_t bgcolor )
mluis 0:92bca02df485 88 {
mluis 0:92bca02df485 89 // ESC [ Ps;...;Ps m
mluis 0:92bca02df485 90 this->printf( "\x1B[%d;%d;%dm", attr, fgcolor + 30, bgcolor + 40 );
mluis 0:92bca02df485 91 }
mluis 0:92bca02df485 92
mluis 0:92bca02df485 93 void SetCursorMode( uint8_t visible )
mluis 0:92bca02df485 94 {
mluis 0:92bca02df485 95 if( visible == true )
mluis 0:92bca02df485 96 {
mluis 0:92bca02df485 97 // ESC [ ? 25 h
mluis 0:92bca02df485 98 this->printf( "\x1B[?25h" );
mluis 0:92bca02df485 99 }
mluis 0:92bca02df485 100 else
mluis 0:92bca02df485 101 {
mluis 0:92bca02df485 102 // ESC [ ? 25 l
mluis 0:92bca02df485 103 this->printf( "\x1B[?25l" );
mluis 0:92bca02df485 104 }
mluis 0:92bca02df485 105 }
mluis 0:92bca02df485 106
mluis 0:92bca02df485 107 void SetCursorPos( uint8_t line, uint8_t col )
mluis 0:92bca02df485 108 {
mluis 0:92bca02df485 109 // ESC [ Pl ; Pc H
mluis 0:92bca02df485 110 this->printf( "\x1B[%d;%dH", line, col );
mluis 0:92bca02df485 111 }
mluis 0:92bca02df485 112
mluis 0:92bca02df485 113 void PutStringAt( uint8_t line, uint8_t col, const char *s )
mluis 0:92bca02df485 114 {
mluis 0:92bca02df485 115 this->SetCursorPos( line, col );
mluis 0:92bca02df485 116 this->printf( "%s", s );
mluis 0:92bca02df485 117 }
mluis 0:92bca02df485 118
mluis 0:92bca02df485 119 void PutCharAt( uint8_t line, uint8_t col, uint8_t c )
mluis 0:92bca02df485 120 {
mluis 0:92bca02df485 121 this->SetCursorPos( line, col );
mluis 0:92bca02df485 122 this->printf( "%c", c );
mluis 0:92bca02df485 123 }
mluis 0:92bca02df485 124
mluis 0:92bca02df485 125 void PutHexAt( uint8_t line, uint8_t col, uint16_t n )
mluis 0:92bca02df485 126 {
mluis 0:92bca02df485 127 this->SetCursorPos( line, col );
mluis 0:92bca02df485 128 this->printf( "%X", n );
mluis 0:92bca02df485 129 }
mluis 0:92bca02df485 130
mluis 0:92bca02df485 131 void PutBoxDrawingChar( uint8_t c )
mluis 0:92bca02df485 132 {
mluis 0:92bca02df485 133 this->printf( "\x1B(0%c\x1b(B", c );
mluis 0:92bca02df485 134 }
mluis 0:92bca02df485 135
mluis 0:92bca02df485 136 bool Readable( void )
mluis 0:92bca02df485 137 {
mluis 0:92bca02df485 138 return this->readable( );
mluis 0:92bca02df485 139 }
mluis 0:92bca02df485 140
mluis 0:92bca02df485 141 uint8_t GetChar( void )
mluis 0:92bca02df485 142 {
mluis 0:92bca02df485 143 return this->getc( );
mluis 0:92bca02df485 144 }
mluis 3:9c6f7f082151 145
mluis 3:9c6f7f082151 146 /*
mluis 3:9c6f7f082151 147 * RawSerial class implmentation copy.
mluis 3:9c6f7f082151 148 */
mluis 3:9c6f7f082151 149 /** Read a char from the serial port
mluis 3:9c6f7f082151 150 *
mluis 3:9c6f7f082151 151 * @returns The char read from the serial port
mluis 3:9c6f7f082151 152 */
mluis 3:9c6f7f082151 153 int getc( )
mluis 3:9c6f7f082151 154 {
mluis 3:9c6f7f082151 155 return _base_getc();
mluis 3:9c6f7f082151 156 }
mluis 3:9c6f7f082151 157
mluis 3:9c6f7f082151 158 /** Write a char to the serial port
mluis 3:9c6f7f082151 159 *
mluis 3:9c6f7f082151 160 * @param c The char to write
mluis 3:9c6f7f082151 161 *
mluis 3:9c6f7f082151 162 * @returns The written char or -1 if an error occured
mluis 3:9c6f7f082151 163 */
mluis 3:9c6f7f082151 164 int putc( int c )
mluis 3:9c6f7f082151 165 {
mluis 3:9c6f7f082151 166 while( this->writeable( ) != 1 );
mluis 3:9c6f7f082151 167 return _base_putc( c );
mluis 3:9c6f7f082151 168 }
mluis 3:9c6f7f082151 169
mluis 3:9c6f7f082151 170 /** Write a string to the serial port
mluis 3:9c6f7f082151 171 *
mluis 3:9c6f7f082151 172 * @param str The string to write
mluis 3:9c6f7f082151 173 *
mluis 3:9c6f7f082151 174 * @returns 0 if the write succeeds, EOF for error
mluis 3:9c6f7f082151 175 */
mluis 3:9c6f7f082151 176 int puts( const char *str )
mluis 3:9c6f7f082151 177 {
mluis 3:9c6f7f082151 178 while( *str )
mluis 3:9c6f7f082151 179 putc( *str++ );
mluis 3:9c6f7f082151 180 return 0;
mluis 3:9c6f7f082151 181 }
mluis 3:9c6f7f082151 182
mluis 3:9c6f7f082151 183 // Experimental support for printf in RawSerial. No Stream inheritance
mluis 3:9c6f7f082151 184 // means we can't call printf() directly, so we use sprintf() instead.
mluis 3:9c6f7f082151 185 // We only call malloc() for the sprintf() buffer if the buffer
mluis 3:9c6f7f082151 186 // length is above a certain threshold, otherwise we use just the stack.
mluis 3:9c6f7f082151 187 int printf( const char *format, ... )
mluis 3:9c6f7f082151 188 {
mluis 3:9c6f7f082151 189 std::va_list arg;
mluis 3:9c6f7f082151 190 va_start( arg, format );
mluis 3:9c6f7f082151 191 int len = vsnprintf( NULL, 0, format, arg );
mluis 3:9c6f7f082151 192 if( len < STRING_STACK_LIMIT )
mluis 3:9c6f7f082151 193 {
mluis 3:9c6f7f082151 194 char temp[STRING_STACK_LIMIT];
mluis 3:9c6f7f082151 195 vsprintf( temp, format, arg );
mluis 3:9c6f7f082151 196 puts( temp );
mluis 3:9c6f7f082151 197 }
mluis 3:9c6f7f082151 198 else
mluis 3:9c6f7f082151 199 {
mluis 3:9c6f7f082151 200 char *temp = new char[len + 1];
mluis 3:9c6f7f082151 201 vsprintf( temp, format, arg );
mluis 3:9c6f7f082151 202 puts( temp );
mluis 3:9c6f7f082151 203 delete[] temp;
mluis 3:9c6f7f082151 204 }
mluis 3:9c6f7f082151 205 va_end( arg );
mluis 3:9c6f7f082151 206 return len;
mluis 3:9c6f7f082151 207 }
mluis 3:9c6f7f082151 208
mluis 0:92bca02df485 209 private:
mluis 0:92bca02df485 210
mluis 0:92bca02df485 211 };
mluis 0:92bca02df485 212
mluis 0:92bca02df485 213 #endif // __VT100_H__