TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.
Diff: utils/cli_uart.cpp
- 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 +} + +