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

Committer:
dflet
Date:
Fri Sep 11 15:38:33 2015 +0000
Revision:
1:e448e81c416f
Parent:
0:400d8e75a8d0
Removed some debud.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:400d8e75a8d0 1
dflet 0:400d8e75a8d0 2 #include "mbed.h"
dflet 0:400d8e75a8d0 3
dflet 0:400d8e75a8d0 4 // Standard includes
dflet 0:400d8e75a8d0 5 #include <stdarg.h>
dflet 0:400d8e75a8d0 6
dflet 0:400d8e75a8d0 7 #include "myBoardInit.h"
dflet 0:400d8e75a8d0 8 #include "cli_uart.h"
dflet 0:400d8e75a8d0 9 #include "osi.h"
dflet 0:400d8e75a8d0 10
dflet 0:400d8e75a8d0 11 OsiLockObj_t g_printLock;
dflet 0:400d8e75a8d0 12
dflet 0:400d8e75a8d0 13
dflet 0:400d8e75a8d0 14 Serial uart(USBTX, USBRX);
dflet 0:400d8e75a8d0 15
dflet 0:400d8e75a8d0 16 int Uart_Write(unsigned char *inBuff)
dflet 0:400d8e75a8d0 17 {
dflet 0:400d8e75a8d0 18 uint16_t ret, ecount, usLength = strlen((const char *)inBuff);
dflet 0:400d8e75a8d0 19 ecount = 0;
dflet 0:400d8e75a8d0 20 ret = 0;
dflet 0:400d8e75a8d0 21
dflet 0:400d8e75a8d0 22 while(!(uart.writeable())){ecount++;if(ecount>3000)break;};
dflet 0:400d8e75a8d0 23
dflet 0:400d8e75a8d0 24 if(uart.writeable()) {
dflet 0:400d8e75a8d0 25
dflet 0:400d8e75a8d0 26 if(inBuff == NULL) {
dflet 0:400d8e75a8d0 27 printf("Uart Write buffer empty\r\n");
dflet 0:400d8e75a8d0 28 return -1;
dflet 0:400d8e75a8d0 29 }
dflet 0:400d8e75a8d0 30
dflet 0:400d8e75a8d0 31 RTOS_MUTEX_ACQUIRE(&g_printLock);
dflet 0:400d8e75a8d0 32 ret = usLength;
dflet 0:400d8e75a8d0 33
dflet 0:400d8e75a8d0 34 while (usLength) {
dflet 0:400d8e75a8d0 35 uart.putc(*inBuff);
dflet 0:400d8e75a8d0 36 usLength--;
dflet 0:400d8e75a8d0 37 inBuff++;
dflet 0:400d8e75a8d0 38 }
dflet 0:400d8e75a8d0 39
dflet 0:400d8e75a8d0 40 RTOS_MUTEX_RELEASE(&g_printLock);
dflet 0:400d8e75a8d0 41 } else {
dflet 0:400d8e75a8d0 42 printf("Uart Write failed [uart not writeable] now trying printf\r\n");
dflet 0:400d8e75a8d0 43 while (usLength) {
dflet 0:400d8e75a8d0 44 printf("%c",*inBuff);
dflet 0:400d8e75a8d0 45 usLength--;
dflet 0:400d8e75a8d0 46 inBuff++;
dflet 0:400d8e75a8d0 47 }
dflet 0:400d8e75a8d0 48 return -1;
dflet 0:400d8e75a8d0 49 }
dflet 0:400d8e75a8d0 50
dflet 0:400d8e75a8d0 51 return (int)ret;
dflet 0:400d8e75a8d0 52
dflet 0:400d8e75a8d0 53 }
dflet 0:400d8e75a8d0 54
dflet 0:400d8e75a8d0 55 void CLI_Configure(void)
dflet 0:400d8e75a8d0 56 {
dflet 0:400d8e75a8d0 57 uart.baud(115200);
dflet 0:400d8e75a8d0 58
dflet 0:400d8e75a8d0 59 RTOS_MUTEX_CREATE(&g_printLock);
dflet 0:400d8e75a8d0 60
dflet 0:400d8e75a8d0 61 }
dflet 0:400d8e75a8d0 62
dflet 0:400d8e75a8d0 63 //*****************************************************************************
dflet 0:400d8e75a8d0 64 //
dflet 0:400d8e75a8d0 65 //! prints the formatted string on to the console
dflet 0:400d8e75a8d0 66 //!
dflet 0:400d8e75a8d0 67 //! \param format is a pointer to the character string specifying the format in
dflet 0:400d8e75a8d0 68 //! the following arguments need to be interpreted.
dflet 0:400d8e75a8d0 69 //! \param [variable number of] arguments according to the format in the first
dflet 0:400d8e75a8d0 70 //! parameters
dflet 0:400d8e75a8d0 71 //! This function
dflet 0:400d8e75a8d0 72 //! 1. prints the formatted error statement.
dflet 0:400d8e75a8d0 73 //!
dflet 0:400d8e75a8d0 74 //! \return count of characters printed
dflet 0:400d8e75a8d0 75 //
dflet 0:400d8e75a8d0 76 //*****************************************************************************
dflet 0:400d8e75a8d0 77 int Report(const char *pcFormat, ...)
dflet 0:400d8e75a8d0 78 {
dflet 0:400d8e75a8d0 79 int iRet = 0;
dflet 0:400d8e75a8d0 80 //#ifndef NOTERM
dflet 0:400d8e75a8d0 81
dflet 0:400d8e75a8d0 82 char *pcBuff, *pcTemp;
dflet 0:400d8e75a8d0 83 int iSize = 256;
dflet 0:400d8e75a8d0 84
dflet 0:400d8e75a8d0 85 va_list list;
dflet 0:400d8e75a8d0 86 pcBuff = (char*)malloc(iSize);
dflet 0:400d8e75a8d0 87 if(pcBuff == NULL)
dflet 0:400d8e75a8d0 88 {
dflet 0:400d8e75a8d0 89 return -1;
dflet 0:400d8e75a8d0 90 }
dflet 0:400d8e75a8d0 91 while(1)
dflet 0:400d8e75a8d0 92 {
dflet 0:400d8e75a8d0 93 va_start(list,pcFormat);
dflet 0:400d8e75a8d0 94 iRet = vsnprintf((char*)pcBuff,iSize,pcFormat,list);
dflet 0:400d8e75a8d0 95 va_end(list);
dflet 0:400d8e75a8d0 96 if(iRet > -1 && iRet < iSize)
dflet 0:400d8e75a8d0 97 {
dflet 0:400d8e75a8d0 98 break;
dflet 0:400d8e75a8d0 99 }
dflet 0:400d8e75a8d0 100 else
dflet 0:400d8e75a8d0 101 {
dflet 0:400d8e75a8d0 102 iSize*=2;
dflet 0:400d8e75a8d0 103 if((pcTemp=(char*)realloc(pcBuff,iSize))==NULL)
dflet 0:400d8e75a8d0 104 {
dflet 0:400d8e75a8d0 105 Message("Could not reallocate memory\n\r");
dflet 0:400d8e75a8d0 106 iRet = -1;
dflet 0:400d8e75a8d0 107 break;
dflet 0:400d8e75a8d0 108 }
dflet 0:400d8e75a8d0 109 else
dflet 0:400d8e75a8d0 110 {
dflet 0:400d8e75a8d0 111 pcBuff=pcTemp;
dflet 0:400d8e75a8d0 112 }
dflet 0:400d8e75a8d0 113
dflet 0:400d8e75a8d0 114 }
dflet 0:400d8e75a8d0 115 }
dflet 0:400d8e75a8d0 116 Message(pcBuff);
dflet 0:400d8e75a8d0 117 free(pcBuff);
dflet 0:400d8e75a8d0 118
dflet 0:400d8e75a8d0 119 //#endif
dflet 0:400d8e75a8d0 120 return iRet;
dflet 0:400d8e75a8d0 121 }
dflet 0:400d8e75a8d0 122
dflet 0:400d8e75a8d0 123 //*****************************************************************************
dflet 0:400d8e75a8d0 124 //
dflet 0:400d8e75a8d0 125 //! Outputs a character string to the console
dflet 0:400d8e75a8d0 126 //!
dflet 0:400d8e75a8d0 127 //! \param str is the pointer to the string to be printed
dflet 0:400d8e75a8d0 128 //!
dflet 0:400d8e75a8d0 129 //! This function
dflet 0:400d8e75a8d0 130 //! 1. prints the input string character by character on to the console.
dflet 0:400d8e75a8d0 131 //!
dflet 0:400d8e75a8d0 132 //! \return none
dflet 0:400d8e75a8d0 133 //
dflet 0:400d8e75a8d0 134 //*****************************************************************************
dflet 0:400d8e75a8d0 135 void
dflet 0:400d8e75a8d0 136 Message(const char *str)
dflet 0:400d8e75a8d0 137 {
dflet 0:400d8e75a8d0 138
dflet 0:400d8e75a8d0 139 uint16_t ecount = 0;
dflet 0:400d8e75a8d0 140
dflet 0:400d8e75a8d0 141 //#ifndef NOTERM
dflet 0:400d8e75a8d0 142 while(!(uart.writeable())){ecount++;if(ecount>3000)break;};
dflet 0:400d8e75a8d0 143
dflet 0:400d8e75a8d0 144 if(uart.writeable()) {
dflet 0:400d8e75a8d0 145
dflet 0:400d8e75a8d0 146 if(str != NULL){
dflet 0:400d8e75a8d0 147 RTOS_MUTEX_ACQUIRE(&g_printLock);
dflet 0:400d8e75a8d0 148 while(*str!='\0')
dflet 0:400d8e75a8d0 149 {
dflet 0:400d8e75a8d0 150 uart.putc(*str++);
dflet 0:400d8e75a8d0 151 }
dflet 0:400d8e75a8d0 152 RTOS_MUTEX_RELEASE(&g_printLock);
dflet 0:400d8e75a8d0 153 }
dflet 0:400d8e75a8d0 154 }
dflet 0:400d8e75a8d0 155 //#endif
dflet 0:400d8e75a8d0 156 }
dflet 0:400d8e75a8d0 157
dflet 0:400d8e75a8d0 158