From c0fb084eb4624b71d5761edd49a0dd987dbaf25f Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Tue, 18 Aug 2015 01:10:44 -0700 Subject: [PATCH] Adding basic support for LCDLayerDisplay using capabilities - Requires lcdFuncMap.kll instead of stdFuncMap.kll --- Scan/STLcd/capabilities.kll | 11 +++++ Scan/STLcd/lcd_scan.c | 89 ++++++++++++++++++++++++++++++++++++ Scan/STLcd/numbers/0.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/1.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/2.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/3.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/4.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/5.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/6.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/7.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/8.bmp | Bin 0 -> 4234 bytes Scan/STLcd/numbers/9.bmp | Bin 0 -> 4234 bytes 12 files changed, 100 insertions(+) create mode 100644 Scan/STLcd/numbers/0.bmp create mode 100644 Scan/STLcd/numbers/1.bmp create mode 100644 Scan/STLcd/numbers/2.bmp create mode 100644 Scan/STLcd/numbers/3.bmp create mode 100644 Scan/STLcd/numbers/4.bmp create mode 100644 Scan/STLcd/numbers/5.bmp create mode 100644 Scan/STLcd/numbers/6.bmp create mode 100644 Scan/STLcd/numbers/7.bmp create mode 100644 Scan/STLcd/numbers/8.bmp create mode 100644 Scan/STLcd/numbers/9.bmp diff --git a/Scan/STLcd/capabilities.kll b/Scan/STLcd/capabilities.kll index 49319d2..62d52c0 100644 --- a/Scan/STLcd/capabilities.kll +++ b/Scan/STLcd/capabilities.kll @@ -63,3 +63,14 @@ STLcdDefaultImage = " 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, "; + +# Layer Status Display + +LCDLayerDisplay => LCD_layerStack_capability(); + + +# LCD Module Enabled + +LCDEnabled => LCDEnabled_define; +LCDEnabled = 1; + diff --git a/Scan/STLcd/lcd_scan.c b/Scan/STLcd/lcd_scan.c index a7d7d44..639920b 100644 --- a/Scan/STLcd/lcd_scan.c +++ b/Scan/STLcd/lcd_scan.c @@ -342,6 +342,95 @@ inline uint8_t LCD_scan() +// ----- Capabilities ----- + +uint16_t LCD_layerStack_prevSize = 0; +void LCD_layerStack_capability( uint8_t state, uint8_t stateType, uint8_t *args ) +{ + // Display capability name + if ( stateType == 0xFF && state == 0xFF ) + { + print("LCD_layerStack_capability"); + return; + } + + // Parse the layer stack, top to bottom + extern uint16_t macroLayerIndexStack[]; + extern uint16_t macroLayerIndexStackSize; + + // Only process if the stack size has changed + if ( macroLayerIndexStackSize == LCD_layerStack_prevSize ) + { + return; + } + LCD_layerStack_prevSize = macroLayerIndexStackSize; + + // Number data for LCD + const uint8_t numbers[10][128] = { + { STLcdNumber0_define }, + { STLcdNumber1_define }, + { STLcdNumber2_define }, + { STLcdNumber3_define }, + { STLcdNumber4_define }, + { STLcdNumber5_define }, + { STLcdNumber6_define }, + { STLcdNumber7_define }, + { STLcdNumber8_define }, + { STLcdNumber9_define }, + }; + + // Only display if there are layers active + if ( macroLayerIndexStackSize > 0 ) + { + + // Iterate through each of the pages + // XXX Many of the values here are hard-coded + // Eventually a proper font rendering engine should take care of things like this... -HaaTa + for ( uint8_t page = 0; page < LCD_TOTAL_VISIBLE_PAGES; page++ ) + { + // Set the register page + LCD_writeControlReg( 0xB0 | ( 0x0F & page ) ); + + // Set starting address + LCD_writeControlReg( 0x10 ); + LCD_writeControlReg( 0x00 ); + + // Write data + for ( uint16_t layer = 1; layer <= macroLayerIndexStackSize; layer++ ) + { + uint16_t layerIndex = macroLayerIndexStack[ macroLayerIndexStackSize - layer ]; + + // Default to 0, if over 9 + if ( layerIndex > 9 ) + { + layerIndex = 0; + } + + // Write page of number to display + SPI_write( (uint8_t*)&numbers[ layerIndex ][ page * 32 ], 32 ); + } + + // Blank out rest of display + uint8_t data = 0; + for ( uint8_t c = 0; c < 4 - macroLayerIndexStackSize; c++ ) + { + for ( uint8_t byte = 0; byte < 32; byte++ ) + { + SPI_write( &data, 1 ); + } + } + } + } + else + { + // Write default image + for ( uint8_t page = 0; page < LCD_TOTAL_VISIBLE_PAGES; page++ ) + LCD_writeDisplayReg( page, (uint8_t *)&STLcdDefaultImage[page * LCD_PAGE_LEN], LCD_PAGE_LEN ); + } +} + + + // ----- CLI Command Functions ----- void cliFunc_lcdInit( char* args ) diff --git a/Scan/STLcd/numbers/0.bmp b/Scan/STLcd/numbers/0.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9eb7e67e8b25d15fc6a84f026e32052c2e39b16a GIT binary patch literal 4234 zcmeH_p>6^}6h((XNLoeG)NW7&-PIUORYj}O`vbLD3 z35pHVH*c#D-N|7>sJ&c5>9pWMLx{{R2| zCs%~F?miua_8mt#<%5(kFxjtV$OM4tI_v-BWrE~f6S=!@xxmRb`FP+Pm&(a>pOTA|p?vtPZ literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/1.bmp b/Scan/STLcd/numbers/1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c203d1a0f1fb69bf0f1aa2e9dbc055c9a8ec8f66 GIT binary patch literal 4234 zcmZ?r?Gj)BgDxOh1H=kY%m`#L1KA8vc@Pr;{xdK@5J>31lY3Bc|DmrMfji_x^fNH9Aag*5kO)9p@L>{-BUw2>e%uNH6~YY+VRs literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/2.bmp b/Scan/STLcd/numbers/2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..07b5e85fedf280b6c8550b99f25a876b8a802852 GIT binary patch literal 4234 zcmZ?r?Gj)BgDxOh1H=kY%m`#L1KA8vc@Pr;{xdK@5J>31lY3Bc|DmrMfji_x^fNH9Aag*5AOR4U9vI0=6ed0FM)UHh{YW7& z8vfYRKT;6Ul!+_+X=*8w;iLAC#y_?+fRsdN%EV?jEyQqnf);jRGjr5_>>+?HtY{&I z-S+=_+XUPY8^L|In&Wam5$4#c`!RYTJX$yixnHhXAhdqP948+Xtrp F0RR~8lb`?q literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/3.bmp b/Scan/STLcd/numbers/3.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7ec47ce678ba6340f992e918f4027eb90ea8b561 GIT binary patch literal 4234 zcmZ?r?Gj)BgDxOh1H=kY%m`#L1KA8vc@Pr;{xdK@5J>31lY3Bc|DmrMfji_x^fNH9Aag*5AOR4U9vI0=6ed0FM)UHh{YW7& z(!(DqD5%236`oWvoCrfk?Z;l85fOA$Q8F6-)CqrF;YhAHsgX;rJ-GCZ+D}>t;0i}_ z#YwaMKh@hrq}oredR*Z{u6d;D8?~Q0Yp%RF>@ nVSHTbsVxq(51ppAJ-Ez6w-?68rJma2F#FJHYTJX$JY;(TVg3I! literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/4.bmp b/Scan/STLcd/numbers/4.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bd3bc5f017dcdd328311bbf3ae3da99ca2dd2a9d GIT binary patch literal 4234 zcmeH{u?_)27=-t7BB7Fq_M(!jU9Him6x8Z_0j*Y}QQw=Wy@ZEQtJy>1pJX;M$!>QW zEB}nS`8dmReHyvDZx!Uf}*GIXz6qDk3&#I~# z*L6MfyWcd;U@^SqfyVN~;Q zF%fE?nkPuG)IK#2Fe21GHBXRWseNi5U__{WYMvm$Qv1|Az=%-$)I33grS_?LfDxhg dsd<6~OYKwh03$-}Q}YA~mfEN00Y=0>eJ_U%ch~>` literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/5.bmp b/Scan/STLcd/numbers/5.bmp new file mode 100644 index 0000000000000000000000000000000000000000..545747fa76867000508a789461fdd7079e2b9b94 GIT binary patch literal 4234 zcmZ?r?Gj)BgDxOh1H=kY%m`#L1KA8vc@Pr;{xdK@5J>31lY3Bc|DmrMfji_x^fNH9Aag*5AOR4U9vI0=6ed0FM)UHh{YW7& z(!(DqD5%236`oWvoCrfk?Z;l85fOA$Q8F6-q=i4O@S?UjuE?dfJ-EypwI6#3;0iBl zi(|L_KV8~BAiv-OxcrGrJ+;M0?I*3g8V!HyhQMG=f4JO5t~jnxBiB4q^^Mw(Jp@P% NM{?C;w|!vh9{?Eclb`?q literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/6.bmp b/Scan/STLcd/numbers/6.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5f7a3c1c934531b35cbab905a5cdc4b97c938cd6 GIT binary patch literal 4234 zcmZ?r?Gj)BgDxOh1H=kY%m`#L1KA8vc@Pr;{xdK@5J>31lY3Bc|DmrMfji_x^fNH9Aag*5AOR4U9vI0=6ed0FM)UHh{YW7& z8vfYRKT;5p#KaYzxC|jxJuY)#;-s2Ks(P3`xM)(%BUL>vdtu_Fnn$X7m_4{?Qq3b( zJuZ7;;-s2Ks(P3`xM)(%!=;|u;-tEF)PC&cBDvu*8vfWr09SZoS51Ap@&Z`6M5AwX(4lB*usb^x@c79Icq literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/7.bmp b/Scan/STLcd/numbers/7.bmp new file mode 100644 index 0000000000000000000000000000000000000000..24d55972e59d97f0fcb58500af983879a748839d GIT binary patch literal 4234 zcmZ?r?Gj)BgDxOh1H=kY%m`#L1KA8vc@Pr;{xdK@5J>31lY3Bc|DmrMfji_x^fNH9Aag*5&=7!($A)QWC5qA5?544oN9{)n zfzj|EP5;=^08$d6DHEIBqxqkvMLtS=(j)wF*?~_S#gPhuFJ-EypwI6#3;0iBli(|L_Ki0l7we1F(hYSD31lY3Bc|DmrMfji_x^fNH9Aag*5AOR4U9vI0=6ed0FM)UHh{YW7& z8vfYRKT;5p#KaYzxC|jxJuY)#;-s2Ks(P3`xM)(%BUL>vdtu_Fnn$X7m_4{?Qq3b( zJuZ7;;-s2Ks(P3`xM)(%!=;|u;-tEF)PC&cBDvu*8vfWr09SZoS4~)yRP#txPsjzN znn$YoQTy?S0IA_gs(Spk|Hs*vz@=}n+K>+?Fyr?aX-FDph Ig_iaM0Ei@*jQ{`u literal 0 HcmV?d00001 diff --git a/Scan/STLcd/numbers/9.bmp b/Scan/STLcd/numbers/9.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1a0bcdc9917e5ed44312f4e0369ad50e369e6b2f GIT binary patch literal 4234 zcmZ?r?Gj)BgDxOh1H=kY%m`#L1KA8vc@Pr;{xdK@5J>31lY3Bc|DmrMfji_x^fNH9Aag*5AOR4U9vI0=6ed0FM)UHh{YW7& z(!(DqD5%236`oWvoCrfk?Z;l85fOA$Q8F6-q=i4O@S?UjuE?dfJ-EypwI6#3;0iBl zi(|L_KV8~BAiv-OxcrGrJt1*Y%_CL)sQvgufYk6LRXu*&ai?co`bO=?USHt~7jnf( d4S#a&!KH81e(WKDE4-*Jj@@?L`IVOT0|4w^79Icq literal 0 HcmV?d00001 -- 2.39.2