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.
cli_uart.cpp
00001 00002 #include "mbed.h" 00003 00004 // Standard includes 00005 #include <stdarg.h> 00006 00007 #include "myBoardInit.h" 00008 #include "cli_uart.h" 00009 #include "osi.h" 00010 00011 OsiLockObj_t g_printLock; 00012 00013 #if (THIS_BOARD == Seeed_Arch_Max) 00014 Serial uart(PC_6, PC_7);//uart 6 00015 //Serial uart(USBTX, USBRX); 00016 #elif (THIS_BOARD == EA_MBED_LPC4088) 00017 Serial uart(p37, p31); 00018 #endif 00019 00020 int Uart_Write(unsigned char *inBuff) 00021 { 00022 uint16_t ret, ecount, usLength = strlen((const char *)inBuff); 00023 ecount = 0; 00024 ret = 0; 00025 00026 while(!(uart.writeable())){ecount++;if(ecount>3000)break;}; 00027 00028 if(uart.writeable()) { 00029 00030 if(inBuff == NULL) { 00031 printf("Uart Write buffer empty\r\n"); 00032 return -1; 00033 } 00034 00035 RTOS_MUTEX_ACQUIRE(&g_printLock); 00036 ret = usLength; 00037 00038 while (usLength) { 00039 uart.putc(*inBuff); 00040 usLength--; 00041 inBuff++; 00042 } 00043 00044 RTOS_MUTEX_RELEASE(&g_printLock); 00045 } else { 00046 printf("Uart Write failed [uart not writeable] now trying printf\r\n"); 00047 while (usLength) { 00048 printf("%c",*inBuff); 00049 usLength--; 00050 inBuff++; 00051 } 00052 return -1; 00053 } 00054 00055 return (int)ret; 00056 00057 } 00058 00059 void CLI_Configure(void) 00060 { 00061 uart.baud(115200); 00062 00063 RTOS_MUTEX_CREATE(&g_printLock); 00064 00065 } 00066 00067 //***************************************************************************** 00068 // 00069 //! prints the formatted string on to the console 00070 //! 00071 //! \param format is a pointer to the character string specifying the format in 00072 //! the following arguments need to be interpreted. 00073 //! \param [variable number of] arguments according to the format in the first 00074 //! parameters 00075 //! This function 00076 //! 1. prints the formatted error statement. 00077 //! 00078 //! \return count of characters printed 00079 // 00080 //***************************************************************************** 00081 int Report(const char *pcFormat, ...) 00082 { 00083 int iRet = 0; 00084 //#ifndef NOTERM 00085 00086 char *pcBuff, *pcTemp; 00087 int iSize = 256; 00088 00089 va_list list; 00090 pcBuff = (char*)malloc(iSize); 00091 if(pcBuff == NULL) 00092 { 00093 return -1; 00094 } 00095 while(1) 00096 { 00097 va_start(list,pcFormat); 00098 iRet = vsnprintf((char*)pcBuff,iSize,pcFormat,list); 00099 va_end(list); 00100 if(iRet > -1 && iRet < iSize) 00101 { 00102 break; 00103 } 00104 else 00105 { 00106 iSize*=2; 00107 if((pcTemp=(char*)realloc(pcBuff,iSize))==NULL) 00108 { 00109 Message("Could not reallocate memory\n\r"); 00110 iRet = -1; 00111 break; 00112 } 00113 else 00114 { 00115 pcBuff=pcTemp; 00116 } 00117 00118 } 00119 } 00120 Message(pcBuff); 00121 free(pcBuff); 00122 00123 //#endif 00124 return iRet; 00125 } 00126 00127 //***************************************************************************** 00128 // 00129 //! Outputs a character string to the console 00130 //! 00131 //! \param str is the pointer to the string to be printed 00132 //! 00133 //! This function 00134 //! 1. prints the input string character by character on to the console. 00135 //! 00136 //! \return none 00137 // 00138 //***************************************************************************** 00139 void 00140 Message(const char *str) 00141 { 00142 00143 uint16_t ecount = 0; 00144 00145 //#ifndef NOTERM 00146 while(!(uart.writeable())){ecount++;if(ecount>3000)break;}; 00147 00148 if(uart.writeable()) { 00149 00150 if(str != NULL){ 00151 RTOS_MUTEX_ACQUIRE(&g_printLock); 00152 while(*str!='\0') 00153 { 00154 uart.putc(*str++); 00155 } 00156 RTOS_MUTEX_RELEASE(&g_printLock); 00157 } 00158 } 00159 //#endif 00160 } 00161 00162
Generated on Tue Jul 12 2022 22:22:38 by
1.7.2