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

Dependencies:   mbed

Main.cpp

Committer:
emh203
Date:
2014-04-10
Revision:
0:423d5729e94e

File content as of revision 0:423d5729e94e:

/*

--------------------------------------------
|                                          |
|                     ....                 |
|                    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();
        
    }
  
}