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
io/LCDDisplay.cpp@93:0acd11870c6a, 2015-04-13 (annotated)
- Committer:
- xinlei
- Date:
- Mon Apr 13 14:24:58 2015 +0000
- Revision:
- 93:0acd11870c6a
- Child:
- 96:5dfdc8568e9f
v2.1rc1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
xinlei | 93:0acd11870c6a | 1 | #include "LCDDisplay.h" |
xinlei | 93:0acd11870c6a | 2 | #include "logging.h" |
xinlei | 93:0acd11870c6a | 3 | |
xinlei | 93:0acd11870c6a | 4 | #define DEF "\033[39m" |
xinlei | 93:0acd11870c6a | 5 | #define GRE "\033[32m" |
xinlei | 93:0acd11870c6a | 6 | #define CYA "\033[36m" |
xinlei | 93:0acd11870c6a | 7 | |
xinlei | 93:0acd11870c6a | 8 | void LCDDisplay::_setLine(char *dest, const char* src, size_t n) |
xinlei | 93:0acd11870c6a | 9 | { |
xinlei | 93:0acd11870c6a | 10 | if (n == 0) { |
xinlei | 93:0acd11870c6a | 11 | return ; |
xinlei | 93:0acd11870c6a | 12 | } else if (src && src!=dest) { |
xinlei | 93:0acd11870c6a | 13 | strncpy(dest, src, n-1); |
xinlei | 93:0acd11870c6a | 14 | dest[n-1] = '\0'; |
xinlei | 93:0acd11870c6a | 15 | } |
xinlei | 93:0acd11870c6a | 16 | } |
xinlei | 93:0acd11870c6a | 17 | |
xinlei | 93:0acd11870c6a | 18 | void LCDDisplay::clear() |
xinlei | 93:0acd11870c6a | 19 | { |
xinlei | 93:0acd11870c6a | 20 | _setLine(firstLine, "", sizeof(firstLine)); |
xinlei | 93:0acd11870c6a | 21 | _setLine(secondLine, "", sizeof(secondLine)); |
xinlei | 93:0acd11870c6a | 22 | _setLine(thirdLine, "", sizeof(thirdLine)); |
xinlei | 93:0acd11870c6a | 23 | _lcd.cls(); |
xinlei | 93:0acd11870c6a | 24 | } |
xinlei | 93:0acd11870c6a | 25 | |
xinlei | 93:0acd11870c6a | 26 | void LCDDisplay::setFirstLine(const char* p) |
xinlei | 93:0acd11870c6a | 27 | { |
xinlei | 93:0acd11870c6a | 28 | _setLine(firstLine, p, sizeof(firstLine)); |
xinlei | 93:0acd11870c6a | 29 | lcdPrint(firstLine, secondLine, thirdLine); |
xinlei | 93:0acd11870c6a | 30 | } |
xinlei | 93:0acd11870c6a | 31 | |
xinlei | 93:0acd11870c6a | 32 | void LCDDisplay::setSecondLine(const char* p) |
xinlei | 93:0acd11870c6a | 33 | { |
xinlei | 93:0acd11870c6a | 34 | _setLine(secondLine, p, sizeof(secondLine)); |
xinlei | 93:0acd11870c6a | 35 | lcdPrint(firstLine, secondLine, thirdLine); |
xinlei | 93:0acd11870c6a | 36 | } |
xinlei | 93:0acd11870c6a | 37 | |
xinlei | 93:0acd11870c6a | 38 | void LCDDisplay::setThirdLine(const char* p) |
xinlei | 93:0acd11870c6a | 39 | { |
xinlei | 93:0acd11870c6a | 40 | _setLine(thirdLine, p, sizeof(thirdLine)); |
xinlei | 93:0acd11870c6a | 41 | lcdPrint(firstLine, secondLine, thirdLine); |
xinlei | 93:0acd11870c6a | 42 | } |
xinlei | 93:0acd11870c6a | 43 | |
xinlei | 93:0acd11870c6a | 44 | void LCDDisplay::setLines(const char *p1, const char *p2, const char *p3) |
xinlei | 93:0acd11870c6a | 45 | { |
xinlei | 93:0acd11870c6a | 46 | _setLine(firstLine, p1, sizeof(firstLine)); |
xinlei | 93:0acd11870c6a | 47 | if (p2) |
xinlei | 93:0acd11870c6a | 48 | _setLine(secondLine, p2, sizeof(secondLine)); |
xinlei | 93:0acd11870c6a | 49 | else |
xinlei | 93:0acd11870c6a | 50 | _setLine(secondLine, "", sizeof(secondLine)); |
xinlei | 93:0acd11870c6a | 51 | |
xinlei | 93:0acd11870c6a | 52 | if (p3) |
xinlei | 93:0acd11870c6a | 53 | _setLine(thirdLine, p3, sizeof(thirdLine)); |
xinlei | 93:0acd11870c6a | 54 | else |
xinlei | 93:0acd11870c6a | 55 | _setLine(thirdLine, "", sizeof(thirdLine)); |
xinlei | 93:0acd11870c6a | 56 | lcdPrint(firstLine, secondLine, thirdLine); |
xinlei | 93:0acd11870c6a | 57 | } |
xinlei | 93:0acd11870c6a | 58 | |
xinlei | 93:0acd11870c6a | 59 | void LCDDisplay::lcdPrint(const char *l1, const char *l2, const char *l3) |
xinlei | 93:0acd11870c6a | 60 | { |
xinlei | 93:0acd11870c6a | 61 | aDebug(GRE "io::lcdPrint" DEF "\r\n"); |
xinlei | 93:0acd11870c6a | 62 | |
xinlei | 93:0acd11870c6a | 63 | lcdLock.lock(); |
xinlei | 93:0acd11870c6a | 64 | _lcd.cls(); |
xinlei | 93:0acd11870c6a | 65 | _lcd.locate(0, 0); |
xinlei | 93:0acd11870c6a | 66 | _lcd.printf("%s\n", l1); |
xinlei | 93:0acd11870c6a | 67 | aDebug(GRE "> " CYA "%s\r\n" DEF, l1); |
xinlei | 93:0acd11870c6a | 68 | |
xinlei | 93:0acd11870c6a | 69 | if (l2 != NULL) { |
xinlei | 93:0acd11870c6a | 70 | _lcd.printf("%s\n", l2); |
xinlei | 93:0acd11870c6a | 71 | aDebug(GRE "> " CYA "%s\r\n" DEF, l2); |
xinlei | 93:0acd11870c6a | 72 | |
xinlei | 93:0acd11870c6a | 73 | if (l3 != NULL) { |
xinlei | 93:0acd11870c6a | 74 | _lcd.printf("%s\n", l3); |
xinlei | 93:0acd11870c6a | 75 | aDebug(GRE "> " CYA "%s\r\n" DEF, l3); |
xinlei | 93:0acd11870c6a | 76 | } |
xinlei | 93:0acd11870c6a | 77 | } |
xinlei | 93:0acd11870c6a | 78 | lcdLock.unlock(); |
xinlei | 93:0acd11870c6a | 79 | } |