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 Vincent Wochnik

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LCDDisplay.cpp Source File

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 }