| /*************************************************************************** |
| * __________ __ ___. |
| * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| * \/ \/ \/ \/ \/ |
| * $Id$ |
| * |
| * Copyright (C) 2002 Mats Lidell <matsl@contactor.se> |
| * |
| * All files in this archive are subject to the GNU General Public License. |
| * See the file COPYING in the source tree root for full license agreement. |
| * |
| * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| * KIND, either express or implied. |
| * |
| ****************************************************************************/ |
| #ifdef HAVE_LCD_CHARCELLS |
| |
| #include "sim_icons.h" |
| |
| #include <lcd.h> |
| #include <kernel.h> |
| #include <sprintf.h> |
| #include <string.h> |
| #include <debug.h> |
| |
| #define XPOS_volume 105 |
| #define XPOS_volume1 XPOS_volume + 15 |
| #define XPOS_volume2 XPOS_volume1 + 2 |
| #define XPOS_volume3 XPOS_volume2 + 2 |
| #define XPOS_volume4 XPOS_volume3 + 2 |
| #define XPOS_volume5 XPOS_volume4 + 2 |
| |
| #define BMPHEIGHT_battery 7 |
| #define BMPWIDTH_battery 14 |
| const unsigned char battery[] = { |
| 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, 0x14, 0x1c, |
| |
| }; |
| #define BMPHEIGHT_battery_bit 3 |
| #define BMPWIDTH_battery_bit 2 |
| const unsigned char battery_bit[] = { |
| 0x07, 0x07, |
| |
| }; |
| #define BMPHEIGHT_pause 7 |
| #define BMPWIDTH_pause 7 |
| const unsigned char pause[] = { |
| 0x7f, 0x7f, 0x7f, 0x00, 0x7f, 0x7f, 0x7f, |
| |
| }; |
| #define BMPHEIGHT_play 7 |
| #define BMPWIDTH_play 8 |
| const unsigned char play[] = { |
| 0x7f, 0x7f, 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x08, |
| |
| }; |
| #define BMPHEIGHT_record 8 |
| #define BMPWIDTH_record 4 |
| const unsigned char record[] = { |
| 0x08, 0x1c, 0x1c, 0x08, |
| |
| }; |
| #define BMPHEIGHT_volume 7 |
| #define BMPWIDTH_volume 13 |
| const unsigned char volume[] = { |
| 0x0e, 0x30, 0x60, 0x30, 0x0e, 0x30, 0x48, 0x48, 0x48, 0x30, 0x00, 0x7e, 0x00, |
| |
| }; |
| #define BMPHEIGHT_volume1 7 |
| #define BMPWIDTH_volume1 2 |
| const unsigned char volume1[] = { |
| 0x00, 0x70, |
| |
| }; |
| #define BMPHEIGHT_volume2 7 |
| #define BMPWIDTH_volume2 2 |
| const unsigned char volume2[] = { |
| 0x00, 0x78, |
| |
| }; |
| #define BMPHEIGHT_volume3 7 |
| #define BMPWIDTH_volume3 2 |
| const unsigned char volume3[] = { |
| 0x00, 0x7c, |
| |
| }; |
| #define BMPHEIGHT_volume4 7 |
| #define BMPWIDTH_volume4 2 |
| const unsigned char volume4[] = { |
| 0x00, 0x7e, |
| |
| }; |
| #define BMPHEIGHT_volume5 7 |
| #define BMPWIDTH_volume5 2 |
| const unsigned char volume5[] = { |
| 0x00, 0x7f, |
| |
| }; |
| #define BMPHEIGHT_usb 7 |
| #define BMPWIDTH_usb 22 |
| const unsigned char usb[] = { |
| 0x08, 0x1c, 0x1c, 0x08, 0x0c, 0x0e, 0x1b, 0x39, 0x69, 0x49, 0x49, 0x49, 0x4b, 0x4b, 0x48, 0x48, 0x68, 0x68, 0x08, 0x1c, 0x1c, 0x08, |
| |
| }; |
| #define BMPHEIGHT_audio 7 |
| #define BMPWIDTH_audio 27 |
| const unsigned char audio[] = { |
| 0x1c, 0x22, 0x41, 0x79, 0x55, 0x55, 0x79, 0x41, 0x5d, 0x61, 0x61, 0x5d, 0x41, 0x7d, 0x65, 0x65, 0x59, 0x41, 0x7d, 0x41, 0x59, 0x65, 0x65, 0x59, 0x41, 0x22, 0x1c, |
| |
| }; |
| #define BMPHEIGHT_param 7 |
| #define BMPWIDTH_param 31 |
| const unsigned char param[] = { |
| 0x1c, 0x22, 0x41, 0x7d, 0x55, 0x55, 0x49, 0x41, 0x79, 0x55, 0x55, 0x79, 0x41, 0x7d, 0x55, 0x75, 0x69, 0x41, 0x79, 0x55, 0x55, 0x79, 0x41, 0x7d, 0x49, 0x51, 0x49, 0x7d, 0x41, 0x22, 0x1c, |
| |
| }; |
| |
| |
| struct icon_info |
| { |
| const unsigned char* bitmap; |
| int xpos; |
| int ypos; |
| int width; |
| int height; |
| }; |
| |
| static struct icon_info icons [] = |
| { |
| { battery, 0, 0, BMPWIDTH_battery, BMPHEIGHT_battery }, /* ICON_BATTERY */ |
| { battery_bit, 2, 2, BMPWIDTH_battery_bit, BMPHEIGHT_battery_bit }, /* ICON_BATTERY_1 */ |
| { battery_bit, 5, 2, BMPWIDTH_battery_bit, BMPHEIGHT_battery_bit }, /* ICON_BATTERY_2 */ |
| { battery_bit, 8, 2, BMPWIDTH_battery_bit, BMPHEIGHT_battery_bit }, /* ICON_BATTERY_3 */ |
| { usb, 0, 40, BMPWIDTH_usb, BMPHEIGHT_usb }, /* ICON_USB */ |
| { play, 40, 0, BMPWIDTH_play, BMPHEIGHT_play }, /* ICON_PLAY */ |
| { record, 48, 0, BMPWIDTH_record, BMPHEIGHT_record }, /* ICON_RECORD */ |
| { pause, 60, 0, BMPWIDTH_pause, BMPHEIGHT_pause }, /* ICON_PAUSE */ |
| { audio, 40, 40, BMPWIDTH_audio, BMPHEIGHT_audio }, /* ICON_AUDIO */ |
| { 0, 0, 0, 0, 0 }, /* ICON_REPEAT */ |
| { 0, 0, 0, 0, 0 }, /* ICON_1 */ |
| { volume, XPOS_volume, 0, BMPWIDTH_volume, BMPHEIGHT_volume }, /* ICON_VOLUME */ |
| { volume1, XPOS_volume1, 0, BMPWIDTH_volume1, BMPHEIGHT_volume1 }, /* ICON_VOLUME1 */ |
| { volume2, XPOS_volume2, 0, BMPWIDTH_volume2, BMPHEIGHT_volume2 }, /* ICON_VOLUME2 */ |
| { volume3, XPOS_volume3, 0, BMPWIDTH_volume3, BMPHEIGHT_volume3 }, /* ICON_VOLUME3 */ |
| { volume4, XPOS_volume4, 0, BMPWIDTH_volume4, BMPHEIGHT_volume4 }, /* ICON_VOLUME4 */ |
| { volume5, XPOS_volume5, 0, BMPWIDTH_volume5, BMPHEIGHT_volume5 }, /* ICON_VOLUME5 */ |
| { param, 90, 40, BMPWIDTH_param, BMPHEIGHT_param }, /* ICON_PARAM */ |
| }; |
| |
| void display_icon(int icon, bool enable) |
| { |
| if (enable) |
| lcd_bitmap((unsigned char*)icons[icon].bitmap, icons[icon].xpos, icons[icon].ypos, icons[icon].width, icons[icon].height, true); |
| else |
| lcd_clearrect(icons[icon].xpos, icons[icon].ypos, icons[icon].width, icons[icon].height); |
| } |
| |
| void sim_battery_icon(int icon, bool enable) |
| { |
| static bool battery_icons[4] = { true, true, true, true }; |
| int i; |
| |
| battery_icons[icon] = enable; |
| |
| for (i = 0; i <= ICON_BATTERY_3; ++i) |
| { |
| display_icon(icon, battery_icons[i]); |
| } |
| }; |
| |
| void |
| lcd_icon(int icon, bool enable) |
| { |
| switch (icon) |
| { |
| case ICON_BATTERY: |
| case ICON_BATTERY_1: |
| case ICON_BATTERY_2: |
| case ICON_BATTERY_3: |
| sim_battery_icon(icon, enable); |
| break; |
| |
| /* Ignore. Don't know these icons yet */ |
| case ICON_REPEAT: |
| case ICON_1: |
| break; |
| |
| default: |
| display_icon(icon, enable); |
| break; |
| } |
| lcd_update(); |
| } |
| |
| #endif /* HAVE_LCD_CHARCELLS */ |