Index: target/dartuinoP0/display/memory_lcd_mono.c |
diff --git a/target/dartuinoP0/display/LS027B7DH01.c b/target/dartuinoP0/display/memory_lcd_mono.c |
similarity index 77% |
rename from target/dartuinoP0/display/LS027B7DH01.c |
rename to target/dartuinoP0/display/memory_lcd_mono.c |
index 6e275caf8f90d47031add6c38a71322d63c655b8..7c09c07bad28eafe1f42b621a711f3251ab72c9c 100644 |
--- a/target/dartuinoP0/display/LS027B7DH01.c |
+++ b/target/dartuinoP0/display/memory_lcd_mono.c |
@@ -1,5 +1,5 @@ |
/* |
- * Copyright (c) 2015 Gurjant Kalsi <me@gurjantkalsi.com> |
+ * Copyright (c) 2016 Craig Stout <cstout@chromium.org> |
* |
* Permission is hereby granted, free of charge, to any person obtaining |
* a copy of this software and associated documentation files |
@@ -21,24 +21,37 @@ |
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
*/ |
-// 2.7 Inch Monocromatic Sharp Memory LCD |
- |
+#if defined (LCD_LS027B7DH01) |
#include <target/display/LS027B7DH01.h> |
+#elif defined (LCD_LS013B7DH03) |
+#include <target/display/LS013B7DH03.h> |
+#else |
+#error Undefined display header |
+#endif |
+ |
#include <string.h> |
+#include <assert.h> |
#define SET_BIT(BUF, BITNUM) ((BUF)[(BITNUM) >> 3] |= (0xff & (0x1 << ((BITNUM) & 0x07)))) |
uint8_t lcd_get_line(uint8_t *framebuffer, uint8_t idx, uint8_t *result) |
{ |
- framebuffer += MLCD_WIDTH * idx; |
+ framebuffer += FB_STRIDE * idx; |
- memset(result, 0, MLCD_BYTES_LINE); |
+#if FB_FORMAT == DISPLAY_FORMAT_MONO_1 |
+ memcpy(result, framebuffer, MLCD_BYTES_LINE); |
+#elif FB_FORMAT == DISPLAY_FORMAT_MONO_8 |
+ memset(result, 0, MLCD_BYTES_LINE); |
for (uint i = 0; i < MLCD_WIDTH; ++i) { |
if (framebuffer[i] > 128) { |
SET_BIT(result, i); |
} |
} |
+#else |
+#error Unhandled FB_FORMAT |
+#endif |
+ |
return MLCD_BYTES_LINE; |
-} |
+} |