From 06cac07f9bca7fe50cf3b96184e5b8707606108a Mon Sep 17 00:00:00 2001
From: Stanley Huang <stanleyhuangyc@gmail.com>
Date: Sat, 20 Apr 2013 12:40:25 +0800
Subject: update MultiLCD library

---
 obdlogger/MultiLCD.cpp | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

(limited to 'obdlogger/MultiLCD.cpp')

diff --git a/obdlogger/MultiLCD.cpp b/obdlogger/MultiLCD.cpp
index 22112d1..c611b14 100644
--- a/obdlogger/MultiLCD.cpp
+++ b/obdlogger/MultiLCD.cpp
@@ -118,12 +118,19 @@ void LCD_OLED::write(char c)
 {
     char s[2] = {c};
     ScI2cMxDisplay8x16Str(OLED_ADDRESS, m_line, m_column, s);
-    m_column = (m_column + 8) & 0x7f;
+    m_column += 8;
+    if (m_column >= 128) {
+        m_column = 0;
+        m_line++;
+    }
 }
 
 void LCD_OLED::print(const char* s)
 {
     ScI2cMxDisplay8x16Str(OLED_ADDRESS, m_line, m_column, s);
+    m_column += (strlen(s) << 3);
+    m_line += (m_column >> 7) << 1;
+    m_column %= 0x7f;
 }
 
 void LCD_OLED::printLarge(const char* s)
@@ -137,7 +144,11 @@ void LCD_OLED::printLarge(const char* s)
         } else {
             ScI2cMxFillArea(OLED_ADDRESS, m_line, m_line + 1, m_column, m_column + 16, 0);
         }
-        m_column = (m_column + 16) & 0x7f;
+        m_column += 16;
+        if (m_column >= 128) {
+            m_column = 0;
+            m_line++;
+        }
         s++;
     }
 }
-- 
cgit v1.2.3