Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
utils/cli_uart.cpp@14:90603ea1e85b, 2015-08-25 (annotated)
- Committer:
- dflet
- Date:
- Tue Aug 25 22:03:00 2015 +0000
- Revision:
- 14:90603ea1e85b
- Parent:
- 0:50cedd586816
- Child:
- 15:5433f9d94cd7
I2C now works. 2 Cams added only the ov2640 works for now, many changes everywhere in the cam app. Still filled with debug.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dflet | 0:50cedd586816 | 1 | |
| dflet | 0:50cedd586816 | 2 | #include "mbed.h" |
| dflet | 0:50cedd586816 | 3 | |
| dflet | 0:50cedd586816 | 4 | // Standard includes |
| dflet | 0:50cedd586816 | 5 | #include <stdarg.h> |
| dflet | 0:50cedd586816 | 6 | |
| dflet | 0:50cedd586816 | 7 | #include "myBoardInit.h" |
| dflet | 0:50cedd586816 | 8 | #include "cli_uart.h" |
| dflet | 0:50cedd586816 | 9 | #include "osi.h" |
| dflet | 0:50cedd586816 | 10 | |
| dflet | 0:50cedd586816 | 11 | OsiLockObj_t g_printLock; |
| dflet | 0:50cedd586816 | 12 | |
| dflet | 0:50cedd586816 | 13 | #if (THIS_BOARD == Seeed_Arch_Max) |
| dflet | 0:50cedd586816 | 14 | Serial uart(PC_6, PC_7);//uart 6 |
| dflet | 14:90603ea1e85b | 15 | //Serial uart(USBTX, USBRX); |
| dflet | 0:50cedd586816 | 16 | #elif (THIS_BOARD == EA_MBED_LPC4088) |
| dflet | 0:50cedd586816 | 17 | Serial uart(p37, p31); |
| dflet | 0:50cedd586816 | 18 | #endif |
| dflet | 0:50cedd586816 | 19 | |
| dflet | 0:50cedd586816 | 20 | int Uart_Write(unsigned char *inBuff) |
| dflet | 0:50cedd586816 | 21 | { |
| dflet | 0:50cedd586816 | 22 | uint16_t ret, ecount, usLength = strlen((const char *)inBuff); |
| dflet | 0:50cedd586816 | 23 | ecount = 0; |
| dflet | 0:50cedd586816 | 24 | ret = 0; |
| dflet | 0:50cedd586816 | 25 | |
| dflet | 0:50cedd586816 | 26 | while(!(uart.writeable())){ecount++;if(ecount>3000)break;}; |
| dflet | 0:50cedd586816 | 27 | |
| dflet | 0:50cedd586816 | 28 | if(uart.writeable()) { |
| dflet | 0:50cedd586816 | 29 | |
| dflet | 0:50cedd586816 | 30 | if(inBuff == NULL) { |
| dflet | 0:50cedd586816 | 31 | printf("Uart Write buffer empty\r\n"); |
| dflet | 0:50cedd586816 | 32 | return -1; |
| dflet | 0:50cedd586816 | 33 | } |
| dflet | 0:50cedd586816 | 34 | |
| dflet | 0:50cedd586816 | 35 | RTOS_MUTEX_ACQUIRE(&g_printLock); |
| dflet | 0:50cedd586816 | 36 | ret = usLength; |
| dflet | 0:50cedd586816 | 37 | |
| dflet | 0:50cedd586816 | 38 | while (usLength) { |
| dflet | 0:50cedd586816 | 39 | uart.putc(*inBuff); |
| dflet | 0:50cedd586816 | 40 | usLength--; |
| dflet | 0:50cedd586816 | 41 | inBuff++; |
| dflet | 0:50cedd586816 | 42 | } |
| dflet | 0:50cedd586816 | 43 | |
| dflet | 0:50cedd586816 | 44 | RTOS_MUTEX_RELEASE(&g_printLock); |
| dflet | 0:50cedd586816 | 45 | } else { |
| dflet | 0:50cedd586816 | 46 | printf("Uart Write failed [uart not writeable] now trying printf\r\n"); |
| dflet | 0:50cedd586816 | 47 | while (usLength) { |
| dflet | 0:50cedd586816 | 48 | printf("%c",*inBuff); |
| dflet | 0:50cedd586816 | 49 | usLength--; |
| dflet | 0:50cedd586816 | 50 | inBuff++; |
| dflet | 0:50cedd586816 | 51 | } |
| dflet | 0:50cedd586816 | 52 | return -1; |
| dflet | 0:50cedd586816 | 53 | } |
| dflet | 0:50cedd586816 | 54 | |
| dflet | 0:50cedd586816 | 55 | return (int)ret; |
| dflet | 0:50cedd586816 | 56 | |
| dflet | 0:50cedd586816 | 57 | } |
| dflet | 0:50cedd586816 | 58 | |
| dflet | 0:50cedd586816 | 59 | void CLI_Configure(void) |
| dflet | 0:50cedd586816 | 60 | { |
| dflet | 0:50cedd586816 | 61 | uart.baud(460800); |
| dflet | 0:50cedd586816 | 62 | |
| dflet | 0:50cedd586816 | 63 | RTOS_MUTEX_CREATE(&g_printLock); |
| dflet | 0:50cedd586816 | 64 | |
| dflet | 0:50cedd586816 | 65 | } |
| dflet | 0:50cedd586816 | 66 | |
| dflet | 0:50cedd586816 | 67 | //***************************************************************************** |
| dflet | 0:50cedd586816 | 68 | // |
| dflet | 0:50cedd586816 | 69 | //! prints the formatted string on to the console |
| dflet | 0:50cedd586816 | 70 | //! |
| dflet | 0:50cedd586816 | 71 | //! \param format is a pointer to the character string specifying the format in |
| dflet | 0:50cedd586816 | 72 | //! the following arguments need to be interpreted. |
| dflet | 0:50cedd586816 | 73 | //! \param [variable number of] arguments according to the format in the first |
| dflet | 0:50cedd586816 | 74 | //! parameters |
| dflet | 0:50cedd586816 | 75 | //! This function |
| dflet | 0:50cedd586816 | 76 | //! 1. prints the formatted error statement. |
| dflet | 0:50cedd586816 | 77 | //! |
| dflet | 0:50cedd586816 | 78 | //! \return count of characters printed |
| dflet | 0:50cedd586816 | 79 | // |
| dflet | 0:50cedd586816 | 80 | //***************************************************************************** |
| dflet | 0:50cedd586816 | 81 | int Report(const char *pcFormat, ...) |
| dflet | 0:50cedd586816 | 82 | { |
| dflet | 0:50cedd586816 | 83 | int iRet = 0; |
| dflet | 0:50cedd586816 | 84 | //#ifndef NOTERM |
| dflet | 0:50cedd586816 | 85 | |
| dflet | 0:50cedd586816 | 86 | char *pcBuff, *pcTemp; |
| dflet | 0:50cedd586816 | 87 | int iSize = 256; |
| dflet | 0:50cedd586816 | 88 | |
| dflet | 0:50cedd586816 | 89 | va_list list; |
| dflet | 0:50cedd586816 | 90 | pcBuff = (char*)malloc(iSize); |
| dflet | 0:50cedd586816 | 91 | if(pcBuff == NULL) |
| dflet | 0:50cedd586816 | 92 | { |
| dflet | 0:50cedd586816 | 93 | return -1; |
| dflet | 0:50cedd586816 | 94 | } |
| dflet | 0:50cedd586816 | 95 | while(1) |
| dflet | 0:50cedd586816 | 96 | { |
| dflet | 0:50cedd586816 | 97 | va_start(list,pcFormat); |
| dflet | 0:50cedd586816 | 98 | iRet = vsnprintf((char*)pcBuff,iSize,pcFormat,list); |
| dflet | 0:50cedd586816 | 99 | va_end(list); |
| dflet | 0:50cedd586816 | 100 | if(iRet > -1 && iRet < iSize) |
| dflet | 0:50cedd586816 | 101 | { |
| dflet | 0:50cedd586816 | 102 | break; |
| dflet | 0:50cedd586816 | 103 | } |
| dflet | 0:50cedd586816 | 104 | else |
| dflet | 0:50cedd586816 | 105 | { |
| dflet | 0:50cedd586816 | 106 | iSize*=2; |
| dflet | 0:50cedd586816 | 107 | if((pcTemp=(char*)realloc(pcBuff,iSize))==NULL) |
| dflet | 0:50cedd586816 | 108 | { |
| dflet | 0:50cedd586816 | 109 | Message("Could not reallocate memory\n\r"); |
| dflet | 0:50cedd586816 | 110 | iRet = -1; |
| dflet | 0:50cedd586816 | 111 | break; |
| dflet | 0:50cedd586816 | 112 | } |
| dflet | 0:50cedd586816 | 113 | else |
| dflet | 0:50cedd586816 | 114 | { |
| dflet | 0:50cedd586816 | 115 | pcBuff=pcTemp; |
| dflet | 0:50cedd586816 | 116 | } |
| dflet | 0:50cedd586816 | 117 | |
| dflet | 0:50cedd586816 | 118 | } |
| dflet | 0:50cedd586816 | 119 | } |
| dflet | 0:50cedd586816 | 120 | Message(pcBuff); |
| dflet | 0:50cedd586816 | 121 | free(pcBuff); |
| dflet | 0:50cedd586816 | 122 | |
| dflet | 0:50cedd586816 | 123 | //#endif |
| dflet | 0:50cedd586816 | 124 | return iRet; |
| dflet | 0:50cedd586816 | 125 | } |
| dflet | 0:50cedd586816 | 126 | |
| dflet | 0:50cedd586816 | 127 | //***************************************************************************** |
| dflet | 0:50cedd586816 | 128 | // |
| dflet | 0:50cedd586816 | 129 | //! Outputs a character string to the console |
| dflet | 0:50cedd586816 | 130 | //! |
| dflet | 0:50cedd586816 | 131 | //! \param str is the pointer to the string to be printed |
| dflet | 0:50cedd586816 | 132 | //! |
| dflet | 0:50cedd586816 | 133 | //! This function |
| dflet | 0:50cedd586816 | 134 | //! 1. prints the input string character by character on to the console. |
| dflet | 0:50cedd586816 | 135 | //! |
| dflet | 0:50cedd586816 | 136 | //! \return none |
| dflet | 0:50cedd586816 | 137 | // |
| dflet | 0:50cedd586816 | 138 | //***************************************************************************** |
| dflet | 0:50cedd586816 | 139 | void |
| dflet | 0:50cedd586816 | 140 | Message(const char *str) |
| dflet | 0:50cedd586816 | 141 | { |
| dflet | 0:50cedd586816 | 142 | |
| dflet | 0:50cedd586816 | 143 | uint16_t ecount = 0; |
| dflet | 0:50cedd586816 | 144 | |
| dflet | 0:50cedd586816 | 145 | //#ifndef NOTERM |
| dflet | 0:50cedd586816 | 146 | while(!(uart.writeable())){ecount++;if(ecount>3000)break;}; |
| dflet | 0:50cedd586816 | 147 | |
| dflet | 0:50cedd586816 | 148 | if(uart.writeable()) { |
| dflet | 0:50cedd586816 | 149 | |
| dflet | 0:50cedd586816 | 150 | if(str != NULL){ |
| dflet | 0:50cedd586816 | 151 | RTOS_MUTEX_ACQUIRE(&g_printLock); |
| dflet | 0:50cedd586816 | 152 | while(*str!='\0') |
| dflet | 0:50cedd586816 | 153 | { |
| dflet | 0:50cedd586816 | 154 | uart.putc(*str++); |
| dflet | 0:50cedd586816 | 155 | } |
| dflet | 0:50cedd586816 | 156 | RTOS_MUTEX_RELEASE(&g_printLock); |
| dflet | 0:50cedd586816 | 157 | } |
| dflet | 0:50cedd586816 | 158 | } |
| dflet | 0:50cedd586816 | 159 | //#endif |
| dflet | 0:50cedd586816 | 160 | } |
| dflet | 0:50cedd586816 | 161 | |
| dflet | 0:50cedd586816 | 162 |