TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.

Dependencies:   mbed

Revision:
0:400d8e75a8d0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utils/cli_uart.cpp	Sun Sep 06 15:19:36 2015 +0000
@@ -0,0 +1,158 @@
+
+#include "mbed.h"
+
+// Standard includes
+#include <stdarg.h>
+
+#include "myBoardInit.h"
+#include "cli_uart.h"
+#include "osi.h"
+
+OsiLockObj_t    g_printLock;
+
+
+Serial uart(USBTX, USBRX);
+
+int Uart_Write(unsigned char *inBuff)
+{
+    uint16_t ret, ecount, usLength = strlen((const char *)inBuff);
+    ecount = 0;
+    ret = 0;
+    
+    while(!(uart.writeable())){ecount++;if(ecount>3000)break;};
+
+    if(uart.writeable()) {
+
+        if(inBuff == NULL) {
+            printf("Uart Write buffer empty\r\n");
+            return -1;
+        }
+
+        RTOS_MUTEX_ACQUIRE(&g_printLock);
+        ret = usLength;
+
+        while (usLength) {
+            uart.putc(*inBuff);
+            usLength--;
+            inBuff++;
+        }
+
+        RTOS_MUTEX_RELEASE(&g_printLock);
+    } else {
+        printf("Uart Write failed [uart not writeable] now trying printf\r\n");
+        while (usLength) {
+            printf("%c",*inBuff);
+            usLength--;
+            inBuff++;
+        }
+        return -1;
+    }
+    
+    return (int)ret;
+
+}
+
+void CLI_Configure(void)
+{
+    uart.baud(115200);
+    
+    RTOS_MUTEX_CREATE(&g_printLock);
+
+}
+
+//*****************************************************************************
+//
+//!    prints the formatted string on to the console
+//!
+//! \param format is a pointer to the character string specifying the format in
+//!           the following arguments need to be interpreted.
+//! \param [variable number of] arguments according to the format in the first
+//!         parameters
+//! This function
+//!        1. prints the formatted error statement.
+//!
+//! \return count of characters printed
+//
+//*****************************************************************************
+int Report(const char *pcFormat, ...)
+{
+ int iRet = 0;
+//#ifndef NOTERM
+
+  char *pcBuff, *pcTemp;
+  int iSize = 256;
+ 
+  va_list list;
+  pcBuff = (char*)malloc(iSize);
+  if(pcBuff == NULL)
+  {
+      return -1;
+  }
+  while(1)
+  {
+      va_start(list,pcFormat);
+      iRet = vsnprintf((char*)pcBuff,iSize,pcFormat,list);
+      va_end(list);
+      if(iRet > -1 && iRet < iSize)
+      {
+          break;
+      }
+      else
+      {
+          iSize*=2;
+          if((pcTemp=(char*)realloc(pcBuff,iSize))==NULL)
+          { 
+              Message("Could not reallocate memory\n\r");
+              iRet = -1;
+              break;
+          }
+          else
+          {
+              pcBuff=pcTemp;
+          }
+          
+      }
+  }
+  Message(pcBuff);
+  free(pcBuff);
+  
+//#endif
+  return iRet;
+}
+
+//*****************************************************************************
+//
+//!    Outputs a character string to the console
+//!
+//! \param str is the pointer to the string to be printed
+//!
+//! This function
+//!        1. prints the input string character by character on to the console.
+//!
+//! \return none
+//
+//*****************************************************************************
+void 
+Message(const char *str)
+{
+    
+    uint16_t ecount = 0;
+    
+//#ifndef NOTERM
+    while(!(uart.writeable())){ecount++;if(ecount>3000)break;};
+
+    if(uart.writeable()) {
+
+       if(str != NULL){
+          RTOS_MUTEX_ACQUIRE(&g_printLock);
+          while(*str!='\0')
+          {
+            uart.putc(*str++);
+          }
+          RTOS_MUTEX_RELEASE(&g_printLock);
+       }
+   }    
+//#endif
+}
+
+