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)

Revision:
3:9c6f7f082151
Parent:
0:92bca02df485
--- a/app/vt100.h	Thu Nov 26 17:22:53 2015 +0000
+++ b/app/vt100.h	Thu Jan 07 15:14:22 2016 +0000
@@ -15,7 +15,16 @@
 #ifndef __VT100_H__
 #define __VT100_H__
 
-class VT100 : public Serial
+#ifndef STRING_STACK_LIMIT
+#define STRING_STACK_LIMIT    120
+#endif
+
+/**
+ * Implements VT100 terminal commands support.
+ * Implments also the same behaviour has RawSerial class. The only difference
+ * is located in putc fucntion where writeable check is made befor sending the character.
+ */
+class VT100 : public SerialBase
 {
 public:
     enum TextAttributes
@@ -42,10 +51,8 @@
         CYAN    = 6,
         WHITE   = 7,
     };
-    /*!
-     *
-     */
-    VT100( PinName tx, PinName rx ): Serial( tx, rx )
+
+    VT100( PinName tx, PinName rx ): SerialBase( tx, rx )
     {
         this->baud( 115200 );
         // initializes terminal to "power-on" settings
@@ -59,7 +66,6 @@
         // 0    Clear screen from cursor down
         // 1    Clear screen from cursor up
         // 2    Clear entire screen 
-
         this->printf( "\x1B[%dJ", param );
     }
 
@@ -69,7 +75,6 @@
         // 0    Erase from the active position to the end of the line, inclusive (default)
         // 1    Erase from the start of the screen to the active position, inclusive
         // 2    Erase all of the line, inclusive
-
         this->printf( "\x1B[%dK", param );
     }
 
@@ -137,6 +142,70 @@
     {
         return this->getc( );
     }
+
+    /*
+     * RawSerial class implmentation copy.
+     */
+    /** Read a char from the serial port
+     *
+     * @returns The char read from the serial port
+     */
+    int getc( )
+    {
+        return _base_getc();
+    }
+
+    /** Write a char to the serial port
+     *
+     * @param c The char to write
+     *
+     * @returns The written char or -1 if an error occured
+     */
+    int putc( int c )
+    {
+        while( this->writeable( ) != 1 );
+        return _base_putc( c );
+    }
+
+    /** Write a string to the serial port
+     *
+     * @param str The string to write
+     *
+     * @returns 0 if the write succeeds, EOF for error
+     */
+    int puts( const char *str )
+    {
+        while( *str )
+            putc( *str++ );
+        return 0;
+    }
+
+    // Experimental support for printf in RawSerial. No Stream inheritance
+    // means we can't call printf() directly, so we use sprintf() instead.
+    // We only call malloc() for the sprintf() buffer if the buffer
+    // length is above a certain threshold, otherwise we use just the stack.
+    int printf( const char *format, ... )
+    {
+        std::va_list arg;
+        va_start( arg, format );
+        int len = vsnprintf( NULL, 0, format, arg );
+        if( len < STRING_STACK_LIMIT )
+        {
+            char temp[STRING_STACK_LIMIT];
+            vsprintf( temp, format, arg );
+            puts( temp );
+        }
+        else
+        {
+            char *temp = new char[len + 1];
+            vsprintf( temp, format, arg );
+            puts( temp );
+            delete[] temp;
+        }
+        va_end( arg );
+        return len;
+    }
+
 private:
     
 };