Official reference client implementation for Cumulocity SmartREST on u-blox C027.
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
LCDDisplay.cpp
00001 #include <ctype.h> 00002 #include "LCDDisplay.h" 00003 #include "logging.h" 00004 00005 #define DEF "\033[39m" 00006 #define GRE "\033[32m" 00007 #define CYA "\033[36m" 00008 00009 void LCDDisplay::_setLine(char *dest, const char* src, size_t n) 00010 { 00011 if (n == 0) { 00012 return ; 00013 } else if (src && src!=dest) { 00014 size_t j = 0; 00015 for (size_t i = 0; src[i] && j<n; ++i) { 00016 if (isprint(src[i])) 00017 dest[j++] = src[i]; 00018 } 00019 dest[n-1] = '\0'; 00020 if (j < n) 00021 dest[j] = '\0'; 00022 } 00023 } 00024 00025 void LCDDisplay::clear() 00026 { 00027 _setLine(firstLine, "", sizeof(firstLine)); 00028 _setLine(secondLine, "", sizeof(secondLine)); 00029 _setLine(thirdLine, "", sizeof(thirdLine)); 00030 _lcd.cls(); 00031 } 00032 00033 void LCDDisplay::setFirstLine(const char* p) 00034 { 00035 _setLine(firstLine, p, sizeof(firstLine)); 00036 lcdPrint(firstLine, secondLine, thirdLine); 00037 } 00038 00039 void LCDDisplay::setSecondLine(const char* p) 00040 { 00041 _setLine(secondLine, p, sizeof(secondLine)); 00042 lcdPrint(firstLine, secondLine, thirdLine); 00043 } 00044 00045 void LCDDisplay::setThirdLine(const char* p) 00046 { 00047 _setLine(thirdLine, p, sizeof(thirdLine)); 00048 lcdPrint(firstLine, secondLine, thirdLine); 00049 } 00050 00051 void LCDDisplay::setLines(const char *p1, const char *p2, const char *p3) 00052 { 00053 _setLine(firstLine, p1, sizeof(firstLine)); 00054 if (p2) 00055 _setLine(secondLine, p2, sizeof(secondLine)); 00056 else 00057 _setLine(secondLine, "", sizeof(secondLine)); 00058 00059 if (p3) 00060 _setLine(thirdLine, p3, sizeof(thirdLine)); 00061 else 00062 _setLine(thirdLine, "", sizeof(thirdLine)); 00063 lcdPrint(firstLine, secondLine, thirdLine); 00064 } 00065 00066 void LCDDisplay::lcdPrint(const char *l1, const char *l2, const char *l3) 00067 { 00068 lcdLock.lock(); 00069 _lcd.cls(); 00070 _lcd.locate(0, 0); 00071 _lcd.printf("%s\n", l1); 00072 00073 if (l2) { 00074 _lcd.printf("%s\n", l2); 00075 00076 if (l3) { 00077 _lcd.printf("%s\n", l3); 00078 } 00079 } 00080 lcdLock.unlock(); 00081 }
Generated on Wed Jul 13 2022 19:40:51 by 1.7.2