Archived
1
0

Adding basic support for LCDLayerDisplay using capabilities

- Requires lcdFuncMap.kll instead of stdFuncMap.kll
This commit is contained in:
Jacob Alexander 2015-08-18 01:10:44 -07:00
parent 3518592893
commit c0fb084eb4
12 changed files with 100 additions and 0 deletions

View File

@ -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;

View File

@ -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 )

BIN
Scan/STLcd/numbers/0.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/1.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/2.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/3.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/4.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/5.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/6.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/7.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/8.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Scan/STLcd/numbers/9.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB