2014 Freescale / Hack A Day Make It Challenge FRDM-K64 Internet of "Thing"

Dependencies:   mbed

Revision:
0:423d5729e94e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Main.cpp	Thu Apr 10 21:14:23 2014 +0000
@@ -0,0 +1,143 @@
+/*
+
+--------------------------------------------
+|                                          |
+|                     ....                 |
+|                    7OO$?I78.             |
+|                   .?8++++7+II?D.         |
+|                   .?O++=I++II+?=         |
+|                   .IO++?7==I??$.         |
+|                   .8++=$===?+I$          |
+|                   ?+++===+===+           |
+|                   ???=+I++==+?           |
+|                 .??++====+==++           |
+|                 ?+++==========~          |
+|                $+++==========+=          |
+|              =?+===+==+I========         |
+|           ..++======~~~~========?        |
+|         .$?I??+=~~===~~~===~===++.       |
+|       .+==.+=~~~=~==~~~~==~~=~==+?       |
+|      ?===I+====~~=~~~=~~=====~~~=?.      |
+|     .=~~~+==~==..~~~~~~=    ~~~~=7=      |
+|     +=~~?+~~=.  ==~~~~=.     ~~~~=?.     |
+|     =~~~=~~~   ?===~~+.       ~~~~+      |
+|     +~~:+~~=    =~~==.        =~~+.      |
+|     ~:~ =~~=    =~~~=         ~===       |
+|         I=~~   ,=~~=            ,.       |
+|          ~~.   ,====                     |
+|                 ====                     |
+|                 =~~.                     |
+|                                          |
+|------------------------------------------|                                                          
+|              Internet Of Thing           |
+|                  Eli Hughes              |
+| Freescale / Hack-a-day Make-It-Challenge |
+|              FTF 2014 - Dallas, Tx       |
+|------------------------------------------|
+
+*/
+#include "mbed.h"
+#include "Queue.h"
+#include "Terminal.h"
+#include "System.h"
+ 
+
+ //Note --   Seems that there is a bug with the new K64 firmware.    When I enable 2 serial port objects there seems to be some cross mojination going on.   We use a 
+ //macro to select wifi or com port for debug
+ 
+#define USE_WIFI
+
+#define DATA_BUFFER_MAX_SIZE    128
+ 
+DigitalOut   SPIN_CCW (PTA2);
+DigitalOut   SPIN_CW  (PTC2);
+DigitalOut   GO_FORWARD (PTC3);
+DigitalOut   GO_REVERSE (PTB23);
+ 
+#ifdef USE_USB
+    Serial PC(USBTX, USBRX); // tx, rx
+#endif
+
+#ifdef USE_WIFI
+    Serial WIFI(PTC17,PTC16);
+#endif
+
+uint8_t DataBuffer[DATA_BUFFER_MAX_SIZE];
+ 
+int main (void)
+{
+    uint32_t i;
+    uint8_t DataOut;
+    uint32_t BytesToSend;
+    
+    #ifdef USE_WIFI
+       
+        WIFI.baud(115200);
+    
+    #endif
+    
+    #ifdef USE_USB
+    
+        PC.baud(115200);
+    
+    #endif
+
+        
+    TFC_InitTerminal();
+
+    while(1)
+    {
+
+        //Shuffle Datafrom the terminal Queue to the USB port or TCP Port
+        //Inefficient but workable
+        BytesToSend = BytesInQueue(&TERMINAL_OUTPUT_QUEUE);
+        
+        if(BytesToSend >0)
+        {
+            //Limit to maximum chunk size
+            
+            if(BytesToSend > DATA_BUFFER_MAX_SIZE)
+                BytesToSend = DATA_BUFFER_MAX_SIZE;
+
+            for(i=0 ; i< BytesToSend; i++)
+            {
+                ByteDequeue(&TERMINAL_OUTPUT_QUEUE,&DataOut);
+               
+               #ifdef USE_USB
+                     PC.putc(DataOut);
+               #endif
+               
+                #ifdef USE_WIFI
+                  WIFI.putc(DataOut);
+                #endif
+             }   
+        }
+        
+        
+     
+ 
+        #ifdef USE_USB
+        if(PC.readable())
+            {
+            
+               ByteEnqueue(&TERMINAL_INPUT_QUEUE,PC.getc());
+            }
+        #endif
+       
+      #ifdef USE_WIFI
+            
+        if(WIFI.readable())
+        {
+            DataOut = WIFI.getc();
+            ByteEnqueue(&TERMINAL_INPUT_QUEUE,DataOut);
+          
+         }
+        #endif
+    
+    TFC_ProcessTerminal();
+        
+    }
+  
+}
+
+