From eaacc18ab11937a673e5b57b58deb80007a71b3b Mon Sep 17 00:00:00 2001 From: Eric Tang Date: Fri, 14 Jul 2017 08:14:09 -0700 Subject: [PATCH] Make characterToSegmentSet use a lookup table --- right/src/led_display.c | 118 ++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 72 deletions(-) diff --git a/right/src/led_display.c b/right/src/led_display.c index c86ca16..b83264c 100644 --- a/right/src/led_display.c +++ b/right/src/led_display.c @@ -2,80 +2,54 @@ #include "slave_drivers/slave_driver_led_driver.h" #include "layer.h" +static const uint16_t capitalLetterToSegmentSet[] = { + 0b0000000011110111, + 0b0001001010001111, + 0b0000000000111001, + 0b0001001000001111, + 0b0000000011111001, + 0b0000000011110001, + 0b0000000010111101, + 0b0000000011110110, + 0b0001001000001001, + 0b0000000000001110, + 0b0011011000000000, + 0b0000000000111000, + 0b0000010100110110, + 0b0010000100110110, + 0b0000000000111111, + 0b0000000011110011, + 0b0010000000111111, + 0b0010000011110011, + 0b0000000011101101, + 0b0001001000000001, + 0b0000000000111110, + 0b0000110000110000, + 0b0010100000110110, + 0b0010110100000000, + 0b0001010100000000, + 0b0000110000001001, +}; + +static const uint16_t digitToSegmentSet[] = { + 0b0000110000111111, + 0b0000010000000110, + 0b0000100010001011, + 0b0000000011001111, + 0b0000000011100110, + 0b0010000001101001, + 0b0000000011110111, + 0b0000000000000111, + 0b0000000011111111, + 0b0000000011101111, +}; + static uint16_t characterToSegmentSet(char character) { switch (character) { - case 'A': - return 0b0000000011110111; - case 'B': - return 0b0001001010001111; - case 'C': - return 0b0000000000111001; - case 'D': - return 0b0001001000001111; - case 'E': - return 0b0000000011111001; - case 'F': - return 0b0000000011110001; - case 'G': - return 0b0000000010111101; - case 'H': - return 0b0000000011110110; - case 'I': - return 0b0001001000001001; - case 'J': - return 0b0000000000001110; - case 'K': - return 0b0011011000000000; - case 'L': - return 0b0000000000111000; - case 'M': - return 0b0000010100110110; - case 'N': - return 0b0010000100110110; - case 'O': - return 0b0000000000111111; - case 'P': - return 0b0000000011110011; - case 'Q': - return 0b0010000000111111; - case 'R': - return 0b0010000011110011; - case 'S': - return 0b0000000011101101; - case 'T': - return 0b0001001000000001; - case 'U': - return 0b0000000000111110; - case 'V': - return 0b0000110000110000; - case 'W': - return 0b0010100000110110; - case 'X': - return 0b0010110100000000; - case 'Y': - return 0b0001010100000000; - case 'Z': - return 0b0000110000001001; - case '0': - return 0b0000110000111111; - case '1': - return 0b0000010000000110; - case '2': - return 0b0000100010001011; - case '3': - return 0b0000000011001111; - case '4': - return 0b0000000011100110; - case '5': - return 0b0010000001101001; - case '6': - return 0b0000000011110111; - case '7': - return 0b0000000000000111; - case '8': - return 0b0000000011111111; - case '9': - return 0b0000000011101111; + case 'A' ... 'Z': + return capitalLetterToSegmentSet[character - 'A']; + case '0' ... '9': + return digitToSegmentSet[character - '0']; } return 0; }