Compare commits
76 Commits
956eeee1a5
...
4544f8706a
| Author | SHA1 | Date |
|---|---|---|
|
|
4544f8706a | |
|
|
c4852aca5d | |
|
|
4d0b015a07 | |
|
|
68aec080c8 | |
|
|
c4969c895c | |
|
|
e11ec36ca5 | |
|
|
0e5a8efdd8 | |
|
|
45686415a7 | |
|
|
50e847e2ee | |
|
|
8c941905e7 | |
|
|
23c2dee80f | |
|
|
0a0bd9b3ea | |
|
|
280aa1f752 | |
|
|
f80c16dbef | |
|
|
7c76b8302a | |
|
|
f076d1714a | |
|
|
a02379104d | |
|
|
0bf9b77a4a | |
|
|
8a7e8169a2 | |
|
|
bce08be772 | |
|
|
141f232b91 | |
|
|
766f7ee0ba | |
|
|
029313ce99 | |
|
|
d1f1a2cc87 | |
|
|
5daf5e794b | |
|
|
49af730f91 | |
|
|
794345d3ba | |
|
|
c5428ad81f | |
|
|
6436477ec2 | |
|
|
ee900b5657 | |
|
|
db03ac501c | |
|
|
740c709a82 | |
|
|
d654581f4d | |
|
|
f0c60a0024 | |
|
|
055c7de00c | |
|
|
bc41d27730 | |
|
|
0e57fa452f | |
|
|
d960d88147 | |
|
|
c16a13edc3 | |
|
|
39954589e8 | |
|
|
db07d3bb0c | |
|
|
57caea9bf7 | |
|
|
ce7e488994 | |
|
|
70e608e2ce | |
|
|
66ccfdccf6 | |
|
|
2bca0c5673 | |
|
|
8c3c14ccf8 | |
|
|
7b5667b179 | |
|
|
f179a46c5d | |
|
|
c724ddd2c9 | |
|
|
d4973f633e | |
|
|
c05301d8b9 | |
|
|
8f0d0a3a52 | |
|
|
e56f480135 | |
|
|
9516586a9c | |
|
|
65875d5e9c | |
|
|
d7af2cee1a | |
|
|
5290d897a0 | |
|
|
ce2cfd9cd1 | |
|
|
b36c9c785e | |
|
|
0d906e9e9f | |
|
|
b139aa7ca7 | |
|
|
89e7401955 | |
|
|
65f38bb5a3 | |
|
|
c8e32958a7 | |
|
|
805ca0c94b | |
|
|
89e28ce693 | |
|
|
2f84c3bb9b | |
|
|
41052d334d | |
|
|
e62c2270af | |
|
|
f8675e3529 | |
|
|
9b3d457da6 | |
|
|
42534a28b8 | |
|
|
33f48d9171 | |
|
|
d48e3fa63a | |
|
|
5a9f7c81ea |
|
|
@ -125,6 +125,8 @@ static void app_adc_pick_process(void)
|
|||
{
|
||||
pick_hold_tick = now;
|
||||
pick_fsm = PICK_FSM_STATE_DOWN;
|
||||
/* 音师:拨片下拨即响(进入 DOWN 触发),不要等复位 */
|
||||
MainTask_Sendmsg(MSG_ID_BP_KEY,PICK_STATE_DOWN,0,0);
|
||||
}
|
||||
if(curstate == PICK_STATE_UP)
|
||||
{
|
||||
|
|
@ -136,8 +138,6 @@ static void app_adc_pick_process(void)
|
|||
if(curstate != PICK_STATE_DOWN)
|
||||
{
|
||||
pick_fsm = PICK_FSM_STATE_IDLE;
|
||||
//发送下拨消息
|
||||
MainTask_Sendmsg(MSG_ID_BP_KEY,PICK_STATE_DOWN,0,0);
|
||||
}
|
||||
break;
|
||||
case PICK_FSM_STATE_UP:
|
||||
|
|
@ -214,6 +214,16 @@ static void app_adc_key_process(uint8_t idx)
|
|||
}
|
||||
|
||||
/* ==================== ADC1 in4 ==================== */
|
||||
/* 快速探测 Type-C / USB 是否接入(关机开机路径共用) */
|
||||
bool app_adc_usb_is_plugged(void)
|
||||
{
|
||||
uint16_t val;
|
||||
BSP_SelectAdcChannel(4); /* E_ADC1_FUNCTION_USB_CHECK */
|
||||
Delay_us(20);
|
||||
val = ADC_ReadChannel(ADC_CHANNEL_1) >> 5;
|
||||
return (val > 80) ? true : false;
|
||||
}
|
||||
|
||||
static void app_adc_charge_process(void)
|
||||
{
|
||||
uint16_t val = ADC_ReadChannel(ADC_CHANNEL_1) >> 5;
|
||||
|
|
@ -224,11 +234,17 @@ static void app_adc_charge_process(void)
|
|||
if (usb_charging_state != 1)
|
||||
{
|
||||
usb_charging_state = 1;
|
||||
usb_charging_laststate = 1;
|
||||
if (powon)
|
||||
{
|
||||
MainTask_Sendmsg(MSG_ID_CHARG, usb_charging_state, usb_charging_laststate, 0);
|
||||
}
|
||||
usb_charging_laststate = 1;
|
||||
else
|
||||
{
|
||||
/* 关机态插电:立即进全屏充电页,勿走开机 Logo */
|
||||
LOG_I("CHG", "usb plug while soft-off → charge UI");
|
||||
MainTask_Sendmsg(MSG_ID_POWOFF_CHARG, percentage, usb_charging_state, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* 拔掉充电:阈值40,迟滞防抖,仅状态跳变时执行一次 */
|
||||
|
|
@ -237,19 +253,18 @@ static void app_adc_charge_process(void)
|
|||
if (usb_charging_state != 0)
|
||||
{
|
||||
usb_charging_state = 0;
|
||||
usb_charging_laststate = 0;
|
||||
|
||||
// 开机场景:发送状态消息
|
||||
if (powon)
|
||||
{
|
||||
MainTask_Sendmsg(MSG_ID_CHARG, usb_charging_state, usb_charging_laststate, 0);
|
||||
MainTask_Sendmsg(MSG_ID_CHARG, usb_charging_state, 1, 0);
|
||||
}
|
||||
// 关机场景:直接切断主电源
|
||||
else
|
||||
{
|
||||
/* 通知 UI 熄灭充电页并关主电 */
|
||||
MainTask_Sendmsg(MSG_ID_POWOFF_CHARG, percentage, 0, 0);
|
||||
BSP_MainPowerEnable(0);
|
||||
}
|
||||
|
||||
usb_charging_laststate = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -271,12 +286,8 @@ static void app_adc_hp_process(void)
|
|||
|
||||
/* ==================== ADC1 in6 ==================== */
|
||||
|
||||
static void app_adc_volume_process(void)
|
||||
static void app_adc_volume_map_level(uint16_t val)
|
||||
{
|
||||
uint16_t val = ADC_ReadChannel(ADC_CHANNEL_1)>>5;
|
||||
if(abs((int16_t)vol_last - (int16_t)val) > 2)
|
||||
{
|
||||
vol_last = val;
|
||||
/* 5 格状态栏音量条:0=静音,5=最大 */
|
||||
if (val <= 5) level = 0;
|
||||
else if (val <= 35) level = 1;
|
||||
|
|
@ -284,7 +295,20 @@ static void app_adc_volume_process(void)
|
|||
else if (val <= 95) level = 3;
|
||||
else if (val <= 115) level = 4;
|
||||
else level = 5;
|
||||
}
|
||||
|
||||
void app_adc_sync_volume(uint16_t val)
|
||||
{
|
||||
vol_last = val;
|
||||
app_adc_volume_map_level(val);
|
||||
}
|
||||
|
||||
static void app_adc_volume_process(void)
|
||||
{
|
||||
uint16_t val = ADC_ReadChannel(ADC_CHANNEL_1)>>5;
|
||||
if(abs((int16_t)vol_last - (int16_t)val) > 2)
|
||||
{
|
||||
app_adc_sync_volume(val);
|
||||
MainTask_Sendmsg(MSG_ID_EC_VOL, val, level, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,4 +24,7 @@ extern bool usb_charging_laststate;
|
|||
extern uint8_t percentage;
|
||||
void app_adc_scan_all(void);
|
||||
void app_adc_in1_scan_part(uint8_t channel);
|
||||
bool app_adc_usb_is_plugged(void);
|
||||
/* 开机/主动采样后同步 vol_last 与 level,避免扫描任务误触发或跳变 */
|
||||
void app_adc_sync_volume(uint16_t val);
|
||||
#endif
|
||||
266
APP/app_log.c
|
|
@ -14,11 +14,103 @@ static char s_debug_level = 'D';
|
|||
static char s_cmd_buf[48];
|
||||
static uint8_t s_cmd_len;
|
||||
|
||||
/* RTT 二进制烧录:写到 W25Q128(ui0902 或本地曲目) */
|
||||
static uint8_t s_flash_mode;
|
||||
static uint32_t s_flash_base;
|
||||
static uint32_t s_flash_addr;
|
||||
static uint32_t s_flash_remain;
|
||||
static uint32_t s_flash_last_sector;
|
||||
static uint16_t s_flash_page_len;
|
||||
static uint8_t s_flash_page[256];
|
||||
static char s_flash_ok_tag[24];
|
||||
|
||||
uint8_t app_log_flash_busy(void)
|
||||
{
|
||||
return s_flash_mode;
|
||||
}
|
||||
|
||||
static uint32_t app_log_ms(void)
|
||||
{
|
||||
return (uint32_t)(rt_tick_get() * 1000U / RT_TICK_PER_SECOND);
|
||||
}
|
||||
|
||||
static void app_log_flash_flush_page(void)
|
||||
{
|
||||
uint32_t sector;
|
||||
char ack[40];
|
||||
|
||||
if (s_flash_page_len == 0U) {
|
||||
return;
|
||||
}
|
||||
|
||||
sector = s_flash_addr & ~0xFFFU;
|
||||
if (sector != s_flash_last_sector) {
|
||||
W25Q128_Erase_Sector(sector);
|
||||
s_flash_last_sector = sector;
|
||||
}
|
||||
W25Q128_Write(s_flash_page, s_flash_addr, s_flash_page_len);
|
||||
s_flash_addr += s_flash_page_len;
|
||||
s_flash_remain -= s_flash_page_len;
|
||||
s_flash_page_len = 0U;
|
||||
|
||||
/* 每页 ACK,避免主机打爆 RTT 下行缓冲 */
|
||||
snprintf(ack, sizeof(ack), "FLASH_ACK %lu\n", (unsigned long)s_flash_addr);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, ack);
|
||||
}
|
||||
|
||||
static void app_log_flash_feed(const uint8_t *data, unsigned len)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < len && s_flash_remain > 0U; i++) {
|
||||
if (s_flash_page_len == 0U && s_flash_addr == s_flash_base && i == 0U) {
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "FLASH_RX\n");
|
||||
}
|
||||
s_flash_page[s_flash_page_len++] = data[i];
|
||||
if (s_flash_page_len >= sizeof(s_flash_page) ||
|
||||
s_flash_page_len >= s_flash_remain) {
|
||||
app_log_flash_flush_page();
|
||||
}
|
||||
}
|
||||
|
||||
if (s_flash_remain == 0U && s_flash_mode) {
|
||||
s_flash_mode = 0U;
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, s_flash_ok_tag);
|
||||
UI_DrawModeSelectScreen();
|
||||
}
|
||||
}
|
||||
|
||||
static void app_log_flash_start_at(uint32_t base, uint32_t size, const char *go_tag, const char *ok_tag)
|
||||
{
|
||||
char msg[80];
|
||||
|
||||
if (size == 0U || size > (2U * 1024U * 1024U)) {
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "FLASH_ERR size\n");
|
||||
return;
|
||||
}
|
||||
|
||||
s_flash_mode = 1U;
|
||||
s_flash_base = base;
|
||||
s_flash_addr = base;
|
||||
s_flash_remain = size;
|
||||
s_flash_last_sector = 0xFFFFFFFFUL;
|
||||
s_flash_page_len = 0U;
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
strncpy(s_flash_ok_tag, ok_tag, sizeof(s_flash_ok_tag) - 1U);
|
||||
s_flash_ok_tag[sizeof(s_flash_ok_tag) - 1U] = '\0';
|
||||
|
||||
snprintf(msg, sizeof(msg),
|
||||
"%s base=0x%08lX size=%lu\n",
|
||||
go_tag, (unsigned long)base, (unsigned long)size);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, msg);
|
||||
}
|
||||
|
||||
static void app_log_flash_start(uint32_t size)
|
||||
{
|
||||
app_log_flash_start_at(UI0902_RES_BASE, size, "FLASH_UI0902_GO", "FLASH_UI0902_OK\n");
|
||||
}
|
||||
|
||||
static void app_log_slot_store(const char *line)
|
||||
{
|
||||
uint16_t idx = s_head;
|
||||
|
|
@ -161,10 +253,174 @@ uint8_t app_log_try_command(const char *cmd)
|
|||
LOG_I("LOG", "level set %c", s_debug_level);
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "tp status", 9) == 0) {
|
||||
TP_LogStatus();
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "tp live off", 11) == 0) {
|
||||
TP_SetLiveMode(0);
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "tp live", 7) == 0) {
|
||||
TP_SetLiveMode(1);
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "sys reset", 9) == 0) {
|
||||
app_log_sys_reset();
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "flash ui0902 ", 13) == 0) {
|
||||
uint32_t size = (uint32_t)strtoul(cmd + 13, NULL, 10);
|
||||
app_log_flash_start(size);
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "flash haitian ", 14) == 0) {
|
||||
uint32_t size = (uint32_t)strtoul(cmd + 14, NULL, 10);
|
||||
app_log_flash_start_at(FLASH_ADDR_SONG_HAITIAN, size,
|
||||
"FLASH_HAITIAN_GO", "FLASH_HAITIAN_OK\n");
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "tone status", 11) == 0) {
|
||||
uint8_t hdr[16];
|
||||
uint8_t name[40];
|
||||
uint8_t cur_hdr[16];
|
||||
char *pname;
|
||||
char line[192];
|
||||
const char *map;
|
||||
W25Q128_Read(hdr, FLASH_ADDR_SONG_HAITIAN, 16);
|
||||
W25Q128_Read(name, FLASH_ADDR_SONG_HAITIAN + 1280 + 4, 32);
|
||||
name[32] = 0;
|
||||
W25Q128_Read(cur_hdr, (uint32_t)ADDRESS, 16);
|
||||
pname = AutoBandTop1_GetPresetName();
|
||||
if (ADDRESS == EXTFLASH_BIN1_RHYTHM_ADDR)
|
||||
map = "BIN1_RHYTHM";
|
||||
else if (ADDRESS == EXTFLASH_BIN2_SONG_HAITIAN_ADDR)
|
||||
map = "BIN2_SONG_HAITIAN";
|
||||
else if (ADDRESS == EXTFLASH_BIN3_UNIVERSAL_ADDR)
|
||||
map = "BIN3_UNIVERSAL";
|
||||
else
|
||||
map = "UNKNOWN";
|
||||
snprintf(line, sizeof(line),
|
||||
"TONE tab=%u sw=%u addr=0x%08lX map=%s songidx=%u rhyt=%u\n",
|
||||
(unsigned)mGuiData[GUI_TAB_INDEX].Current,
|
||||
(unsigned)mGuiData[GUI_AUTOBAND_SW].Current,
|
||||
(unsigned long)ADDRESS, map,
|
||||
(unsigned)ParamGuiData[EXPRESS_MODE_PARAM].Current,
|
||||
(unsigned)ParamGuiData[SONG_MODE_PARAM].Current);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, line);
|
||||
snprintf(line, sizeof(line),
|
||||
"TONE map BIN1=0x%08lX BIN2=0x%08lX BIN3=0x%08lX\n",
|
||||
(unsigned long)EXTFLASH_BIN1_RHYTHM_ADDR,
|
||||
(unsigned long)EXTFLASH_BIN2_SONG_HAITIAN_ADDR,
|
||||
(unsigned long)EXTFLASH_BIN3_UNIVERSAL_ADDR);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, line);
|
||||
snprintf(line, sizeof(line),
|
||||
"TONE @ADDRESS magic=%02X%02X%02X%02X cnt=%lu\n",
|
||||
cur_hdr[0], cur_hdr[1], cur_hdr[2], cur_hdr[3],
|
||||
(unsigned long)(cur_hdr[12] | (cur_hdr[13] << 8) |
|
||||
(cur_hdr[14] << 16) | (cur_hdr[15] << 24)));
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, line);
|
||||
snprintf(line, sizeof(line),
|
||||
"TONE @BIN2 magic=%02X%02X%02X%02X max=%lu cnt=%lu name=%.16s\n",
|
||||
hdr[0], hdr[1], hdr[2], hdr[3],
|
||||
(unsigned long)(hdr[8] | (hdr[9] << 8) | (hdr[10] << 16) | (hdr[11] << 24)),
|
||||
(unsigned long)(hdr[12] | (hdr[13] << 8) | (hdr[14] << 16) | (hdr[15] << 24)),
|
||||
(char *)name);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, line);
|
||||
snprintf(line, sizeof(line),
|
||||
"TONE loaded name=%s count=%d\n",
|
||||
pname ? pname : "(null)",
|
||||
AutoBandTop1_GetPresetItemCount());
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, line);
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "tone reload", 11) == 0) {
|
||||
char line[96];
|
||||
UI_ReloadTonePreset();
|
||||
snprintf(line, sizeof(line),
|
||||
"TONE_RELOAD addr=0x%08lX name=%s\n",
|
||||
(unsigned long)ADDRESS,
|
||||
AutoBandTop1_GetPresetName() ? AutoBandTop1_GetPresetName() : "(null)");
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, line);
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "tone local", 10) == 0) {
|
||||
char line[128];
|
||||
int ret;
|
||||
mGuiData[GUI_TAB_INDEX].Current = 1; /* 专业 */
|
||||
mGuiData[GUI_AUTOBAND_SW].Current = 1; /* 本地曲目 */
|
||||
ParamGuiData[EXPRESS_MODE_PARAM].Current = 0;
|
||||
UI_ApplyToneAddress();
|
||||
AutoBandTop1_Stop();
|
||||
StartFlag = 0;
|
||||
ret = AutoBandTop1_LoadPresetItemFromFlash(0);
|
||||
snprintf(line, sizeof(line),
|
||||
"TONE_LOCAL ret=%d addr=0x%08lX map=BIN2@0x%08lX name=%s count=%d %s\n",
|
||||
ret, (unsigned long)ADDRESS,
|
||||
(unsigned long)EXTFLASH_BIN2_SONG_HAITIAN_ADDR,
|
||||
AutoBandTop1_GetPresetName() ? AutoBandTop1_GetPresetName() : "(null)",
|
||||
AutoBandTop1_GetPresetItemCount(),
|
||||
(ADDRESS == EXTFLASH_BIN2_SONG_HAITIAN_ADDR) ? "OK" : "MISMATCH");
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, line);
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "tone pick", 9) == 0) {
|
||||
/* 模拟专业+本地曲目拨片(无和弦板) */
|
||||
mGuiData[GUI_TAB_INDEX].Current = 1;
|
||||
mGuiData[GUI_AUTOBAND_SW].Current = 1;
|
||||
KEY_ID_1629 = 0; /* 走默认和弦兜底 */
|
||||
StartFlag = 0;
|
||||
Pick_Handle();
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "TONE_PICK_DONE\n");
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "flash erase chip", 16) == 0) {
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "FLASH_ERASE_BEGIN\n");
|
||||
LOG_I("FLASH", "W25Q128 chip erase start");
|
||||
W25Q128_Erase_Chip();
|
||||
LOG_I("FLASH", "W25Q128 chip erase done");
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "FLASH_ERASE_OK\n");
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "ui boot", 7) == 0) {
|
||||
LCD_BLK_Set();
|
||||
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_BOOT_LOGO_W, UI0902_BOOT_LOGO_H,
|
||||
UI0902_BOOT_LOGO_ADDR);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "UI_BOOT_OK\n");
|
||||
return 1U;
|
||||
}
|
||||
if (strncmp(cmd, "ui charge", 9) == 0) {
|
||||
uint8_t peek[4];
|
||||
LCD_BLK_Set();
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
W25Q128_Read(peek, UI0902_CHARGE_SCREEN_ADDR, 4);
|
||||
if (peek[0] != 0xFF || peek[1] != 0xFF) {
|
||||
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_CHARGE_SCREEN_W, UI0902_CHARGE_SCREEN_H,
|
||||
UI0902_CHARGE_SCREEN_ADDR);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "UI_CHARGE_OK\n");
|
||||
} else {
|
||||
Draw_Charging_Icon(120, 150, 2, 0x3D7F);
|
||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "UI_CHARGE_EMPTY\n");
|
||||
}
|
||||
{
|
||||
const char *s = "50";
|
||||
uint16_t tw = g_ChargePctPercent.w;
|
||||
uint16_t x, y = 266;
|
||||
uint8_t i;
|
||||
for (i = 0; s[i]; i++)
|
||||
tw = (uint16_t)(tw + g_ChargePctDigits[s[i] - '0'].w);
|
||||
LCD_FillByColor(40, 262, 200, 290, UI0902_BG_COLOR);
|
||||
x = (uint16_t)((240 - tw) / 2);
|
||||
for (i = 0; s[i]; i++) {
|
||||
const ChargePctGlyph *g = &g_ChargePctDigits[s[i] - '0'];
|
||||
LCD_WR_PIC_Trans(x, y, g->w, g->h, g->data, BLACK);
|
||||
x = (uint16_t)(x + g->w);
|
||||
}
|
||||
LCD_WR_PIC_Trans(x, y, g_ChargePctPercent.w, g_ChargePctPercent.h,
|
||||
g_ChargePctPercent.data, BLACK);
|
||||
}
|
||||
return 1U;
|
||||
}
|
||||
return 0U;
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +451,7 @@ static void app_log_feed_char(char c)
|
|||
|
||||
void app_log_poll(void)
|
||||
{
|
||||
char rx[16];
|
||||
uint8_t rx[64];
|
||||
unsigned read_len;
|
||||
unsigned i;
|
||||
|
||||
|
|
@ -204,8 +460,13 @@ void app_log_poll(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (s_flash_mode) {
|
||||
app_log_flash_feed(rx, read_len);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < read_len; i++) {
|
||||
app_log_feed_char(rx[i]);
|
||||
app_log_feed_char((char)rx[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -222,5 +483,6 @@ void app_log_write(char level, const char *cat, const char *fmt, ...) { (void)le
|
|||
void app_log_poll(void) {}
|
||||
uint8_t app_log_try_command(const char *cmd) { (void)cmd; return 0U; }
|
||||
void app_log_set_ui_page(const char *name) { (void)name; }
|
||||
uint8_t app_log_flash_busy(void) { return 0U; }
|
||||
|
||||
#endif /* APP_LOG_ENABLE */
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ void app_log_write(char level, const char *cat, const char *fmt, ...);
|
|||
void app_log_poll(void);
|
||||
uint8_t app_log_try_command(const char *cmd);
|
||||
void app_log_set_ui_page(const char *name);
|
||||
uint8_t app_log_flash_busy(void);
|
||||
|
||||
#if APP_LOG_ENABLE
|
||||
|
||||
|
|
@ -53,6 +54,9 @@ void app_log_set_ui_page(const char *name);
|
|||
#define LOG_TP(fmt, ...) ((void)0)
|
||||
#endif
|
||||
|
||||
/* 触摸按下:始终 INFO,便于 log dump 排查硬件/坐标 */
|
||||
#define LOG_TPI(fmt, ...) LOG_I("TP", fmt, ##__VA_ARGS__)
|
||||
|
||||
#else
|
||||
|
||||
#define LOG_I(cat, fmt, ...) ((void)0)
|
||||
|
|
@ -60,6 +64,7 @@ void app_log_set_ui_page(const char *name);
|
|||
#define LOG_E(cat, fmt, ...) ((void)0)
|
||||
#define LOG_D(cat, fmt, ...) ((void)0)
|
||||
#define LOG_TP(fmt, ...) ((void)0)
|
||||
#define LOG_TPI(fmt, ...) ((void)0)
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ static uint8_t long_press_fired = 0;
|
|||
static uint8_t click_sent = 0;
|
||||
static uint16_t last_slide_x = 0;
|
||||
static uint16_t last_slide_y = 0;
|
||||
static uint32_t suppress_until = 0;
|
||||
|
||||
static inline uint16_t abs_diff(int16_t a, int16_t b)
|
||||
{
|
||||
|
|
@ -41,6 +42,14 @@ void app_touch_reset(void)
|
|||
last_slide_x = last_slide_y = 0;
|
||||
}
|
||||
|
||||
void app_touch_suppress(uint32_t ms)
|
||||
{
|
||||
uint32_t now = rt_tick_get();
|
||||
uint32_t ticks = (ms * RT_TICK_PER_SECOND + 999U) / 1000U;
|
||||
suppress_until = now + ticks;
|
||||
app_touch_reset();
|
||||
}
|
||||
|
||||
app_touch_result_t app_touch_process(uint16_t x, uint16_t y, uint8_t pressed)
|
||||
{
|
||||
app_touch_result_t r;
|
||||
|
|
@ -50,17 +59,29 @@ app_touch_result_t app_touch_process(uint16_t x, uint16_t y, uint8_t pressed)
|
|||
|
||||
uint32_t now = rt_tick_get();
|
||||
|
||||
/* 切页抑制窗口内丢弃按下,避免误触底栏设置 */
|
||||
if ((int32_t)(now - suppress_until) < 0) {
|
||||
if (!pressed) {
|
||||
app_touch_reset();
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
if (!pressed) {
|
||||
if (!long_press_fired && !click_sent &&
|
||||
(touch_state == TOUCH_PRESS_WAIT_STABLE ||
|
||||
touch_state == TOUCH_PRESS_STABLE))
|
||||
touch_state == TOUCH_PRESS_STABLE ||
|
||||
touch_state == TOUCH_SLIDING))
|
||||
{
|
||||
/* 导航页:抬起时发一次点击(坐标更稳,避免按下瞬间误触底栏) */
|
||||
if (CurrUIProcress != UI_Mixer_Process) {
|
||||
r.gesture = GESTURE_RELEASE;
|
||||
r.x = down_x;
|
||||
r.y = down_y;
|
||||
LOG_D("TP", "release x=%u y=%u", (unsigned)down_x, (unsigned)down_y);
|
||||
LOG_TPI("release x=%u y=%u -> MSG", (unsigned)down_x, (unsigned)down_y);
|
||||
MainTask_Sendmsg(MSG_ID_TOUCH, 1, down_x, down_y);
|
||||
}
|
||||
}
|
||||
touch_state = TOUCH_IDLE;
|
||||
down_x = down_y = 0;
|
||||
last_slide_x = last_slide_y = 0;
|
||||
|
|
@ -80,17 +101,24 @@ app_touch_result_t app_touch_process(uint16_t x, uint16_t y, uint8_t pressed)
|
|||
click_sent = 0;
|
||||
repeat_tick = 0;
|
||||
touch_state = TOUCH_PRESS_WAIT_STABLE;
|
||||
/* ??????????????????????? */
|
||||
/* Mixer 推子:按下即报;其它页等抬起再报,防止进页后残留按下误触设置 */
|
||||
if (CurrUIProcress == UI_Mixer_Process) {
|
||||
click_sent = 1;
|
||||
LOG_D("TP", "press down x=%u y=%u", (unsigned)down_x, (unsigned)down_y);
|
||||
LOG_TPI("press x=%u y=%u -> MSG", (unsigned)down_x, (unsigned)down_y);
|
||||
MainTask_Sendmsg(MSG_ID_TOUCH, 1, down_x, down_y);
|
||||
} else {
|
||||
LOG_TPI("press down x=%u y=%u (wait release)", (unsigned)down_x, (unsigned)down_y);
|
||||
}
|
||||
break;
|
||||
|
||||
case TOUCH_PRESS_WAIT_STABLE:
|
||||
if ((now - touch_tick) >= TOUCH_STABLE_TIME) {
|
||||
if (abs_diff(x, down_x) < 24 && abs_diff(y, down_y) < 24)
|
||||
if (abs_diff(x, down_x) < 24 && abs_diff(y, down_y) < 24) {
|
||||
/* 用稳定后的坐标替换首采样噪声 */
|
||||
down_x = x;
|
||||
down_y = y;
|
||||
touch_state = TOUCH_PRESS_STABLE;
|
||||
else {
|
||||
} else {
|
||||
down_x = x;
|
||||
down_y = y;
|
||||
touch_tick = now;
|
||||
|
|
@ -103,7 +131,7 @@ app_touch_result_t app_touch_process(uint16_t x, uint16_t y, uint8_t pressed)
|
|||
long_press_fired = 1;
|
||||
repeat_tick = now;
|
||||
r.gesture = GESTURE_LONG_PRESS;
|
||||
LOG_D("TP", "long_press x=%u y=%u", (unsigned)down_x, (unsigned)down_y);
|
||||
LOG_TPI("long_press x=%u y=%u", (unsigned)down_x, (unsigned)down_y);
|
||||
MainTask_Sendmsg(MSG_ID_TOUCH_LONG_REPEAT, 1, down_x, down_y);
|
||||
return r;
|
||||
}
|
||||
|
|
@ -122,11 +150,14 @@ app_touch_result_t app_touch_process(uint16_t x, uint16_t y, uint8_t pressed)
|
|||
break;
|
||||
|
||||
case TOUCH_SLIDING:
|
||||
if (abs_diff(x, last_slide_x) >= TOUCH_SLIDE_STEP ||
|
||||
abs_diff(y, last_slide_y) >= TOUCH_SLIDE_STEP) {
|
||||
/* 仅 Mixer 需要拖动连续坐标;其它页拖动会误触底栏设置 Tab */
|
||||
if (CurrUIProcress == UI_Mixer_Process &&
|
||||
(abs_diff(x, last_slide_x) >= TOUCH_SLIDE_STEP ||
|
||||
abs_diff(y, last_slide_y) >= TOUCH_SLIDE_STEP)) {
|
||||
r.gesture = GESTURE_DRAG;
|
||||
r.down_x = last_slide_x;
|
||||
r.down_y = last_slide_y;
|
||||
LOG_TPI("drag x=%u y=%u", (unsigned)x, (unsigned)y);
|
||||
MainTask_Sendmsg(MSG_ID_TOUCH, 1, x, y);
|
||||
last_slide_x = x;
|
||||
last_slide_y = y;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,9 @@ typedef struct {
|
|||
/* 重置状态机(页面切换/开机时可选调用) */
|
||||
void app_touch_reset(void);
|
||||
|
||||
/* 切页后短暂忽略触摸,避免手指未抬起/ADC 抖动误触底栏设置 Tab */
|
||||
void app_touch_suppress(uint32_t ms);
|
||||
|
||||
/* 核心:喂一个采样点,产出手势。
|
||||
* 由 touch_task 每 20ms 调用一次。
|
||||
* 有手势返回对应 gesture,无手势返回 GESTURE_NONE。 */
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ const char CHS8Table[][2] = {
|
|||
{0xD2,0xF4}, // 音 9
|
||||
{0xC9,0xAB}, // 色 10
|
||||
{0xD1,0xA1}, // 选 6
|
||||
{0xD2,0xE9}, // 择 7
|
||||
{0xD4,0xF1}, // 择 7
|
||||
{0xB8,0xE8}, // 歌 17
|
||||
{0xC7,0xFA}, // 曲 18
|
||||
{0xD7,0xD4}, // 自 19
|
||||
|
|
@ -66,7 +66,7 @@ const char CHS11Table[][2] = {
|
|||
{0xD2,0xF4}, // 音
|
||||
{0xC9,0xAB}, // 色
|
||||
{0xD1,0xA1}, // 选
|
||||
{0xD2,0xE9}, // 择
|
||||
{0xD4,0xF1}, // 择
|
||||
{0xB8,0xE8}, // 歌
|
||||
{0xC7,0xFA}, // 曲
|
||||
{0xD7,0xD4}, // 自
|
||||
|
|
@ -121,7 +121,7 @@ const char CHS12Table[][2] = {
|
|||
{0xD2,0xF4}, // 音 9
|
||||
{0xC9,0xAB}, // 色 10
|
||||
{0xD1,0xA1}, // 选 6
|
||||
{0xD2,0xE9}, // 择 7
|
||||
{0xD4,0xF1}, // 择 7
|
||||
{0xB8,0xE8}, // 歌 17
|
||||
{0xC7,0xFA}, // 曲 18
|
||||
{0xD7,0xD4}, // 自 19
|
||||
|
|
@ -174,12 +174,12 @@ const char CHS13Table[][2] = {
|
|||
{0xC4,0xA3}, // 模 4
|
||||
{0xCA,0xBD}, // 式 5
|
||||
{0xD1,0xA1}, // 选 6
|
||||
{0xD2,0xE9}, // 择 7
|
||||
{0xD4,0xF1}, // 择 7
|
||||
{0xCF,0xD2}, // 弦 8
|
||||
{0xD2,0xF4}, // 音 9
|
||||
{0xC9,0xAB}, // 色 10
|
||||
{0xD1,0xA1}, // 选 11
|
||||
{0xD2,0xE9}, // 择 12
|
||||
{0xD4,0xF1}, // 择 12
|
||||
{0xD1,0xDD}, // 演 13
|
||||
{0xD7,0xE0}, // 奏 14
|
||||
{0xB6,0xCE}, // 段 15
|
||||
|
|
@ -361,12 +361,12 @@ const char CHS15Table[][2] = {
|
|||
{0xC4,0xA3}, // 模 4
|
||||
{0xCA,0xBD}, // 式 5
|
||||
{0xD1,0xA1}, // 选 6
|
||||
{0xD2,0xE9}, // 择 7
|
||||
{0xD4,0xF1}, // 择 7
|
||||
{0xCF,0xD2}, // 弦 8
|
||||
{0xD2,0xF4}, // 音 9
|
||||
{0xC9,0xAB}, // 色 10
|
||||
{0xD1,0xA1}, // 选 11
|
||||
{0xD2,0xE9}, // 择 12
|
||||
{0xD4,0xF1}, // 择 12
|
||||
{0xD1,0xDD}, // 演 13
|
||||
{0xD7,0xE0}, // 奏 14
|
||||
{0xB6,0xCE}, // 段 15
|
||||
|
|
@ -547,12 +547,12 @@ const char CHS16Table[][2] = {
|
|||
{0xC4,0xA3}, // 模 4
|
||||
{0xCA,0xBD}, // 式 5
|
||||
{0xD1,0xA1}, // 选 6
|
||||
{0xD2,0xE9}, // 择 7
|
||||
{0xD4,0xF1}, // 择 7
|
||||
{0xCF,0xD2}, // 弦 8
|
||||
{0xD2,0xF4}, // 音 9
|
||||
{0xC9,0xAB}, // 色 10
|
||||
{0xD1,0xA1}, // 选 11
|
||||
{0xD2,0xE9}, // 择 12
|
||||
{0xD4,0xF1}, // 择 12
|
||||
{0xD1,0xDD}, // 演 13
|
||||
{0xD7,0xE0}, // 奏 14
|
||||
{0xB6,0xCE}, // 段 15
|
||||
|
|
|
|||
|
|
@ -320,6 +320,7 @@
|
|||
<state>$PROJ_DIR$\..\..\device\W25Q128</state>
|
||||
<state>$PROJ_DIR$\..\..\device\LCD_ILI9341</state>
|
||||
<state>$PROJ_DIR$\..\..\device\TM1617</state>
|
||||
<state>$PROJ_DIR$\..\..\..\project\inc</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCStdIncCheck</name>
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include "includes.h"
|
||||
#include "W25Q128.h"
|
||||
#include "Drv_TM1617_RGB.h"
|
||||
#include "UI0902_Res_Addr.h"
|
||||
/* private includes ----------------------------------------------------------*/
|
||||
/* add user code begin private includes */
|
||||
|
||||
|
|
@ -84,7 +85,7 @@ void JumpToApplication(void);
|
|||
|
||||
uint8_t TM1617KeyValue = 0;
|
||||
static uint32_t PowerKeyCount = 0;
|
||||
static uint8_t long_press_locked = 0; // 长按锁定,防止一直触发
|
||||
static uint8_t long_press_locked = 0; // ???????????????????
|
||||
/* add user code end 0 */
|
||||
|
||||
flag_status BSP_GetPowerKey (void)
|
||||
|
|
@ -130,15 +131,15 @@ int main(void)
|
|||
|
||||
TM1617_GPIO_Init();
|
||||
|
||||
/* 短暂等待总线稳定;默认跳转 App。
|
||||
* 仅当开机时按住 KEY_MAIN_A 才进入 USB 升级模式。
|
||||
* (旧逻辑:仅 KEY_NULL 才跳 App,复位后按键误读会永久卡在 Boot 黑屏) */
|
||||
/* ????????????????????? App??
|
||||
* ???????????? KEY_MAIN_A ????? USB ????????
|
||||
* ??????????? KEY_NULL ???? App????λ??????????????? Boot ?????? */
|
||||
wk_delay_ms(50);
|
||||
TM1617KeyValue = TM1617_ScanFkey();
|
||||
if (TM1617KeyValue != KEY_MAIN_A)
|
||||
{
|
||||
JumpToApplication();
|
||||
/* 若 App 向量无效则继续走升级模式 */
|
||||
/* ?? App ??????Ч????????????? */
|
||||
}
|
||||
|
||||
/* init spi1 function. */
|
||||
|
|
@ -162,7 +163,23 @@ int main(void)
|
|||
wk_delay_ms(10);
|
||||
/* USER CODE BEGIN 2 */
|
||||
LCD_BLK_Set();
|
||||
LCD_ShowChinese_AutoAlign(0, 240,150 ,(uint8_t*)"\xC9\xFD\xBC\xB6\xC4\xA3\xCA\xBD\x00",LCD_ALIGN_CENTER, RED, WHITE, 0, 24);
|
||||
/* 烧录模式全屏图:UI0902_FLASH_MODE @ 外置 Flash;未烧资源时黑底兜底 */
|
||||
{
|
||||
uint8_t peek[4];
|
||||
W25Q128_Read(peek, UI0902_FLASH_MODE_ADDR, 4);
|
||||
if (!(peek[0] == 0xFF && peek[1] == 0xFF && peek[2] == 0xFF && peek[3] == 0xFF))
|
||||
{
|
||||
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_FLASH_MODE_W, UI0902_FLASH_MODE_H,
|
||||
UI0902_FLASH_MODE_ADDR);
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_FillByColor(0, 0, 240, 320, BLACK);
|
||||
LCD_ShowChinese_AutoAlign(0, 240, 150,
|
||||
(uint8_t *)"\xC9\xD5\xC2\xBC\xC4\xA3\xCA\xBD\x00",
|
||||
LCD_ALIGN_CENTER, WHITE, BLACK, 0, 24);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* add user code end 2 */
|
||||
|
|
@ -173,7 +190,7 @@ int main(void)
|
|||
/* add user code begin 3 */
|
||||
if(BSP_GetPowerKey() == 0)
|
||||
{
|
||||
// 按键按下
|
||||
// ????????
|
||||
if (PowerKeyCount < 200 && long_press_locked == 0)
|
||||
{
|
||||
PowerKeyCount++;
|
||||
|
|
@ -247,10 +264,10 @@ void JumpToApplication(void)
|
|||
|
||||
if (((*(__IO uint32_t*)FIRMWARE_START_ADDR) & 0x2FFE0000 ) == 0x20000000)
|
||||
{
|
||||
/* 跳转到用户应用代码区 */
|
||||
/* ???????????????? */
|
||||
JumpAddress = *(__IO uint32_t*) (FIRMWARE_START_ADDR + 4);
|
||||
Jump_To_Application = (pFunction) JumpAddress;
|
||||
/* 初始化用户应用程序的堆栈指针 */
|
||||
/* ??????????ó????????? */
|
||||
__set_MSP(*(__IO uint32_t*) FIRMWARE_START_ADDR);
|
||||
SCB->VTOR = FIRMWARE_START_ADDR;
|
||||
Jump_To_Application();
|
||||
|
|
|
|||
360
Global/Global.c
|
|
@ -25,67 +25,83 @@ GUI_SWITCH mGuiData[] = {
|
|||
};
|
||||
GUI_SWITCH ParamGuiData[] =
|
||||
{
|
||||
{ 0, 0, 30, SONG_MODE_PARAM}, // 0
|
||||
{ 0, 0, 30, EXPRESS_MODE_PARAM}, // 1
|
||||
{ 0, 0, 30, SONG_MODE_PARAM}, // 0 节奏类型(1.bin,约 31 首)
|
||||
{ 0, 0, 0, EXPRESS_MODE_PARAM}, // 1 本地曲目(2.bin;Max 由 UI_ReloadTonePreset←LOCAL_SONG_COUNT)
|
||||
{ 0, 0, 2, ALL_MODE_PARAM}, // 2
|
||||
};
|
||||
|
||||
|
||||
|
||||
const LEBEL_UI UI_Label[] = {
|
||||
{5, 115, 30, 60, (const uint8_t*)"\xD2\xC6\xB5\xF7", LCD_ALIGN_CENTER, WHITE,BLACK,11, LCD_ALIGN_CENTER,WHITE,BLACK,16, GUI_TRANSPOSE},
|
||||
{125,110, 30, 60, (const uint8_t*)"\xCB\xD9\xB6\xC8", LCD_ALIGN_CENTER, WHITE,BLACK,11, LCD_ALIGN_CENTER,WHITE,BLACK,16, GUI_SPEED},
|
||||
{5, 230, 95, 55, (const uint8_t*)"\xB8\xE8\xC7\xFA\xD1\xA1\xD2\xE9", LCD_ALIGN_LEFT,WHITE,BLACK,11,LCD_ALIGN_CENTER,WHITE,BLACK,13,GUI_MODE_PARAM},
|
||||
{5, 230, 155,55, (const uint8_t*)"\xCF\xD2\xD2\xF4\xC9\xAB\xD1\xA1\xD2\xE9",LCD_ALIGN_LEFT,WHITE,BLACK,11,LCD_ALIGN_CENTER,WHITE,BLACK,13,GUI_TIMBRE_SELECT},
|
||||
{5, 230, 210,55, (const uint8_t*)"\xD1\xDD\xD7\xE0\xB6\xCE\xC2\xE4",LCD_ALIGN_LEFT,WHITE,BLACK,11,LCD_ALIGN_CENTER,WHITE,BLACK,13,GUI_PLAY_SECTION},
|
||||
/* 0819:移调/速度 标签11、主值16 */
|
||||
{UI0902_MARGIN_X, UI0902_CARD_W, UI0902_CARD_Y, UI0902_CARD_H,
|
||||
(const uint8_t*)"\xD2\xC6\xB5\xF7", LCD_ALIGN_CENTER, WHITE,BLACK,UI0902_FONT_LABEL,
|
||||
LCD_ALIGN_CENTER,WHITE,BLACK,UI0902_FONT_HERO, GUI_TRANSPOSE},
|
||||
{UI0902_MARGIN_X + UI0902_CARD_W + UI0902_CARD_GAP, UI0902_CARD_W, UI0902_CARD_Y, UI0902_CARD_H,
|
||||
(const uint8_t*)"\xCB\xD9\xB6\xC8", LCD_ALIGN_CENTER, WHITE,BLACK,UI0902_FONT_LABEL,
|
||||
LCD_ALIGN_CENTER,WHITE,BLACK,UI0902_FONT_HERO, GUI_SPEED},
|
||||
/* 0819:TAB/行标题11、曲目正文13 */
|
||||
{UI0902_MARGIN_X, UI0902_CONTENT_W, UI0902_MODE_Y, UI0902_MODE_H,
|
||||
(const uint8_t*)"\xB8\xE8\xC7\xFA\xD1\xA1\xD4\xF1", LCD_ALIGN_LEFT,WHITE,BLACK,UI0902_FONT_LABEL,
|
||||
LCD_ALIGN_CENTER,WHITE,BLACK,UI0902_FONT_BODY,GUI_MODE_PARAM},
|
||||
{UI0902_MARGIN_X, UI0902_CONTENT_W, UI0902_TIMBRE_Y, UI0902_TIMBRE_H,
|
||||
(const uint8_t*)"\xCF\xD2\xD2\xF4\xC9\xAB\xD1\xA1\xD4\xF1",LCD_ALIGN_LEFT,WHITE,BLACK,UI0902_FONT_LABEL,
|
||||
LCD_ALIGN_CENTER,WHITE,BLACK,UI0902_FONT_BODY,GUI_TIMBRE_SELECT},
|
||||
/* 0819:演奏段落 字号13 */
|
||||
{UI0902_MARGIN_X, UI0902_CONTENT_W, UI0902_SECTION_Y, UI0902_SECTION_H,
|
||||
(const uint8_t*)"\xD1\xDD\xD7\xE0\xB6\xCE\xC2\xE4",LCD_ALIGN_LEFT,WHITE,BLACK,UI0902_FONT_BODY,
|
||||
LCD_ALIGN_CENTER,WHITE,BLACK,UI0902_FONT_BODY,GUI_PLAY_SECTION},
|
||||
};
|
||||
|
||||
|
||||
// 4<><34><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>֣<EFBFBD>
|
||||
|
||||
/* 0904 / 0902-06:左→右 伴奏|弦|麦|麦混响,轨宽31 顶≈58 */
|
||||
Fader_t faders[4] = {
|
||||
{ 40-10, 60, 30, 200, 7, 0, 0, "\xB0\xE9\xD7\xE0" }, // 0: <20><><EFBFBD><EFBFBD>(MIX)
|
||||
{ 95-10, 60, 30, 200, 7, 1, 0, "\xCF\xD2" }, // 1: <20><>(STR)
|
||||
{ 150-10, 60, 30, 200, 7, 2, 0, "\xC2\xF3" }, // 2: <20><>(MIC)
|
||||
{ 205-10, 60, 30, 200, 7, 3, 0, "\xC2\xF3\xBB\xEC\xCF\xEC" } // 3: <20><><EFBFBD><EFBFBD><EFBFBD>(REV)
|
||||
{ 27, 58, 31, 215, 7, 0, 0, "\xB0\xE9\xD7\xE0" }, /* 0: 伴奏 */
|
||||
{ 78, 58, 31, 215, 7, 1, 0, "\xCF\xD2" }, /* 1: 弦 */
|
||||
{ 130, 58, 31, 215, 7, 2, 0, "\xC2\xF3" }, /* 2: 麦 */
|
||||
{ 182, 58, 31, 215, 7, 3, 0, "\xC2\xF3\xBB\xEC\xCF\xEC" } /* 3: 麦混响 */
|
||||
};
|
||||
|
||||
|
||||
const Touch_AreaTypeDef Touch_Areas[] =
|
||||
{
|
||||
/* Xmin,Xmax,Ymin,Ymax, Flag, Value, ID, action — 坐标相对 240x320 */
|
||||
{ 0, 60, 25, 95, -1, 0, GUI_TRANSPOSE, NULL },
|
||||
{ 60, 120, 25, 95, 1, 0, GUI_TRANSPOSE, NULL },
|
||||
/* Xmin,Xmax,Ymin,Ymax, Flag, Value, ID, action — 与 UI_Label 网格同步 */
|
||||
{ 12, 64, UI0902_CARD_Y, UI0902_CARD_Y + UI0902_CARD_H - 1, -1, 0, GUI_TRANSPOSE, NULL },
|
||||
{ 65, 116, UI0902_CARD_Y, UI0902_CARD_Y + UI0902_CARD_H - 1, 1, 0, GUI_TRANSPOSE, NULL },
|
||||
|
||||
{ 125, 180, 25, 95, -1, 0, GUI_SPEED, NULL },
|
||||
{ 180, 239, 25, 95, 1, 0, GUI_SPEED, NULL },
|
||||
{ 125, 176, UI0902_CARD_Y, UI0902_CARD_Y + UI0902_CARD_H - 1, -1, 0, GUI_SPEED, NULL },
|
||||
{ 177, 228, UI0902_CARD_Y, UI0902_CARD_Y + UI0902_CARD_H - 1, 1, 0, GUI_SPEED, NULL },
|
||||
|
||||
{ 0, 85, 95, 130, 0, 0, GUI_AUTOBAND_SW, NULL },
|
||||
{ 90, 175, 95, 130, 0, 1, GUI_AUTOBAND_SW, NULL },
|
||||
/* 节奏类型 / 本地曲目 TAB(0902:12-66 / 72-127) */
|
||||
{ 12, 66, UI0902_MODE_Y, UI0902_MODE_Y + UI0902_TAB_H - 1, 0, 0, GUI_AUTOBAND_SW, NULL },
|
||||
{ 72, 127, UI0902_MODE_Y, UI0902_MODE_Y + UI0902_TAB_H - 1, 0, 1, GUI_AUTOBAND_SW, NULL },
|
||||
|
||||
{ 0, 120, 130, 165, -1, 0, GUI_MODE_PARAM, NULL },
|
||||
{ 120, 239, 130, 165, 1, 0, GUI_MODE_PARAM, NULL },
|
||||
{ 13, 120, UI0902_MODE_Y + UI0902_TAB_H + 4, UI0902_MODE_Y + UI0902_MODE_H - 1, -1, 0, GUI_MODE_PARAM, NULL },
|
||||
{ 121, 227, UI0902_MODE_Y + UI0902_TAB_H + 4, UI0902_MODE_Y + UI0902_MODE_H - 1, 1, 0, GUI_MODE_PARAM, NULL },
|
||||
|
||||
{ 0, 120, 165, 215, -1, 0, GUI_TIMBRE_SELECT, NULL },
|
||||
{ 120, 239, 165, 215, 1, 0, GUI_TIMBRE_SELECT, NULL },
|
||||
{ 13, 120, UI0902_TIMBRE_Y, UI0902_TIMBRE_Y + UI0902_TIMBRE_H - 1, -1, 0, GUI_TIMBRE_SELECT, NULL },
|
||||
{ 121, 227, UI0902_TIMBRE_Y, UI0902_TIMBRE_Y + UI0902_TIMBRE_H - 1, 1, 0, GUI_TIMBRE_SELECT, NULL },
|
||||
|
||||
/* 演奏段落 1~4 */
|
||||
{ 10, 60, 220, 270, 0, 0, GUI_PLAY_SECTION, NULL },
|
||||
{ 60, 110, 220, 270, 0, 1, GUI_PLAY_SECTION, NULL },
|
||||
{ 110, 165, 220, 270, 0, 2, GUI_PLAY_SECTION, NULL },
|
||||
{ 165, 220, 220, 270, 0, 3, GUI_PLAY_SECTION, NULL },
|
||||
/* 演奏段落 1~4(0902-04:12/69/125/182,宽 47,步进 57) */
|
||||
{ 12, 58, UI0902_SECTION_Y, UI0902_SECTION_Y + UI0902_SECTION_BTN_H - 1, 0, 0, GUI_PLAY_SECTION, NULL },
|
||||
{ 69, 115, UI0902_SECTION_Y, UI0902_SECTION_Y + UI0902_SECTION_BTN_H - 1, 0, 1, GUI_PLAY_SECTION, NULL },
|
||||
{ 126, 172, UI0902_SECTION_Y, UI0902_SECTION_Y + UI0902_SECTION_BTN_H - 1, 0, 2, GUI_PLAY_SECTION, NULL },
|
||||
{ 183, 229, UI0902_SECTION_Y, UI0902_SECTION_Y + UI0902_SECTION_BTN_H - 1, 0, 3, GUI_PLAY_SECTION, NULL },
|
||||
|
||||
/* 底栏 TAB:万能/普通/专业/设置(Value=目标 TAB) */
|
||||
{ 0, 60, 275, 319, 0, 0, GUI_TAB_INDEX, NULL },
|
||||
{ 60, 120, 275, 319, 0, 2, GUI_TAB_INDEX, NULL },
|
||||
{ 120, 180, 275, 319, 0, 1, GUI_TAB_INDEX, NULL },
|
||||
{ 180, 239, 275, 319, 0, 3, GUI_TAB_INDEX, NULL },
|
||||
/* 底栏四键:万能 | 普通 | 专业 | 设置(触区中线对齐 cx 40/100/160/210) */
|
||||
{ 0, 69, 280, 319, 0, UI0902_NAV_UNIVERSAL, GUI_NAV_BAR, NULL },
|
||||
{ 70, 129, 280, 319, 0, UI0902_NAV_NORMAL, GUI_NAV_BAR, NULL },
|
||||
{ 130, 184, 280, 319, 0, UI0902_NAV_EXPERT, GUI_NAV_BAR, NULL },
|
||||
{ 185, 239, 280, 319, 0, UI0902_NAV_SETTING, GUI_NAV_BAR, NULL },
|
||||
};
|
||||
|
||||
int16_t MIC_VOL_MAP[10]= {-9000,-7000,-5000,-3000,-1000,1000,3000,5000,7000,9000};
|
||||
/* 推子 0~10 共 11 档;档10 取 AW816 上限附近 */
|
||||
int16_t MIC_VOL_MAP[11]= {-9000,-7000,-5000,-3000,-1000,1000,3000,5000,7000,9000,1200};
|
||||
|
||||
uint8_t TOUCH_AREA_NUM = (sizeof(Touch_Areas)/sizeof(Touch_AreaTypeDef));
|
||||
|
||||
const uint8_t Version[3] = {0,1,11};
|
||||
const uint8_t Version[3] = {0,2,3}; /* major.minor.patch — 0.2.3: local song HKTK load/play + tone addr logs */
|
||||
|
||||
uint8_t Led = 8;
|
||||
bool PressFlag = 0;
|
||||
|
|
@ -164,21 +180,23 @@ bool powon = false;
|
|||
void System_PowerOn(void)
|
||||
{
|
||||
LOG_I("PWR", "power_on begin");
|
||||
/* 控制电源硬件 */
|
||||
/* 控制电源硬件;蓝牙按 NVM/系统设置开关恢复,勿强制常开 */
|
||||
BSP_MainPowerEnable(1);
|
||||
BSP_DreamCorePowerEnable(1);
|
||||
BSP_HT7178PowerEnable(1);
|
||||
BSP_BlueToothPowerEnable(1);
|
||||
BSP_BlueToothPowerEnable((uint8_t)(mGuiData[GUI_BL_SW].Current ? 1 : 0));
|
||||
powon = true; /* 更新开机标志 */
|
||||
|
||||
/* 先通知 UI 亮屏,避免外设初始化阻塞导致长时间黑屏 */
|
||||
LOG_I("PWR", "send POWER_ON");
|
||||
MainTask_Sendmsg(MSG_ID_POWER_ON, 0, 0, 0);
|
||||
|
||||
AD85020B_Init();
|
||||
TM1629D_Key_LED_Init();
|
||||
app_tm1617_init();
|
||||
XPT2046_Init();
|
||||
App_Auto_Init();
|
||||
LOG_I("PWR", "periph ready send POWER_ON");
|
||||
/* 通知 UI 层画开机界面 */
|
||||
MainTask_Sendmsg(MSG_ID_POWER_ON,0,0,0);
|
||||
LOG_I("PWR", "periph ready");
|
||||
}
|
||||
|
||||
static void PowerOn(void)
|
||||
|
|
@ -194,6 +212,15 @@ static void PowerOff(void)
|
|||
powon = false; /* 更新关机标志 */
|
||||
StopFullTask();
|
||||
|
||||
/* 关机前把当前调音台推子与蓝牙开关写入 NVM,保证再次开机保持 */
|
||||
{
|
||||
NvmParam_Type *nvm = drv_nvm_param_ptr();
|
||||
nvm->param.BandVol = faders[0].val;
|
||||
nvm->param.StringVol = faders[1].val;
|
||||
nvm->param.MIcVol = faders[2].val;
|
||||
nvm->param.MicRev = faders[3].val;
|
||||
nvm->param.BluetoothSW = (uint8_t)(mGuiData[GUI_BL_SW].Current ? 1 : 0);
|
||||
}
|
||||
nvm_ret = drv_nvm_save_to_flash();
|
||||
LOG_I("PWR", "nvm_save=%u", (unsigned)nvm_ret);
|
||||
|
||||
|
|
@ -203,15 +230,33 @@ static void PowerOff(void)
|
|||
app_tm1629_all_off();
|
||||
|
||||
app_tm1617_off();
|
||||
/* 关闭电源硬件 */
|
||||
/* 关闭电源硬件;MCU 保持运行以便长按开机 / 关机充电画面 */
|
||||
BSP_MainPowerEnable(0);
|
||||
BSP_DreamCorePowerEnable(0);
|
||||
BSP_HT7178PowerEnable(0);
|
||||
BSP_BlueToothPowerEnable(0);
|
||||
LOG_I("PWR", "reset");
|
||||
__disable_irq();
|
||||
nvic_system_reset();
|
||||
//MainTask_Sendmsg(MSG_ID_POWER_OFF,0,0,0);
|
||||
CurrUIProcress = IdleProcess;
|
||||
MainTask_Sendmsg(MSG_ID_POWER_OFF, 0, 0, 0);
|
||||
LOG_I("PWR", "power_off done (soft-off, no reset)");
|
||||
|
||||
/* 关机时若已插着 Type-C,立刻进充电画面 */
|
||||
{
|
||||
uint8_t i;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
app_adc_in1_scan_part(4);
|
||||
if (usb_charging_state || app_adc_usb_is_plugged())
|
||||
break;
|
||||
rt_thread_mdelay(5);
|
||||
}
|
||||
if (usb_charging_state || app_adc_usb_is_plugged())
|
||||
{
|
||||
usb_charging_state = 1;
|
||||
usb_charging_laststate = 1;
|
||||
LOG_I("PWR", "soft-off with USB → charge UI");
|
||||
MainTask_Sendmsg(MSG_ID_POWOFF_CHARG, percentage, 1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Power_Key_Scan()
|
||||
|
|
@ -220,13 +265,32 @@ void Power_Key_Scan()
|
|||
uint32_t now = rt_tick_get();
|
||||
uint32_t holdtick = 0;
|
||||
|
||||
/* 复位/烧录后自动开机一次,避免黑屏干等长按;正常关机后下电再上电仍走此路径 */
|
||||
/* 复位/烧录后:无 USB 则自动开机一次;有 Type-C 则进关机充电画面(勿进 Logo) */
|
||||
if (powon == false && pwr_key_state == KEY_STATE_IDLE && pwr_press_tick == 0)
|
||||
{
|
||||
static uint8_t s_auto_poweron_pending = 1;
|
||||
if (s_auto_poweron_pending)
|
||||
{
|
||||
uint8_t i;
|
||||
s_auto_poweron_pending = 0;
|
||||
/* 多采几次 USB 检测,避免上电瞬间误判 */
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
app_adc_in1_scan_part(4);
|
||||
if (usb_charging_state || app_adc_usb_is_plugged())
|
||||
break;
|
||||
rt_thread_mdelay(5);
|
||||
}
|
||||
if (usb_charging_state || app_adc_usb_is_plugged())
|
||||
{
|
||||
usb_charging_state = 1;
|
||||
usb_charging_laststate = 1;
|
||||
LOG_I("PWR", "boot with USB → charge UI (no logo)");
|
||||
CurrUIProcress = IdleProcess;
|
||||
MainTask_Sendmsg(MSG_ID_POWOFF_CHARG, percentage, 1, 0);
|
||||
pwr_key_state = KEY_STATE_NONE;
|
||||
return;
|
||||
}
|
||||
LOG_I("PWR", "auto power_on");
|
||||
PowerOn();
|
||||
pwr_key_state = KEY_STATE_NONE; /* 忽略开机瞬间可能残留的按键电平 */
|
||||
|
|
@ -287,8 +351,7 @@ void Power_Key_Scan()
|
|||
void (*CurrUIProcress)(DisplayTaskMessage_Type xEvent);
|
||||
|
||||
/* UI 公共全局变量 */
|
||||
//volatile uint32_t ADDRESS = 0x0001b8F0;
|
||||
volatile uint32_t ADDRESS = 0x00000000;
|
||||
volatile uint32_t ADDRESS = FLASH_ADDR_MODE_UNIVERSAL;
|
||||
uint8_t KEY_ID_1629 = 0;
|
||||
bool StartFlag = false;
|
||||
bool InModeFlag = false;
|
||||
|
|
@ -297,10 +360,40 @@ uint8_t key_toggle[4] = {0};
|
|||
* UI 公共函数补定义
|
||||
* ============================================================ */
|
||||
|
||||
/* 自动关机计时复位(简单实现:无操作,占位) */
|
||||
/* 自动关机:有操作时复位秒计数;主循环每秒递减,到 0 关机 */
|
||||
void ResetAutoPowerCount(void)
|
||||
{
|
||||
/* AutoPower 计时复位逻辑暂未实现 */
|
||||
if (!AutoCloseFlag || AutoCloseTime == 0)
|
||||
return;
|
||||
mAutoPowerOffCount = (uint16_t)(AutoCloseTime * 60);
|
||||
}
|
||||
|
||||
void AutoPowerOff_Scan(void)
|
||||
{
|
||||
static uint32_t s_last_sec_tick = 0;
|
||||
uint32_t now;
|
||||
|
||||
if (!powon || !AutoCloseFlag || AutoCloseTime == 0)
|
||||
return;
|
||||
|
||||
now = rt_tick_get();
|
||||
if (s_last_sec_tick == 0)
|
||||
{
|
||||
s_last_sec_tick = now;
|
||||
return;
|
||||
}
|
||||
if ((now - s_last_sec_tick) < RT_TICK_PER_SECOND)
|
||||
return;
|
||||
s_last_sec_tick = now;
|
||||
|
||||
if (mAutoPowerOffCount > 0)
|
||||
mAutoPowerOffCount--;
|
||||
|
||||
if (mAutoPowerOffCount == 0)
|
||||
{
|
||||
LOG_I("PWR", "auto power_off idle=%umin", (unsigned)AutoCloseTime);
|
||||
PowerOff();
|
||||
}
|
||||
}
|
||||
|
||||
/* GUI 数值调整(简单实现:更新当前值) */
|
||||
|
|
@ -344,28 +437,49 @@ void Send_volume(uint8_t vol)
|
|||
SendMidiDataToDreamDSP(mMasterSysExVolume,12);
|
||||
}
|
||||
|
||||
void Accomp_UpdatePlayingChord(void)
|
||||
{
|
||||
uint8_t midi_note_buff[4] = {0,};
|
||||
uint8_t note_cnt = 0;
|
||||
uint8_t i;
|
||||
|
||||
if (!StartFlag)
|
||||
return;
|
||||
if (KEY_ID_1629 == 0 || KEY_ID_1629 == 22 || KEY_ID_1629 == 23)
|
||||
return;
|
||||
|
||||
note_cnt = GetChordNotesByType(KEY_ID_1629,
|
||||
chord_type_index_map[KEY_ID_1629].type,
|
||||
midi_note_buff);
|
||||
for (i = 0; i < note_cnt; i++)
|
||||
AutoBandTop1_Note_On(midi_note_buff[i], 0x50);
|
||||
}
|
||||
|
||||
void ADC_IN1_KEY_Handle(uint8_t key,bool on)
|
||||
{
|
||||
uint8_t midi_note_buff[4] = {0,};
|
||||
uint8_t note_cnt = 0;
|
||||
uint8_t is_preamble = 0;
|
||||
key_toggle[key] = !key_toggle[key];
|
||||
if(key_toggle[key] == 1)
|
||||
{
|
||||
//ResetAutoPowerCount();
|
||||
switch(key)
|
||||
{
|
||||
case 3: AutoBandTop1_Preamble(0); break;
|
||||
case 0: AutoBandTop1_Preamble(1); break;
|
||||
case 3: AutoBandTop1_Preamble(0); is_preamble = 1; break;
|
||||
case 0: AutoBandTop1_Preamble(1); is_preamble = 1; break;
|
||||
case 1: AutoBandTop1_Postamble(0); break;
|
||||
case 2: AutoBandTop1_Postamble(1); break;
|
||||
}
|
||||
//AutoBandTop1_Start();
|
||||
AutoBandTop1_SyncStart();
|
||||
wk_delay_ms(50);
|
||||
//AutoBandTop1_Note_On(USE_MIDI.Midi_5, 0x50);
|
||||
//AutoBandTop1_SetPiecePlayMode(1,0,1920);
|
||||
//AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
//AutoBandTop1_SetLoopMode(0,1);
|
||||
/* 音师:前奏起始 = 当前调一级和弦第一把位(index 1 + maj,再经移调) */
|
||||
if (is_preamble)
|
||||
{
|
||||
KEY_ID_1629 = 1;
|
||||
chord_type_index_map[1].type = 0;
|
||||
}
|
||||
note_cnt = GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff);
|
||||
for(uint8_t i = 0;i < note_cnt;i++)
|
||||
{
|
||||
|
|
@ -611,6 +725,17 @@ void Pick_Handle()
|
|||
{
|
||||
uint8_t midi = 0;
|
||||
uint8_t midi_note_buff[4] = {0,};
|
||||
uint8_t note_cnt = 0;
|
||||
uint8_t chord_id = KEY_ID_1629;
|
||||
|
||||
/* 左手未触发和弦板(或落在拍速/停止键)时:拨片默认发当前调一级大和弦伴奏 */
|
||||
if (chord_id == 0 || chord_id == 22 || chord_id == 23)
|
||||
{
|
||||
KEY_ID_1629 = 1;
|
||||
chord_type_index_map[1].type = 0;
|
||||
chord_id = 1;
|
||||
}
|
||||
note_cnt = GetChordNotesByType(chord_id, chord_type_index_map[chord_id].type, midi_note_buff);
|
||||
Return_Light_buff(KEY_ID_1629);
|
||||
|
||||
switch(mGuiData[GUI_TAB_INDEX].Current)
|
||||
|
|
@ -625,24 +750,24 @@ void Pick_Handle()
|
|||
AutoBandTop1_SetLoopMode(0,1);
|
||||
midi = 0x3C + mGuiData[GUI_TRANSPOSE].Current;
|
||||
AutoBandTop1_StartWithNote(midi);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
StartFlag = 1;
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,1920);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
break;
|
||||
case 0:
|
||||
if(PressFlag)
|
||||
{
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
}else
|
||||
{
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,480);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
}
|
||||
StartFlag = 1;
|
||||
break;
|
||||
|
|
@ -650,33 +775,60 @@ void Pick_Handle()
|
|||
break;
|
||||
|
||||
case 2:
|
||||
if(StartFlag == 0) //当播放了之后,拨片不再起作用
|
||||
/* 普通:节奏/本地曲目均用 StartWithNote;切库后允许再次拨片起奏 */
|
||||
if (StartFlag == 0 || mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
StartFlag = 1;
|
||||
AutoBandTop1_Stop();
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
AutoBandTop1_SetRunVar(mGuiData[GUI_PLAY_SECTION].Current);
|
||||
/* 起调必须用 0x3C+移调;勿用和弦音区 MIDI(如 48),否则本地曲目起奏异常 */
|
||||
midi = 0x3C + mGuiData[GUI_TRANSPOSE].Current;
|
||||
AutoBandTop1_StartWithNote(midi);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
LOG_I("pick", "local/normal root=%u name=%s", midi,
|
||||
AutoBandTop1_GetPresetName() ? AutoBandTop1_GetPresetName() : "?");
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
StartFlag = 1;
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,1920);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
/* 本地曲目:与普通模式同一套起奏(0x3C 根音 + 和弦音) */
|
||||
AutoBandTop1_Stop();
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
AutoBandTop1_SetRunVar(mGuiData[GUI_PLAY_SECTION].Current);
|
||||
midi = 0x3C + mGuiData[GUI_TRANSPOSE].Current;
|
||||
AutoBandTop1_StartWithNote(midi);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
LOG_I("pick", "local/expert root=%u name=%s sw=%u tab=%u",
|
||||
midi,
|
||||
AutoBandTop1_GetPresetName() ? AutoBandTop1_GetPresetName() : "?",
|
||||
(unsigned)mGuiData[GUI_AUTOBAND_SW].Current,
|
||||
(unsigned)mGuiData[GUI_TAB_INDEX].Current);
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,1920);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
LOG_I("pick", "expert/rhythm piece name=%s",
|
||||
AutoBandTop1_GetPresetName() ? AutoBandTop1_GetPresetName() : "?");
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
StartFlag = 1;
|
||||
if(PressFlag)
|
||||
{
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,480);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
}else
|
||||
{
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,480);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff, note_cnt);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -864,6 +1016,11 @@ void BT_Chord_offset_map(uint8_t pos_offset,uint8_t chord_offset)
|
|||
|
||||
uint8_t GetChordNotesByType(uint8_t MIDI_Index,uint8_t type,uint8_t *buff)
|
||||
{
|
||||
uint8_t n = 0;
|
||||
uint8_t i;
|
||||
uint8_t root;
|
||||
|
||||
buff[0] = buff[1] = buff[2] = buff[3] = 0;
|
||||
switch(MIDI_Index)
|
||||
{
|
||||
case 1:case 2:case 3:
|
||||
|
|
@ -1093,56 +1250,57 @@ uint8_t GetChordNotesByType(uint8_t MIDI_Index,uint8_t type,uint8_t *buff)
|
|||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
if(buff[3]!= 0)
|
||||
{
|
||||
|
||||
n = (buff[3] != 0) ? 4 : 3;
|
||||
switch (chord_type_index_map[MIDI_Index].PitchOffset)
|
||||
{
|
||||
case 1:
|
||||
buff[0] += 0;
|
||||
buff[1] += 0;
|
||||
buff[2] += 0;
|
||||
buff[3] += 0;
|
||||
case 2: /* # 升:整体 +1 半音 */
|
||||
for (i = 0; i < n; i++)
|
||||
buff[i] += 1;
|
||||
break;
|
||||
case 2:
|
||||
buff[0] += 1;
|
||||
buff[1] += 1;
|
||||
buff[2] += 1;
|
||||
buff[3] += 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
buff[0] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
buff[1] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
buff[2] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
buff[3] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
return 4;
|
||||
}else
|
||||
for (i = 0; i < n; i++)
|
||||
buff[i] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
|
||||
/* 音师:仅所有调的 #四级(键 10~12 + 升)— 整组低八度,音域压在一个八度内
|
||||
* 最低音 = #IV,最高音 ≤ 自然 IV。勿对六级等其它升号和弦套用。 */
|
||||
if (MIDI_Index >= 10 && MIDI_Index <= 12 &&
|
||||
chord_type_index_map[MIDI_Index].PitchOffset == 2)
|
||||
{
|
||||
switch(chord_type_index_map[MIDI_Index].PitchOffset)
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
case 1:
|
||||
buff[0] += 0;
|
||||
buff[1] += 0;
|
||||
buff[2] += 0;
|
||||
break;
|
||||
case 2:
|
||||
buff[0] += 1;
|
||||
buff[1] += 1;
|
||||
buff[2] += 1;
|
||||
break;
|
||||
if (buff[i] >= 12)
|
||||
buff[i] -= 12;
|
||||
}
|
||||
buff[0] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
buff[1] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
buff[2] += mGuiData[GUI_TRANSPOSE].Current;
|
||||
return 3;
|
||||
root = buff[0];
|
||||
for (i = 1; i < n; i++)
|
||||
{
|
||||
while (buff[i] >= (uint8_t)(root + 12))
|
||||
buff[i] -= 12;
|
||||
while (buff[i] < root)
|
||||
buff[i] += 12;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
void Read_Cur_Measure()
|
||||
{
|
||||
uint32_t now = rt_tick_get();
|
||||
static uint32_t last_tick_i = 0;;
|
||||
if((mGuiData[GUI_TAB_INDEX].Current == 2 || (mGuiData[GUI_TAB_LAST_INDEX].Current == 2 && mGuiData[GUI_TAB_INDEX].Current == 3)) && StartFlag)
|
||||
static uint32_t last_tick_i = 0;
|
||||
uint8_t tab = (uint8_t)mGuiData[GUI_TAB_INDEX].Current;
|
||||
uint8_t last = (uint8_t)mGuiData[GUI_TAB_LAST_INDEX].Current;
|
||||
/* 普通(2)与万能(0)均按「和弦走向」同步亮灯;设置页(3)沿用进入前模式 */
|
||||
uint8_t loop_light_ok =
|
||||
(tab == 0 || tab == 2) ||
|
||||
(tab == 3 && (last == 0 || last == 2));
|
||||
|
||||
if (loop_light_ok && StartFlag)
|
||||
{
|
||||
if(now - last_tick_i >= 10)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -112,6 +112,7 @@ typedef enum {
|
|||
GUI_AUTOBAND_SW,
|
||||
GUI_BL_SW,
|
||||
GUI_TAB_LAST_INDEX,
|
||||
GUI_NAV_BAR, /* 0902 底栏:Value 0万能 1普通 2专业 3设置 */
|
||||
}GUIID;
|
||||
|
||||
|
||||
|
|
@ -165,6 +166,7 @@ extern uint8_t KEY_ID_1629;
|
|||
|
||||
extern bool powon;
|
||||
void Power_Key_Scan(void);
|
||||
void AutoPowerOff_Scan(void);
|
||||
void System_PowerOn(void);
|
||||
extern uint8_t Led;
|
||||
extern bool PressFlag;
|
||||
|
|
@ -175,7 +177,7 @@ extern uint8_t key_toggle[4];
|
|||
|
||||
extern bool StartFlag;
|
||||
|
||||
extern int16_t MIC_VOL_MAP[10];
|
||||
extern int16_t MIC_VOL_MAP[11];
|
||||
extern const uint8_t Version[3];
|
||||
extern uint8_t AutoCloseTime;
|
||||
extern uint16_t mAutoPowerOffCount;
|
||||
|
|
@ -220,6 +222,8 @@ void Loop_Light_Handle(uint8_t measure);
|
|||
void BL_Set_led(uint8_t Led, uint8_t chord_type);
|
||||
|
||||
uint8_t GetChordNotesByType(uint8_t MIDI_Index,uint8_t type,uint8_t *buff);
|
||||
/* 伴奏已在播时仅更新和弦音,不 Restart(快转调) */
|
||||
void Accomp_UpdatePlayingChord(void);
|
||||
void BT_Chord_offset_map(uint8_t pos_offset,uint8_t chord_offset);
|
||||
void BT_Pitch_offset_map(uint8_t pos_offset,uint8_t pitch_offset);
|
||||
void Read_Cur_Measure();
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
#include <stdlib.h>
|
||||
#include "includes.h"
|
||||
MidiFifoSeq_t m_MidiSendFifo;
|
||||
#define PRESET_BUFFER_SIZE (1024*40)
|
||||
#define PRESET_BUFFER_SIZE (1024*41) /* 2s.res compressed HKTK preset 39760 bytes */
|
||||
static int m_presetCount = 0;
|
||||
static uint8_t pStoreBuffer[PRESET_BUFFER_SIZE];
|
||||
//static uint8_t* pStoreBuffer;
|
||||
|
|
@ -76,9 +76,60 @@ static void Func_CallBack_PitchWheel(int channel,int cc,int value)
|
|||
mymidififo_InQueue(&m_MidiSendFifo,&midimsg);
|
||||
}
|
||||
|
||||
/* Flash Map 0903:对照 ExtFlash_Tone_Addr.h / Doc/.../FLASH_MAP.txt */
|
||||
static const char *ToneFlashMapBank(uint32_t abs)
|
||||
{
|
||||
if (abs >= EXTFLASH_BIN1_RHYTHM_ADDR &&
|
||||
abs < EXTFLASH_BIN1_RHYTHM_ADDR + EXTFLASH_BIN1_RHYTHM_SIZE)
|
||||
return "BIN1_RHYTHM";
|
||||
if (abs >= EXTFLASH_BIN2_SONG_HAITIAN_ADDR &&
|
||||
abs < EXTFLASH_BIN2_SONG_HAITIAN_ADDR + EXTFLASH_BIN2_SONG_HAITIAN_SIZE)
|
||||
return "BIN2_SONG_HAITIAN";
|
||||
if (abs >= EXTFLASH_BIN3_UNIVERSAL_ADDR &&
|
||||
abs < EXTFLASH_BIN3_UNIVERSAL_ADDR + EXTFLASH_BIN3_UNIVERSAL_SIZE)
|
||||
return "BIN3_UNIVERSAL";
|
||||
if (abs >= FLASH_ADDR_AUTOBAND_LEGACY &&
|
||||
abs < FLASH_ADDR_AUTOBAND_LEGACY + 0x10000UL)
|
||||
return "LEGACY_AUTOBAND";
|
||||
return "OUT_OF_MAP";
|
||||
}
|
||||
|
||||
static uint32_t s_flash_rd_last_base = 0xFFFFFFFFu;
|
||||
static uint16_t s_flash_rd_log_cnt = 0;
|
||||
|
||||
static int Func_CallBack_ReadFlash(int address,int length,uint8_t* pOutput)
|
||||
{
|
||||
W25Q128_Read(pOutput, (uint32_t)ADDRESS+address, length);
|
||||
uint32_t base = (uint32_t)ADDRESS;
|
||||
uint32_t abs = base + (uint32_t)address;
|
||||
const char *bank;
|
||||
|
||||
if (base != s_flash_rd_last_base) {
|
||||
s_flash_rd_last_base = base;
|
||||
s_flash_rd_log_cnt = 0;
|
||||
LOG_I("FLASH_RD", "bank base=0x%08X map=%s (BIN1=0x%08X BIN2=0x%08X BIN3=0x%08X)",
|
||||
(unsigned)base,
|
||||
ToneFlashMapBank(base),
|
||||
(unsigned)EXTFLASH_BIN1_RHYTHM_ADDR,
|
||||
(unsigned)EXTFLASH_BIN2_SONG_HAITIAN_ADDR,
|
||||
(unsigned)EXTFLASH_BIN3_UNIVERSAL_ADDR);
|
||||
}
|
||||
|
||||
bank = ToneFlashMapBank(abs);
|
||||
/* 加载阶段打印前若干次 + 每次 offset==0;避免播放期刷屏 */
|
||||
if (s_flash_rd_log_cnt < 16u || address == 0) {
|
||||
LOG_I("FLASH_RD", "abs=0x%08X off=%d len=%d map=%s",
|
||||
(unsigned)abs, address, length, bank);
|
||||
if (s_flash_rd_log_cnt < 0xFFFFu)
|
||||
s_flash_rd_log_cnt++;
|
||||
if (s_flash_rd_log_cnt == 16u)
|
||||
LOG_I("FLASH_RD", "further reads omitted (same base)");
|
||||
} else if (bank[0] == 'O') {
|
||||
/* 读到 Map 外:始终告警 */
|
||||
LOG_W("FLASH_RD", "OUT_OF_MAP abs=0x%08X off=%d len=%d base=0x%08X",
|
||||
(unsigned)abs, address, length, (unsigned)base);
|
||||
}
|
||||
|
||||
W25Q128_Read(pOutput, abs, length);
|
||||
return 0;
|
||||
}
|
||||
//
|
||||
|
|
@ -97,10 +148,17 @@ void App_Auto_Init(void)
|
|||
int ret = AutoBandTop1_LoadPresetItemFromFlash(0);
|
||||
if (ret != 0)
|
||||
{
|
||||
for(;;);
|
||||
LOG_E("AUTO", "LoadPreset fail ret=%d addr=0x%08X map=%s",
|
||||
ret, (unsigned)ADDRESS, ToneFlashMapBank((uint32_t)ADDRESS));
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_I("AUTO", "LoadPreset ok name=%s addr=0x%08X map=%s",
|
||||
AutoBandTop1_GetPresetName() ? AutoBandTop1_GetPresetName() : "?",
|
||||
(unsigned)ADDRESS, ToneFlashMapBank((uint32_t)ADDRESS));
|
||||
AutoBandTop1_ChangeBPM(mGuiData[1].Current);
|
||||
}
|
||||
}
|
||||
|
||||
//void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
||||
//{
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ void UI_ExpertMode_Init(void)
|
|||
mGuiData[GUI_TAB_INDEX].Current = 1;
|
||||
mGuiData[GUI_TAB_LAST_INDEX].Current = mGuiData[GUI_TAB_INDEX].Current;
|
||||
//mGuiData[GUI_AUTOBAND_SW].Current = 1;
|
||||
UI_ReloadTonePreset(); /* 必须在 TAB=专业 之后换库,否则仍是万能 3.bin */
|
||||
if (CurrUIProcress == UI_SongMode_Process)
|
||||
Show_home_UI_Diff();
|
||||
else
|
||||
Show_home_UI();
|
||||
pCurrentTouch_Area = Touch_Areas;
|
||||
}
|
||||
|
|
@ -27,13 +31,7 @@ void UI_ExpertMode_Process(DisplayTaskMessage_Type msg)
|
|||
}
|
||||
break;
|
||||
case MSG_ID_BATTERY_VALUE:
|
||||
// if(usb_charging_state)
|
||||
// {
|
||||
// Draw_Battery_Icon(180, 5, msg.DataU16[1], 1, GREEN, BLACK, GREEN);
|
||||
// }else
|
||||
// {
|
||||
// Draw_Battery_Icon(180, 5, msg.DataU16[1], 1, WHITE, BLACK, WHITE);
|
||||
// }
|
||||
Draw_Status_Battery_Icon(percentage);
|
||||
break;
|
||||
|
||||
case MSG_ID_TAP_SPEED:
|
||||
|
|
@ -51,21 +49,8 @@ void UI_ExpertMode_Process(DisplayTaskMessage_Type msg)
|
|||
break;
|
||||
|
||||
case MSG_ID_EC_VOL:
|
||||
// //LCD_ShowString(200, 0, Num_To_String(msg.DataU16[1],buff,3), RED, WHITE, 16, 0);
|
||||
// uint8_t vol = msg.DataU16[1];
|
||||
//// uint8_t level;
|
||||
// if (vol <= 5) level = 0;
|
||||
// else if (vol <= 35) level = 1;
|
||||
// else if (vol <= 65) level = 2;
|
||||
// else if (vol <= 95) level = 3;
|
||||
// else if (vol <= 115) level = 4;
|
||||
// else level = 5;
|
||||
// Draw_Volume_Bar(5, 5, level, 1, WHITE, GRAY);
|
||||
// uint8_t mMasterSysExVolume[12] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x64, 0x00, 0x00,0xF7};
|
||||
// memset(mMasterSysExVolume+8,msg.DataU16[1],1);
|
||||
// SendMidiDataToDreamDSP(mMasterSysExVolume,12);
|
||||
//
|
||||
// ResetAutoPowerCount();
|
||||
Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, msg.HiByte, 1, WHITE, GRAY);
|
||||
ResetAutoPowerCount();
|
||||
break;
|
||||
|
||||
case MSG_ID_TOUCH_LONG_REPEAT:
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ void UI_FreeMode_Init(void)
|
|||
mGuiData[GUI_TAB_INDEX].Current = 2;
|
||||
mGuiData[GUI_TAB_LAST_INDEX].Current = mGuiData[GUI_TAB_INDEX].Current;
|
||||
//mGuiData[GUI_AUTOBAND_SW].Current = 1;
|
||||
UI_ReloadTonePreset(); /* TAB=普通 后再加载 1.bin */
|
||||
if (CurrUIProcress == UI_SongMode_Process)
|
||||
Show_home_UI_Diff();
|
||||
else
|
||||
Show_home_UI();
|
||||
pCurrentTouch_Area = Touch_Areas;
|
||||
}
|
||||
|
|
@ -28,13 +32,7 @@ void UI_FreeMode_Process(DisplayTaskMessage_Type msg)
|
|||
}
|
||||
break;
|
||||
case MSG_ID_BATTERY_VALUE:
|
||||
// if(usb_charging_state)
|
||||
// {
|
||||
// Draw_Battery_Icon(180, 5, msg.DataU16[1], 1, GREEN, BLACK, GREEN);
|
||||
// }else
|
||||
// {
|
||||
// Draw_Battery_Icon(180, 5, msg.DataU16[1], 1, WHITE, BLACK, WHITE);
|
||||
// }
|
||||
Draw_Status_Battery_Icon(percentage);
|
||||
break;
|
||||
|
||||
case MSG_ID_TAP_SPEED:
|
||||
|
|
@ -53,20 +51,8 @@ void UI_FreeMode_Process(DisplayTaskMessage_Type msg)
|
|||
break;
|
||||
|
||||
case MSG_ID_EC_VOL:
|
||||
//LCD_ShowString(200, 0, Num_To_String(msg.DataU16[1],buff,3), RED, WHITE, 16, 0);
|
||||
// uint8_t vol = msg.DataU16[1];
|
||||
//// uint8_t level;
|
||||
// if (vol <= 5) level = 0;
|
||||
// else if (vol <= 35) level = 1;
|
||||
// else if (vol <= 65) level = 2;
|
||||
// else if (vol <= 95) level = 3;
|
||||
// else if (vol <= 115) level = 4;
|
||||
// else level = 5;
|
||||
// Draw_Volume_Bar(5, 5, level, 1, WHITE, GRAY);
|
||||
// uint8_t mMasterSysExVolume[12] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x64, 0x00, 0x00,0xF7};
|
||||
// memset(mMasterSysExVolume+8,msg.DataU16[1],1);
|
||||
// SendMidiDataToDreamDSP(mMasterSysExVolume,12);
|
||||
// ResetAutoPowerCount();
|
||||
Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, msg.HiByte, 1, WHITE, GRAY);
|
||||
ResetAutoPowerCount();
|
||||
break;
|
||||
|
||||
case MSG_ID_TOUCH_LONG_REPEAT:
|
||||
|
|
|
|||
227
UI/UI_Idle.c
|
|
@ -19,19 +19,37 @@ void RGB_Y_TO_G()
|
|||
#define UI_MODE_SCREEN_WIDTH 240
|
||||
#define UI_MODE_SCREEN_HEIGHT 320
|
||||
|
||||
/* 模式选择页焦点:0=万能 1=普通 2=专业,默认选中万能(与规范一致) */
|
||||
static uint8_t s_mode_select_focus = 0;
|
||||
|
||||
extern bool InModeFlag;
|
||||
|
||||
static void UI_ModeSelect_DrawButtons(void);
|
||||
/* 0902-01:行高88、行距92;顶边与模式主页移调/速度(CARD_Y=48)对齐,分割线居中 */
|
||||
#define UI0902_MODE_ROW_X 9
|
||||
#define UI0902_MODE_ROW_W 222
|
||||
#define UI0902_MODE_ROW_H 88
|
||||
#define UI0902_MODE_ROW_Y0 UI0902_CARD_Y /* 48,与移调/速度顶对齐 */
|
||||
#define UI0902_MODE_ROW_DY 92 /* 48 / 140 / 232 */
|
||||
|
||||
static void UI_ModeSelect_SetFocus(uint8_t idx)
|
||||
/* 模式页不显示焦点:三行均用未选中资源;单击直接进入 */
|
||||
static const uint32_t s_mode_row_addr[3] = {
|
||||
UI0902_ROW_UNIVERSAL_NOT_ADDR, /* 0 万能 */
|
||||
UI0902_ROW_NORMAL_NOT_ADDR, /* 1 普通 */
|
||||
UI0902_ROW_EXPERT_NOT_ADDR, /* 2 专业 */
|
||||
};
|
||||
|
||||
static void UI_ModeSelect_DrawButtons(void)
|
||||
{
|
||||
if (idx > 2 || idx == s_mode_select_focus)
|
||||
return;
|
||||
s_mode_select_focus = idx;
|
||||
UI_ModeSelect_DrawButtons();
|
||||
uint8_t i;
|
||||
for (i = 0; i < 3; i++) {
|
||||
uint16_t y = (uint16_t)(UI0902_MODE_ROW_Y0 + i * UI0902_MODE_ROW_DY);
|
||||
LCD_WR_PIC_FROM_FLASH(UI0902_MODE_ROW_X, y,
|
||||
UI0902_MODE_ROW_W, UI0902_MODE_ROW_H,
|
||||
s_mode_row_addr[i]);
|
||||
/* 万能模式素材顶部有残留近白横线(相对行内 y=7/8),盖成行底色 */
|
||||
if (i == 0) {
|
||||
LCD_FillByColor(UI0902_MODE_ROW_X, (uint16_t)(y + 7),
|
||||
(uint16_t)(UI0902_MODE_ROW_X + UI0902_MODE_ROW_W),
|
||||
(uint16_t)(y + 9), UI0902_ROW_BG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UI_ReturnToModeSelect(void)
|
||||
|
|
@ -39,62 +57,26 @@ void UI_ReturnToModeSelect(void)
|
|||
StartFlag = 0;
|
||||
InModeFlag = false;
|
||||
AutoBandTop1_Stop();
|
||||
s_mode_select_focus = 0;
|
||||
CallUI_Idle();
|
||||
UI_DrawModeSelectScreen();
|
||||
}
|
||||
|
||||
/* 0831 美工试用图:图标+MiSans 文字整行位图 */
|
||||
static void UI_DrawModeSelectButton(uint16_t y, const uint8_t *row, uint8_t focused)
|
||||
{
|
||||
const uint16_t btn_w = 220;
|
||||
const uint16_t btn_h = 87;
|
||||
const uint16_t btn_r = 10;
|
||||
const uint16_t btn_x = (240 - btn_w) / 2;
|
||||
const uint16_t row_x = (uint16_t)(btn_x + (btn_w - UI_MODE0831_ROW_W) / 2);
|
||||
const uint16_t row_y = (uint16_t)(y + (btn_h - UI_MODE0831_ROW_H) / 2);
|
||||
|
||||
if (focused)
|
||||
{
|
||||
LCD_FillRoundRectGradient(btn_x, y, btn_w, btn_h, btn_r,
|
||||
START_COLOR, END_COLOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_FillRoundRect(btn_x, y, btn_w, btn_h, btn_r, COLOR_NORMAL_BG);
|
||||
}
|
||||
|
||||
LCD_WR_PIC_Trans(row_x, row_y, UI_MODE0831_ROW_W, UI_MODE0831_ROW_H, row, BLACK);
|
||||
}
|
||||
|
||||
static void UI_ModeSelect_DrawButtons(void)
|
||||
{
|
||||
UI_DrawModeSelectButton(40,
|
||||
gImage_Mode0831_Universal_Row_180_52,
|
||||
s_mode_select_focus == 0);
|
||||
UI_DrawModeSelectButton(132,
|
||||
gImage_Mode0831_Normal_Row_180_52,
|
||||
s_mode_select_focus == 1);
|
||||
UI_DrawModeSelectButton(224,
|
||||
gImage_Mode0831_Expert_Row_180_52,
|
||||
s_mode_select_focus == 2);
|
||||
}
|
||||
|
||||
void UI_DrawModeSelectScreen(void)
|
||||
{
|
||||
UI_ClearFocus();
|
||||
pCurrentTouch_Area = Touch_ModeSelect_Areas;
|
||||
|
||||
LCD_FillByColor(0, 0, 240, 320, BLACK);
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
label_top();
|
||||
UI_ModeSelect_DrawButtons();
|
||||
/* 设计稿 0902-01:模式选择页无底部三栏导航,仅三行模式按钮 */
|
||||
}
|
||||
|
||||
const Touch_AreaTypeDef Touch_ModeSelect_Areas[] = {
|
||||
/* Flag=按钮序号(0万能/1普通/2专业);ID=进入 TAB */
|
||||
{ 0, 239, 38, 127, 0, 0, 0, NULL },
|
||||
{ 0, 239, 128, 219, 1, 0, 2, NULL },
|
||||
{ 0, 239, 220, 311, 2, 0, 1, NULL },
|
||||
/* Flag=按钮序号(0万能/1普通/2专业);ID=进入 TAB。全宽便于命中;Y 与 MODE_ROW_* 一致 */
|
||||
{ 0, 239, 48, 135, 0, 0, 0, NULL },
|
||||
{ 0, 239, 140, 227, 1, 0, 2, NULL },
|
||||
{ 0, 239, 232, 319, 2, 0, 1, NULL },
|
||||
};
|
||||
|
||||
#define TOUCH_AREA_MODE_SELECT_NUM (sizeof(Touch_ModeSelect_Areas)/sizeof(Touch_AreaTypeDef))
|
||||
|
|
@ -104,14 +86,14 @@ extern uint8_t channel;
|
|||
extern uint8_t level;
|
||||
extern bool powon;
|
||||
extern bool InModeFlag;
|
||||
extern int16_t MIC_VOL_MAP[10];
|
||||
extern int16_t MIC_VOL_MAP[11];
|
||||
extern int8_t delta;
|
||||
extern STRING_MIDI USE_MIDI;
|
||||
void LoadConfig()
|
||||
void LoadConfig(void)
|
||||
{
|
||||
SendProgramChangeMidiEvent(0,Timbre_index[mGuiData[GUI_TIMBRE_SELECT].Current]);
|
||||
|
||||
uint8_t val_127 = (faders[0].val * 127) / 20;
|
||||
uint8_t val_127 = (faders[0].val * 127) / 10;
|
||||
SendVolumeChangeMidiEvent(1,val_127);
|
||||
SendVolumeChangeMidiEvent(2,val_127);
|
||||
SendVolumeChangeMidiEvent(3,val_127);
|
||||
|
|
@ -128,7 +110,7 @@ void LoadConfig()
|
|||
SendVolumeChangeMidiEvent(14,val_127);
|
||||
SendVolumeChangeMidiEvent(15,val_127);
|
||||
|
||||
SendVolumeChangeMidiEvent(0,faders[1].val);
|
||||
SendVolumeChangeMidiEvent(0,(faders[1].val * 127) / 10);
|
||||
|
||||
AW816_Set_Volume(MIC_VOL_MAP[faders[2].val]);
|
||||
|
||||
|
|
@ -138,30 +120,25 @@ void LoadConfig()
|
|||
void Touch_Mode_Select_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex)
|
||||
{
|
||||
(void)areaIndex;
|
||||
(void)FLAG;
|
||||
StartTask();
|
||||
s_mode_select_focus = (uint8_t)FLAG;
|
||||
/* ID 为 TAB 索引:0=万能(Song) 1=专业(Expert) 2=普通(Free) */
|
||||
mGuiData[GUI_TAB_INDEX].Current = ID;
|
||||
InModeFlag = true;
|
||||
/* 进入子页后抑制残留按下,否则易误触底栏 GUI_TAB_INDEX(id=5)→设置 */
|
||||
app_touch_suppress(500);
|
||||
/* DSP 已就绪:再下发音色 + 调音台音量(与关机前 NVM/faders 一致) */
|
||||
LoadConfig();
|
||||
|
||||
switch (ID)
|
||||
{
|
||||
case 0: /* 万能 */
|
||||
if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
ADDRESS = 0x0009EB5F;
|
||||
else
|
||||
ADDRESS = 0x0001B8F0;
|
||||
MenuPage_SongMode_Proc();
|
||||
case 0: /* 万能 → 3.bin / 本地→2.bin */
|
||||
MenuPage_SongMode_Proc(); /* Init 设 TAB 并 Reload */
|
||||
break;
|
||||
case 1: /* 专业 */
|
||||
if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
ADDRESS = 0x0009EB5F;
|
||||
else
|
||||
ADDRESS = 0x00000000;
|
||||
case 1: /* 专业 → 1.bin / 本地→2.bin */
|
||||
MenuPage_ExpertMode_Proc();
|
||||
break;
|
||||
case 2: /* 普通 */
|
||||
ADDRESS = 0x0009598F;
|
||||
case 2: /* 普通 → 1.bin */
|
||||
MenuPage_FreeMode_Proc();
|
||||
break;
|
||||
default:
|
||||
|
|
@ -177,27 +154,28 @@ void IdleProcess(DisplayTaskMessage_Type msg)
|
|||
{
|
||||
case MSG_ID_POWER_ON :
|
||||
LCD_BLK_Set();
|
||||
LCD_FillByColor(0, 0, 240, 320, WHITE);
|
||||
LCD_WR_PIC_FROM_FLASH(40, 80, 168, 155, 0x00000000);
|
||||
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_BOOT_LOGO_W, UI0902_BOOT_LOGO_H,
|
||||
UI0902_BOOT_LOGO_ADDR);
|
||||
BSP_SelectAdcChannel(6);
|
||||
/* 让出 CPU,避免忙等卡住触摸/主循环线程 */
|
||||
rt_thread_mdelay(1000);
|
||||
LoadConfig();
|
||||
vol = ADC_ReadChannel(ADC_CHANNEL_1)>>5;
|
||||
if (vol <= 5) level = 0;
|
||||
else if (vol <= 35) level = 1;
|
||||
else if (vol <= 65) level = 2;
|
||||
else if (vol <= 95) level = 3;
|
||||
else if (vol <= 115) level = 4;
|
||||
else level = 5;
|
||||
app_adc_sync_volume(vol);
|
||||
Send_volume(vol);
|
||||
|
||||
s_mode_select_focus = 0;
|
||||
UI_DrawModeSelectScreen();
|
||||
TM1629D_AllLedOn(LED_COLOR_G);
|
||||
TM1629D_UpdateDisplay(0);
|
||||
StartTouchTask();
|
||||
StartScanTask();
|
||||
/* Dream 上电稍后可能忽略首包 SysEx:再发主音量 + 调音台(保持关机前设置) */
|
||||
rt_thread_mdelay(400);
|
||||
vol = ADC_ReadChannel(ADC_CHANNEL_1)>>5;
|
||||
app_adc_sync_volume(vol);
|
||||
Send_volume(vol);
|
||||
LoadConfig();
|
||||
Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, level, 1, WHITE, GRAY);
|
||||
break;
|
||||
|
||||
case MSG_ID_POWER_OFF:
|
||||
|
|
@ -212,21 +190,26 @@ void IdleProcess(DisplayTaskMessage_Type msg)
|
|||
|
||||
case MSG_ID_TOUCH:
|
||||
{
|
||||
static uint32_t s_last_enter_ms;
|
||||
uint32_t now = rt_tick_get() * 1000U / RT_TICK_PER_SECOND;
|
||||
uint8_t hit = 0U;
|
||||
|
||||
for(uint8_t k=0; k<TOUCH_AREA_MODE_SELECT_NUM; k++)
|
||||
{
|
||||
if( msg.HiByte >= Touch_ModeSelect_Areas[k].x_min && msg.HiByte <= Touch_ModeSelect_Areas[k].x_max &&
|
||||
msg.LoByte >= Touch_ModeSelect_Areas[k].y_min && msg.LoByte <= Touch_ModeSelect_Areas[k].y_max )
|
||||
{
|
||||
hit = 1U;
|
||||
uint8_t row = (uint8_t)Touch_ModeSelect_Areas[k].Flag;
|
||||
LOG_I("UI", "mode_select hit area=%u row=%u x=%u y=%u",
|
||||
(unsigned)k, (unsigned)row,
|
||||
(unsigned)k,
|
||||
(unsigned)Touch_ModeSelect_Areas[k].Flag,
|
||||
(unsigned)msg.HiByte, (unsigned)msg.LoByte);
|
||||
if (row == s_mode_select_focus)
|
||||
Touch_Mode_Select_Action(Touch_ModeSelect_Areas[k].Flag, Touch_ModeSelect_Areas[k].ID, k);
|
||||
else
|
||||
UI_ModeSelect_SetFocus(row);
|
||||
/* 单击直接进入对应模式主页 */
|
||||
if (now - s_last_enter_ms < 300U)
|
||||
break;
|
||||
s_last_enter_ms = now;
|
||||
Touch_Mode_Select_Action(Touch_ModeSelect_Areas[k].Flag,
|
||||
Touch_ModeSelect_Areas[k].ID, k);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -247,41 +230,73 @@ void IdleProcess(DisplayTaskMessage_Type msg)
|
|||
|
||||
case MSG_ID_POWOFF_CHARG:
|
||||
{
|
||||
static bool flag = 0;
|
||||
if(flag == 0)
|
||||
static bool s_charge_ui_drawn = false;
|
||||
if(!s_charge_ui_drawn)
|
||||
{
|
||||
uint8_t peek[4];
|
||||
BSP_MainPowerEnable(1);
|
||||
LCD_WR_REG(0x29); //Display on
|
||||
LCD_WR_REG(0x29); /* Display on */
|
||||
|
||||
LCD_WR_PIC_FROM_FLASH(40, 50, 160, 190, 0x0000CB70);
|
||||
/* 先铺设计底色,避免外置 Flash 未烧充电图时整屏 0xFF 灰底 */
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
|
||||
W25Q128_Read(peek, UI0902_CHARGE_SCREEN_ADDR, 4);
|
||||
if (peek[0] != 0xFF || peek[1] != 0xFF)
|
||||
{
|
||||
/* 0904 全屏充电画面(UI0902 @ CHARGE_SCREEN);% 由固件叠画 */
|
||||
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_CHARGE_SCREEN_W, UI0902_CHARGE_SCREEN_H,
|
||||
UI0902_CHARGE_SCREEN_ADDR);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 资源未烧录时的兜底:圆环闪电(需稍后 flash ui0902) */
|
||||
Draw_Charging_Icon(120, 150, 2, 0x3D7F);
|
||||
LOG_W("UI", "charge flash empty @0x%08lX — flash ui0902",
|
||||
(unsigned long)UI0902_CHARGE_SCREEN_ADDR);
|
||||
}
|
||||
LCD_BLK_Set();
|
||||
flag = 1;
|
||||
s_charge_ui_drawn = true;
|
||||
}
|
||||
if(usb_charging_state)
|
||||
{
|
||||
uint8_t Info[10] = {0,};
|
||||
sprintf ((char*)Info, "%d%%", msg.ID);
|
||||
LCD_ShowString_AutoAlign(0,240,250,Info,LCD_ALIGN_CENTER,WHITE,BLACK,0,28);
|
||||
/* MiSans Semibold 位图:数字与 % 同高对齐,对齐 0904 设计 */
|
||||
char digits[4];
|
||||
uint8_t n, i;
|
||||
uint16_t total_w = g_ChargePctPercent.w;
|
||||
uint16_t x, y = 266;
|
||||
uint8_t pct = msg.ID;
|
||||
if (pct > 100)
|
||||
pct = 100;
|
||||
n = (uint8_t)sprintf(digits, "%u", (unsigned)pct);
|
||||
for (i = 0; i < n; i++)
|
||||
total_w = (uint16_t)(total_w + g_ChargePctDigits[digits[i] - '0'].w);
|
||||
LCD_FillByColor(40, 262, 200, 290, UI0902_BG_COLOR);
|
||||
x = (uint16_t)((240 - total_w) / 2);
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
const ChargePctGlyph *g = &g_ChargePctDigits[digits[i] - '0'];
|
||||
LCD_WR_PIC_Trans(x, y, g->w, g->h, g->data, BLACK);
|
||||
x = (uint16_t)(x + g->w);
|
||||
}
|
||||
LCD_WR_PIC_Trans(x, y, g_ChargePctPercent.w, g_ChargePctPercent.h,
|
||||
g_ChargePctPercent.data, BLACK);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 关机充电中拔掉:熄屏,允许下次再进充电页 */
|
||||
LCD_BLK_Clr();
|
||||
LCD_FillByColor(0, 0, 240, 320, BLACK);
|
||||
BSP_MainPowerEnable(0);
|
||||
s_charge_ui_drawn = false;
|
||||
}
|
||||
//else
|
||||
//BSP_MainPowerEnable(0);
|
||||
}
|
||||
break;
|
||||
|
||||
case MSG_ID_EC_VOL:
|
||||
{
|
||||
//LCD_ShowString(200, 0, Num_To_String(msg.DataU16[1],buff,3), RED, WHITE, 16, 0);
|
||||
uint8_t vol = msg.ID;
|
||||
if (vol <= 5) level = 0;
|
||||
else if (vol <= 35) level = 1;
|
||||
else if (vol <= 65) level = 2;
|
||||
else if (vol <= 95) level = 3;
|
||||
else if (vol <= 115) level = 4;
|
||||
else level = 5;
|
||||
Draw_Volume_Bar(5, 5, level, 1, WHITE, GRAY);
|
||||
uint8_t mMasterSysExVolume[12] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x64, 0x00, 0x00,0xF7};
|
||||
memset(mMasterSysExVolume+8,msg.ID,1);
|
||||
SendMidiDataToDreamDSP(mMasterSysExVolume,12);
|
||||
/* 主音量已在 MainTask 下发;此处只刷新条 */
|
||||
level = msg.HiByte;
|
||||
Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, level, 1, WHITE, GRAY);
|
||||
ResetAutoPowerCount();
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
253
UI/UI_Mixer.c
|
|
@ -1,154 +1,86 @@
|
|||
#include "includes.h"
|
||||
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
||||
static int8_t s_mixer_focus = -1;
|
||||
// ==================== <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD> ====================
|
||||
#define BTN_Y 275 // <20><>ť<EFBFBD><C5A5>ʼY
|
||||
#define BTN_H 40 // <20><>ť<EFBFBD>߶<EFBFBD>
|
||||
#define BTN_W 105 // <20><>ť<EFBFBD><C5A5><EFBFBD>
|
||||
#define BTN_G 5 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť<EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
||||
|
||||
// ==================== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ====================
|
||||
const Touch_AreaTypeDef Touch_Btn[] = {
|
||||
{ 0, 50, 0, 50, 0, 0, 0, NULL },
|
||||
/* 0902-06 调音台:返回 + 标题;无底栏 */
|
||||
const Touch_AreaTypeDef Touch_Mixer_Areas[] = {
|
||||
{ 0, 44, 0, 40, 0, 0, GUI_CANCEL, NULL },
|
||||
};
|
||||
|
||||
#define TOUCH_BTN_NUM (sizeof(Touch_Btn)/sizeof(Touch_AreaTypeDef))
|
||||
|
||||
|
||||
|
||||
#define TOUCH_BTN_NUM (sizeof(Touch_Mixer_Areas)/sizeof(Touch_AreaTypeDef))
|
||||
|
||||
/* 左→右 伴奏|弦|麦|麦混响;Flash 标签按内容挂接(13伴奏/14弦/15麦/16麦混响) */
|
||||
static const uint32_t s_fader_label[4][3] = { /* addr, w, h */
|
||||
{ UI0902_TXT_MIXER_BAND_ADDR, UI0902_TXT_MIXER_BAND_W, UI0902_TXT_MIXER_BAND_H },
|
||||
{ UI0902_TXT_MIXER_GUITAR_ADDR, UI0902_TXT_MIXER_GUITAR_W, UI0902_TXT_MIXER_GUITAR_H },
|
||||
{ UI0902_TXT_MIXER_MIC_ADDR, UI0902_TXT_MIXER_MIC_W, UI0902_TXT_MIXER_MIC_H },
|
||||
{ UI0902_TXT_MIXER_VOCALFX_ADDR, UI0902_TXT_MIXER_VOCALFX_W, UI0902_TXT_MIXER_VOCALFX_H },
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// 完整绘制推子(首次初始化 / 页面切换时调用)
|
||||
// ????????????????????? / ?????????????
|
||||
// ============================================================
|
||||
void DrawFader(Fader_t *f)
|
||||
{
|
||||
uint16_t x = f->x, y = f->y, w = f->w, h = f->h;
|
||||
// 清除整个推子区域
|
||||
LCD_FillByColor(x - 10, y, x + w + 10, y + h, BLACK);
|
||||
// 绘制完整槽背景
|
||||
DrawFaderGrooveAt(f, y + 5, y + 5 + h);
|
||||
// 刻度线
|
||||
for (int i = 0; i < 10; i++) {
|
||||
uint16_t tick_y = y + 7 + (h * i) / 10;
|
||||
LCD_DrawLine(x + w / 2 - 3, tick_y, x + w / 2 + 3, tick_y, FADER_TEXT);
|
||||
}
|
||||
// 底部文字
|
||||
LCD_ShowChinese_AutoAlign(x + 10, x + (w / 2) - 8, y + h + 20,
|
||||
(uint8_t*)f->name, LCD_ALIGN_CENTER, FADER_TEXT, BLACK, 0, 12);
|
||||
// 画滑块并记录位置
|
||||
uint16_t slider_y = CalcSliderY(f);
|
||||
uint16_t cx = f->x + f->w / 2;
|
||||
uint16_t slider_y;
|
||||
LCD_FillByColor(cx - 20, f->y, cx + 20, f->y + f->h + 30, UI0902_BG_COLOR);
|
||||
LCD_WR_PIC_FROM_FLASH(cx - 15, f->y, 31, 215, UI0902_MIXER_TRACK_ADDR);
|
||||
LCD_WR_PIC_FROM_FLASH_Trans(cx - s_fader_label[f->id][1] / 2, f->y + f->h + 8,
|
||||
(uint16_t)s_fader_label[f->id][1], (uint16_t)s_fader_label[f->id][2],
|
||||
s_fader_label[f->id][0]);
|
||||
slider_y = CalcSliderY(f);
|
||||
DrawFaderSlider(f, slider_y);
|
||||
f->prev_slider_y = slider_y;
|
||||
}
|
||||
|
||||
void DrawAllFaders(void)
|
||||
/* 四路推子写入 NVM 参数(仅 RAM;落盘由 save 调用方决定) */
|
||||
static void SyncMixerFadersToNvm(void)
|
||||
{
|
||||
NvmParam_Type *nvm = drv_nvm_param_ptr();
|
||||
// 鍏堟竻鏁翠釜鎺ㄥ瓙鍖哄煙锛屽交搴曟秷闄ゆ畫锟?
|
||||
//LCD_FillByColor(0, 35, 240, 320, BLACK);
|
||||
nvm->param.BandVol = faders[0].val;
|
||||
nvm->param.StringVol = faders[1].val;
|
||||
nvm->param.MIcVol = faders[2].val;
|
||||
nvm->param.MicRev = faders[3].val;
|
||||
}
|
||||
|
||||
void DrawAllFaders(void)
|
||||
{
|
||||
for (int i = 0; i < 4; i++) {
|
||||
DrawFader(&faders[i]);
|
||||
}
|
||||
if(nvm->param.BandVol != faders[0].val)
|
||||
{
|
||||
nvm->param.BandVol = faders[0].val;
|
||||
}
|
||||
if(nvm->param.StringVol != faders[1].val)
|
||||
{
|
||||
nvm->param.StringVol = faders[1].val;
|
||||
}
|
||||
if(nvm->param.MIcVol != faders[2].val)
|
||||
{
|
||||
nvm->param.MIcVol = faders[2].val;
|
||||
}
|
||||
if(nvm->param.MicRev != faders[3].val)
|
||||
{
|
||||
nvm->param.MicRev = faders[3].val;
|
||||
}
|
||||
SyncMixerFadersToNvm();
|
||||
drv_nvm_save_to_flash();
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 绘制推子槽背景局部区域(y_start ~ y_end 范围)
|
||||
// RED/CYAN 用 FillRoundRect_Solid 自带圆角
|
||||
// GREEN 覆盖 RED 底部圆角,YELLOW 覆盖 CYAN 顶部圆角
|
||||
// ============================================================
|
||||
static void DrawFaderGrooveAt(Fader_t *f, uint16_t y_start, uint16_t y_end)
|
||||
{
|
||||
if (y_start >= y_end) return;
|
||||
uint16_t x = f->x, y = f->y, w = f->w, h = f->h;
|
||||
uint16_t groove_top = y + 5;
|
||||
uint16_t groove_bot = y + 5 + h;
|
||||
const uint16_t r = 15;
|
||||
// 裁剪到槽边界
|
||||
if (y_start < groove_top) y_start = groove_top;
|
||||
if (y_end > groove_bot) y_end = groove_bot;
|
||||
if (y_start >= y_end) return;
|
||||
// 1. 灰色底色(纯矩形)
|
||||
LCD_FillByColor(x, y_start, x + w, y_end, BLACK);
|
||||
// 2. 青色段 — FillRoundRect_Solid 自带底部圆角
|
||||
{ uint16_t s = groove_top + 100, e = groove_top + h;
|
||||
if (y_start < e && y_end > s) {
|
||||
FillRoundRect_Solid(x, s, w, e - s, r, 0x3fAE);
|
||||
} }
|
||||
// 3. 黄色段 — 纯矩形,覆盖青色顶部圆角
|
||||
{ uint16_t s = groove_top + 100 - 33, e = groove_top + 100 + 16;
|
||||
if (y_start < e && y_end > s) {
|
||||
uint16_t ys = y_start > s ? y_start : s;
|
||||
uint16_t ye = y_end < e ? y_end : e;
|
||||
LCD_FillByColor(x, ys, x + w, ye, YELLOW);
|
||||
} }
|
||||
// 4. 红色段 — FillRoundRect_Solid 自带顶部圆角
|
||||
{ uint16_t s = groove_top, e = groove_top + 49;
|
||||
if (y_start < e && y_end > s) {
|
||||
FillRoundRect_Solid(x, s, w, e - s, r, RED);
|
||||
} }
|
||||
// 5. 绿色段 — 纯矩形,覆盖红色底部圆角
|
||||
{ uint16_t s = groove_top + 100 - 66, e = groove_top + 100 - 32;
|
||||
if (y_start < e && y_end > s) {
|
||||
uint16_t ys = y_start > s ? y_start : s;
|
||||
uint16_t ye = y_end < e ? y_end : e;
|
||||
LCD_FillByColor(x, ys, x + w, ye, RGB(21,40,7));
|
||||
} }
|
||||
// 6. 脏区域内的刻度线
|
||||
for (int i = 0; i < 10; i++) {
|
||||
uint16_t tick_y = y + 7 + (h * i) / 10;
|
||||
if (tick_y >= y_start && tick_y <= y_end) {
|
||||
LCD_DrawLine(x + w / 2 - 3, tick_y, x + w / 2 + 3, tick_y, FADER_TEXT);
|
||||
}
|
||||
}
|
||||
}
|
||||
// ============================================================
|
||||
// 仅绘制滑块 + 数值文字(用于增量刷新)
|
||||
// 滑块尺寸和文字位置与原版完全一致
|
||||
// ============================================================
|
||||
/* 0902-06:实心蓝色圆钮(勿用同心空心圆,会透出色条) */
|
||||
#define MIXER_KNOB_R 14
|
||||
|
||||
static void DrawFaderSlider(Fader_t *f, uint16_t slider_y)
|
||||
{
|
||||
uint16_t x = f->x, w = f->w, slider_h = 20;
|
||||
uint16_t bg = (s_mixer_focus == (int8_t)f->id) ? COLOR_PRIMARY : COLOR_NORMAL_BG;
|
||||
uint16_t cx = f->x + f->w / 2;
|
||||
uint16_t ly = f->y + f->h + 8;
|
||||
uint16_t cy = (uint16_t)(slider_y + MIXER_KNOB_R);
|
||||
char buf[8];
|
||||
LCD_FillRoundRect(x+5, slider_y, w-10, slider_h, 5, bg);
|
||||
LCD_FillCircle(cx, cy, MIXER_KNOB_R, COLOR_GRAD_MID);
|
||||
sprintf(buf, "%d", f->val);
|
||||
LCD_ShowString_AutoAlign(x, x + w, slider_y, (uint8_t*)buf, LCD_ALIGN_CENTER, FADER_TEXT, bg, 0, 15);
|
||||
LCD_ShowString_AutoAlign((uint16_t)(cx - 8), (uint16_t)(cx + 8),
|
||||
(uint16_t)(cy - 5),
|
||||
(uint8_t*)buf, LCD_ALIGN_CENTER, WHITE, COLOR_GRAD_MID, 0, 11);
|
||||
LCD_FillByColor(cx - 15, ly + 17, cx + 15, ly + 19, UI0902_BG_COLOR);
|
||||
if (s_mixer_focus == (int8_t)f->id)
|
||||
LCD_FillByColor(cx - 15, ly + 17, cx + 15, ly + 19, COLOR_GRAD_MID);
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 完整重绘滑块(槽背景 + 刻度线 + 滑块)
|
||||
// ???????????????????????????????????? Flash ????
|
||||
// ============================================================
|
||||
static void UpdateFaderSlider(Fader_t *f)
|
||||
{
|
||||
uint16_t x = f->x, y = f->y, w = f->w, h = f->h;
|
||||
uint16_t cx = f->x + f->w / 2;
|
||||
uint16_t new_y = CalcSliderY(f);
|
||||
if (f->prev_slider_y == new_y) return;
|
||||
// 完整重绘整个推子槽区域
|
||||
LCD_FillByColor(x - 10, y, x + w + 10, y + h, BLACK);
|
||||
DrawFaderGrooveAt(f, y + 5, y + 5 + h);
|
||||
// 刻度线
|
||||
for (int i = 0; i < 10; i++) {
|
||||
uint16_t tick_y = y + 7 + (h * i) / 10;
|
||||
LCD_DrawLine(x + w / 2 - 3, tick_y, x + w / 2 + 3, tick_y, FADER_TEXT);
|
||||
}
|
||||
// 画滑块
|
||||
LCD_WR_PIC_FROM_FLASH(cx - 15, f->y, 31, 215, UI0902_MIXER_TRACK_ADDR);
|
||||
DrawFaderSlider(f, new_y);
|
||||
f->prev_slider_y = new_y;
|
||||
}
|
||||
|
|
@ -168,14 +100,13 @@ void UpdateFaderByTouch(int idx, uint16_t y)
|
|||
}
|
||||
uint16_t y_min = f->y;
|
||||
uint16_t y_max = f->y + f->h;
|
||||
if (y < y_min + 8) { // 闈犺繎椤堕儴 鈫?鐩存帴10
|
||||
if (y < y_min + 8) {
|
||||
f->val = 10;
|
||||
}
|
||||
else if (y > y_max - 8) { // 闈犺繎搴曢儴 鈫?鐩存帴0
|
||||
else if (y > y_max - 8) {
|
||||
f->val = 0;
|
||||
}
|
||||
else {
|
||||
// 姝e父璁$畻
|
||||
int32_t val_raw = 10 - ((int32_t)(y - y_min) * 10) / (y_max - y_min);
|
||||
if(val_raw < 0) val_raw = 0;
|
||||
if(val_raw > 10) val_raw = 10;
|
||||
|
|
@ -183,10 +114,8 @@ void UpdateFaderByTouch(int idx, uint16_t y)
|
|||
}
|
||||
UpdateFaderSlider(f);
|
||||
DrawFaderSlider(f, f->prev_slider_y);
|
||||
// 闊抽噺杈撳嚭
|
||||
switch(idx) {
|
||||
case 0:
|
||||
// MIX 閫氶亾
|
||||
val_127 = (f->val * 127) / 10;
|
||||
SendVolumeChangeMidiEvent(1,val_127);
|
||||
SendVolumeChangeMidiEvent(2,val_127);
|
||||
|
|
@ -205,29 +134,26 @@ void UpdateFaderByTouch(int idx, uint16_t y)
|
|||
SendVolumeChangeMidiEvent(15,val_127);
|
||||
break;
|
||||
case 1:
|
||||
// STR 寮︿箰閫氶亾
|
||||
STR_val = (f->val * 127) / 10;
|
||||
SendVolumeChangeMidiEvent(0,STR_val);
|
||||
break;
|
||||
case 2:
|
||||
// MIC 楹﹀厠椋庨€氶亾
|
||||
AW816_Set_Volume(MIC_VOL_MAP[f->val]);
|
||||
break;
|
||||
case 3:
|
||||
// REV 娣峰搷閫氶亾
|
||||
// 鍦ㄨ繖閲屽啓娣峰搷鎺у埗
|
||||
AW816_Set_Reverb(f->val * 10);
|
||||
break;
|
||||
}
|
||||
/* 即时生效同时更新 NVM 镜像;返回/关机时落盘 */
|
||||
SyncMixerFadersToNvm();
|
||||
}
|
||||
|
||||
|
||||
// ============================================================
|
||||
// 计算滑块Y坐标(根据val值 0~10)
|
||||
// ??????Y????????val? 0~10??
|
||||
// ============================================================
|
||||
static uint16_t CalcSliderY(Fader_t *f)
|
||||
{
|
||||
uint16_t slider_h = 16;
|
||||
uint16_t slider_h = (uint16_t)(MIXER_KNOB_R * 2);
|
||||
uint16_t fill_h = (f->val * f->h) / 10;
|
||||
if (fill_h > f->h) fill_h = f->h;
|
||||
uint16_t slider_y = f->y + f->h - fill_h - (slider_h / 2);
|
||||
|
|
@ -236,39 +162,10 @@ static uint16_t CalcSliderY(Fader_t *f)
|
|||
return slider_y;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 绘制实心圆角矩形(用 FillByColor 逐行填充圆弧区域)
|
||||
// 身体填充比 LCD_FillRoundRect 多延伸 1 像素,消除缝隙
|
||||
// ============================================================
|
||||
static void FillRoundRect_Solid(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color)
|
||||
{
|
||||
if (r > w / 2) r = w / 2;
|
||||
if (r > h / 2) r = h / 2;
|
||||
if (r == 0) { LCD_FillByColor(x, y, x + w, y + h, color); return; }
|
||||
// 身体填充(中间 + 左右两侧直边)
|
||||
LCD_FillByColor(x + r, y, x + w - r, y + h, color);
|
||||
LCD_FillByColor(x, y + r, x + r, y + h - r, color);
|
||||
LCD_FillByColor(x + w - r, y + r, x + w, y + h - r, color);
|
||||
// 4 个圆弧角:从圆心向边缘逐行填充实心行
|
||||
for (uint16_t dy = 0; dy < r; dy++) {
|
||||
// dx = floor(sqrt(r² - (r-dy)²)) = floor(sqrt(2*r*dy - dy²))
|
||||
uint16_t d = 2 * r * dy - dy * dy;
|
||||
uint16_t dx = 0;
|
||||
while ((dx + 1) * (dx + 1) <= d) dx++;
|
||||
// 填充从 x+r-dx 到 x+r+1(+1确保dx=0时覆盖中心像素)
|
||||
LCD_FillByColor(x + r - dx, y + dy, x + r + 1, y + dy + 1, color); // 顶左角
|
||||
LCD_FillByColor(x + w - r, y + dy, x + w - r + dx + 1, y + dy + 1, color); // 顶右角
|
||||
LCD_FillByColor(x + r - dx, y + h - 1 - dy, x + r + 1, y + h - dy, color); // 底左角
|
||||
LCD_FillByColor(x + w - r, y + h - 1 - dy, x + w - r + dx + 1, y + h - dy, color); // 底右角
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int CheckTouchFader(uint16_t x, uint16_t y)
|
||||
{
|
||||
for (int i = 0; i < 4; i++) {
|
||||
Fader_t *f = &faders[i];
|
||||
// 鎵╁ぇ瑙︽懜鍖哄煙锛屾彁鍗囨嫋鍔ㄤ綋锟?
|
||||
if (x >= f->x - 10 && x <= f->x + f->w + 10 &&
|
||||
y >= f->y && y <= f->y + f->h) {
|
||||
return i;
|
||||
|
|
@ -277,19 +174,18 @@ int CheckTouchFader(uint16_t x, uint16_t y)
|
|||
return -1;
|
||||
}
|
||||
|
||||
// ==================== <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD> ====================
|
||||
// ==================== ????? ====================
|
||||
void UI_Mixer_Init(void)
|
||||
{
|
||||
s_mixer_focus = -1;
|
||||
UI_ClearFocus();
|
||||
// LCD_WR_REG(0x28); // Display OFF
|
||||
UI_DrawTop_TiaoYinTai();
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
UI_DrawSubPageHeader((const uint8_t*)"\xB5\xF7\xD2\xF4\xCC\xA8");
|
||||
DrawAllFaders();
|
||||
pCurrentTouch_Area = Touch_Btn;
|
||||
// LCD_WR_REG(0x29); // Display ON/
|
||||
pCurrentTouch_Area = Touch_Mixer_Areas;
|
||||
}
|
||||
|
||||
// ==================== <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD> ====================
|
||||
// ==================== ???????? ====================
|
||||
void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
||||
{
|
||||
uint16_t tx,ty;
|
||||
|
|
@ -300,7 +196,7 @@ void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
|||
tx = msg.HiByte;
|
||||
ty = msg.LoByte;
|
||||
|
||||
// 1. <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 1. ?????????
|
||||
fader_idx = CheckTouchFader(tx, ty);
|
||||
if (fader_idx >= 0)
|
||||
{
|
||||
|
|
@ -308,15 +204,15 @@ void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
|||
return;
|
||||
}
|
||||
|
||||
// 2. <EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD> ȡ<><C8A1> / ȷ<><C8B7> <20><>ť
|
||||
// 2. 返回 → 设置入口
|
||||
for(uint8_t i=0; i<TOUCH_BTN_NUM; i++)
|
||||
{
|
||||
if( tx >= Touch_Btn[i].x_min && tx <= Touch_Btn[i].x_max &&
|
||||
ty >= Touch_Btn[i].y_min && ty <= Touch_Btn[i].y_max )
|
||||
{
|
||||
// <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||
if(Touch_Btn[i].ID == 0)
|
||||
if( tx >= Touch_Mixer_Areas[i].x_min && tx <= Touch_Mixer_Areas[i].x_max &&
|
||||
ty >= Touch_Mixer_Areas[i].y_min && ty <= Touch_Mixer_Areas[i].y_max )
|
||||
{
|
||||
if (Touch_Mixer_Areas[i].ID == GUI_CANCEL) {
|
||||
SyncMixerFadersToNvm();
|
||||
drv_nvm_save_to_flash();
|
||||
MenuPage_SystemSetting_Proc();
|
||||
}
|
||||
break;
|
||||
|
|
@ -326,21 +222,8 @@ void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
|||
break;
|
||||
|
||||
case MSG_ID_EC_VOL:
|
||||
// //LCD_ShowString(200, 0, Num_To_String(msg.DataU16[1],buff,3), RED, WHITE, 16, 0);
|
||||
// uint8_t vol = msg.DataU16[1];
|
||||
// uint8_t level;
|
||||
// if (vol <= 5) level = 0;
|
||||
// else if (vol <= 35) level = 1;
|
||||
// else if (vol <= 65) level = 2;
|
||||
// else if (vol <= 95) level = 3;
|
||||
// else if (vol <= 115) level = 4;
|
||||
// else level = 5;
|
||||
// //Draw_Volume_Bar(5, 5, level, 1, WHITE, GRAY);
|
||||
// uint8_t mMasterSysExVolume[12] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x64, 0x00, 0x00,0xF7};
|
||||
// memset(mMasterSysExVolume+8,msg.DataU16[1],1);
|
||||
// SendMidiDataToDreamDSP(mMasterSysExVolume,12);
|
||||
//
|
||||
// ResetAutoPowerCount();
|
||||
Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, msg.HiByte, 1, WHITE, GRAY);
|
||||
ResetAutoPowerCount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,11 @@
|
|||
#ifndef __UI_MIXER_H__
|
||||
#define __UI_MIXER_H__
|
||||
|
||||
|
||||
|
||||
static void DrawFaderGrooveAt(Fader_t *f, uint16_t y_start, uint16_t y_end);
|
||||
static void DrawFaderSlider(Fader_t *f, uint16_t slider_y);
|
||||
void UpdateFaderByTouch(int idx, uint16_t y);
|
||||
static uint16_t CalcSliderY(Fader_t *f);
|
||||
static void FillRoundRect_Solid(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color);
|
||||
int CheckTouchFader(uint16_t x, uint16_t y);
|
||||
|
||||
|
||||
void UI_Mixer_Init(void);
|
||||
void UI_Mixer_Process(DisplayTaskMessage_Type msg);
|
||||
|
||||
|
|
|
|||
147
UI/UI_Restore.c
|
|
@ -1,119 +1,50 @@
|
|||
#include "includes.h"
|
||||
|
||||
// ==============================
|
||||
// 按键界面配置参数
|
||||
// ==============================
|
||||
#define BTN_Y_START 115 // 按键Y轴起始坐标
|
||||
#define BTN_HEIGHT 80 // 按键高度
|
||||
#define BTN_WIDTH 220 // 按键宽度
|
||||
#define BTN_GAP 5 // 按键之间的间距
|
||||
#define BTN_RADIUS 6 // 圆角半径
|
||||
|
||||
// 按键颜色配置
|
||||
#define BTN_COLOR_CANCEL 0x4A4A // 取消按键背景色
|
||||
#define BTN_COLOR_CONFIRM 0x03B7 // 确认按键背景色
|
||||
#define BTN_TEXT_COLOR 0xFFFF // 按键字体颜色
|
||||
#define BTN_TEXT_SIZE 24 // 按键文字字号
|
||||
|
||||
/* 0904 / 0902-08:返<EFBC9A>?+ 标题「恢复出厂设置<E8AEBE>? 竖排 确认(<28>? / 取消(<28>?,无底栏 */
|
||||
/* 确认/取消用预渲染位图,避免字库码点错位显示为「缺哮<E7BCBA>?*/
|
||||
|
||||
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
||||
|
||||
const Touch_AreaTypeDef Touch_Restore_Areas[] =
|
||||
{
|
||||
// Xmin, Xmax, Ymin, Ymax, flag, Value, ID, action
|
||||
{ 0, 50, 0, 50, 0, 0, 0, NULL },
|
||||
{ 10, 10+BTN_WIDTH, BTN_Y_START, BTN_Y_START+BTN_HEIGHT, 0, 1, 1, NULL },
|
||||
{ 10, 10+BTN_WIDTH, BTN_Y_START, BTN_Y_START+BTN_HEIGHT, 0, 2, 0, NULL },
|
||||
|
||||
{ 0, 44, 0, 40, 0, 0, GUI_CANCEL, NULL },
|
||||
{ UI0902_RESTORE_BTN_X,
|
||||
(uint16_t)(UI0902_RESTORE_BTN_X + UI0902_RESTORE_BTN_W - 1),
|
||||
UI0902_RESTORE_BTN_Y0,
|
||||
(uint16_t)(UI0902_RESTORE_BTN_Y0 + UI0902_RESTORE_BTN_H - 1),
|
||||
0, 0, GUI_CONFIRM, NULL },
|
||||
{ UI0902_RESTORE_BTN_X,
|
||||
(uint16_t)(UI0902_RESTORE_BTN_X + UI0902_RESTORE_BTN_W - 1),
|
||||
UI0902_RESTORE_BTN_Y1,
|
||||
(uint16_t)(UI0902_RESTORE_BTN_Y1 + UI0902_RESTORE_BTN_H - 1),
|
||||
0, 0, GUI_CANCEL, NULL },
|
||||
};
|
||||
|
||||
#define TOUCH_AREA_SYSTEMSETTING_NUM (sizeof(Touch_Restore_Areas)/sizeof(Touch_AreaTypeDef))
|
||||
#define TOUCH_AREA_RESTORE_NUM (sizeof(Touch_Restore_Areas)/sizeof(Touch_AreaTypeDef))
|
||||
|
||||
void UI_Draw_Buttons(void)
|
||||
#define RESTORE_TXT_W 50
|
||||
#define RESTORE_TXT_H 24
|
||||
|
||||
static void UI_Restore_DrawButton(uint16_t y, uint16_t bg, const unsigned char *label)
|
||||
{
|
||||
// LCD_FillByColor(10, 270, 220, 320, BLACK);
|
||||
LCD_FillRoundRect(
|
||||
10,
|
||||
BTN_Y_START,
|
||||
BTN_WIDTH,
|
||||
BTN_HEIGHT,
|
||||
BTN_RADIUS,
|
||||
BTN_COLOR_CANCEL
|
||||
);
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
10, 10 + BTN_WIDTH,
|
||||
BTN_Y_START + (BTN_HEIGHT - BTN_TEXT_SIZE)/2,
|
||||
(uint8_t*)"\xC8\xB7\xB6\xA8\x00",
|
||||
LCD_ALIGN_CENTER,
|
||||
BTN_TEXT_COLOR,
|
||||
BTN_COLOR_CANCEL,
|
||||
0,
|
||||
BTN_TEXT_SIZE
|
||||
);
|
||||
|
||||
LCD_FillRoundRect(
|
||||
10,
|
||||
BTN_Y_START+BTN_HEIGHT+BTN_GAP,
|
||||
BTN_WIDTH,
|
||||
BTN_HEIGHT,
|
||||
BTN_RADIUS,
|
||||
BTN_COLOR_CONFIRM
|
||||
);
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
10, 10 + BTN_WIDTH,
|
||||
BTN_Y_START + BTN_HEIGHT + (BTN_HEIGHT - BTN_TEXT_SIZE)/2,
|
||||
(uint8_t*)"\xC8\xB1\xCF\xF8\x00",
|
||||
LCD_ALIGN_CENTER,
|
||||
BTN_TEXT_COLOR,
|
||||
BTN_COLOR_CONFIRM,
|
||||
0,
|
||||
BTN_TEXT_SIZE
|
||||
);
|
||||
}
|
||||
|
||||
#define TOP_TITLE_X1 0
|
||||
#define TOP_TITLE_X2 240
|
||||
#define TOP_TITLE_Y1 0
|
||||
#define TOP_TITLE_Y2 35
|
||||
#define TOP_TITLE_BG_COLOR BLACK // <20><><EFBFBD><EFBFBD>ɫ
|
||||
#define TOP_TITLE_TEXT_COLOR WHITE // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
#define TOP_TITLE_FONT_SIZE 13 // 标题字号
|
||||
#define TOP_TITLE_ALIGN LCD_ALIGN_CENTER // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// ==============================
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD>̨
|
||||
// ==============================
|
||||
void UI_DrawTop_Restore(void)
|
||||
{
|
||||
//const uint16_t btn_color = /*DARKLGRAY*/0x2988; // 深灰<E6B7B1>?????
|
||||
|
||||
// <20><>ˢ<EFBFBD><CBA2>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
||||
//LCD_FillByColor(TOP_TITLE_X1, TOP_TITLE_Y1, TOP_TITLE_X2, TOP_TITLE_Y2, TOP_TITLE_BG_COLOR);
|
||||
LCD_FillByColor(0, 0, 240, 320, TOP_TITLE_BG_COLOR);
|
||||
//LCD_DrawLine(0, 30, 240, 30, btn_color);
|
||||
|
||||
LCD_WR_PIC(10,0 ,40,31,gImage_Return);
|
||||
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>16<31><36><EFBFBD>֣<EFBFBD>
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
TOP_TITLE_X1, TOP_TITLE_X2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TOP_TITLE_Y1 + (TOP_TITLE_Y2 - TOP_TITLE_Y1 - TOP_TITLE_FONT_SIZE)/2, // <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
|
||||
(uint8_t*)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3", // <20><><EFBFBD><EFBFBD>̨
|
||||
TOP_TITLE_ALIGN,
|
||||
TOP_TITLE_TEXT_COLOR,
|
||||
TOP_TITLE_BG_COLOR,
|
||||
0,
|
||||
TOP_TITLE_FONT_SIZE
|
||||
);
|
||||
uint16_t tx = (uint16_t)(UI0902_RESTORE_BTN_X + (UI0902_RESTORE_BTN_W - RESTORE_TXT_W) / 2);
|
||||
uint16_t ty = (uint16_t)(y + (UI0902_RESTORE_BTN_H - RESTORE_TXT_H) / 2);
|
||||
LCD_FillRoundRect(UI0902_RESTORE_BTN_X, y,
|
||||
UI0902_RESTORE_BTN_W, UI0902_RESTORE_BTN_H,
|
||||
UI0902_RADIUS_CARD, bg);
|
||||
LCD_WR_PIC_Trans(tx, ty, RESTORE_TXT_W, RESTORE_TXT_H, label, BLACK);
|
||||
}
|
||||
|
||||
void UI_Restore_Select_Init(void)
|
||||
{
|
||||
// LCD_WR_REG(0x28); // Display OFF
|
||||
UI_DrawTop_Restore();
|
||||
UI_Draw_Buttons();
|
||||
UI_ClearFocus();
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
UI_DrawSubPageHeader((const uint8_t *)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3");
|
||||
UI_Restore_DrawButton(UI0902_RESTORE_BTN_Y0, UI0902_ROW_BG,
|
||||
gImage_UI0902_Txt_Confirm_50x24);
|
||||
UI_Restore_DrawButton(UI0902_RESTORE_BTN_Y1, COLOR_GRAD_MID,
|
||||
gImage_UI0902_Txt_Cancel_50x24);
|
||||
pCurrentTouch_Area = Touch_Restore_Areas;
|
||||
// LCD_WR_REG(0x29); // Display ON
|
||||
}
|
||||
|
||||
void UI_Restore_Select_Process(DisplayTaskMessage_Type msg)
|
||||
|
|
@ -121,7 +52,7 @@ void UI_Restore_Select_Process(DisplayTaskMessage_Type msg)
|
|||
switch (msg.MessageType)
|
||||
{
|
||||
case MSG_ID_TOUCH:
|
||||
for(uint8_t k=0; k<TOUCH_AREA_SYSTEMSETTING_NUM; k++)
|
||||
for (uint8_t k = 0; k < TOUCH_AREA_RESTORE_NUM; k++)
|
||||
{
|
||||
if (msg.HiByte >= pCurrentTouch_Area[k].x_min &&
|
||||
msg.HiByte <= pCurrentTouch_Area[k].x_max &&
|
||||
|
|
@ -130,20 +61,22 @@ void UI_Restore_Select_Process(DisplayTaskMessage_Type msg)
|
|||
{
|
||||
switch (pCurrentTouch_Area[k].ID)
|
||||
{
|
||||
case 0:
|
||||
case GUI_CANCEL:
|
||||
MenuPage_Setting_Proc();
|
||||
break;
|
||||
case 1:
|
||||
case GUI_CONFIRM:
|
||||
RestoreSetting();
|
||||
MenuPage_Setting_Proc();
|
||||
break;
|
||||
case 2:
|
||||
MenuPage_Setting_Proc();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
ResetAutoPowerCount();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
246
UI/UI_Setting.c
|
|
@ -1,160 +1,70 @@
|
|||
#include "includes.h"
|
||||
|
||||
// ==============================
|
||||
// <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
||||
// ==============================
|
||||
#define BTN_Y_START 275 // <20><>ť<EFBFBD><C5A5>ʼY
|
||||
#define BTN_HEIGHT 40 // <20><>ť<EFBFBD>߶<EFBFBD>
|
||||
#define BTN_WIDTH 105 // <20><>ť<EFBFBD><C5A5><EFBFBD>
|
||||
#define BTN_GAP 5 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť<EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
||||
#define BTN_RADIUS 6 // Բ<><D4B2>
|
||||
|
||||
// <20><>ɫ
|
||||
#define BTN_COLOR_CANCEL 0x4A4A // <20><>ɫȡ<C9AB><C8A1>
|
||||
#define BTN_COLOR_CONFIRM 0x03B7 // <20><>ɫȷ<C9AB><C8B7>
|
||||
#define BTN_TEXT_COLOR 0xFFFF // <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
||||
#define BTN_TEXT_SIZE 16
|
||||
|
||||
/* 0904 / 0902-07 ??????? + ?? + ????????? */
|
||||
|
||||
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
||||
|
||||
const Touch_AreaTypeDef Touch_SystemSetting_Areas[] =
|
||||
{
|
||||
// Xmin, Xmax, Ymin, Ymax, flag, Value, ID, action
|
||||
{ 115, 170, 110, 170, -1, 0, GUI_BLUETOOTH_SW, NULL },
|
||||
{ 170, 225, 110, 170, 1, 0, GUI_BLUETOOTH_SW, NULL },
|
||||
{ 115, 170, 175, 235, -1, 0, GUI_AUTOCLOSE, NULL },
|
||||
{ 170, 225, 175, 235, 1, 0, GUI_AUTOCLOSE, NULL },
|
||||
{ 115, 170, 240, 300, -1, 0, GUI_RESTORE, NULL },
|
||||
{ 170, 225, 240, 300, 1, 0, GUI_RESTORE, NULL },
|
||||
// { 15, 15+BTN_WIDTH, BTN_Y_START, BTN_Y_START+BTN_HEIGHT, 0, 0, GUI_CANCEL, NULL },
|
||||
// { 15+BTN_WIDTH+BTN_GAP, 15+BTN_WIDTH*2+BTN_GAP, BTN_Y_START, BTN_Y_START+BTN_HEIGHT, 0, 1, GUI_CONFIRM, NULL },
|
||||
{ 0, 50, 0, 50, 0, 0, 0, NULL },
|
||||
/* ?? */
|
||||
{ 0, 44, 0, 40, 0, 0, GUI_CANCEL, NULL },
|
||||
/* ???? */
|
||||
{ UI0902_SET_ROW_X, (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2 - 1),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH + UI0902_SET_ROW_H - 1),
|
||||
-1, 0, GUI_BLUETOOTH_SW, NULL },
|
||||
{ (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2),
|
||||
(uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W - 1),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH + UI0902_SET_ROW_H - 1),
|
||||
1, 0, GUI_BLUETOOTH_SW, NULL },
|
||||
/* ?????? */
|
||||
{ UI0902_SET_ROW_X, (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2 - 1),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2 + UI0902_SET_ROW_H - 1),
|
||||
-1, 0, GUI_AUTOCLOSE, NULL },
|
||||
{ (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2),
|
||||
(uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W - 1),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2 + UI0902_SET_ROW_H - 1),
|
||||
1, 0, GUI_AUTOCLOSE, NULL },
|
||||
/* ???? */
|
||||
{ UI0902_SET_ROW_X, (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W - 1),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 3),
|
||||
(uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 3 + UI0902_SET_ROW_H - 1),
|
||||
0, 0, GUI_RESTORE, NULL },
|
||||
};
|
||||
|
||||
#define TOUCH_AREA_SYSTEMSETTING_NUM (sizeof(Touch_SystemSetting_Areas)/sizeof(Touch_AreaTypeDef))
|
||||
|
||||
GUI_SWITCH mGuiData_SystemSETTING[] = {
|
||||
{ 0, 0, 2, GUI_VERSION}, // 0
|
||||
{ 0, 0, 1, GUI_BLUETOOTH_SW},
|
||||
{ 0, 1, 3, GUI_AUTOCLOSE},
|
||||
{ 0, 0, 2, GUI_VERSION},
|
||||
{ 1, 0, 1, GUI_BLUETOOTH_SW}, /* 默认开;开机由 NVM BluetoothSW 覆盖 */
|
||||
/* 手册:15/30/45/60 分钟 + 不自动;默认 15 分钟(index 0) */
|
||||
{ 0, 0, 4, GUI_AUTOCLOSE},
|
||||
{ 0, 0, 1, GUI_RESTORE},
|
||||
};
|
||||
|
||||
LEBEL_UI SystemSetting[] =
|
||||
{
|
||||
{15, 230,35+10,60, (const uint8_t*)"\xB9\xCC\xBC\xFE\xB0\xE6\xB1\xBE", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_VERSION},
|
||||
{15, 230,95+10+5,60, (const uint8_t*)"\xC0\xB6\xD1\xC0\xC1\xB4\xBD\xD3", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_BLUETOOTH_SW},
|
||||
{15, 230,160+10+5,60,(const uint8_t*)"\xD7\xD4\xB6\xAF\xB9\xD8\xBB\xFA", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_AUTOCLOSE},
|
||||
{15, 230,225+10+5,60,(const uint8_t*)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_RESTORE},
|
||||
{UI0902_SET_ROW_X, UI0902_SET_ROW_W, UI0902_SET_ROW_Y0,
|
||||
UI0902_SET_ROW_H, (const uint8_t*)"\xB9\xCC\xBC\xFE\xB0\xE6\xB1\xBE",
|
||||
LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT,
|
||||
LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_VERSION},
|
||||
{UI0902_SET_ROW_X, UI0902_SET_ROW_W, (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH),
|
||||
UI0902_SET_ROW_H, (const uint8_t*)"\xC0\xB6\xD1\xC0\xC1\xAC\xBD\xD3",
|
||||
LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT,
|
||||
LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_BLUETOOTH_SW},
|
||||
{UI0902_SET_ROW_X, UI0902_SET_ROW_W, (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2),
|
||||
UI0902_SET_ROW_H, (const uint8_t*)"\xD7\xD4\xB6\xAF\xB9\xD8\xBB\xFA",
|
||||
LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT,
|
||||
LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_AUTOCLOSE},
|
||||
{UI0902_SET_ROW_X, UI0902_SET_ROW_W, (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 3),
|
||||
UI0902_SET_ROW_H, (const uint8_t*)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3",
|
||||
LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT,
|
||||
LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_RESTORE},
|
||||
};
|
||||
|
||||
// ==============================
|
||||
// <20><><EFBFBD>Ƶײ<C6B5><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť
|
||||
// ==============================
|
||||
void UI_Draw_Bottom_Buttons(void)
|
||||
{
|
||||
LCD_FillByColor(0, 270, 240, 320, BLACK);
|
||||
// ȡ<><C8A1><EFBFBD><EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
||||
LCD_FillRoundRect(
|
||||
15,
|
||||
BTN_Y_START,
|
||||
BTN_WIDTH,
|
||||
BTN_HEIGHT,
|
||||
BTN_RADIUS,
|
||||
BTN_COLOR_CANCEL
|
||||
);
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
15, 15 + BTN_WIDTH,
|
||||
BTN_Y_START + (BTN_HEIGHT - BTN_TEXT_SIZE)/2,
|
||||
(uint8_t*)"\xC8\xB1\xCF\xF8\x00",
|
||||
LCD_ALIGN_CENTER,
|
||||
BTN_TEXT_COLOR,
|
||||
BTN_COLOR_CANCEL,
|
||||
0,
|
||||
BTN_TEXT_SIZE
|
||||
);
|
||||
|
||||
// ȷ<><C8B7><EFBFBD><EFBFBD>ť<EFBFBD><C5A5><EFBFBD>ң<EFBFBD>
|
||||
LCD_FillRoundRect(
|
||||
15 + BTN_WIDTH + BTN_GAP,
|
||||
BTN_Y_START,
|
||||
BTN_WIDTH,
|
||||
BTN_HEIGHT,
|
||||
BTN_RADIUS,
|
||||
BTN_COLOR_CONFIRM
|
||||
);
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
15 + BTN_WIDTH + BTN_GAP,
|
||||
15 + BTN_WIDTH*2 + BTN_GAP,
|
||||
BTN_Y_START + (BTN_HEIGHT - BTN_TEXT_SIZE)/2,
|
||||
(uint8_t*)"\xC8\xB7\xB6\xA8\x00",
|
||||
LCD_ALIGN_CENTER,
|
||||
BTN_TEXT_COLOR,
|
||||
BTN_COLOR_CONFIRM,
|
||||
0,
|
||||
BTN_TEXT_SIZE
|
||||
);
|
||||
}
|
||||
|
||||
// ==============================
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<F2A3A8B9><CCB6><EFBFBD>Χ<EFBFBD><CEA7>
|
||||
// ==============================
|
||||
#define TOP_TITLE_X1 0
|
||||
#define TOP_TITLE_X2 240
|
||||
#define TOP_TITLE_Y1 0
|
||||
#define TOP_TITLE_Y2 35
|
||||
#define TOP_TITLE_BG_COLOR BLACK // <20><><EFBFBD><EFBFBD>ɫ
|
||||
#define TOP_TITLE_TEXT_COLOR WHITE // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
#define TOP_TITLE_FONT_SIZE 16 // <20><><EFBFBD><EFBFBD><EFBFBD>С
|
||||
#define TOP_TITLE_ALIGN LCD_ALIGN_CENTER // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// ==============================
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD>̨
|
||||
// ==============================
|
||||
void UI_DrawTop_TiaoYinTai(void)
|
||||
{
|
||||
LCD_FillByColor(0, 0, 240, 320, TOP_TITLE_BG_COLOR);
|
||||
|
||||
LCD_WR_PIC(10,0 ,40,31,gImage_Return);
|
||||
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>16<31><36><EFBFBD>֣<EFBFBD>
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
TOP_TITLE_X1, TOP_TITLE_X2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TOP_TITLE_Y1 + (TOP_TITLE_Y2 - TOP_TITLE_Y1 - TOP_TITLE_FONT_SIZE)/2, // <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
|
||||
(uint8_t*)"\xB5\xF7\xD2\xF4\xCC\xA8", // <20><><EFBFBD><EFBFBD>̨
|
||||
TOP_TITLE_ALIGN,
|
||||
TOP_TITLE_TEXT_COLOR,
|
||||
TOP_TITLE_BG_COLOR,
|
||||
0,
|
||||
TOP_TITLE_FONT_SIZE
|
||||
);
|
||||
}
|
||||
|
||||
// ==============================
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣺ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
||||
// ==============================
|
||||
void UI_DrawTop_SystemSetting(void)
|
||||
{
|
||||
LCD_FillByColor(0, 0, 240, 320, TOP_TITLE_BG_COLOR);
|
||||
|
||||
|
||||
LCD_WR_PIC(10,0 ,40,31,gImage_Return);
|
||||
// <20><>ʾ<EFBFBD><CABE>ϵͳ<CFB5><CDB3><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>С<EFBFBD>16<31><36><EFBFBD>֣<EFBFBD>
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
TOP_TITLE_X1, TOP_TITLE_X2,
|
||||
TOP_TITLE_Y1 + (TOP_TITLE_Y2 - TOP_TITLE_Y1 - TOP_TITLE_FONT_SIZE)/2,
|
||||
(uint8_t*)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3", // ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
||||
TOP_TITLE_ALIGN,
|
||||
TOP_TITLE_TEXT_COLOR,
|
||||
TOP_TITLE_BG_COLOR,
|
||||
0,
|
||||
TOP_TITLE_FONT_SIZE
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DrawSystemSetting(void)
|
||||
{
|
||||
Draw_System_Item_List(&SystemSetting[GUI_VERSION], &mGuiData_SystemSETTING[GUI_VERSION]);
|
||||
|
|
@ -163,87 +73,73 @@ void DrawSystemSetting(void)
|
|||
Draw_System_Item_List(&SystemSetting[GUI_RESTORE], &mGuiData_SystemSETTING[GUI_RESTORE]);
|
||||
}
|
||||
|
||||
// ==============================
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ==============================
|
||||
void Touch_SystemSettingAction(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value)
|
||||
{
|
||||
uint16_t last_value;
|
||||
(void)areaIndex;
|
||||
(void)value;
|
||||
|
||||
|
||||
if(ID == 0)
|
||||
if (ID == GUI_CANCEL)
|
||||
{
|
||||
MenuPage_SystemSetting_Proc();
|
||||
MenuPage_SystemSetting_Proc(); /* ? 0902-11 ???? */
|
||||
return;
|
||||
}
|
||||
|
||||
// --------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
||||
// --------------------------
|
||||
last_value = mGuiData_SystemSETTING[ID].Current;
|
||||
switch (ID)
|
||||
{
|
||||
case GUI_BLUETOOTH_SW:
|
||||
GUI_Item_AjustValue(&mGuiData_SystemSETTING[ID], FLAG);
|
||||
mGuiData_SystemSETTING[ID].Current = !mGuiData_SystemSETTING[ID].Current;
|
||||
if (!UI_SetFocus(ID))
|
||||
RefreshSystemSetting(last_value, &SystemSetting[ID], &mGuiData_SystemSETTING[ID]);
|
||||
break;
|
||||
|
||||
case GUI_AUTOCLOSE:
|
||||
GUI_Item_AjustLoopValue(&mGuiData_SystemSETTING[ID], FLAG);
|
||||
GUI_Item_AjustLoopValue(&mGuiData_SystemSETTING[ID], FLAG >= 0 ? 1 : -1);
|
||||
if (!UI_SetFocus(ID))
|
||||
RefreshSystemSetting(last_value, &SystemSetting[ID], &mGuiData_SystemSETTING[ID]);
|
||||
break;
|
||||
|
||||
case GUI_RESTORE:
|
||||
// GUI_Item_AjustValue(&mGuiData_SystemSETTING[ID], FLAG);
|
||||
// RefreshSystemSetting(last_value, &SystemSetting[ID], &mGuiData_SystemSETTING[ID]);
|
||||
MenuPage_Restore_Proc();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UI_Setting_Init(void)
|
||||
{
|
||||
UI_ClearFocus();
|
||||
// LCD_WR_REG(0x28); // Display OFF
|
||||
UI_DrawTop_SystemSetting();
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
UI_DrawSubPageHeader((const uint8_t *)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3");
|
||||
DrawSystemSetting();
|
||||
pCurrentTouch_Area = Touch_SystemSetting_Areas;
|
||||
// LCD_WR_REG(0x29); // Display ON
|
||||
}
|
||||
|
||||
void UI_Setting_Process(DisplayTaskMessage_Type msg)
|
||||
{
|
||||
uint8_t k;
|
||||
switch (msg.MessageType)
|
||||
{
|
||||
case MSG_ID_TOUCH:
|
||||
for(uint8_t k=0; k<TOUCH_AREA_SYSTEMSETTING_NUM; k++)
|
||||
for (k = 0; k < TOUCH_AREA_SYSTEMSETTING_NUM; k++)
|
||||
{
|
||||
if( msg.HiByte >= pCurrentTouch_Area[k].x_min && msg.HiByte <= pCurrentTouch_Area[k].x_max &&
|
||||
msg.LoByte >= pCurrentTouch_Area[k].y_min && msg.LoByte <= pCurrentTouch_Area[k].y_max )
|
||||
if (msg.HiByte >= pCurrentTouch_Area[k].x_min &&
|
||||
msg.HiByte <= pCurrentTouch_Area[k].x_max &&
|
||||
msg.LoByte >= pCurrentTouch_Area[k].y_min &&
|
||||
msg.LoByte <= pCurrentTouch_Area[k].y_max)
|
||||
{
|
||||
Touch_SystemSettingAction(pCurrentTouch_Area[k].Flag,pCurrentTouch_Area[k].ID,k,0);
|
||||
Touch_SystemSettingAction(pCurrentTouch_Area[k].Flag,
|
||||
pCurrentTouch_Area[k].ID, k,
|
||||
pCurrentTouch_Area[k].Value);
|
||||
ResetAutoPowerCount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MSG_ID_EC_VOL:
|
||||
// //LCD_ShowString(200, 0, Num_To_String(msg.DataU16[1],buff,3), RED, WHITE, 16, 0);
|
||||
// uint8_t vol = msg.DataU16[1];
|
||||
// uint8_t level;
|
||||
// if (vol <= 5) level = 0;
|
||||
// else if (vol <= 35) level = 1;
|
||||
// else if (vol <= 65) level = 2;
|
||||
// else if (vol <= 95) level = 3;
|
||||
// else if (vol <= 115) level = 4;
|
||||
// else level = 5;
|
||||
// //Draw_Volume_Bar(5, 5, level, 1, WHITE, GRAY);
|
||||
// uint8_t mMasterSysExVolume[12] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x64, 0x00, 0x00,0xF7};
|
||||
// memset(mMasterSysExVolume+8,msg.DataU16[1],1);
|
||||
// SendMidiDataToDreamDSP(mMasterSysExVolume,12);
|
||||
//
|
||||
// ResetAutoPowerCount();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,10 @@
|
|||
#ifndef __UI_SETTING_H__
|
||||
#define __UI_SETTING_H__
|
||||
|
||||
|
||||
extern GUI_SWITCH mGuiData_SystemSETTING[];
|
||||
extern LEBEL_UI SystemSetting[];
|
||||
|
||||
|
||||
void UI_DrawTop_TiaoYinTai(void);
|
||||
void UI_Setting_Init(void);
|
||||
void UI_Setting_Process(DisplayTaskMessage_Type msg);
|
||||
|
||||
extern void UI_Draw_Bottom_Buttons(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
270
UI/UI_SongMode.c
|
|
@ -7,105 +7,56 @@ static uint8_t Speed[6] = {0xF0, 0x51, 0x03, 0x00, 0x00, 0xF7};
|
|||
|
||||
void Draw_Tab_Mode_Menu(const LEBEL_UI *UI, GUI_SWITCH *Group)
|
||||
{
|
||||
// ===================== TAB 閰嶇疆鍙傛暟 =====================
|
||||
const uint16_t tab_w = 80; // TAB瀹藉<E780B9>????
|
||||
const uint16_t tab_h = 20; // TAB楂樺<E6A582>????
|
||||
const uint8_t tab_r = 5; // 鍦嗚<E98DA6>????
|
||||
//const uint8_t space = 3; // 闂<>?<3F>窛
|
||||
const uint16_t start_x = UI->x; // 璧峰X
|
||||
const uint16_t start_y = UI->y; // 璧峰Y
|
||||
const uint16_t text_y = UI->y + 2; // 鏂囧<E98F82>????Y
|
||||
/* 0819:TAB 字号 11;0902:紧凑圆角条,选中常亮蓝,文字垂直居中 */
|
||||
const uint16_t tab_w = UI0902_TAB_W;
|
||||
const uint16_t tab_h = UI0902_TAB_H;
|
||||
const uint8_t tab_r = UI0902_RADIUS_TAB;
|
||||
const uint8_t tab_font = UI0902_FONT_LABEL;
|
||||
const uint16_t start_x = UI0902_MARGIN_X;
|
||||
const uint16_t start_y = UI->y;
|
||||
const uint16_t gap = UI0902_TAB_GAP;
|
||||
const uint16_t text_y = start_y + (tab_h - tab_font) / 2;
|
||||
const uint16_t inset = 3;
|
||||
uint16_t color_sel_bg = COLOR_GRAD_MID;
|
||||
uint16_t color_unsel_bg = UI0902_ROW_BG;
|
||||
uint16_t color_text = UI->Text_fc;
|
||||
uint16_t x1 = start_x;
|
||||
uint16_t x2 = start_x + tab_w + gap;
|
||||
|
||||
// ===================== 棰滆壊瀹氫<E780B9>???? =====================
|
||||
uint16_t color_sel_bg = UI_IsFocused(GUI_MODE_PARAM) ? COLOR_PRIMARY : COLOR_NORMAL_BG;
|
||||
uint16_t color_unsel_bg = COLOR_NORMAL_BG;
|
||||
uint16_t color_text = UI->Text_fc; // 鏂囧瓧棰滆<E6A3B0>??
|
||||
|
||||
// 鏄剧ず锛氳嚜鍔ㄤ即濂忓紑 / <20>?????
|
||||
if(Group->Current == 1)
|
||||
{
|
||||
LCD_FillRoundRect(start_x,
|
||||
start_y,
|
||||
tab_w,
|
||||
tab_h,
|
||||
tab_r,
|
||||
color_unsel_bg);
|
||||
|
||||
LCD_FillRoundRect(start_x+tab_w +10,
|
||||
start_y,
|
||||
tab_w,
|
||||
tab_h,
|
||||
tab_r,
|
||||
color_sel_bg);
|
||||
LCD_FillRoundRect(x1, start_y, tab_w, tab_h, tab_r, color_unsel_bg);
|
||||
LCD_FillRoundRect(x2, start_y, tab_w, tab_h, tab_r, color_sel_bg);
|
||||
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
start_x,
|
||||
start_x + tab_w,
|
||||
text_y,
|
||||
x1 + inset, x1 + tab_w - inset, text_y,
|
||||
(const uint8_t*)"\xBD\xDA\xD7\xE0\xC0\xE0\xD0\xCD",
|
||||
UI->Text_Align,
|
||||
color_text,
|
||||
color_unsel_bg,
|
||||
0,
|
||||
16
|
||||
);
|
||||
LCD_ALIGN_CENTER, color_text, color_unsel_bg, 0, tab_font);
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
start_x + tab_w + 15,
|
||||
start_x + tab_w + tab_w,
|
||||
text_y,
|
||||
x2 + inset, x2 + tab_w - inset, text_y,
|
||||
(const uint8_t *)"\xB1\xBE\xB5\xD8\xC7\xFA\xC4\xBF",
|
||||
UI->Text_Align,
|
||||
color_text,
|
||||
color_sel_bg,
|
||||
0,
|
||||
16
|
||||
);
|
||||
LCD_ALIGN_CENTER, color_text, color_sel_bg, 0, tab_font);
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_FillRoundRect(start_x,
|
||||
start_y,
|
||||
tab_w,
|
||||
tab_h,
|
||||
tab_r,
|
||||
color_sel_bg);
|
||||
|
||||
LCD_FillRoundRect(start_x+tab_w +10,
|
||||
start_y,
|
||||
tab_w,
|
||||
tab_h,
|
||||
tab_r,
|
||||
color_unsel_bg);
|
||||
LCD_FillRoundRect(x1, start_y, tab_w, tab_h, tab_r, color_sel_bg);
|
||||
LCD_FillRoundRect(x2, start_y, tab_w, tab_h, tab_r, color_unsel_bg);
|
||||
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
start_x,
|
||||
start_x + tab_w,
|
||||
text_y,
|
||||
(const uint8_t*)"\xBD\xDA\xD7\xE0\xC0\xE0\xD0\xCD", //节<>?<3F>类<EFBFBD>?
|
||||
UI->Text_Align,
|
||||
color_text,
|
||||
color_sel_bg,
|
||||
0,
|
||||
16
|
||||
);
|
||||
x1 + inset, x1 + tab_w - inset, text_y,
|
||||
(const uint8_t*)"\xBD\xDA\xD7\xE0\xC0\xE0\xD0\xCD",
|
||||
LCD_ALIGN_CENTER, color_text, color_sel_bg, 0, tab_font);
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
start_x + tab_w + 15,
|
||||
start_x + tab_w + tab_w,
|
||||
text_y,
|
||||
(const uint8_t *)"\xB1\xBE\xB5\xD8\xC7\xFA\xC4\xBF", //<2F>?地曲<E59CB0>?
|
||||
UI->Text_Align,
|
||||
color_text,
|
||||
color_unsel_bg,
|
||||
0,
|
||||
16
|
||||
);
|
||||
x2 + inset, x2 + tab_w - inset, text_y,
|
||||
(const uint8_t *)"\xB1\xBE\xB5\xD8\xC7\xFA\xC4\xBF",
|
||||
LCD_ALIGN_CENTER, color_text, color_unsel_bg, 0, tab_font);
|
||||
}
|
||||
}
|
||||
|
||||
void Show_home_UI(void)
|
||||
{
|
||||
UI_ClearFocus();
|
||||
LCD_FillByColor(0,0,240,320,BLACK);
|
||||
LCD_FillByColor(0,0,240,320,UI0902_BG_COLOR);
|
||||
label_top();
|
||||
label_Tranzpose_ui(&UI_Label[GUI_TRANSPOSE], &mGuiData[GUI_TRANSPOSE]);
|
||||
label_Speed_ui(&UI_Label[GUI_SPEED], &mGuiData[GUI_SPEED]);
|
||||
|
|
@ -117,11 +68,25 @@ void Show_home_UI(void)
|
|||
//LCD_BLK_Set();
|
||||
}
|
||||
|
||||
/* 三模式主页互切:只重绘变化区,避免整屏清导致闪烁 */
|
||||
void Show_home_UI_Diff(void)
|
||||
{
|
||||
const LEBEL_UI *mode = &UI_Label[GUI_MODE_PARAM];
|
||||
|
||||
UI_ClearFocus();
|
||||
/* 清 TAB/标题条,避免万能↔普通/专业互切留下残影 */
|
||||
LCD_FillByColor(mode->x, mode->y,
|
||||
(uint16_t)(mode->x + mode->w),
|
||||
(uint16_t)(mode->y + UI0902_TAB_H + 4),
|
||||
UI0902_BG_COLOR);
|
||||
label_ModeSelece_ui(mode, &mGuiData[GUI_MODE_PARAM]);
|
||||
label_Tab_Select_ui(&UI_Label[GUI_PLAY_SECTION], &mGuiData[GUI_TAB_INDEX]);
|
||||
}
|
||||
|
||||
int8_t delta = 0;
|
||||
void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value)
|
||||
{
|
||||
uint8_t last_value;
|
||||
uint8_t midi_note_buff[4] = {0,};
|
||||
NvmParam_Type * nvm = drv_nvm_param_ptr();
|
||||
if(FLAG == 1 || FLAG == -1)
|
||||
{
|
||||
|
|
@ -157,25 +122,17 @@ void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value)
|
|||
{
|
||||
switch(mGuiData[GUI_TAB_INDEX].Current)
|
||||
{
|
||||
case 2:
|
||||
case 0: /* 万能:和弦走向转调触发 */
|
||||
{
|
||||
uint8_t midi = 0x3c;
|
||||
midi += mGuiData[GUI_TRANSPOSE].Current;
|
||||
AutoBandTop1_Note_On(midi,0x3c); // AutoBand 模块未加入工程
|
||||
AutoBandTop1_Note_On(midi,0x3c);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,480); // AutoBand 模块未加入工程
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
{
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,480); // AutoBand 模块未加入工程
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
}
|
||||
case 1: /* 专业 */
|
||||
case 2: /* 普通 */
|
||||
/* 音师:快转调只换和弦音,伴奏不重头 */
|
||||
Accomp_UpdatePlayingChord();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -206,48 +163,43 @@ void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value)
|
|||
case GUI_MODE_PARAM:
|
||||
{
|
||||
GUI_SWITCH *pCurData =NULL;
|
||||
uint8_t tab = (uint8_t)mGuiData[GUI_TAB_INDEX].Current;
|
||||
|
||||
switch(mGuiData[GUI_TAB_INDEX].Current)
|
||||
{
|
||||
case 0: case 1:
|
||||
if(mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
if (tab == 0)
|
||||
pCurData = &ParamGuiData[ALL_MODE_PARAM];
|
||||
else if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
pCurData = &ParamGuiData[EXPRESS_MODE_PARAM];
|
||||
}
|
||||
else
|
||||
{
|
||||
pCurData = &ParamGuiData[SONG_MODE_PARAM];
|
||||
}
|
||||
break;
|
||||
case 2: pCurData = &ParamGuiData[ALL_MODE_PARAM]; break;
|
||||
}
|
||||
|
||||
last_value = pCurData->Current;
|
||||
GUI_Item_AjustLoopValue(pCurData, FLAG);
|
||||
if (!UI_SetFocus(GUI_MODE_PARAM))
|
||||
show_Param(&UI_Label[GUI_MODE_PARAM], pCurData);
|
||||
switch(mGuiData[GUI_TAB_INDEX].Current)
|
||||
{
|
||||
case 0: case 1:
|
||||
if(mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
AutoBandTop1_LoadPresetItemFromFlash(0);
|
||||
}
|
||||
|
||||
UI_ApplyToneAddress();
|
||||
int ret = 0;
|
||||
if (tab == 0)
|
||||
ret = AutoBandTop1_LoadPresetItemFromFlash(ParamGuiData[ALL_MODE_PARAM].Current);
|
||||
else if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
ret = AutoBandTop1_LoadPresetItemFromFlash(ParamGuiData[EXPRESS_MODE_PARAM].Current);
|
||||
else
|
||||
{
|
||||
AutoBandTop1_LoadPresetItemFromFlash(ParamGuiData[SONG_MODE_PARAM].Current);
|
||||
ret = AutoBandTop1_LoadPresetItemFromFlash(ParamGuiData[SONG_MODE_PARAM].Current);
|
||||
if (ret != 0)
|
||||
LOG_E("tone", "load preset failed tab=%d sw=%d ret=%d addr=0x%08X",
|
||||
tab, mGuiData[GUI_AUTOBAND_SW].Current, ret, (unsigned)ADDRESS);
|
||||
else
|
||||
LOG_I("tone", "load preset ok tab=%d sw=%d name=%s addr=0x%08X",
|
||||
tab, mGuiData[GUI_AUTOBAND_SW].Current,
|
||||
AutoBandTop1_GetPresetName() ? AutoBandTop1_GetPresetName() : "?",
|
||||
(unsigned)ADDRESS);
|
||||
|
||||
}
|
||||
break;
|
||||
case 2: AutoBandTop1_LoadPresetItemFromFlash(ParamGuiData[ALL_MODE_PARAM].Current); break;
|
||||
}
|
||||
|
||||
switch(mGuiData[GUI_TAB_INDEX].Current)
|
||||
{
|
||||
case 0: nvm->param.Param1 = ParamGuiData[SONG_MODE_PARAM].Current; break; // 姝屾<E5A79D>????
|
||||
case 1: nvm->param.Param2 = ParamGuiData[EXPRESS_MODE_PARAM].Current;
|
||||
break; // 涓撳<E6B693>????
|
||||
case 2: nvm->param.Param3 = ParamGuiData[ALL_MODE_PARAM].Current; break; // 涓囪<E6B693>????
|
||||
}
|
||||
if (tab == 0)
|
||||
nvm->param.Param3 = ParamGuiData[ALL_MODE_PARAM].Current;
|
||||
else if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
nvm->param.Param2 = ParamGuiData[EXPRESS_MODE_PARAM].Current;
|
||||
else
|
||||
nvm->param.Param1 = ParamGuiData[SONG_MODE_PARAM].Current;
|
||||
}
|
||||
break;
|
||||
case GUI_TIMBRE_SELECT:
|
||||
|
|
@ -270,15 +222,15 @@ void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value)
|
|||
|
||||
if(ID == GUI_AUTOBAND_SW)
|
||||
{
|
||||
/* 万能无节奏/本地 TAB,忽略该触控 */
|
||||
if (mGuiData[GUI_TAB_INDEX].Current == 0)
|
||||
return;
|
||||
if (mGuiData[ID].Current == value)
|
||||
return;
|
||||
mGuiData[ID].Current = value;
|
||||
|
||||
if(mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
ADDRESS = 0x0009EB5B;
|
||||
}else
|
||||
{
|
||||
ADDRESS = 0x00000000;
|
||||
}
|
||||
StartFlag = 0;
|
||||
AutoBandTop1_Stop();
|
||||
UI_ReloadTonePreset();
|
||||
if (!UI_SetFocus(GUI_MODE_PARAM))
|
||||
label_ModeSelece_ui(&UI_Label[GUI_MODE_PARAM],&mGuiData[GUI_MODE_PARAM]);
|
||||
return;
|
||||
|
|
@ -298,6 +250,11 @@ void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value)
|
|||
Refresh_SectionSelect(last_value, &UI_Label[ID], &mGuiData[ID]);
|
||||
return;
|
||||
}
|
||||
else if(ID == GUI_NAV_BAR)
|
||||
{
|
||||
UI_NavBar_Action(value);
|
||||
return;
|
||||
}
|
||||
else if(ID==GUI_TAB_INDEX)
|
||||
{
|
||||
if(mGuiData[ID].Current != value)
|
||||
|
|
@ -307,42 +264,28 @@ void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value)
|
|||
app_tm1629_all_on(LED_COLOR_G);
|
||||
switch(mGuiData[ID].Current)
|
||||
{
|
||||
case 0:
|
||||
case 0: /* 万能 → 3.bin / 本地→2.bin */
|
||||
if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[ID].Current)
|
||||
break;
|
||||
StartFlag = 0;
|
||||
AutoBandTop1_Stop();
|
||||
if(mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
ADDRESS = 0x0009EB5F;
|
||||
}
|
||||
else
|
||||
{
|
||||
ADDRESS = 0x00000000;
|
||||
}
|
||||
UI_ReloadTonePreset(); /* 切换模式必须换库,避免专业仍播万能数据 */
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case 1: /* 专业 → 1.bin / 本地→2.bin */
|
||||
if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[ID].Current)
|
||||
break;
|
||||
StartFlag = 0;
|
||||
AutoBandTop1_Stop();
|
||||
if(mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
ADDRESS = 0x0009EB5F;
|
||||
}
|
||||
else
|
||||
{
|
||||
ADDRESS = 0x00000000;
|
||||
}
|
||||
UI_ReloadTonePreset();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 2: /* 普通 → 1.bin */
|
||||
if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[ID].Current)
|
||||
break;
|
||||
StartFlag = 0;
|
||||
AutoBandTop1_Stop();
|
||||
ADDRESS = 0x0009598F;
|
||||
UI_ReloadTonePreset();
|
||||
break;
|
||||
}
|
||||
Refresh_TabSelect_ui(&UI_Label[ID], &mGuiData[ID]);
|
||||
|
|
@ -364,6 +307,11 @@ void UI_SongMode_Init(void)
|
|||
//mGuiData[GUI_AUTOBAND_SW].Current = 0;
|
||||
mGuiData[GUI_TAB_INDEX].Current = 0;
|
||||
mGuiData[GUI_TAB_LAST_INDEX].Current = mGuiData[GUI_TAB_INDEX].Current;
|
||||
UI_ReloadTonePreset(); /* TAB=万能 后再加载 3.bin */
|
||||
/* 已在主页互切用差分;从 Idle/设置进入仍整页 */
|
||||
if (CurrUIProcress == UI_SongMode_Process)
|
||||
Show_home_UI_Diff();
|
||||
else
|
||||
Show_home_UI();
|
||||
pCurrentTouch_Area = Touch_Areas;
|
||||
|
||||
|
|
@ -371,7 +319,6 @@ void UI_SongMode_Init(void)
|
|||
|
||||
void UI_SongMode_Process(DisplayTaskMessage_Type msg)
|
||||
{
|
||||
uint8_t midi_note_buff[4] = {0,};
|
||||
NvmParam_Type * nvm = drv_nvm_param_ptr();
|
||||
|
||||
switch(msg.MessageType)
|
||||
|
|
@ -385,8 +332,9 @@ void UI_SongMode_Process(DisplayTaskMessage_Type msg)
|
|||
msg.LoByte >= pCurrentTouch_Area[k].y_min && msg.LoByte <= pCurrentTouch_Area[k].y_max )
|
||||
{
|
||||
hit = 1U;
|
||||
LOG_I("UI", "song hit area=%u id=%u x=%u y=%u",
|
||||
LOG_I("UI", "song hit area=%u id=%u val=%u x=%u y=%u",
|
||||
(unsigned)k, (unsigned)pCurrentTouch_Area[k].ID,
|
||||
(unsigned)pCurrentTouch_Area[k].Value,
|
||||
(unsigned)msg.HiByte, (unsigned)msg.LoByte);
|
||||
Touch_Action(pCurrentTouch_Area[k].Flag,pCurrentTouch_Area[k].ID,k,pCurrentTouch_Area[k].Value);
|
||||
ResetAutoPowerCount();
|
||||
|
|
@ -405,8 +353,8 @@ void UI_SongMode_Process(DisplayTaskMessage_Type msg)
|
|||
break;
|
||||
|
||||
case MSG_ID_EC_VOL:
|
||||
Send_volume(msg.ID);
|
||||
Draw_Volume_Bar(5, 5, msg.HiByte, 1, WHITE, GRAY);
|
||||
/* 主音量已在 MainTask 下发;此处只刷新条 */
|
||||
Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, msg.HiByte, 1, WHITE, GRAY);
|
||||
break;
|
||||
|
||||
case MSG_ID_TAP_SPEED:
|
||||
|
|
@ -520,10 +468,8 @@ void UI_SongMode_Process(DisplayTaskMessage_Type msg)
|
|||
USE_MIDI.Midi_6 += delta;
|
||||
if(/*KEY_ID_1629 != 0 && */StartFlag && KEY_ID_1629 != 22 && KEY_ID_1629 != 23)
|
||||
{
|
||||
AutoBandTop1_SetPiecePlayMode(1,0,480);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
AutoBandTop1_SetLoopMode(0,1);
|
||||
AutoBandTop1_StartWithNotes(midi_note_buff,GetChordNotesByType(KEY_ID_1629,chord_type_index_map[KEY_ID_1629].type,midi_note_buff));
|
||||
/* 音师:快转调只换和弦音,伴奏不重头 */
|
||||
Accomp_UpdatePlayingChord();
|
||||
}
|
||||
ResetAutoPowerCount();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,287 +1,130 @@
|
|||
#include "includes.h"
|
||||
|
||||
#define UI_MODE_SCREEN_WIDTH 240 // <20><>Ļ<EFBFBD><C4BB>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<43><EFBFBD>
|
||||
#define UI_MODE_SCREEN_HEIGHT 250 // <20><>Ļ<EFBFBD>߶ȣ<DFB6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<43><EFBFBD>
|
||||
|
||||
#define UI_MODE_BG_COLOR 0x1925 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭͼ<D4AD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
#define UI_MODE_LINE_COLOR DARKBLUE // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define UI_MODE_TEXT_COLOR 0xFFFF // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ɫ
|
||||
#define UI_MODE_FONT_SIZE 16 // 模式按钮字号(MiSans 16)
|
||||
|
||||
// ==============================
|
||||
// <20><><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||
// ==============================
|
||||
#define MODE_AREA_START_Y 25 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ Y
|
||||
#define MODE_AREA_END_Y 250 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Y
|
||||
#define MODE_AREA_HEIGHT (MODE_AREA_END_Y - MODE_AREA_START_Y)
|
||||
|
||||
/* 0902-11 设置入口:调音台 / 系统设置 两大入口 + 底栏设置高亮 */
|
||||
|
||||
const Touch_AreaTypeDef Touch_SetingSelect_Areas[] = {
|
||||
// Xmin, Xmax, Ymin, Ymax, flag, ID, action
|
||||
{ 5, 235, 30, 140, 0, 0, GUI_SETING_SELECT1, NULL }, // <20><>һ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>̨
|
||||
{ 5, 235, 140, 250, 1, 0, GUI_SETING_SELECT3, NULL }, // <20>ڶ<EFBFBD><DAB6>У<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
||||
{ 10, 50, 275, 340, 0,2, 5, NULL },
|
||||
{ 70, 130, 275, 340, 0,0, 5, NULL },
|
||||
{ 130, 170, 275, 340, 0,1, 5, NULL },
|
||||
{ 190, 230, 275, 340, 0,3, 5, NULL },
|
||||
/* 调音台卡片 */
|
||||
{ UI0902_HUB_CARD_X, (uint16_t)(UI0902_HUB_CARD_X + UI0902_HUB_CARD_W - 1),
|
||||
UI0902_HUB_CARD_Y0, (uint16_t)(UI0902_HUB_CARD_Y0 + UI0902_HUB_CARD_H - 1),
|
||||
0, 0, GUI_SETING_SELECT1, NULL },
|
||||
/* 系统设置卡片 */
|
||||
{ UI0902_HUB_CARD_X, (uint16_t)(UI0902_HUB_CARD_X + UI0902_HUB_CARD_W - 1),
|
||||
UI0902_HUB_CARD_Y1, (uint16_t)(UI0902_HUB_CARD_Y1 + UI0902_HUB_CARD_H - 1),
|
||||
0, 0, GUI_SETING_SELECT3, NULL },
|
||||
/* 底栏四键 */
|
||||
{ 0, 69, 280, 319, 0, UI0902_NAV_UNIVERSAL, GUI_NAV_BAR, NULL },
|
||||
{ 70, 129, 280, 319, 0, UI0902_NAV_NORMAL, GUI_NAV_BAR, NULL },
|
||||
{ 130, 184, 280, 319, 0, UI0902_NAV_EXPERT, GUI_NAV_BAR, NULL },
|
||||
{ 185, 239, 280, 319, 0, UI0902_NAV_SETTING, GUI_NAV_BAR, NULL },
|
||||
};
|
||||
|
||||
#define TOUCH_AREA_SETING_SELECT_NUM (sizeof(Touch_SetingSelect_Areas)/sizeof(Touch_AreaTypeDef))
|
||||
|
||||
static void UI_Hub_DrawCard(uint16_t y, const uint8_t *icon, uint16_t icon_w, uint16_t icon_h,
|
||||
const uint8_t *title_gbk)
|
||||
{
|
||||
uint16_t x = UI0902_HUB_CARD_X;
|
||||
uint16_t w = UI0902_HUB_CARD_W;
|
||||
uint16_t h = UI0902_HUB_CARD_H;
|
||||
uint16_t cy = y + h / 2;
|
||||
uint16_t text_y = y + (h - UI0902_HUB_FONT) / 2;
|
||||
uint16_t icon_x = x + 22;
|
||||
uint16_t icon_y = y + (h - icon_h) / 2;
|
||||
|
||||
LCD_FillRoundRect(x, y, w, h, UI0902_RADIUS_CARD, UI0902_ROW_BG);
|
||||
LCD_WR_PIC_Trans(icon_x, icon_y, icon_w, icon_h, icon, BLACK);
|
||||
/* 标题相对卡片水平居中(略偏右给左侧图标留空) */
|
||||
LCD_ShowChinese_AutoAlign(
|
||||
x + 56, x + w - 36, text_y, title_gbk,
|
||||
LCD_ALIGN_CENTER, WHITE, UI0902_ROW_BG, 0, UI0902_HUB_FONT);
|
||||
LCD_DrawChevron_Right((uint16_t)(x + w - 24), cy, 6, 2, WHITE);
|
||||
}
|
||||
|
||||
void Touch_Seting_Select_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value)
|
||||
{
|
||||
uint8_t last_value;
|
||||
(void)FLAG;
|
||||
(void)areaIndex;
|
||||
|
||||
if (ID == GUI_NAV_BAR)
|
||||
{
|
||||
if (value == UI0902_NAV_SETTING)
|
||||
return; /* 已在设置入口 */
|
||||
UI_NavBar_Action(value);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (ID)
|
||||
{
|
||||
case 0:
|
||||
case GUI_SETING_SELECT1:
|
||||
MenuPage_Mixer_Proc();
|
||||
break;
|
||||
// case 2: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Ԥ<><D4A4>
|
||||
// MenuPage_FreeMode_Proc();
|
||||
// break;
|
||||
case 2:
|
||||
MenuPage_Setting_Proc();
|
||||
case GUI_SETING_SELECT3:
|
||||
MenuPage_Setting_Proc(); /* 系统设置明细 0902-07 */
|
||||
break;
|
||||
|
||||
case 5:
|
||||
last_value = mGuiData[GUI_TAB_INDEX].Current;
|
||||
|
||||
mGuiData[GUI_TAB_INDEX].Current = value;
|
||||
if(last_value != value)
|
||||
{
|
||||
switch(value)
|
||||
{
|
||||
case 0:
|
||||
if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[GUI_TAB_INDEX].Current)
|
||||
break;
|
||||
//AutoBandTop1_Stop(); // AutoBand 模块未加入工程
|
||||
ADDRESS = 0x00000000;
|
||||
//AutoBandTop1_LoadPresetItemFromFlash(0); // AutoBand 模块未加入工程
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[GUI_TAB_INDEX].Current)
|
||||
break;
|
||||
//AutoBandTop1_Stop(); // AutoBand 模块未加入工程
|
||||
ADDRESS = 0x0000EB41;
|
||||
//AutoBandTop1_LoadPresetItemFromFlash(0); // AutoBand 模块未加入工程
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[GUI_TAB_INDEX].Current)
|
||||
break;
|
||||
//AutoBandTop1_Stop();
|
||||
ADDRESS = 0x000170EF;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// switch(value)
|
||||
// {
|
||||
// case 0:
|
||||
//
|
||||
// MenuPage_SongMode_Proc();
|
||||
// break;
|
||||
// case 1:
|
||||
// MenuPage_ExpertMode_Proc();
|
||||
// break;
|
||||
// case 2:
|
||||
// MenuPage_FreeMode_Proc();
|
||||
// break;
|
||||
// }
|
||||
|
||||
Refresh_TabSelect_ui(&UI_Label[ID], &mGuiData[ID]);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//// 1 = 2<><32><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>0 = 3<><33><EFBFBD><EFBFBD>ʾ
|
||||
//#define USE_2_LINE_MODE 1
|
||||
//
|
||||
//void UI_DrawSysModeSelectScreen(void)
|
||||
//{
|
||||
// uint16_t y1, y2;
|
||||
//
|
||||
// // 1. <20><><EFBFBD><EFBFBD>
|
||||
// LCD_FillByColor(0,0,240,320,BLACK);
|
||||
// LCD_FillRoundRect(5,5,240-5,320-5,10,UI_MODE_BG_COLOR);
|
||||
//
|
||||
// // ==============================
|
||||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// // ==============================
|
||||
// #if (USE_2_LINE_MODE == 1)
|
||||
// // 2<>У<EFBFBD><D0A3><EFBFBD> 25~250 ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD>
|
||||
// y1 = MODE_AREA_START_Y + (MODE_AREA_HEIGHT / 2);
|
||||
// LCD_DrawLine(5, y1, UI_MODE_SCREEN_WIDTH-5, y1, UI_MODE_LINE_COLOR);
|
||||
// #else
|
||||
// // 3<>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ȷ<EFBFBD>
|
||||
// y1 = MODE_AREA_START_Y + (MODE_AREA_HEIGHT / 3);
|
||||
// y2 = MODE_AREA_START_Y + (MODE_AREA_HEIGHT * 2 / 3);
|
||||
// LCD_DrawLine(5, y1, UI_MODE_SCREEN_WIDTH-5, y1, UI_MODE_LINE_COLOR);
|
||||
// LCD_DrawLine(5, y2, UI_MODE_SCREEN_WIDTH-5, y2, UI_MODE_LINE_COLOR);
|
||||
// #endif
|
||||
//
|
||||
// uint16_t text_x_pos;
|
||||
// uint16_t text_y_pos;
|
||||
//
|
||||
// // ==============================
|
||||
// // <20><>һ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>3<EFBFBD><33> <20><><EFBFBD>У<EFBFBD>
|
||||
// // ==============================
|
||||
// text_x_pos = (UI_MODE_SCREEN_WIDTH - 3 * UI_MODE_FONT_SIZE) / 2;
|
||||
//
|
||||
// #if (USE_2_LINE_MODE == 1)
|
||||
// text_y_pos = MODE_AREA_START_Y + (MODE_AREA_HEIGHT/2/2) - (UI_MODE_FONT_SIZE/2);
|
||||
// #else
|
||||
// text_y_pos = MODE_AREA_START_Y + (y1/2/2) - (UI_MODE_FONT_SIZE/2);
|
||||
// #endif
|
||||
//
|
||||
// LCD_ShowChineseString(
|
||||
// text_x_pos, text_y_pos,
|
||||
// (uint8_t*)"\xB5\xF7\xD2\xF4\xCC\xA8", // <20><><EFBFBD><EFBFBD>̨
|
||||
// UI_MODE_TEXT_COLOR, UI_MODE_BG_COLOR, UI_MODE_FONT_SIZE, 0
|
||||
// );
|
||||
//
|
||||
// // ==============================
|
||||
// // <20>ڶ<EFBFBD><DAB6>У<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ã<EFBFBD>4<EFBFBD><34> <20><><EFBFBD>У<EFBFBD>
|
||||
// // ==============================
|
||||
// text_x_pos = (UI_MODE_SCREEN_WIDTH - 4 * UI_MODE_FONT_SIZE) / 2;
|
||||
//
|
||||
// #if (USE_2_LINE_MODE == 1)
|
||||
// text_y_pos = MODE_AREA_START_Y + (MODE_AREA_HEIGHT/2) + (MODE_AREA_HEIGHT/2/2) - (UI_MODE_FONT_SIZE/2);
|
||||
// #else
|
||||
// text_y_pos = y1 + ((y2 - y1)/2) - (UI_MODE_FONT_SIZE/2);
|
||||
// #endif
|
||||
//
|
||||
// LCD_ShowChineseString(
|
||||
// text_x_pos, text_y_pos,
|
||||
// (uint8_t*)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3", // ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
||||
// UI_MODE_TEXT_COLOR, UI_MODE_BG_COLOR, UI_MODE_FONT_SIZE, 0
|
||||
// );
|
||||
//
|
||||
// // ==============================
|
||||
// // <20><><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>루<EFBFBD><EBA3A8><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
// // ==============================
|
||||
// #if (USE_2_LINE_MODE == 0)
|
||||
// text_x_pos = (UI_MODE_SCREEN_WIDTH - 4 * UI_MODE_FONT_SIZE) / 2;
|
||||
// text_y_pos = y2 + ((MODE_AREA_HEIGHT - y2)/2) - (UI_MODE_FONT_SIZE/2);
|
||||
// LCD_ShowChineseString(
|
||||
// text_x_pos, text_y_pos,
|
||||
// (uint8_t*)"\xD7\xD4\xD3\xC9\xC4\xA3\xCA\xBD",
|
||||
// UI_MODE_TEXT_COLOR, UI_MODE_BG_COLOR, UI_MODE_FONT_SIZE, 0
|
||||
// );
|
||||
// #endif
|
||||
//}
|
||||
|
||||
|
||||
|
||||
//#define UI_MODE_SCREEN_WIDTH 240 // 屏幕宽度,根<EFBC8C>??????????你的LCD<43>??????????<3F>??????????
|
||||
//#define UI_MODE_SCREEN_HEIGHT 320 // 屏幕高度,根<EFBC8C>??????????你的LCD<43>??????????<3F>??????????
|
||||
|
||||
//#define UI_MODE_BG_COLOR 0x1925 // 背景深色,近似原图的深蓝<E6B7B1>??????????
|
||||
//#define UI_MODE_LINE_COLOR 0x0000/*DARKBLUE*/ // 分割线<E589B2>?<3F>色,比背景稍亮
|
||||
#define UI_SET_MODE_TEXT_COLOR 0xFFFF // 文字颜色,白<EFBC8C>??????????
|
||||
//#define UI_MODE_FONT_SIZE 24 // 字体大小,根<EFBC8C>??????????你的字库<E5AD97>??????????<3F>??????????
|
||||
|
||||
void UI_DrawSysModeSelectScreen(void)
|
||||
{
|
||||
|
||||
// 1. 渐变背景(深灰→黑色<E9BB91>???
|
||||
// LCD_FillGradient(0, 0, 240, 320, 0x5AEB, 0x0000);
|
||||
LCD_FillByColor(0, 0, 240, 320, BLACK);
|
||||
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
label_top();
|
||||
|
||||
// 2. 按钮参数:<E695B0>??=220 <20>?????=87 圆<>??=10 深灰色背<E889B2>?????
|
||||
const uint16_t btn_w = 220;
|
||||
const uint16_t btn_h = 87;
|
||||
const uint16_t btn_r = 10;
|
||||
const uint16_t btn_x = (240 - btn_w) / 2; // 10
|
||||
const uint16_t btn_color = COLOR_NORMAL_BG;
|
||||
/* 调音台:0907 素材 13(34x33 推子图标) */
|
||||
UI_Hub_DrawCard(UI0902_HUB_CARD_Y0, gImage_mixer, 34, 33,
|
||||
(const uint8_t *)"\xB5\xF7\xD2\xF4\xCC\xA8");
|
||||
/* 系统设置:0907 素材 14(33x33 齿轮图标) */
|
||||
UI_Hub_DrawCard(UI0902_HUB_CARD_Y1, gImage_SystemSetting, 33, 33,
|
||||
(const uint8_t *)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3");
|
||||
|
||||
LCD_DrawLine(0, 30, 240, 30, btn_color);
|
||||
|
||||
LCD_FillRoundRect(btn_x, 40+20, btn_w, btn_h, btn_r, btn_color);
|
||||
|
||||
LCD_DrawChevron_Right(200, 105, 15, 3, WHITE);
|
||||
|
||||
uint16_t x1 = LCD_ShowChinese_AutoAlign(
|
||||
btn_x, btn_x + btn_w,
|
||||
40 + (btn_h - 24) / 2+20,
|
||||
(uint8_t*)"\xB5\xF7\xD2\xF4\xCC\xA8",
|
||||
LCD_ALIGN_CENTER,
|
||||
UI_SET_MODE_TEXT_COLOR,
|
||||
btn_color,
|
||||
0,
|
||||
24
|
||||
);
|
||||
LCD_WR_PIC_Trans(x1-45, 40 + (btn_h - 24) / 2+10,40,40,gImage_mixer, BLACK);
|
||||
|
||||
LCD_FillRoundRect(btn_x, 132+20, btn_w, btn_h, btn_r, btn_color);
|
||||
|
||||
|
||||
LCD_DrawChevron_Right(200, 195, 15, 3, WHITE);
|
||||
uint8_t x2 = LCD_ShowChinese_AutoAlign(
|
||||
btn_x, btn_x + btn_w,
|
||||
132 + (btn_h - 24) / 2+20,
|
||||
(uint8_t*)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3",
|
||||
LCD_ALIGN_CENTER,
|
||||
UI_SET_MODE_TEXT_COLOR,
|
||||
btn_color,
|
||||
0,
|
||||
24
|
||||
);
|
||||
|
||||
LCD_WR_PIC_Trans(x2-45, 132 + (btn_h - 24) / 2+10,40,40,gImage_SystemSetting, BLACK);
|
||||
Draw_Bottom_Bar(UI0902_NAV_SETTING, 0);
|
||||
}
|
||||
|
||||
void UI_SystemSet_Init(void)
|
||||
{
|
||||
UI_ClearFocus();
|
||||
// LCD_WR_REG(0x28); // Display OFF
|
||||
pCurrentTouch_Area = Touch_SetingSelect_Areas;
|
||||
UI_DrawSysModeSelectScreen();
|
||||
label_top();
|
||||
label_Tab_Select_ui(&UI_Label[GUI_PLAY_SECTION], &mGuiData[GUI_TAB_INDEX]);
|
||||
// LCD_WR_REG(0x29); // Display ON
|
||||
app_log_set_ui_page("SetHub");
|
||||
LOG_I("UI", "page SettingsHub");
|
||||
}
|
||||
|
||||
void UI_SystemSet_Process(DisplayTaskMessage_Type msg)
|
||||
{
|
||||
static uint32_t s_last_touch_ms;
|
||||
|
||||
switch (msg.MessageType)
|
||||
{
|
||||
case MSG_ID_TOUCH:
|
||||
for(uint8_t k=0; k<TOUCH_AREA_SETING_SELECT_NUM; k++)
|
||||
{
|
||||
uint32_t now = rt_tick_get() * 1000U / RT_TICK_PER_SECOND;
|
||||
uint8_t k;
|
||||
if (now - s_last_touch_ms < 250U)
|
||||
break;
|
||||
s_last_touch_ms = now;
|
||||
for (k = 0; k < TOUCH_AREA_SETING_SELECT_NUM; k++)
|
||||
{
|
||||
if (msg.HiByte >= pCurrentTouch_Area[k].x_min &&
|
||||
msg.HiByte <= pCurrentTouch_Area[k].x_max &&
|
||||
msg.LoByte >= pCurrentTouch_Area[k].y_min &&
|
||||
msg.LoByte <= pCurrentTouch_Area[k].y_max)
|
||||
{
|
||||
Touch_Seting_Select_Action(pCurrentTouch_Area[k].Flag,pCurrentTouch_Area[k].ID,k,pCurrentTouch_Area[k].Value);
|
||||
Touch_Seting_Select_Action(pCurrentTouch_Area[k].Flag,
|
||||
pCurrentTouch_Area[k].ID, k,
|
||||
pCurrentTouch_Area[k].Value);
|
||||
ResetAutoPowerCount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MSG_ID_EC_VOL:
|
||||
// //LCD_ShowString(200, 0, Num_To_String(msg.DataU16[1],buff,3), RED, WHITE, 16, 0);
|
||||
// uint8_t vol = msg.DataU16[1];
|
||||
//// uint8_t level;
|
||||
// if (vol <= 5) level = 0;
|
||||
// else if (vol <= 35) level = 1;
|
||||
// else if (vol <= 65) level = 2;
|
||||
// else if (vol <= 95) level = 3;
|
||||
// else if (vol <= 115) level = 4;
|
||||
// else level = 5;
|
||||
// Draw_Volume_Bar(5, 5, level, 1, WHITE, GRAY);
|
||||
// uint8_t mMasterSysExVolume[12] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x64, 0x00, 0x00,0xF7};
|
||||
// memset(mMasterSysExVolume+8,msg.DataU16[1],1);
|
||||
// SendMidiDataToDreamDSP(mMasterSysExVolume,12);
|
||||
//
|
||||
// ResetAutoPowerCount();
|
||||
|
||||
case MSG_ID_BATTERY_VALUE:
|
||||
label_top();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1075
UI/UI_global.c
172
UI/UI_global.h
|
|
@ -28,7 +28,165 @@ void CallUI_RestoreSelect(void);
|
|||
|
||||
|
||||
#define UI_STATUS_BAR_H 26
|
||||
/* 电量组在 Draw_Battery_Icon 内按右对齐重算;此值为允许的最左起点 */
|
||||
/* 0902-01/02 需求稿:分割线 y=36,居中于顶栏图标底与移调/速度控件顶之间 */
|
||||
#define UI0902_STATUS_SEP_Y 36
|
||||
/* 顶/底共用:偏亮灰蓝,2px 厚,保证暗底上可辨 */
|
||||
#define UI0902_SEP_LINE_COLOR 0x94D5 /* RGB(144,152,168) */
|
||||
#define UI0902_SEP_LINE_THICK 1
|
||||
#define UI0902_STATUS_SEP_COLOR UI0902_SEP_LINE_COLOR
|
||||
/* 0902 设计稿配色与底栏导航 */
|
||||
#define UI0902_BG_COLOR 0x0042 /* #000813 页面背景 */
|
||||
#define UI0902_ROW_BG 0x2147 /* #242B3A 列表行背景 */
|
||||
|
||||
/* 0902-04 普通模式实测(240×320):
|
||||
* 双卡 y48 h55 w105 gap8;和弦行 y130 h31;音色 y180 h30;段落钮 y229 h34 */
|
||||
#define UI0902_MARGIN_X 12
|
||||
#define UI0902_CONTENT_W 216
|
||||
#define UI0902_CARD_GAP_TOP 22
|
||||
#define UI0902_CARD_Y (UI_STATUS_BAR_H + UI0902_CARD_GAP_TOP) /* 48 */
|
||||
#define UI0902_CARD_H 55
|
||||
#define UI0902_CARD_W 105
|
||||
#define UI0902_CARD_GAP 8
|
||||
#define UI0902_MODE_Y (UI0902_CARD_Y + UI0902_CARD_H + 5) /* 108:TAB 顶 */
|
||||
#define UI0902_MODE_H 53 /* TAB18 + 间隙4 + 曲目行31 */
|
||||
#define UI0902_TIMBRE_Y 180
|
||||
#define UI0902_TIMBRE_H 30
|
||||
#define UI0902_SECTION_Y 231 /* 0904:段落钮顶 ≈231 */
|
||||
#define UI0902_SECTION_H 34
|
||||
#define UI0902_FONT_LABEL 11 /* 标注:移调/速度 Medium 11 */
|
||||
#define UI0902_FONT_BODY 13 /* 曲目/音色正文、演奏段落 */
|
||||
#define UI0902_FONT_HERO 16 /* 主值 C/88 与稿面大号一致 */
|
||||
#define UI0902_FONT_SUB 9 /* KEY/BPM */
|
||||
#define UI0902_FONT_NAV 9
|
||||
/* ASCII 字宽(须与 Drv LCD_GetAsciiMetrics 一致) */
|
||||
#define UI0902_ASCII_W(sz) \
|
||||
((sz) == 8 ? 6 : \
|
||||
(sz) == 9 ? 8 : \
|
||||
(sz) == 11 ? 7 : \
|
||||
(sz) == 12 ? 8 : \
|
||||
(sz) == 13 || (sz) == 15 ? 11 : \
|
||||
(sz) == 16 ? 13 : ((sz) / 2 + 1))
|
||||
|
||||
/* 移调卡文字(主值加宽+下移 KEY,防 Cb/101 底/右裁切) */
|
||||
#define UI0902_CARD_TEXT_CX_L (UI0902_MARGIN_X + UI0902_CARD_W / 2) /* 64 */
|
||||
#define UI0902_CARD_TEXT_CX_R (UI0902_MARGIN_X + UI0902_CARD_W + UI0902_CARD_GAP + UI0902_CARD_W / 2) /* 176 */
|
||||
|
||||
#define UI0902_CARD_LABEL_SIZE UI0902_FONT_LABEL /* 11 */
|
||||
#define UI0902_CARD_LABEL_LH 13
|
||||
#define UI0902_CARD_LABEL_W 22
|
||||
#define UI0902_CARD_LABEL_H 11
|
||||
#define UI0902_CARD_LABEL_Y 54
|
||||
|
||||
#define UI0902_CARD_VALUE_SIZE UI0902_FONT_HERO /* 16 */
|
||||
#define UI0902_CARD_VALUE_LH 16
|
||||
#define UI0902_CARD_VALUE_W 42 /* 3×13:101/Cb 完整 */
|
||||
#define UI0902_CARD_VALUE_H 17
|
||||
/* mode.png:主值≈y71–85,KEY/BPM≈y89;加大与「移调/速度」间距、收紧与 KEY/BPM */
|
||||
#define UI0902_CARD_VALUE_Y 73
|
||||
/* 仅主值字母/数字:相对基准右移、上移(三角/±/KEY/BPM 不动) */
|
||||
#define UI0902_CARD_VALUE_OX 3
|
||||
#define UI0902_CARD_VALUE_OY (-3)
|
||||
|
||||
#define UI0902_CARD_SUB_SIZE UI0902_FONT_SUB /* 9 */
|
||||
#define UI0902_CARD_SUB_LH 9
|
||||
#define UI0902_CARD_SUB_W 32
|
||||
#define UI0902_CARD_SUB_H 9
|
||||
#define UI0902_CARD_SUB_Y 89
|
||||
|
||||
/* 段落钮与底栏分隔线(mode.png ≈ y274);颜色与顶栏共用 UI0902_SEP_LINE_COLOR */
|
||||
#define UI0902_SEP_LINE_Y 274
|
||||
|
||||
/* 兼容旧相对偏移宏(= 绝对Y - CARD_Y) */
|
||||
#define UI0902_CARD_LABEL_DY (UI0902_CARD_LABEL_Y - UI0902_CARD_Y)
|
||||
#define UI0902_CARD_VALUE_DY (UI0902_CARD_VALUE_Y - UI0902_CARD_Y)
|
||||
#define UI0902_CARD_SUB_DY (UI0902_CARD_SUB_Y - UI0902_CARD_Y)
|
||||
#define UI0902_TAB_H 18
|
||||
#define UI0902_TAB_W 55
|
||||
#define UI0902_TAB_GAP 6
|
||||
#define UI0902_ROW_H 31
|
||||
#define UI0902_SECTION_BTN_H 34
|
||||
#define UI0902_SECTION_BTN_W 47
|
||||
#define UI0902_SECTION_PITCH 57
|
||||
#define UI0902_RADIUS_CARD 10
|
||||
#define UI0902_RADIUS_TAB 6
|
||||
#define UI0902_RADIUS_BTN 6
|
||||
#define UI0902_BTN_MINUS_W 23
|
||||
#define UI0902_BTN_MINUS_H 22
|
||||
#define UI0902_BTN_PLUS_W 23
|
||||
#define UI0902_BTN_PLUS_H 22
|
||||
#define UI0902_TRI_L_W 22 /* 0902 控件-11 左三角 */
|
||||
#define UI0902_TRI_L_H 22
|
||||
#define UI0902_TRI_R_W 23 /* 0902 控件-12 右三角 */
|
||||
#define UI0902_TRI_R_H 22
|
||||
#define UI0902_TAB_BACK_W 30
|
||||
#define UI0902_TAB_BACK_H 24
|
||||
|
||||
/* 0902 状态栏:左音量条 / 中蓝牙 / 右电池+百分比(对齐屏幕参考 0902-01) */
|
||||
#define UI0902_VOL_X 8
|
||||
#define UI0902_VOL_Y 3
|
||||
#define UI0902_BT_W 11
|
||||
#define UI0902_BT_H 17
|
||||
#define UI0902_BT_X ((240 - UI0902_BT_W) / 2) /* 居中 */
|
||||
#define UI0902_BT_Y 5
|
||||
#define UI0902_BATTERY_W 29
|
||||
#define UI0902_BATTERY_H 12
|
||||
/* 与音量/蓝牙大致居中后再下移 2px:12px 高 → 顶 y9 */
|
||||
#define UI0902_BATTERY_Y 9
|
||||
#define UI0902_BATTERY_RIGHT_MARGIN 6
|
||||
#define UI0902_BATTERY_TEXT_GAP 2
|
||||
#define UI0902_BATTERY_TEXT_SIZE 9 /* mode.png 百分比字号 ≈9,完整显示 % */
|
||||
/* 0904 / 0902-11 设置入口:两大卡片 + 底栏「设置」高亮 */
|
||||
#define UI0902_HUB_CARD_X 10
|
||||
#define UI0902_HUB_CARD_W 220
|
||||
#define UI0902_HUB_CARD_H 85
|
||||
#define UI0902_HUB_CARD_Y0 67
|
||||
#define UI0902_HUB_CARD_GAP 5
|
||||
#define UI0902_HUB_CARD_Y1 (UI0902_HUB_CARD_Y0 + UI0902_HUB_CARD_H + UI0902_HUB_CARD_GAP) /* 157 */
|
||||
#define UI0902_HUB_FONT UI0902_FONT_HERO /* 16,与标题级统一 */
|
||||
|
||||
/* 0904 / 0902-06·07·08 子页顶栏:返回用 调音台控件-1.png(30×24) */
|
||||
#define UI0902_SUB_BACK_X 8
|
||||
#define UI0902_SUB_BACK_Y 7
|
||||
#define UI0902_SUB_BACK_W 30
|
||||
#define UI0902_SUB_BACK_H 24
|
||||
#define UI0902_SUB_TITLE_Y 12
|
||||
#define UI0902_SUB_TITLE_SIZE UI0902_FONT_HERO
|
||||
#define UI0902_SUB_SEP_Y 38
|
||||
|
||||
/* 0904 / 0902-07 系统设置四行(稿面行框 ≈x16 w207) */
|
||||
#define UI0902_SET_ROW_X 16
|
||||
#define UI0902_SET_ROW_W 207
|
||||
#define UI0902_SET_ROW_H 58
|
||||
#define UI0902_SET_ROW_Y0 51
|
||||
#define UI0902_SET_ROW_PITCH 63
|
||||
#define UI0902_SET_ROW_FONT UI0902_FONT_BODY /* 13 */
|
||||
|
||||
/* 0904 / 0902-08 恢复出厂:竖排确认(灰)/取消(蓝) */
|
||||
#define UI0902_RESTORE_BTN_X 10
|
||||
#define UI0902_RESTORE_BTN_W 220
|
||||
#define UI0902_RESTORE_BTN_H 68
|
||||
#define UI0902_RESTORE_BTN_Y0 104
|
||||
#define UI0902_RESTORE_BTN_Y1 183
|
||||
#define UI0902_RESTORE_BTN_FONT UI0902_FONT_HERO
|
||||
#define UI0902_NAV_UNIVERSAL 0 /* 底栏:万能模式 */
|
||||
#define UI0902_NAV_NORMAL 1 /* 底栏:普通模式 */
|
||||
#define UI0902_NAV_EXPERT 2 /* 底栏:专业模式 */
|
||||
#define UI0902_NAV_SETTING 3 /* 底栏:设置 */
|
||||
#define UI0902_NAV_NONE 0xFF
|
||||
/* 兼容旧名(已废弃三键:设置|调音台|模式) */
|
||||
#define UI0902_NAV_MIXER UI0902_NAV_NORMAL
|
||||
#define UI0902_NAV_MODE UI0902_NAV_EXPERT
|
||||
|
||||
/* 底部图标实际内容(生成脚本曾把 万能/普通/专业/设置 误命名为 Setting/Mixer/Mode) */
|
||||
#define gImage_Nav_Universal_Not gImage_UI0902_TabSetting_Sel_36x28 /* 底部-10 白 */
|
||||
#define gImage_Nav_Universal_Sel gImage_UI0902_TabMode_Sel_36x28 /* 底部-14 蓝 */
|
||||
#define gImage_Nav_Normal_Not gImage_UI0902_TabSetting_Not_35x28 /* 底部-11 白 */
|
||||
#define gImage_Nav_Normal_Sel gImage_UI0902_TabMode_Not_35x29 /* 底部-15 蓝 */
|
||||
#define gImage_Nav_Expert_Not gImage_UI0902_TabMixer_Sel_35x27 /* 底部-12 白 */
|
||||
#define gImage_Nav_Expert_Sel gImage_UI0902_TabBack_Sel_35x27 /* 底部-16 蓝 */
|
||||
#define gImage_Nav_Setting_Not gImage_UI0902_TabMixer_Not_18x28 /* 底部-13 白 */
|
||||
#define gImage_Nav_Setting_Sel gImage_UI0902_TabBack_Not_18x28 /* 底部-17 蓝 */
|
||||
/* 旧几何电池(Draw_Battery_Icon)最左起点;0902 图电池用 Draw_Status_Battery_Icon */
|
||||
#define UI_STATUS_BATTERY_X 150
|
||||
#define UI_STATUS_BATTERY_H 11
|
||||
#define UI_STATUS_BATTERY_Y ((UI_STATUS_BAR_H - UI_STATUS_BATTERY_H) / 2)
|
||||
|
|
@ -42,13 +200,18 @@ void UI_GetFocusGrad(uint8_t widget_id, uint16_t *c_top, uint16_t *c_bot);
|
|||
|
||||
void Draw_Status_Battery_Icon(uint8_t battery_percent);
|
||||
void Show_Battery_Icon(uint8_t flag);
|
||||
void UI_DrawStatusSepLine(void);
|
||||
|
||||
void Show_BL_Icon(uint8_t value);
|
||||
void Draw_Tab_Section_Menu(const LEBEL_UI *UI, TAB_SECTION_INDEX select_tab);
|
||||
void UI_NavBar_Action(uint8_t value);
|
||||
void Draw_Bottom_Bar(uint8_t sel, uint8_t first_back);
|
||||
void UI_GotoCurrentModePage(void);
|
||||
void GET_Num_Str(int16_t NUM, uint8_t ValidLen, char* Str, uint8_t hasSign);
|
||||
void show_Param(const LEBEL_UI *UI, GUI_SWITCH *Group);
|
||||
|
||||
extern void Show_home_UI(void);
|
||||
extern void Show_home_UI_Diff(void);
|
||||
extern void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value);
|
||||
//extern void Refresh_Transpose(uint8_t last_data, const LEBEL_UI *UI, GUI_SWITCH *Group);
|
||||
extern void Refresh_Transpose(const LEBEL_UI *UI, GUI_SWITCH * Group);
|
||||
|
|
@ -63,6 +226,11 @@ extern void label_Tab_Select_ui(const LEBEL_UI *UI, GUI_SWITCH *Group);
|
|||
extern void Refresh_SectionSelect(uint16_t last_value, const LEBEL_UI *UI, GUI_SWITCH *Group);
|
||||
extern void Refresh_TabSelect_ui(const LEBEL_UI *UI, GUI_SWITCH *Group);
|
||||
extern void RefreshSystemSetting(uint8_t last_data,const LEBEL_UI *UI,GUI_SWITCH * Group);
|
||||
extern void RestoreSetting();
|
||||
extern void RestoreSetting(void);
|
||||
extern void Draw_System_Item_List(const LEBEL_UI *UI, GUI_SWITCH *Group);
|
||||
/* 子页顶栏:左返回 + 居中标题(调音台/系统设置) */
|
||||
extern void UI_DrawSubPageHeader(const uint8_t *title_gbk);
|
||||
/* 节奏类型→1.bin / 本地曲目→2.bin / 万能→3.bin */
|
||||
extern void UI_ApplyToneAddress(void);
|
||||
extern void UI_ReloadTonePreset(void);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ extern void UI_DrawModeSelectScreen(void);
|
|||
extern void UI_ReturnToModeSelect(void);
|
||||
|
||||
extern void IdleProcess(DisplayTaskMessage_Type xEvent);
|
||||
|
||||
|
||||
extern void LoadConfig(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ static uint8_t LCD_CnFontMetrics(uint8_t sizey, uint8_t *sizex, uint16_t *typefa
|
|||
switch (sizey)
|
||||
{
|
||||
case 8: *sizex = 8; *typeface_num = 8; return 1;
|
||||
case 9: *sizex = 9; *typeface_num = 18; return 1;
|
||||
case 11: *sizex = 11; *typeface_num = 22; return 1;
|
||||
case 12: *sizex = 12; *typeface_num = 24; return 1;
|
||||
case 13: *sizex = 13; *typeface_num = 26; return 1;
|
||||
|
|
@ -25,6 +26,7 @@ static uint8_t LCD_GetCnFontByte(uint8_t sizey, uint8_t index, uint16_t i)
|
|||
switch (sizey)
|
||||
{
|
||||
case 8: return Chinese_font_8[index][i];
|
||||
case 9: return Chinese_font_9[index][i];
|
||||
case 11: return Chinese_font_11[index][i];
|
||||
case 12: return Chinese_font_12[index][i];
|
||||
case 13: return Chinese_font_13[index][i];
|
||||
|
|
@ -41,6 +43,7 @@ static uint8_t LCD_GetAsciiFontByte(uint8_t sizey, uint8_t num, uint16_t i)
|
|||
switch (sizey)
|
||||
{
|
||||
case 8: return ascii_84[num][i];
|
||||
case 9: return ascii_94[num][i];
|
||||
case 11: return ascii_115[num][i];
|
||||
case 12: return ascii_126[num][i];
|
||||
case 13: return ascii_1306[num][i];
|
||||
|
|
@ -57,6 +60,7 @@ static const char (*LCD_GetChsTable(uint8_t sizey))[2]
|
|||
switch (sizey)
|
||||
{
|
||||
case 8: return CHS8Table;
|
||||
case 9: return CHS9Table;
|
||||
case 11: return CHS11Table;
|
||||
case 12: return CHS12Table;
|
||||
case 13: return CHS13Table;
|
||||
|
|
@ -73,6 +77,7 @@ static uint16_t LCD_GetChsTableSize(uint8_t sizey)
|
|||
switch (sizey)
|
||||
{
|
||||
case 8: return (uint16_t)(sizeof(CHS8Table) / 2);
|
||||
case 9: return (uint16_t)(sizeof(CHS9Table) / 2);
|
||||
case 11: return (uint16_t)(sizeof(CHS11Table) / 2);
|
||||
case 12: return (uint16_t)(sizeof(CHS12Table) / 2);
|
||||
case 13: return (uint16_t)(sizeof(CHS13Table) / 2);
|
||||
|
|
@ -86,21 +91,34 @@ static uint16_t LCD_GetChsTableSize(uint8_t sizey)
|
|||
|
||||
static uint8_t LCD_GetAsciiMetrics(uint8_t size, uint8_t *char_width, uint8_t *char_height)
|
||||
{
|
||||
/* 与点阵源一致的字形格宽(ShowChar 窗口必须匹配字库) */
|
||||
*char_height = size;
|
||||
switch (size)
|
||||
{
|
||||
case 8: *char_width = 4; return 1;
|
||||
case 11: *char_width = 5; return 1;
|
||||
case 12: *char_width = 6; return 1;
|
||||
case 13: *char_width = 6; return 1;
|
||||
case 15: *char_width = 7; return 1;
|
||||
case 16: *char_width = 8; return 1;
|
||||
case 8: *char_width = 5; return 1;
|
||||
case 9: *char_width = 7; return 1;
|
||||
case 11: *char_width = 6; return 1;
|
||||
case 12: *char_width = 7; return 1;
|
||||
case 13: *char_width = 8; return 1;
|
||||
case 15: *char_width = 8; return 1;
|
||||
case 16: *char_width = 10; return 1;
|
||||
case 24: *char_width = 12; return 1;
|
||||
case 28: *char_width = 14; return 1;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 显示步进:字形宽 + 字距,和弦数字等更舒展,避免右缘贴死 */
|
||||
static uint8_t LCD_GetAsciiAdvance(uint8_t size)
|
||||
{
|
||||
uint8_t w, h;
|
||||
if (!LCD_GetAsciiMetrics(size, &w, &h))
|
||||
return (uint8_t)(size / 2);
|
||||
if (size >= 13)
|
||||
return (uint8_t)(w + 3); /* 字距 +3,和弦数字更舒展 */
|
||||
return (uint8_t)(w + 1);
|
||||
}
|
||||
|
||||
//r:0-31 g:0-63 b:0-31
|
||||
uint16_t RGB(int r,int g,int b)
|
||||
{
|
||||
|
|
@ -150,7 +168,23 @@ void LCD_WR_PIC(uint16_t x, uint16_t y, uint16_t length, uint16_t width, const u
|
|||
}
|
||||
}
|
||||
|
||||
/* 跳过近黑色像素(图标导出底色常为 0x0000/0x0001/0x0022,非纯 BLACK) */
|
||||
/* 跳过近黑色像素(图标导出底色常为 0x0000/0x0001/0x0022,非纯 BLACK)
|
||||
* 同时跳过列表行底 #242B3A(0x2147):系统设置等图标把未选中行色烘焙进 PNG,
|
||||
* 焦点蓝底上若不抠掉会呈黑块。 */
|
||||
static uint8_t LCD_PicColorIsTransparent(uint16_t c)
|
||||
{
|
||||
uint8_t r5 = (uint8_t)((c >> 11) & 0x1F);
|
||||
uint8_t g6 = (uint8_t)((c >> 5) & 0x3F);
|
||||
uint8_t b5 = (uint8_t)(c & 0x1F);
|
||||
|
||||
if (r5 <= 1 && g6 <= 2 && b5 <= 2)
|
||||
return 1;
|
||||
/* UI0902_ROW_BG 0x2147 ≈ R5=4 G6=10 B5=7;含打包抗锯齿邻色 */
|
||||
if (r5 >= 2 && r5 <= 6 && g6 >= 7 && g6 <= 14 && b5 >= 4 && b5 <= 11)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void LCD_WR_PIC_Trans(uint16_t x, uint16_t y, uint16_t length, uint16_t width,
|
||||
const uint8_t data[], uint16_t key_color)
|
||||
{
|
||||
|
|
@ -166,12 +200,8 @@ void LCD_WR_PIC_Trans(uint16_t x, uint16_t y, uint16_t length, uint16_t width,
|
|||
uint8_t hi = data[i * 2];
|
||||
uint8_t lo = data[i * 2 + 1];
|
||||
uint16_t c = (uint16_t)((hi << 8) | lo);
|
||||
uint8_t r5 = (uint8_t)((c >> 11) & 0x1F);
|
||||
uint8_t g6 = (uint8_t)((c >> 5) & 0x3F);
|
||||
uint8_t b5 = (uint8_t)(c & 0x1F);
|
||||
|
||||
/* 近黑视为透明,避免图标黑底方块 */
|
||||
if (r5 <= 1 && g6 <= 2 && b5 <= 2)
|
||||
if (LCD_PicColorIsTransparent(c))
|
||||
continue;
|
||||
|
||||
LCD_DrawPoint((uint16_t)(x + (i % length)),
|
||||
|
|
@ -221,6 +251,41 @@ void LCD_WR_PIC_FROM_FLASH(uint16_t x, uint16_t y, uint16_t length, uint16_t wid
|
|||
}
|
||||
}
|
||||
|
||||
/* 只绘制图片左侧 clip_w 列(电池电量按百分比裁剪) */
|
||||
void LCD_WR_PIC_ClipX(uint16_t x, uint16_t y, uint16_t full_w, uint16_t h,
|
||||
uint16_t clip_w, const uint8_t data[])
|
||||
{
|
||||
uint16_t row;
|
||||
if (clip_w == 0 || full_w == 0 || h == 0) return;
|
||||
if (clip_w > full_w) clip_w = full_w;
|
||||
LCD_SetWindow(x, y, x + clip_w - 1, y + h - 1);
|
||||
LCD_DC_Set();
|
||||
for (row = 0; row < h; row++)
|
||||
{
|
||||
LCD_SPI_Write(data + (uint32_t)row * full_w * 2, (uint32_t)clip_w * 2);
|
||||
}
|
||||
}
|
||||
|
||||
/* 从 W25Q128 按行读取并透明显示(跳过近黑 / 行底色像素),复用 pic_batch_buf,无大块静态 RAM */
|
||||
void LCD_WR_PIC_FROM_FLASH_Trans(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint32_t flash_addr)
|
||||
{
|
||||
uint16_t row, col;
|
||||
uint32_t row_bytes = (uint32_t)length * 2U;
|
||||
if (length == 0 || width == 0 || row_bytes > PIC_BATCH_SIZE) return;
|
||||
|
||||
for (row = 0; row < width; row++)
|
||||
{
|
||||
W25Q128_Read(pic_batch_buf, flash_addr + row * row_bytes, (uint16_t)row_bytes);
|
||||
for (col = 0; col < length; col++)
|
||||
{
|
||||
uint16_t c = (uint16_t)((pic_batch_buf[col * 2U] << 8) | pic_batch_buf[col * 2U + 1U]);
|
||||
if (LCD_PicColorIsTransparent(c))
|
||||
continue;
|
||||
LCD_DrawPoint((uint16_t)(x + col), (uint16_t)(y + row), c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
函数说明:在指定区域填充颜色
|
||||
入口数据:xsta,ysta 起始坐标
|
||||
|
|
@ -516,6 +581,33 @@ void LCD_DrawCircle(uint16_t x0, uint16_t y0, uint8_t r, uint16_t color)
|
|||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
函数说明:实心圆填充(水平扫线,无镂空)
|
||||
******************************************************************************/
|
||||
void LCD_FillCircle(uint16_t x0, uint16_t y0, uint8_t r, uint16_t color)
|
||||
{
|
||||
int16_t y;
|
||||
int32_t r2;
|
||||
if (r == 0)
|
||||
{
|
||||
LCD_DrawPoint(x0, y0, color);
|
||||
return;
|
||||
}
|
||||
r2 = (int32_t)r * (int32_t)r;
|
||||
for (y = -(int16_t)r; y <= (int16_t)r; y++)
|
||||
{
|
||||
int32_t xx = r2 - (int32_t)y * (int32_t)y;
|
||||
int16_t dx = 0;
|
||||
int16_t x;
|
||||
/* 整数平方根:dx = floor(sqrt(xx)) */
|
||||
while ((int32_t)(dx + 1) * (dx + 1) <= xx)
|
||||
dx++;
|
||||
x = (int16_t)(x0 - dx);
|
||||
LCD_FillByColor((uint16_t)x, (uint16_t)(y0 + y),
|
||||
(uint16_t)(x0 + dx + 1), (uint16_t)(y0 + y + 1), color);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
函数说明:显示单个字符
|
||||
|
|
@ -904,10 +996,15 @@ void LCD_DrawRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t c
|
|||
******************************************************************************/
|
||||
void LCD_ShowString(uint16_t x, uint16_t y, const uint8_t *p, uint16_t fc, uint16_t bc, uint8_t sizey, uint8_t mode)
|
||||
{
|
||||
uint8_t cw, ch;
|
||||
uint8_t adv;
|
||||
if (!LCD_GetAsciiMetrics(sizey, &cw, &ch))
|
||||
return;
|
||||
adv = LCD_GetAsciiAdvance(sizey);
|
||||
while(*p != '\0')
|
||||
{
|
||||
LCD_ShowChar(x, y, *p, fc, bc, sizey, mode);
|
||||
x += sizey / 2;
|
||||
x += adv;
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
|
@ -995,7 +1092,7 @@ static uint16_t LCD_GetMixedStringWidth(uint8_t *str, uint8_t sizey)
|
|||
{
|
||||
uint16_t width = 0;
|
||||
uint8_t xStepCn = sizey;
|
||||
uint8_t xStepAscii = sizey / 2;
|
||||
uint8_t xStepAscii = LCD_GetAsciiAdvance(sizey);
|
||||
|
||||
while(*str != '\0')
|
||||
{
|
||||
|
|
@ -1030,7 +1127,7 @@ uint16_t LCD_ShowMixedString(uint16_t x1, uint16_t x2, uint16_t y, uint8_t *str,
|
|||
{
|
||||
const char (*codeTab)[2] = NULL;
|
||||
uint8_t xStepCn = sizey;
|
||||
uint8_t xStepAscii = sizey / 2;
|
||||
uint8_t xStepAscii = LCD_GetAsciiAdvance(sizey);
|
||||
uint16_t draw_x;
|
||||
|
||||
codeTab = LCD_GetChsTable(sizey);
|
||||
|
|
@ -1103,11 +1200,12 @@ uint16_t LCD_ShowMixedString(uint16_t x1, uint16_t x2, uint16_t y, uint8_t *str,
|
|||
******************************************************************************/
|
||||
void LCD_ClearString(uint16_t x, uint16_t y, const uint8_t *p, uint16_t bc, uint8_t sizey, uint8_t mode)
|
||||
{
|
||||
uint8_t adv = LCD_GetAsciiAdvance(sizey);
|
||||
while (*p != '\0')
|
||||
{
|
||||
// 用背景色bc作为“前景色”,显示空格字符,覆盖原字符
|
||||
LCD_ShowChar(x, y, ' ', bc, bc, sizey, mode); // 前景色=背景色=bc,相当于清除
|
||||
x += sizey / 2; // 与原显示函数x步长一致
|
||||
x += adv;
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
|
@ -1309,9 +1407,11 @@ uint16_t LCD_ShowString_AutoAlign(uint16_t x1, uint16_t x2, uint16_t y, const ui
|
|||
uint8_t align, uint16_t fc, uint16_t bc, uint8_t mode, uint8_t size)
|
||||
{
|
||||
uint8_t CHAR_WIDTH, CHAR_HEIGHT;
|
||||
uint8_t CHAR_ADV;
|
||||
|
||||
if (!LCD_GetAsciiMetrics(size, &CHAR_WIDTH, &CHAR_HEIGHT))
|
||||
return 0;
|
||||
CHAR_ADV = LCD_GetAsciiAdvance(size);
|
||||
|
||||
uint16_t str_len = 0;
|
||||
uint16_t str_total_width;
|
||||
|
|
@ -1324,8 +1424,8 @@ uint16_t LCD_ShowString_AutoAlign(uint16_t x1, uint16_t x2, uint16_t y, const ui
|
|||
str_len++;
|
||||
}
|
||||
|
||||
// 计算字符串总宽度
|
||||
str_total_width = str_len * CHAR_WIDTH;
|
||||
// 计算字符串总宽度(含字距)
|
||||
str_total_width = str_len * CHAR_ADV;
|
||||
|
||||
// 根据对齐方式计算起始 X 坐标
|
||||
switch (align)
|
||||
|
|
@ -1351,7 +1451,7 @@ uint16_t LCD_ShowString_AutoAlign(uint16_t x1, uint16_t x2, uint16_t y, const ui
|
|||
while (*p != '\0')
|
||||
{
|
||||
LCD_ShowChar(curr_x, y, *p, fc, bc, CHAR_HEIGHT, mode);
|
||||
curr_x += CHAR_WIDTH;
|
||||
curr_x += CHAR_ADV;
|
||||
p++;
|
||||
}
|
||||
return curr_x;
|
||||
|
|
@ -1493,9 +1593,11 @@ uint16_t LCD_ShowString_AutoAlign_Gradient(uint16_t x1, uint16_t x2, uint16_t y,
|
|||
uint16_t color_top, uint16_t color_bottom, uint8_t size)
|
||||
{
|
||||
uint8_t CHAR_WIDTH, CHAR_HEIGHT;
|
||||
uint8_t CHAR_ADV;
|
||||
|
||||
if (!LCD_GetAsciiMetrics(size, &CHAR_WIDTH, &CHAR_HEIGHT))
|
||||
return 0;
|
||||
CHAR_ADV = LCD_GetAsciiAdvance(size);
|
||||
|
||||
uint16_t str_len = 0;
|
||||
uint16_t str_total_width;
|
||||
|
|
@ -1505,7 +1607,7 @@ uint16_t LCD_ShowString_AutoAlign_Gradient(uint16_t x1, uint16_t x2, uint16_t y,
|
|||
while (p[str_len] != '\0') str_len++;
|
||||
if (str_len == 0) return 0;
|
||||
|
||||
str_total_width = str_len * CHAR_WIDTH;
|
||||
str_total_width = str_len * CHAR_ADV;
|
||||
|
||||
switch (align)
|
||||
{
|
||||
|
|
@ -1521,7 +1623,7 @@ uint16_t LCD_ShowString_AutoAlign_Gradient(uint16_t x1, uint16_t x2, uint16_t y,
|
|||
break;
|
||||
}
|
||||
|
||||
// 1. 画垂直渐变背景
|
||||
// 1. 画垂直渐变背景(覆盖字形+字距)
|
||||
LCD_FillGradient(curr_x, y, curr_x + str_total_width, y + CHAR_HEIGHT, color_top, color_bottom);
|
||||
|
||||
// 2. 叠加模式显示文字(mode=1)
|
||||
|
|
@ -1593,6 +1695,17 @@ void LCD_DrawChevron_Right(uint16_t x, uint16_t y, uint8_t size, uint8_t thick,
|
|||
}
|
||||
}
|
||||
|
||||
/* LCD_DrawChevron_Right 的左向镜像:x,y 为尖角处坐标 */
|
||||
void LCD_DrawChevron_Left(uint16_t x, uint16_t y, uint8_t size, uint8_t thick, uint16_t color)
|
||||
{
|
||||
for (uint8_t i = 0; i < thick; i++) {
|
||||
LCD_DrawLine(x, y - size + i, x - size + i, y, color);
|
||||
}
|
||||
for (uint8_t i = 0; i < thick; i++) {
|
||||
LCD_DrawLine(x, y + size - i, x - size + i, y, color);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
函数说明:画【圆角框 + 居中加号 +】
|
||||
|
|
@ -1742,7 +1855,7 @@ void Draw_Volume_Bar(uint16_t x, uint16_t y, uint8_t volume_level,uint8_t scale,
|
|||
}
|
||||
|
||||
clear_w = (uint16_t)(w + gap) * bar_count - gap;
|
||||
LCD_FillByColor(x, y, x + clear_w, y + max_h * scale, BLACK);
|
||||
LCD_FillByColor(x, y, x + clear_w, y + max_h * scale, UI0902_BG_COLOR);
|
||||
|
||||
if(volume_level == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,10 +29,17 @@ extern void LCD_WR_PIC(uint16_t x, uint16_t y, uint16_t length, uint16_t width,
|
|||
extern void LCD_WR_PIC_Trans(uint16_t x, uint16_t y, uint16_t length, uint16_t width,
|
||||
const uint8_t data[], uint16_t key_color);
|
||||
extern void LCD_WR_PIC_FROM_FLASH(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint32_t flash_addr);
|
||||
extern void LCD_WR_PIC_ClipX(uint16_t x, uint16_t y, uint16_t full_w, uint16_t h,
|
||||
uint16_t clip_w, const uint8_t data[]);
|
||||
extern void LCD_WR_PIC_FROM_FLASH_Trans(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint32_t flash_addr);
|
||||
extern void LCD_WR_PIC_ClipX(uint16_t x, uint16_t y, uint16_t full_w, uint16_t h,
|
||||
uint16_t clip_w, const uint8_t data[]);
|
||||
extern void LCD_WR_PIC_FROM_FLASH_Trans(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint32_t flash_addr);
|
||||
extern void LCD_DrawPoint(uint16_t x, uint16_t y, uint16_t color); //在指定位置画一个点
|
||||
extern void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); //在指定位置画一条线
|
||||
extern void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); //在指定位置画一个矩形
|
||||
extern void LCD_DrawCircle(uint16_t x0, uint16_t y0, uint8_t r, uint16_t color); //在指定位置画一个圆
|
||||
extern void LCD_FillCircle(uint16_t x0, uint16_t y0, uint8_t r, uint16_t color); //实心圆
|
||||
|
||||
extern void LCD_ShowChar(uint16_t x, uint16_t y, uint8_t num, uint16_t fc, uint16_t bc, uint8_t sizey, uint8_t mode);
|
||||
//extern void LCD_ShowChinese(uint16_t x, uint16_t y, uint8_t *str, uint16_t fc, uint16_t bc, uint8_t sizey, uint8_t mode);
|
||||
|
|
|
|||
|
|
@ -190,6 +190,11 @@ static uint8_t LCD_Dump_CommandPending(void)
|
|||
unsigned read_len;
|
||||
unsigned i;
|
||||
|
||||
/* 烧录外部 UI 资源时占用 RTT0 down,禁止此处吞字节 */
|
||||
if (app_log_flash_busy()) {
|
||||
return 0U;
|
||||
}
|
||||
|
||||
read_len = SEGGER_RTT_Read(LCD_DUMP_RTT_DOWN_CH, rx, sizeof(rx));
|
||||
if (read_len == 0U) {
|
||||
return 0U;
|
||||
|
|
@ -206,6 +211,38 @@ static uint8_t LCD_Dump_CommandPending(void)
|
|||
s_cmd_buf[0] = '\0';
|
||||
continue;
|
||||
}
|
||||
/* TAP [x y]:缺省 120,80;换行后解析,避免坐标未收齐就触发 */
|
||||
if (strncmp(s_cmd_buf, LCD_DUMP_TAP_CMD, 3) == 0) {
|
||||
unsigned tx = 120U;
|
||||
unsigned ty = 80U;
|
||||
if (s_cmd_buf[3] == ' ' || s_cmd_buf[3] == '\t') {
|
||||
char *p1 = s_cmd_buf + 4;
|
||||
char *p2;
|
||||
tx = (unsigned)strtoul(p1, &p2, 10);
|
||||
if (p2 != p1) {
|
||||
while (*p2 == ' ' || *p2 == '\t') p2++;
|
||||
ty = (unsigned)strtoul(p2, NULL, 10);
|
||||
}
|
||||
}
|
||||
if (tx > 239U) tx = 239U;
|
||||
if (ty > 319U) ty = 319U;
|
||||
MainTask_Sendmsg(MSG_ID_TOUCH, 1, (uint16_t)tx, (uint16_t)ty);
|
||||
SEGGER_RTT_WriteString(0, "TAP inject\n");
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
continue;
|
||||
}
|
||||
if (strcmp(s_cmd_buf, LCD_DUMP_RESET_CMD) == 0) {
|
||||
(void)app_log_try_command(LCD_DUMP_RESET_CMD);
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
continue;
|
||||
}
|
||||
if (strcmp(s_cmd_buf, LCD_DUMP_CMD) == 0) {
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
return 1U;
|
||||
}
|
||||
}
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
|
|
@ -218,23 +255,7 @@ static uint8_t LCD_Dump_CommandPending(void)
|
|||
s_cmd_buf[s_cmd_len++] = c;
|
||||
s_cmd_buf[s_cmd_len] = '\0';
|
||||
|
||||
/* 合成点击:验证 UI 命中路径(点万能按钮中心) */
|
||||
if (strstr(s_cmd_buf, LCD_DUMP_TAP_CMD) != NULL) {
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
MainTask_Sendmsg(MSG_ID_TOUCH, 1, 120, 80);
|
||||
SEGGER_RTT_WriteString(0, "TAP inject 120,80\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strstr(s_cmd_buf, LCD_DUMP_RESET_CMD) != NULL) {
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
(void)app_log_try_command(LCD_DUMP_RESET_CMD);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (c == 0x01 || strstr(s_cmd_buf, LCD_DUMP_CMD) != NULL) {
|
||||
if (c == 0x01) {
|
||||
s_cmd_len = 0U;
|
||||
s_cmd_buf[0] = '\0';
|
||||
return 1U;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include "includes.h"
|
||||
|
||||
#ifndef DEBUG_LCD_DUMP
|
||||
#define DEBUG_LCD_DUMP 1
|
||||
#define DEBUG_LCD_DUMP 0
|
||||
#endif
|
||||
|
||||
#if DEBUG_LCD_DUMP
|
||||
|
|
|
|||
|
|
@ -476,412 +476,290 @@ const unsigned char gImage_Restore[800] = { /* 0X10,0X10,0X00,0X14,0X00,0X14,0X0
|
|||
};
|
||||
|
||||
|
||||
const unsigned char gImage_mixer[3200] = { /* 0X10,0X10,0X00,0X28,0X00,0X28,0X01,0X1B, */
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X42,0X4A,0X4A,0X8B,0X42,0X4B,0X21,0X67,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X67,0X42,0X6B,0X4A,0X6B,0X3A,0X2A,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X26,0X31,0XC9,0X4A,0X6B,0X4A,0X6B,0X31,0XA8,0X21,0X26,0X21,0X47,
|
||||
0X21,0X47,0X19,0X06,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X10,0XE5,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X10,0XC5,0X73,0XB0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X19,0X06,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X19,0X06,0XCE,0X59,0XFF,0XFF,0XFF,0XFF,0XB5,0XB7,0X10,0XE5,0X21,0X47,
|
||||
0X21,0X47,0X10,0XE5,0X52,0XAC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X63,0X4E,0X10,0XC5,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X10,0XC5,0X7C,0X11,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X42,0X2A,0X19,0X06,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X19,0X06,0XD6,0X9A,0XFF,0XFF,0XFF,0XFF,0XBE,0X18,0X10,0XE5,0X21,0X47,
|
||||
0X21,0X47,0X10,0XE5,0X4A,0XAC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X63,0X2E,0X10,0XC5,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X10,0XA5,0X84,0X31,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X42,0X2A,0X19,0X06,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X46,0X19,0X06,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XE5,0X21,0X47,
|
||||
0X21,0X47,0X10,0XE5,0X4A,0XAC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X63,0X2E,0X10,0XC5,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X10,0XE5,0X52,0XED,0XD6,0XBB,0XDE,0XDB,0XC6,0X39,0X29,0XA8,0X19,0X26,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X46,0X19,0X06,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XE5,0X21,0X47,
|
||||
0X21,0X47,0X10,0XE5,0X4A,0XAC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X63,0X2E,0X10,0XC5,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X10,0XE5,0X10,0XC5,0X08,0XA4,0X08,0XA4,0X08,0XA4,0X08,0X84,0X08,0XA4,0X10,0XC5,
|
||||
0X19,0X06,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X46,0X19,0X06,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XE5,0X21,0X47,
|
||||
0X21,0X46,0X10,0XE5,0X52,0XAC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X63,0X2E,0X10,0XC5,
|
||||
0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X26,0X19,0X26,
|
||||
0X52,0XED,0X6B,0X8F,0X6B,0X8F,0X6B,0X6F,0X6B,0X6F,0X6B,0X6F,0X6B,0X8F,0X6B,0X8F,
|
||||
0X3A,0X09,0X19,0X06,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,
|
||||
0X21,0X26,0X19,0X06,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X21,0X46,
|
||||
0X21,0X46,0X10,0XE5,0X42,0X4A,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0X52,0XCC,0X10,0XE5,
|
||||
0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X19,0X06,0X29,0X88,
|
||||
0XF7,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X9C,0XF4,0X08,0XA4,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,
|
||||
0X21,0X26,0X19,0X06,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X21,0X46,
|
||||
0X19,0X26,0X19,0X06,0X19,0X06,0X31,0XE9,0X3A,0X09,0X39,0XE9,0X19,0X06,0X19,0X06,
|
||||
0X19,0X26,0X21,0X47,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X19,0X06,0X31,0XA8,
|
||||
0XF7,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X9D,0X14,0X08,0XA4,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X46,
|
||||
0X21,0X26,0X19,0X06,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X21,0X46,
|
||||
0X21,0X67,0X39,0XE9,0X39,0XE9,0X31,0XA8,0X29,0XA8,0X29,0XA8,0X31,0XE9,0X39,0XE9,
|
||||
0X21,0X67,0X19,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X19,0X06,0X29,0XA8,
|
||||
0XF7,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X9C,0XF4,0X08,0XA4,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,
|
||||
0X19,0X26,0X19,0X05,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X19,0X26,
|
||||
0XAD,0X76,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,
|
||||
0XB5,0X97,0X10,0XE5,0X19,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X19,0X06,0X29,0XA8,
|
||||
0XF7,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X9C,0XF4,0X08,0XA4,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,
|
||||
0X19,0X26,0X19,0X05,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X19,0X26,
|
||||
0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XCE,0X7A,0X10,0XE5,0X19,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X19,0X06,0X29,0XA8,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XA5,0X15,0X08,0XA4,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X26,
|
||||
0X19,0X26,0X19,0X05,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X19,0X26,
|
||||
0XC6,0X39,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XC6,0X59,0X10,0XE5,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X6B,0X8F,0X84,0X52,0X84,0X52,0X84,0X52,0X84,0X52,0X84,0X52,0X84,0X52,0X84,0X52,
|
||||
0X42,0X4A,0X18,0XE5,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X10,0XE5,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X19,0X26,
|
||||
0XC6,0X39,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XC6,0X59,0X10,0XE5,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X10,0XA4,0X08,0XA4,0X00,0X63,0X00,0X43,0X00,0X43,0X00,0X23,0X08,0X84,0X08,0XA4,
|
||||
0X10,0XE5,0X21,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X10,0XE5,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X19,0X26,
|
||||
0XCE,0X9A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XD6,0X9A,0X10,0XE5,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X10,0XE5,0X4A,0X8B,0XBD,0XF8,0XC6,0X18,0XAD,0X76,0X21,0X67,0X19,0X06,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X10,0XE5,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X19,0X26,
|
||||
0X84,0X31,0XC6,0X39,0XC6,0X39,0XC6,0X39,0XC6,0X39,0XC6,0X39,0XC6,0X39,0XC6,0X39,
|
||||
0X84,0X52,0X10,0XE5,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0XA4,0X7C,0X11,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3A,0X2A,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X10,0XE5,0XD6,0XBB,0XFF,0XFF,0XFF,0XFF,0XC6,0X39,0X10,0XC5,0X19,0X26,
|
||||
0X10,0XC5,0X10,0XE5,0X10,0XC5,0X00,0X43,0X00,0X43,0X00,0X43,0X10,0XC5,0X10,0XE5,
|
||||
0X10,0XC5,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0XA4,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X10,0XC5,0XAD,0X76,0XEF,0X7D,0XEF,0X7D,0X9C,0XF4,0X10,0XA5,0X19,0X26,
|
||||
0X19,0X26,0X19,0X06,0X21,0X47,0X73,0XD0,0X7C,0X11,0X7B,0XF0,0X29,0X87,0X19,0X05,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0XA4,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X06,
|
||||
0X10,0XC5,0X10,0XA4,0X10,0XC5,0X19,0X26,0X19,0X26,0X10,0XC4,0X10,0XC4,0X10,0XC5,
|
||||
0X19,0X26,0X10,0XC5,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X10,0XA4,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0XA4,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X06,0X21,0X47,
|
||||
0X4A,0XAB,0X52,0XAC,0X4A,0XAB,0X4A,0X8B,0X4A,0X8B,0X52,0XAC,0X52,0XAC,0X4A,0X6B,
|
||||
0X19,0X26,0X10,0XC5,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0XA4,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X08,0XA4,0X6B,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X19,0X26,0X10,0XC5,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0X84,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X08,0X84,0X7B,0XF0,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X19,0X26,0X10,0XC4,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0X84,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X08,0X84,0X73,0XD0,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X19,0X26,0X10,0XC4,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X08,0X84,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XE5,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X08,0X84,0X73,0XD0,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X19,0X06,0X10,0XC4,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X08,0X84,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XC5,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X08,0X84,0X7B,0XF0,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X19,0X06,0X10,0XC4,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X08,0X84,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XC5,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X10,0XE5,0X3A,0X09,
|
||||
0XA5,0X35,0XA5,0X55,0XA5,0X55,0XA5,0X55,0XA5,0X55,0XA5,0X55,0XA5,0X55,0X9C,0XF4,
|
||||
0X19,0X06,0X10,0XC4,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X08,0X84,0X7B,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3A,0X09,0X10,0XC5,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X26,0X10,0XE5,
|
||||
0X08,0X84,0X08,0X84,0X00,0X22,0X00,0X02,0X00,0X02,0X00,0X22,0X08,0X84,0X08,0X84,
|
||||
0X19,0X06,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X08,0X84,0X63,0X4E,0XFF,0XDF,0XFF,0XFF,0XEF,0X7D,0X29,0XA8,0X10,0XE5,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X10,0XC5,0X6B,0X8F,0XA5,0X55,0XA5,0X35,0X63,0X2D,0X10,0XC5,0X19,0X06,
|
||||
0X19,0X06,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X10,0XE5,0X10,0XC4,0X10,0XC5,0X29,0XA8,0X31,0XC8,0X21,0X67,0X10,0XA4,0X10,0XC5,
|
||||
0X19,0X05,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X05,0X10,0XC5,0XD6,0XDB,0XFF,0XFF,0XFF,0XFF,0XC6,0X39,0X08,0X84,0X19,0X06,
|
||||
0X19,0X06,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0XA4,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X18,0XE5,
|
||||
0X29,0X87,0X3A,0X09,0X31,0XE9,0X31,0XA8,0X31,0XA8,0X31,0XC8,0X39,0XE9,0X39,0XE9,
|
||||
0X19,0X26,0X19,0X05,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X05,0X10,0XC5,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XD8,0X08,0XA4,0X19,0X06,
|
||||
0X19,0X05,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X84,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X10,0XE5,0X21,0X46,
|
||||
0XDE,0XFC,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,0XFF,0XDF,
|
||||
0X84,0X52,0X08,0X84,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X10,0XC5,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X19,0X05,
|
||||
0X19,0X05,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X84,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X10,0XC5,0X29,0X87,
|
||||
0XF7,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X9C,0XF4,0X00,0X63,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X10,0XC5,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X19,0X05,
|
||||
0X19,0X05,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X84,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X10,0XC5,0X29,0X87,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XA5,0X15,0X00,0X63,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X10,0XC5,0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X19,0X05,
|
||||
0X19,0X05,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X84,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X18,0XE5,0X19,0X05,
|
||||
0X94,0XB3,0XB5,0XB7,0XB5,0XB7,0XB5,0XB7,0XB5,0XB7,0XB5,0XB7,0XB5,0XB7,0XB5,0X97,
|
||||
0X5A,0XEC,0X08,0XA4,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X10,0XC4,0XCE,0X79,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X19,0X05,
|
||||
0X19,0X05,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X84,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X18,0XE5,
|
||||
0X08,0X84,0X08,0X84,0X00,0X63,0X00,0X01,0X00,0X01,0X00,0X02,0X08,0X83,0X08,0X84,
|
||||
0X10,0XA4,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X10,0XE5,0X10,0XC4,0XCE,0X79,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X18,0XE5,
|
||||
0X19,0X05,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X84,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X10,0XC5,0X31,0XC8,0X8C,0X92,0X94,0XB3,0X7C,0X11,0X19,0X06,0X10,0XE5,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X10,0XE5,0X10,0XC4,0XCE,0X79,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X18,0XE5,
|
||||
0X19,0X05,0X08,0XA4,0X4A,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X84,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X00,0X63,0X7B,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X31,0XE9,0X10,0XA4,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X10,0XE5,0X10,0XC4,0XCE,0X79,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X18,0XE5,
|
||||
0X18,0XE5,0X08,0X84,0X42,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X83,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X18,0XE5,0X00,0X63,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X31,0XE9,0X08,0XA4,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X10,0XE5,0X10,0XA4,0XCE,0X79,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X10,0XE5,
|
||||
0X18,0XE5,0X08,0X84,0X42,0X6B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5A,0XED,0X08,0X83,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X18,0XE5,0X00,0X63,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X31,0XE9,0X08,0XA4,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X10,0XE5,0X10,0XA4,0XCE,0X79,0XFF,0XFF,0XFF,0XFF,0XBD,0XD7,0X08,0X84,0X10,0XE5,
|
||||
0X18,0XE5,0X08,0X84,0X4A,0X8B,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5B,0X0D,0X08,0X83,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X18,0XE5,0X00,0X63,0X7B,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X39,0XE9,0X08,0XA4,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X10,0XE5,0X10,0XA4,0XD6,0XBA,0XFF,0XFF,0XFF,0XFF,0XC6,0X18,0X08,0X83,0X10,0XE5,
|
||||
0X10,0XE5,0X10,0XA4,0X29,0XA8,0XD6,0XBB,0XE7,0X3D,0XDE,0XFB,0X3A,0X09,0X08,0XA4,
|
||||
0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,
|
||||
0X10,0XE5,0X08,0X84,0X4A,0XAB,0XE7,0X1C,0XE7,0X3D,0XCE,0X59,0X21,0X46,0X10,0XC5,
|
||||
0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,
|
||||
0X10,0XE5,0X08,0X84,0X9C,0XF4,0XE7,0X3C,0XE7,0X3C,0X84,0X52,0X08,0X83,0X10,0XE5,
|
||||
const unsigned char gImage_mixer[2244] = { /* 34x33 RGB565 BE */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xD6,0x9A,0xFF,0xFF,0xD6,0x9A,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xD6,0x9A,0xFF,0xFF,0xD6,0x9A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF7,0x9E,0xFF,0xFF,0xA5,0x14,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0x92,0xC6,0x18,
|
||||
0x94,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x52,0x8A,
|
||||
0x84,0x10,0x52,0x8A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,
|
||||
0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x31,0x86,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD6,0x9A,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB5,0x96,0xC6,0x18,
|
||||
0x94,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xB5,0x96,0xC6,0x18,0xC6,0x18,0xC6,0x18,0xC6,0x18,0xC6,0x18,0x94,0x92,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB5,0x96,
|
||||
0xC6,0x18,0x94,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF7,0x9E,
|
||||
0xFF,0xFF,0xD6,0x9A,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,0xFF,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,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x31,0x86,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD6,0x9A,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x31,0x86,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD6,0x9A,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,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,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xF7,0x9E,0xFF,0xFF,0xD6,0x9A,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB5,0x96,
|
||||
0xC6,0x18,0x94,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB5,0x96,0xC6,0x18,0xC6,0x18,0xC6,0x18,
|
||||
0xC6,0x18,0xC6,0x18,0x94,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xB5,0x96,0xC6,0x18,0xC6,0x18,0xC6,0x18,0xC6,0x18,0xC6,0x18,
|
||||
0x94,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF7,0x9E,0xFF,0xFF,0xF7,0x9E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x8E,0x84,0x10,0x73,0x8E,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x73,0x8E,0x84,0x10,0x73,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x8E,0x84,0x10,0x52,0x8A,
|
||||
0x00,0x00,0x00,0x00,
|
||||
};
|
||||
|
||||
|
||||
|
||||
const unsigned char gImage_SystemSetting[3200] = { /* 0X10,0X10,0X00,0X28,0X00,0X28,0X01,0X1B, */
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X19,0X26,
|
||||
0X21,0X67,0X42,0X4B,0X52,0XCC,0X5B,0X0D,0X5A,0XED,0X52,0XAC,0X42,0X2A,0X19,0X26,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X19,0X26,0X21,0X67,
|
||||
0XD6,0XBB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9C,0XD4,
|
||||
0X10,0XC5,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X10,0XA5,0X7B,0XF0,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,
|
||||
0X31,0XE9,0X19,0X06,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X19,0X26,0X19,0X26,0XDE,0XFB,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X94,0XB3,0X08,0XA4,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X19,0X06,0X10,0XE5,
|
||||
0X19,0X26,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X08,0X84,0X6B,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XEF,0X7D,0X29,0X88,0X18,0XE5,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X46,0X19,0X06,
|
||||
0X10,0XE5,0X19,0X26,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X10,0XC5,0X42,0X4A,0X52,0XAC,
|
||||
0X29,0X67,0X10,0XC5,0X08,0XA4,0X10,0XC5,0X08,0X84,0X39,0XE9,0XE7,0X3D,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XB5,0XB7,0X10,0XE5,0X08,0XA4,0X10,0XC5,0X08,0XA4,0X10,0XE5,0X31,0XC9,
|
||||
0X5A,0XED,0X29,0XA8,0X10,0XE5,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,0X21,0X47,
|
||||
0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X47,0X08,0XA4,0X63,0X4E,0XFF,0XDF,0XFF,0XFF,
|
||||
0XE7,0X3C,0XB5,0XB7,0X84,0X31,0X6B,0X6E,0X8C,0X93,0XEF,0X7D,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XCE,0X7A,0X7B,0XF0,0X6B,0X8F,0X94,0XB3,0XC6,0X39,0XF7,0X9E,
|
||||
0XFF,0XFF,0XD6,0XDB,0X31,0XA8,0X10,0XE5,0X21,0X47,0X21,0X46,0X21,0X46,0X21,0X46,
|
||||
0X21,0X46,0X21,0X46,0X21,0X47,0X10,0XA4,0X52,0XCC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XD6,0XBB,0X21,0X47,0X19,0X06,0X21,0X46,0X21,0X46,0X21,0X46,
|
||||
0X21,0X46,0X21,0X46,0X10,0XE5,0X31,0XC9,0XEF,0X7E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBD,0XD8,0X10,0XC5,0X19,0X26,0X21,0X46,0X21,0X46,
|
||||
0X21,0X26,0X19,0X26,0X10,0XE5,0XC6,0X59,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7C,0X11,0X08,0XA4,0X21,0X46,0X21,0X26,
|
||||
0X21,0X26,0X10,0XC5,0X73,0XD0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XBE,0X31,0XE9,0X19,0X05,0X21,0X26,
|
||||
0X21,0X26,0X08,0XA4,0X8C,0X93,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X4A,0X6B,0X10,0XE5,0X21,0X26,
|
||||
0X19,0X26,0X18,0XE5,0X31,0XC9,0XF7,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XEF,0X7E,0XC6,0X39,0XAD,0X76,0XB5,0XB7,0XD6,0X9A,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XC5,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X08,0X84,0X94,0XB3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X3D,
|
||||
0X73,0XD0,0X29,0X88,0X10,0XC5,0X08,0XA4,0X08,0XA4,0X10,0XE5,0X3A,0X09,0X94,0XD4,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X4A,0X8B,0X10,0XC5,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X10,0XE5,0X31,0XC8,0XF7,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC6,0X18,0X29,0X87,
|
||||
0X08,0X84,0X19,0X05,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X10,0XE5,0X08,0X84,
|
||||
0X4A,0X8B,0XEF,0X5D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X10,0XA4,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X08,0XA4,0XB5,0X97,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCE,0X59,0X18,0XE5,0X10,0XC5,
|
||||
0X21,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X08,0X84,0X42,0X2A,0XF7,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X63,0X4E,0X08,0XA4,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X08,0X84,0X8C,0X93,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X9E,0X31,0XC9,0X10,0XC5,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X00,0X63,0X7B,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X42,0X6B,0X10,0XC5,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X06,0X08,0X84,0XBE,0X18,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X94,0XB3,0X08,0X63,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X06,0X19,0X06,0XDF,0X1C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X73,0XAF,0X00,0X63,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X06,0X00,0X63,0X73,0XB0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X42,0X4A,0X10,0XC5,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X08,0X84,0X94,0XD4,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X3C,0X31,0XC8,0X08,0X84,0X19,0X26,0X19,0X26,
|
||||
0X10,0XE5,0X08,0XA4,0X84,0X31,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X5D,0X21,0X47,0X19,0X05,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X08,0XA4,0X6B,0X6E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X5D,0X4A,0X8B,0X00,0X63,0X19,0X06,
|
||||
0X19,0X26,0XB5,0XB7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDE,0XDB,0X19,0X06,0X19,0X06,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X08,0XA4,0X5A,0XED,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X7B,0XF1,0X10,0XC5,
|
||||
0XCE,0X7A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X3C,0X21,0X26,0X19,0X05,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,0X19,0X26,
|
||||
0X19,0X26,0X19,0X26,0X08,0XA4,0X63,0X4E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8C,0X93,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X3A,0X09,0X10,0XC5,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X19,0X26,0X08,0X84,0X8C,0X72,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XB5,0XD7,
|
||||
0XEF,0X5D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7C,0X11,0X00,0X63,0X19,0X26,0X19,0X06,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X06,0X19,0X06,0X10,0XC5,0XCE,0X9A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X94,0XD3,
|
||||
0XB5,0XB7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X1C,0X19,0X06,0X10,0XE5,0X19,0X06,
|
||||
0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,
|
||||
0X19,0X26,0X08,0X83,0X5A,0XED,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X63,0X2E,
|
||||
0X7B,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XA5,0X35,0X00,0X63,0X18,0XE5,
|
||||
0X19,0X26,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X26,
|
||||
0X08,0XA4,0X21,0X46,0XDE,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X39,0XE9,
|
||||
0X42,0X4A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X94,0XB3,0X08,0XA4,
|
||||
0X08,0XA4,0X19,0X05,0X19,0X06,0X19,0X06,0X19,0X06,0X19,0X06,0X18,0XE5,0X00,0X63,
|
||||
0X21,0X47,0XCE,0X59,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X1C,0X18,0XE5,
|
||||
0X10,0XE5,0XE7,0X3C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0X18,
|
||||
0X42,0X4A,0X10,0XA4,0X00,0X63,0X08,0X83,0X08,0X83,0X08,0X63,0X10,0XE5,0X63,0X2D,
|
||||
0XE7,0X1C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X94,0XD4,0X08,0X83,
|
||||
0X10,0XC4,0X4A,0X8B,0XAD,0X76,0XD6,0XBB,0XF7,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XCE,0X59,0X94,0XD3,0X7B,0XF0,0X7C,0X11,0X9D,0X14,0XDE,0XDB,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X3D,0XC6,0X39,0X94,0XB3,0X21,0X46,0X10,0XE5,
|
||||
0X19,0X06,0X08,0XA4,0X08,0X84,0X10,0XE5,0X29,0XA8,0X5A,0XED,0XBD,0XF8,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XDF,0X8C,0X93,0X42,0X4A,0X21,0X26,0X08,0XA4,0X08,0X83,0X10,0XE5,0X19,0X06,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X18,0XE5,0X10,0XC5,0X08,0X83,0X00,0X63,0X9D,0X14,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,
|
||||
0X5A,0XED,0X00,0X22,0X08,0XA4,0X10,0XE5,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X10,0XC4,0X21,0X47,
|
||||
0XEF,0X7E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XB5,0XB7,
|
||||
0X00,0X63,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X08,0XA4,
|
||||
0XC6,0X59,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X84,0X31,
|
||||
0X00,0X63,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X18,0XE5,0X08,0XA4,
|
||||
0XC6,0X39,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X84,0X31,
|
||||
0X00,0X63,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X10,0XE5,0X10,0XC5,
|
||||
0XD6,0X9A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X84,0X31,
|
||||
0X00,0X63,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X10,0XE5,0X19,0X06,
|
||||
0XE7,0X3C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8C,0X72,
|
||||
0X00,0X63,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,0X19,0X05,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X10,0XE5,0X08,0XA4,
|
||||
0XC6,0X39,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XBD,0XF8,0X7B,0XF0,0X8C,0X72,0XDE,0XFB,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X73,0XB0,
|
||||
0X00,0X63,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X10,0XC4,
|
||||
0X29,0X87,0XB5,0X96,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XDF,0X6B,0X6E,0X00,0X63,0X00,0X43,0X00,0X43,0X18,0XE5,0XA5,0X35,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X9E,0X84,0X31,0X10,0XE5,
|
||||
0X10,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X19,0X05,
|
||||
0X08,0XA4,0X08,0X83,0X4A,0X8B,0XBD,0XD7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X3C,
|
||||
0X42,0X4A,0X00,0X43,0X10,0XE5,0X18,0XE5,0X19,0X05,0X10,0XC4,0X00,0X63,0X7B,0XF0,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0X7E,0X94,0XD4,0X29,0XA8,0X00,0X63,0X10,0XE5,
|
||||
0X19,0X05,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,0X18,0XE5,
|
||||
0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,
|
||||
0X18,0XE5,0X10,0XE5,0X08,0X83,0X08,0X83,0X31,0XC8,0X84,0X52,0X94,0XD4,0X21,0X67,
|
||||
0X00,0X63,0X18,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X18,0XE5,0X10,0XE5,0X00,0X43,
|
||||
0X4A,0X8B,0X9C,0XF4,0X6B,0X6E,0X21,0X46,0X00,0X63,0X08,0XA4,0X18,0XE5,0X10,0XE5,
|
||||
0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,0X10,0XE5,
|
||||
const unsigned char gImage_SystemSetting[2178] = { /* 33x33 RGB565 BE */
|
||||
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,0x42,0x08,0x63,0x0C,
|
||||
0x84,0x10,0x52,0x8A,0x42,0x08,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD6,0x9A,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC6,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x42,0x08,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,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x18,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC6,0x18,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x63,0x0C,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,0x63,0x0C,0xF7,0x9E,0xFF,0xFF,0xE7,0x1C,0xA5,0x14,0x84,0x10,0xA5,0x14,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xA5,0x14,0x84,0x10,0xA5,0x14,0xE7,0x1C,0xFF,0xFF,
|
||||
0xFF,0xFF,0x63,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x31,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xB5,0x96,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xA5,0x14,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x18,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC6,0x18,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA5,0x14,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xC6,0x18,0xC6,0x18,0xC6,0x18,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x84,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x84,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x10,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xF7,0x9E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA5,0x14,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,
|
||||
0x31,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x31,0x86,0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xA5,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x52,0x8A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x42,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x42,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x84,0x10,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xA5,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x18,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x63,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x31,0x86,0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x52,0x8A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,0x31,0x86,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x63,0x0C,0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x86,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,0x52,0x8A,
|
||||
0x00,0x00,0x73,0x8E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x94,0x92,0xE7,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x31,0x86,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x84,0x10,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x94,0x92,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,0xC6,0x18,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC6,0x18,0x94,0x92,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xD6,0x9A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xD6,0x9A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x84,0x10,0x42,0x08,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xD6,0x9A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xD6,0x9A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x31,0x86,0x00,0x00,
|
||||
0x94,0x92,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB5,0x96,0x84,0x10,0x42,0x08,
|
||||
0x84,0x10,0xB5,0x96,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x63,0x0C,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x08,0x73,0x8E,0xE7,0x1C,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD6,0x9A,0x63,0x0C,0x31,0x86,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD6,0x9A,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC6,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x52,0x8A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x52,0x8A,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x42,0x08,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x42,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x42,0x08,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x86,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x42,0x08,
|
||||
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,0xC6,0x18,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x94,0x92,0x52,0x8A,0xA5,0x14,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,
|
||||
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,0x31,0x86,0xC6,0x18,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x9E,0x31,0x86,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x42,0x08,0xF7,0x9E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC6,0x18,
|
||||
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,
|
||||
0x00,0x00,0x42,0x08,0xA5,0x14,0xFF,0xFF,0xB5,0x96,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x86,0xB5,0x96,0xF7,0x9E,0xA5,0x14,0x42,0x08,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,419 @@
|
|||
#include "Drv_ILI9341_Lcd_Image_ChargePct.h"
|
||||
|
||||
/* Auto-generated by tools/gen_charge_pct_glyphs.py — MiSans Semibold, shared baseline */
|
||||
|
||||
const unsigned char gImage_Charge_Digit0_14x20[560] = { /* 14x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
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,
|
||||
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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit1_9x20[360] = { /* 9x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit2_13x20[520] = { /* 13x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,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,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit3_13x20[520] = { /* 13x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,0xFF,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit4_14x20[560] = { /* 14x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,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,
|
||||
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,
|
||||
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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit5_13x20[520] = { /* 13x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,0xFF,
|
||||
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,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,0xFF,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit6_13x20[520] = { /* 13x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit7_12x20[480] = { /* 12x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit8_14x20[560] = { /* 14x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
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,
|
||||
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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Digit9_13x20[520] = { /* 13x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,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,
|
||||
};
|
||||
|
||||
const unsigned char gImage_Charge_Pct_18x20[720] = { /* 18x20 RGB565 BE */
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,0xFF,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,0xFF,
|
||||
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,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
};
|
||||
|
||||
const ChargePctGlyph g_ChargePctDigits[10] = {
|
||||
{ gImage_Charge_Digit0_14x20, 14, 20 },
|
||||
{ gImage_Charge_Digit1_9x20, 9, 20 },
|
||||
{ gImage_Charge_Digit2_13x20, 13, 20 },
|
||||
{ gImage_Charge_Digit3_13x20, 13, 20 },
|
||||
{ gImage_Charge_Digit4_14x20, 14, 20 },
|
||||
{ gImage_Charge_Digit5_13x20, 13, 20 },
|
||||
{ gImage_Charge_Digit6_13x20, 13, 20 },
|
||||
{ gImage_Charge_Digit7_12x20, 12, 20 },
|
||||
{ gImage_Charge_Digit8_14x20, 14, 20 },
|
||||
{ gImage_Charge_Digit9_13x20, 13, 20 },
|
||||
};
|
||||
|
||||
const ChargePctGlyph g_ChargePctPercent = { gImage_Charge_Pct_18x20, 18, 20 };
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef __DRV_ILI9341_LCD_IMAGE_CHARGE_PCT_H
|
||||
#define __DRV_ILI9341_LCD_IMAGE_CHARGE_PCT_H
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
#define CHARGE_PCT_GLYPH_H 20
|
||||
|
||||
#define CHARGE_DIGIT0_W 14
|
||||
#define CHARGE_DIGIT0_H 20
|
||||
extern const unsigned char gImage_Charge_Digit0_14x20[560];
|
||||
|
||||
#define CHARGE_DIGIT1_W 9
|
||||
#define CHARGE_DIGIT1_H 20
|
||||
extern const unsigned char gImage_Charge_Digit1_9x20[360];
|
||||
|
||||
#define CHARGE_DIGIT2_W 13
|
||||
#define CHARGE_DIGIT2_H 20
|
||||
extern const unsigned char gImage_Charge_Digit2_13x20[520];
|
||||
|
||||
#define CHARGE_DIGIT3_W 13
|
||||
#define CHARGE_DIGIT3_H 20
|
||||
extern const unsigned char gImage_Charge_Digit3_13x20[520];
|
||||
|
||||
#define CHARGE_DIGIT4_W 14
|
||||
#define CHARGE_DIGIT4_H 20
|
||||
extern const unsigned char gImage_Charge_Digit4_14x20[560];
|
||||
|
||||
#define CHARGE_DIGIT5_W 13
|
||||
#define CHARGE_DIGIT5_H 20
|
||||
extern const unsigned char gImage_Charge_Digit5_13x20[520];
|
||||
|
||||
#define CHARGE_DIGIT6_W 13
|
||||
#define CHARGE_DIGIT6_H 20
|
||||
extern const unsigned char gImage_Charge_Digit6_13x20[520];
|
||||
|
||||
#define CHARGE_DIGIT7_W 12
|
||||
#define CHARGE_DIGIT7_H 20
|
||||
extern const unsigned char gImage_Charge_Digit7_12x20[480];
|
||||
|
||||
#define CHARGE_DIGIT8_W 14
|
||||
#define CHARGE_DIGIT8_H 20
|
||||
extern const unsigned char gImage_Charge_Digit8_14x20[560];
|
||||
|
||||
#define CHARGE_DIGIT9_W 13
|
||||
#define CHARGE_DIGIT9_H 20
|
||||
extern const unsigned char gImage_Charge_Digit9_13x20[520];
|
||||
|
||||
#define CHARGE_PCT_W 18
|
||||
#define CHARGE_PCT_H 20
|
||||
extern const unsigned char gImage_Charge_Pct_18x20[720];
|
||||
|
||||
typedef struct {
|
||||
const unsigned char *data;
|
||||
uint8_t w;
|
||||
uint8_t h;
|
||||
} ChargePctGlyph;
|
||||
|
||||
extern const ChargePctGlyph g_ChargePctDigits[10];
|
||||
extern const ChargePctGlyph g_ChargePctPercent;
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef __DRV_ILI9341_LCD_IMAGE_UI0902_H
|
||||
#define __DRV_ILI9341_LCD_IMAGE_UI0902_H
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
extern const unsigned char gImage_UI0902_BatteryOutline_29x12[];
|
||||
extern const unsigned char gImage_UI0902_Volume_20x15[600];
|
||||
extern const unsigned char gImage_UI0902_Bluetooth_11x17[374];
|
||||
extern const unsigned char gImage_UI0902_BatteryFill_22x9[396];
|
||||
extern const unsigned char gImage_UI0902_TabSetting_Sel_36x28[2016];
|
||||
extern const unsigned char gImage_UI0902_TabSetting_Not_35x28[1960];
|
||||
extern const unsigned char gImage_UI0902_TabMixer_Sel_35x27[1890];
|
||||
extern const unsigned char gImage_UI0902_TabMixer_Not_18x28[1008];
|
||||
extern const unsigned char gImage_UI0902_TabMixer_Not_35x28[1960];
|
||||
extern const unsigned char gImage_UI0902_TabMode_Sel_36x28[2016];
|
||||
extern const unsigned char gImage_UI0902_TabMode_Not_35x29[2030];
|
||||
extern const unsigned char gImage_UI0902_TabBack_Sel_35x27[1890];
|
||||
extern const unsigned char gImage_UI0902_TabBack_Not_18x28[1008];
|
||||
|
||||
extern const unsigned char gImage_UI0902_BtnMinus_23x22[1012];
|
||||
extern const unsigned char gImage_UI0902_BtnPlus_23x22[1012];
|
||||
extern const unsigned char gImage_UI0902_TabBack_30x24[1440];
|
||||
|
||||
extern const unsigned char gImage_UI0902_TriLeft_22x22[968];
|
||||
extern const unsigned char gImage_UI0902_TriRight_23x22[1012];
|
||||
|
||||
extern const unsigned char gImage_UI0902_Txt_Confirm_50x24[2400];
|
||||
extern const unsigned char gImage_UI0902_Txt_Cancel_50x24[2400];
|
||||
#endif
|
||||
|
|
@ -203,9 +203,7 @@ void LCD_Init(void)
|
|||
LCD_WR_DATA8(0x0F);
|
||||
// LCD_WR_REG(0x29); //Display on
|
||||
|
||||
LCD_FillByColor(0, 0, 240, 320, BLACK); // 初始全屏白色
|
||||
LCD_FillByColor(0, 0, 240, 320, BLACK);
|
||||
LCD_WR_REG(0x29); //Display on
|
||||
// LCD_BLK_Set();
|
||||
|
||||
|
||||
LCD_BLK_Set();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ extern void LCD_SetWindow(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
|
|||
extern void LCD_Init(void); //LCD初始化
|
||||
extern void LCD_SPI_DMA_Send(const uint8_t *data, uint32_t len); //SPI2 DMA批量发送
|
||||
extern void LCD_DrawChevron_Right(uint16_t x, uint16_t y, uint8_t size, uint8_t thick, uint16_t color); //向右空心尖括号
|
||||
extern void LCD_DrawChevron_Left(uint16_t x, uint16_t y, uint8_t size, uint8_t thick, uint16_t color); //向左空心尖括号
|
||||
|
||||
// 渐变背景文字显示(先画垂直渐变底,再叠加文字笔画)
|
||||
extern uint32_t LCD_ShowChinese_AutoAlign_Gradient(uint16_t x1, uint16_t x2, uint16_t y,
|
||||
|
|
|
|||
|
|
@ -20,9 +20,9 @@ void XPT2046_Init(void)
|
|||
gpio_init_struct.gpio_pins = TP_CLK_PIN | TP_DIN_PIN | TP_CS_PIN;
|
||||
gpio_init(GPIOC, &gpio_init_struct);
|
||||
|
||||
// 输入引脚:OUT(上拉)、IRQ(上拉)
|
||||
// DOUT:浮空输入(内部上拉易把空闲读成满量程)
|
||||
gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
|
||||
gpio_init_struct.gpio_pull = GPIO_PULL_UP;
|
||||
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
|
||||
gpio_init_struct.gpio_pins = TP_OUT_PIN;
|
||||
gpio_init(TP_OUT_PORT, &gpio_init_struct);
|
||||
|
||||
|
|
@ -92,13 +92,12 @@ void TP_Write_Byte(uint8_t data)
|
|||
//从触摸屏IC读取adc值
|
||||
//CMD:指令
|
||||
//返回值:读到的数据
|
||||
uint16_t TP_Read_AD(uint8_t cmd)
|
||||
/* 在 CS 已拉低时写命令并读:与量产一致,16 时钟取高 12bit */
|
||||
static uint16_t TP_Read_AD_CSHeld(uint8_t cmd)
|
||||
{
|
||||
uint8_t i;
|
||||
uint16_t adc_val = 0;
|
||||
|
||||
TP_CS_Clr();
|
||||
Delay_us(2);
|
||||
TP_Write_Byte(cmd);
|
||||
Delay_us(6);
|
||||
|
||||
|
|
@ -113,89 +112,92 @@ uint16_t TP_Read_AD(uint8_t cmd)
|
|||
adc_val |= 0x01;
|
||||
}
|
||||
|
||||
return (uint16_t)(adc_val >> 4);
|
||||
}
|
||||
|
||||
uint16_t TP_Read_AD(uint8_t cmd)
|
||||
{
|
||||
uint16_t v;
|
||||
|
||||
TP_CS_Clr();
|
||||
Delay_us(2);
|
||||
v = TP_Read_AD_CSHeld(cmd);
|
||||
TP_CS_Set();
|
||||
return adc_val >> 4;
|
||||
return v;
|
||||
}
|
||||
|
||||
uint8_t TP_CheckPressed(uint8_t n)
|
||||
#define TP_ADC_PRESS_MIN 120u
|
||||
#define TP_ADC_PRESS_MAX 4095u
|
||||
#define TP_PRESSURE_MIN 80u
|
||||
/* 本板 IRQ 无效;压力仅作弱参考,不过度拦截(真触摸 z 也常偏大) */
|
||||
#define TP_PRESSURE_MAX 5000u
|
||||
|
||||
static uint16_t TP_Median5(uint16_t *a)
|
||||
{
|
||||
uint8_t count = 0;
|
||||
uint8_t i, j;
|
||||
uint16_t t;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (j = (uint8_t)(i + 1U); j < 5U; j++) {
|
||||
if (a[j] < a[i]) {
|
||||
t = a[i];
|
||||
a[i] = a[j];
|
||||
a[j] = t;
|
||||
}
|
||||
}
|
||||
}
|
||||
return a[2];
|
||||
}
|
||||
|
||||
static void TP_SampleXY(uint16_t *out_x, uint16_t *out_y)
|
||||
{
|
||||
uint16_t xs[5], ys[5];
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
if (TP_IRQ_Read() == 0)
|
||||
count++;
|
||||
Delay_us(100);
|
||||
}
|
||||
return (count >= (n / 2)) ? 1 : 0;
|
||||
}
|
||||
|
||||
static uint16_t TP_SampleAxis(uint8_t cmd)
|
||||
{
|
||||
(void)TP_Read_AD(cmd);
|
||||
for (i = 0; i < 5; i++) {
|
||||
xs[i] = TP_Read_AD(XPT2046_READ_X);
|
||||
Delay_us(15);
|
||||
return TP_Read_AD(cmd);
|
||||
}
|
||||
|
||||
TP_Point TP_ReadRaw(void)
|
||||
{
|
||||
TP_Point p = {0, 0, 0};
|
||||
uint32_t x_sum = 0, y_sum = 0;
|
||||
uint8_t i;
|
||||
static uint8_t s_raw_logged;
|
||||
|
||||
if (!TP_CheckPressed(3)) {
|
||||
s_raw_logged = 0U;
|
||||
return p;
|
||||
}
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
x_sum += TP_SampleAxis(XPT2046_READ_X);
|
||||
Delay_us(15);
|
||||
y_sum += TP_SampleAxis(XPT2046_READ_Y);
|
||||
ys[i] = TP_Read_AD(XPT2046_READ_Y);
|
||||
Delay_us(15);
|
||||
}
|
||||
|
||||
p.x = (uint16_t)(x_sum / 5);
|
||||
p.y = (uint16_t)(y_sum / 5);
|
||||
*out_x = TP_Median5(xs);
|
||||
*out_y = TP_Median5(ys);
|
||||
}
|
||||
|
||||
/* Y 通道常为 0 时,交换 X/Y 命令再采一次 */
|
||||
if (p.y < 80u && p.x > 80u)
|
||||
static uint16_t TP_ReadPressure(void)
|
||||
{
|
||||
uint32_t sx = 0, sy = 0;
|
||||
uint16_t z1, z2;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
sx += TP_SampleAxis(XPT2046_READ_Y);
|
||||
z1 = TP_Read_AD(XPT2046_READ_Z1);
|
||||
Delay_us(15);
|
||||
sy += TP_SampleAxis(XPT2046_READ_X);
|
||||
Delay_us(15);
|
||||
}
|
||||
if (sy / 3u > p.y)
|
||||
{
|
||||
p.x = (uint16_t)(sx / 3);
|
||||
p.y = (uint16_t)(sy / 3);
|
||||
}
|
||||
z2 = TP_Read_AD(XPT2046_READ_Z2);
|
||||
|
||||
return (z1 > z2) ? (uint16_t)(z1 - z2) : 0U;
|
||||
}
|
||||
|
||||
p.pressed = 1;
|
||||
if (!s_raw_logged) {
|
||||
LOG_TP("raw x=%u y=%u irq=%u", (unsigned)p.x, (unsigned)p.y,
|
||||
(unsigned)(TP_IRQ_Read() == 0U));
|
||||
s_raw_logged = 1U;
|
||||
}
|
||||
return p;
|
||||
static uint8_t TP_AdcCoordValid(uint16_t x, uint16_t y)
|
||||
{
|
||||
/* 仅排除明显无效;双高在本板上也可能是真触摸(Y 常贴高,垂直靠 raw.x) */
|
||||
if (x < TP_ADC_PRESS_MIN && y < TP_ADC_PRESS_MIN)
|
||||
return 0U;
|
||||
if (x > 4000u && y > 4000u)
|
||||
return 0U;
|
||||
return (x <= TP_ADC_PRESS_MAX && y <= TP_ADC_PRESS_MAX) ? 1U : 0U;
|
||||
}
|
||||
|
||||
#define CALIB_X_MIN 200
|
||||
#define CALIB_X_MAX 3800
|
||||
#define CALIB_Y_MIN 200
|
||||
#define CALIB_Y_MAX 3800
|
||||
#define CALIB_Y_MAX 3950
|
||||
|
||||
/* 竖屏:多数 ILI9341+XPT2046 板级需 XY 对调;X 镜像与历史 240-tp.x 一致 */
|
||||
#define TP_SWAP_XY 1
|
||||
/*
|
||||
* 竖屏线性映射:raw.x→屏幕X,raw.y→屏幕Y。
|
||||
* 本机 X 轴左右对调(点右触发左),开 TP_MIRROR_X。
|
||||
* 若 TP_MIRROR_Y=1 会导致 Y 轴反转(点「专业」误中「万能」)。
|
||||
* DOUT(PA15) 浮空输入;空闲 raw.y 噪声禁止走 ADC 回退。
|
||||
*/
|
||||
#define TP_SWAP_XY 0
|
||||
#define TP_MIRROR_X 1
|
||||
#define TP_MIRROR_Y 0
|
||||
|
||||
|
|
@ -221,32 +223,120 @@ static uint16_t TP_MapAxis(uint16_t adc, uint16_t adc_min, uint16_t adc_max, uin
|
|||
return (uint16_t)px;
|
||||
}
|
||||
|
||||
TP_Point TP_Read(void)
|
||||
static void TP_RawToScreen(uint16_t raw_x, uint16_t raw_y, uint16_t *sx, uint16_t *sy)
|
||||
{
|
||||
TP_Point raw = TP_ReadRaw();
|
||||
TP_Point calib = {0, 0, raw.pressed};
|
||||
uint16_t ax, ay;
|
||||
|
||||
if (!raw.pressed)
|
||||
return calib;
|
||||
|
||||
#if TP_SWAP_XY
|
||||
ax = TP_MapAxis(raw.y, CALIB_Y_MIN, CALIB_Y_MAX, (uint16_t)(LCD_W - 1));
|
||||
ay = TP_MapAxis(raw.x, CALIB_X_MIN, CALIB_X_MAX, (uint16_t)(LCD_H - 1));
|
||||
ax = TP_MapAxis(raw_y, CALIB_Y_MIN, CALIB_Y_MAX, (uint16_t)(LCD_W - 1));
|
||||
ay = TP_MapAxis(raw_x, CALIB_X_MIN, CALIB_X_MAX, (uint16_t)(LCD_H - 1));
|
||||
#else
|
||||
ax = TP_MapAxis(raw.x, CALIB_X_MIN, CALIB_X_MAX, (uint16_t)(LCD_W - 1));
|
||||
ay = TP_MapAxis(raw.y, CALIB_Y_MIN, CALIB_Y_MAX, (uint16_t)(LCD_H - 1));
|
||||
ax = TP_MapAxis(raw_x, CALIB_X_MIN, CALIB_X_MAX, (uint16_t)(LCD_W - 1));
|
||||
ay = TP_MapAxis(raw_y, CALIB_Y_MIN, CALIB_Y_MAX, (uint16_t)(LCD_H - 1));
|
||||
#endif
|
||||
|
||||
#if TP_MIRROR_X
|
||||
ax = (uint16_t)(LCD_W - 1 - ax);
|
||||
#endif
|
||||
#if TP_MIRROR_Y
|
||||
ay = (uint16_t)(LCD_H - 1 - ay);
|
||||
#endif
|
||||
*sx = ax;
|
||||
*sy = ay;
|
||||
}
|
||||
|
||||
calib.x = ax;
|
||||
calib.y = ay;
|
||||
void TP_LogStatus(void)
|
||||
{
|
||||
uint16_t x, y, z;
|
||||
uint16_t sx, sy;
|
||||
|
||||
z = TP_ReadPressure();
|
||||
TP_SampleXY(&x, &y);
|
||||
TP_RawToScreen(x, y, &sx, &sy);
|
||||
LOG_TPI("status irq=%u z=%u raw=%u,%u cal=%u,%u",
|
||||
(unsigned)(TP_IRQ_Read() == 0U),
|
||||
(unsigned)z,
|
||||
(unsigned)x, (unsigned)y,
|
||||
(unsigned)sx, (unsigned)sy);
|
||||
}
|
||||
|
||||
static uint8_t s_tp_live;
|
||||
|
||||
void TP_SetLiveMode(uint8_t on)
|
||||
{
|
||||
s_tp_live = on ? 1U : 0U;
|
||||
LOG_TPI("live %s (events only)", s_tp_live ? "on" : "off");
|
||||
}
|
||||
|
||||
/* 不再空闲刷屏;按下事件仍由 touch task 的 scan/press/release 打印 */
|
||||
void TP_LivePoll(void)
|
||||
{
|
||||
(void)s_tp_live;
|
||||
}
|
||||
|
||||
uint8_t TP_CheckPressed(uint8_t n)
|
||||
{
|
||||
uint8_t count = 0;
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
if (TP_IRQ_Read() == 0)
|
||||
count++;
|
||||
Delay_us(100);
|
||||
}
|
||||
return (count >= ((n + 1U) / 2U)) ? 1U : 0U;
|
||||
}
|
||||
|
||||
TP_Point TP_ReadRaw(void)
|
||||
{
|
||||
TP_Point p = {0, 0, 0};
|
||||
uint8_t irq_pressed;
|
||||
static uint8_t s_raw_logged;
|
||||
uint16_t rx, ry;
|
||||
|
||||
irq_pressed = TP_CheckPressed(3);
|
||||
if (!irq_pressed) {
|
||||
/*
|
||||
* 空闲时 ADC 常读成 y=4095,会误触发幽灵点击。
|
||||
* 本板真触摸 IRQ 能拉低,只认 IRQ 路径。
|
||||
*/
|
||||
s_raw_logged = 0U;
|
||||
return p;
|
||||
}
|
||||
|
||||
TP_SampleXY(&rx, &ry);
|
||||
if (!TP_AdcCoordValid(rx, ry)) {
|
||||
s_raw_logged = 0U;
|
||||
return p;
|
||||
}
|
||||
|
||||
p.x = rx;
|
||||
p.y = ry;
|
||||
p.pressed = 1;
|
||||
if (!s_raw_logged) {
|
||||
LOG_TPI("raw x=%u y=%u irq=1", (unsigned)p.x, (unsigned)p.y);
|
||||
s_raw_logged = 1U;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
TP_Point TP_Read(void)
|
||||
{
|
||||
TP_Point raw = TP_ReadRaw();
|
||||
TP_Point calib = {0, 0, raw.pressed};
|
||||
static uint8_t s_cal_logged;
|
||||
|
||||
if (!raw.pressed) {
|
||||
s_cal_logged = 0U;
|
||||
return calib;
|
||||
}
|
||||
|
||||
TP_RawToScreen(raw.x, raw.y, &calib.x, &calib.y);
|
||||
if (!s_cal_logged) {
|
||||
LOG_TPI("cal x=%u y=%u (raw %u,%u)", (unsigned)calib.x, (unsigned)calib.y,
|
||||
(unsigned)raw.x, (unsigned)raw.y);
|
||||
s_cal_logged = 1U;
|
||||
}
|
||||
return calib;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
#define TP_DIN_Clr() gpio_bits_reset(TP_DIN_PORT, TP_DIN_PIN) // DIN输出低(MCU→XPT2046)
|
||||
#define TP_DIN_Set() gpio_bits_set(TP_DIN_PORT, TP_DIN_PIN) // DIN输出高(MCU→XPT2046)
|
||||
|
||||
// XPT2046命令(与 BOOT 工程一致)
|
||||
/* 与量产/BOOT 一致:PD1:PD0=00(转换后掉电);时序用 16clk>>4 */
|
||||
#define XPT2046_READ_X 0xD0
|
||||
#define XPT2046_READ_Y 0x90
|
||||
#define XPT2046_READ_Z1 0xB0
|
||||
|
|
@ -64,6 +64,9 @@ extern uint16_t TP_Read_AD(uint8_t CMD); // 从触摸屏IC读取adc值
|
|||
extern uint8_t TP_CheckPressed(uint8_t n); // 简单去抖动读取(连续n次相同状态视为有效)
|
||||
extern TP_Point TP_ReadRaw(void); // 读取原始坐标(未校准)
|
||||
extern TP_Point TP_Read(void); // 校准后获取LCD坐标
|
||||
extern void TP_LogStatus(void); // 打印 IRQ/ADC 诊断(RTT tp status)
|
||||
extern void TP_SetLiveMode(uint8_t on); // 实时采样日志开关(RTT tp live / tp live off)
|
||||
extern void TP_LivePoll(void); // live 模式下周期性打印 raw/cal
|
||||
|
||||
extern void EXTI15_10_IRQHandler(void); // EXTI15_10中断服务函数(处理TP_IRQ触发)
|
||||
//extern void HAL_EXTI_Callback(EXTI_HandleTypeDef *hexti); // 中断回调函数(触摸触发时执行)
|
||||
|
|
|
|||
|
|
@ -205,12 +205,13 @@ void drv_nvm_load_default_calibration_static_value(NvmParam_Type * pData, uint8
|
|||
pData->param.StringVol = 7;
|
||||
pData->param.MIcVol = 7;
|
||||
pData->param.MicRev = 7;
|
||||
/* 手册:0=15 / 1=30 / 2=45 / 3=60 / 4=不自动;默认 15 分钟 */
|
||||
pData->param.AutoCloseTime = 0;
|
||||
pData->param.Transpose = 0;
|
||||
pData->param.BluetoothSW = 1; /* 出厂默认蓝牙开 */
|
||||
pData->param.Param1 = 0;
|
||||
pData->param.Param2 = 0;
|
||||
pData->param.Param3 = 0;
|
||||
//pData->param.Language = 0;
|
||||
}
|
||||
mGuiData[GUI_SPEED].Current = pData->param.BPM;
|
||||
mGuiData[GUI_TIMBRE_SELECT].Current = pData->param.Timbre;
|
||||
|
|
@ -219,7 +220,27 @@ void drv_nvm_load_default_calibration_static_value(NvmParam_Type * pData, uint8
|
|||
faders[1].val = pData->param.StringVol;
|
||||
faders[2].val = pData->param.MIcVol;
|
||||
faders[3].val = pData->param.MicRev;
|
||||
//mGuiData_SystemSETTING[GUI_AUTOCLOSE].Current = pData->param.AutoCloseTime;
|
||||
if (pData->param.AutoCloseTime > 4)
|
||||
pData->param.AutoCloseTime = 0;
|
||||
mGuiData_SystemSETTING[GUI_AUTOCLOSE].Current = pData->param.AutoCloseTime;
|
||||
/* 旧固件 Language 槽可能为 0xFF;非法值按默认开处理 */
|
||||
if (pData->param.BluetoothSW > 1)
|
||||
pData->param.BluetoothSW = 1;
|
||||
mGuiData_SystemSETTING[GUI_BLUETOOTH_SW].Current = pData->param.BluetoothSW;
|
||||
mGuiData[GUI_BL_SW].Current = pData->param.BluetoothSW;
|
||||
/* 开机/出厂:同步自动关机运行时秒表(手册 15/30/45/60/不自动) */
|
||||
AutoCloseFlag = true;
|
||||
switch (pData->param.AutoCloseTime)
|
||||
{
|
||||
case 0: AutoCloseTime = 15; break;
|
||||
case 1: AutoCloseTime = 30; break;
|
||||
case 2: AutoCloseTime = 45; break;
|
||||
case 3: AutoCloseTime = 60; break;
|
||||
case 4: AutoCloseTime = 0; AutoCloseFlag = false; break;
|
||||
default: AutoCloseTime = 15; break;
|
||||
}
|
||||
if (AutoCloseFlag && AutoCloseTime)
|
||||
mAutoPowerOffCount = (uint16_t)(AutoCloseTime * 60);
|
||||
ParamGuiData[SONG_MODE_PARAM].Current = pData->param.Param1;
|
||||
ParamGuiData[EXPRESS_MODE_PARAM].Current = pData->param.Param2;
|
||||
ParamGuiData[ALL_MODE_PARAM].Current = pData->param.Param3;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ typedef struct {
|
|||
uint8_t MicRev;
|
||||
uint8_t AutoCloseTime;
|
||||
uint8_t Transpose;
|
||||
uint8_t Language;
|
||||
uint8_t BluetoothSW; /* 0=关 1=开;复用原 Language 槽位,布局不变 */
|
||||
uint8_t Param1;
|
||||
uint8_t Param2;
|
||||
uint8_t Param3;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFED
|
|||
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||
|
||||
initialize by copy { readwrite };
|
||||
initialize by copy with packing = none { readwrite };
|
||||
do not initialize { section .noinit };
|
||||
|
||||
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
|
||||
|
|
|
|||
|
|
@ -2085,10 +2085,16 @@
|
|||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image_ModeSelect0831.c</name>
|
||||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image_UI0902.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image_ModeSelect0831.h</name>
|
||||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image_UI0902.h</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image_ChargePct.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image_ChargePct.h</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\device\LCD_ILI9341\Drv_ILI9341_Lcd_Image.h</name>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
#ifndef __EXTFLASH_TONE_ADDR_H
|
||||
#define __EXTFLASH_TONE_ADDR_H
|
||||
|
||||
/* Auto-generated by tools/pack_extflash_tone_0903.py — do not hand-edit. */
|
||||
/* W25Q128 absolute offsets. Boot logo display uses UI0902_BOOT_LOGO_ADDR. */
|
||||
/* Tone resource pack has no in-bin version field; release tag = EXTFLASH_TONE_RES_VER. */
|
||||
#define EXTFLASH_TONE_RES_VER "0903"
|
||||
#define EXTFLASH_TONE_RES_VER_MAJOR 0
|
||||
#define EXTFLASH_TONE_RES_VER_MINOR 9
|
||||
#define EXTFLASH_TONE_RES_VER_PATCH 3
|
||||
|
||||
#define EXTFLASH_LOGO_ADDR 0x00000000UL
|
||||
#define EXTFLASH_LOGO_SIZE 52080UL
|
||||
|
||||
#define EXTFLASH_CHARGING_ADDR 0x0000CB70UL
|
||||
#define EXTFLASH_CHARGING_SIZE 60800UL
|
||||
#define EXTFLASH_CHARGING_W 160
|
||||
#define EXTFLASH_CHARGING_H 190
|
||||
|
||||
#define EXTFLASH_BIN1_RHYTHM_ADDR 0x0001B8F0UL
|
||||
#define EXTFLASH_BIN1_RHYTHM_SIZE 530317UL
|
||||
|
||||
#define EXTFLASH_BIN2_SONG_HAITIAN_ADDR 0x0009D07DUL
|
||||
#define EXTFLASH_BIN2_SONG_HAITIAN_SIZE 41040UL
|
||||
|
||||
#define EXTFLASH_BIN3_UNIVERSAL_ADDR 0x000A70CDUL
|
||||
#define EXTFLASH_BIN3_UNIVERSAL_SIZE 31854UL
|
||||
|
||||
/* Convenience aliases used by UI ADDRESS */
|
||||
#define FLASH_ADDR_MODE_NORMAL EXTFLASH_BIN1_RHYTHM_ADDR /* 普通 */
|
||||
#define FLASH_ADDR_MODE_EXPERT EXTFLASH_BIN1_RHYTHM_ADDR /* 专业 */
|
||||
#define FLASH_ADDR_SONG_HAITIAN EXTFLASH_BIN2_SONG_HAITIAN_ADDR
|
||||
#define FLASH_ADDR_MODE_UNIVERSAL EXTFLASH_BIN3_UNIVERSAL_ADDR /* 万能 */
|
||||
|
||||
/* Legacy AutoBand bank — not repacked in 0903; left unchanged in firmware */
|
||||
#define FLASH_ADDR_AUTOBAND_LEGACY 0x0009EB5FUL
|
||||
|
||||
#define EXTFLASH_TONE_PACK_END 0x000AED3BUL
|
||||
#define EXTFLASH_TONE_PACK_SIZE 716091UL
|
||||
#define UI0902_RES_BASE_SAFE_GAP (0x00100000UL - EXTFLASH_TONE_PACK_END)
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef __LOCAL_SONG_NAMES_H
|
||||
#define __LOCAL_SONG_NAMES_H
|
||||
|
||||
/* Auto-generated by tools/gen_local_song_names.py from local_songs.csv — do not hand-edit. */
|
||||
/* Display names are GBK for LCD_ShowMixedString; codes match 2.bin preset ASCII (e.g. HKTK). */
|
||||
|
||||
#define LOCAL_SONG_COUNT 1
|
||||
|
||||
static const char * const LocalSongNameGbk[LOCAL_SONG_COUNT] = {
|
||||
"\xBA\xA3\xC0\xAB\xCC\xEC\xBF\xD5", /* 0: 海阔天空 */
|
||||
};
|
||||
|
||||
static const char * const LocalSongCode[LOCAL_SONG_COUNT] = {
|
||||
"HKTK", /* 0 */
|
||||
};
|
||||
|
||||
#endif /* __LOCAL_SONG_NAMES_H */
|
||||
|
|
@ -0,0 +1,295 @@
|
|||
#ifndef __UI0902_RES_ADDR_H
|
||||
#define __UI0902_RES_ADDR_H
|
||||
|
||||
/* Auto-generated by tools/gen_ui0902_assets.py. W25Q128 resource map. */
|
||||
#define UI0902_RES_BASE 0x00100000UL
|
||||
|
||||
#define UI0902_ROW_UNIVERSAL_NOT_ADDR (UI0902_RES_BASE + 0x000000UL) /* 39072 bytes */
|
||||
#define UI0902_ROW_UNIVERSAL_NOT_W 222
|
||||
#define UI0902_ROW_UNIVERSAL_NOT_H 88
|
||||
|
||||
#define UI0902_ROW_UNIVERSAL_SEL_ADDR (UI0902_RES_BASE + 0x00A000UL) /* 39072 bytes */
|
||||
#define UI0902_ROW_UNIVERSAL_SEL_W 222
|
||||
#define UI0902_ROW_UNIVERSAL_SEL_H 88
|
||||
|
||||
#define UI0902_ROW_NORMAL_NOT_ADDR (UI0902_RES_BASE + 0x014000UL) /* 39072 bytes */
|
||||
#define UI0902_ROW_NORMAL_NOT_W 222
|
||||
#define UI0902_ROW_NORMAL_NOT_H 88
|
||||
|
||||
#define UI0902_ROW_NORMAL_SEL_ADDR (UI0902_RES_BASE + 0x01E000UL) /* 39072 bytes */
|
||||
#define UI0902_ROW_NORMAL_SEL_W 222
|
||||
#define UI0902_ROW_NORMAL_SEL_H 88
|
||||
|
||||
#define UI0902_ROW_EXPERT_NOT_ADDR (UI0902_RES_BASE + 0x028000UL) /* 39072 bytes */
|
||||
#define UI0902_ROW_EXPERT_NOT_W 222
|
||||
#define UI0902_ROW_EXPERT_NOT_H 88
|
||||
|
||||
#define UI0902_ROW_EXPERT_SEL_ADDR (UI0902_RES_BASE + 0x032000UL) /* 39072 bytes */
|
||||
#define UI0902_ROW_EXPERT_SEL_W 222
|
||||
#define UI0902_ROW_EXPERT_SEL_H 88
|
||||
|
||||
#define UI0902_ICON_UNIVERSAL_SEL_ADDR (UI0902_RES_BASE + 0x03C000UL) /* 2730 bytes */
|
||||
#define UI0902_ICON_UNIVERSAL_SEL_W 39
|
||||
#define UI0902_ICON_UNIVERSAL_SEL_H 35
|
||||
|
||||
#define UI0902_ICON_UNIVERSAL_NOT_ADDR (UI0902_RES_BASE + 0x03D000UL) /* 2736 bytes */
|
||||
#define UI0902_ICON_UNIVERSAL_NOT_W 38
|
||||
#define UI0902_ICON_UNIVERSAL_NOT_H 36
|
||||
|
||||
#define UI0902_ICON_NORMAL_SEL_ADDR (UI0902_RES_BASE + 0x03E000UL) /* 3200 bytes */
|
||||
#define UI0902_ICON_NORMAL_SEL_W 40
|
||||
#define UI0902_ICON_NORMAL_SEL_H 40
|
||||
|
||||
#define UI0902_ICON_NORMAL_NOT_ADDR (UI0902_RES_BASE + 0x03F000UL) /* 3280 bytes */
|
||||
#define UI0902_ICON_NORMAL_NOT_W 41
|
||||
#define UI0902_ICON_NORMAL_NOT_H 40
|
||||
|
||||
#define UI0902_ICON_EXPERT_SEL_ADDR (UI0902_RES_BASE + 0x040000UL) /* 2760 bytes */
|
||||
#define UI0902_ICON_EXPERT_SEL_W 46
|
||||
#define UI0902_ICON_EXPERT_SEL_H 30
|
||||
|
||||
#define UI0902_ICON_EXPERT_NOT_ADDR (UI0902_RES_BASE + 0x041000UL) /* 2760 bytes */
|
||||
#define UI0902_ICON_EXPERT_NOT_W 46
|
||||
#define UI0902_ICON_EXPERT_NOT_H 30
|
||||
|
||||
#define UI0902_TXT_MODE_UNIVERSAL_NOT_ADDR (UI0902_RES_BASE + 0x042000UL) /* 3360 bytes */
|
||||
#define UI0902_TXT_MODE_UNIVERSAL_NOT_W 80
|
||||
#define UI0902_TXT_MODE_UNIVERSAL_NOT_H 21
|
||||
|
||||
#define UI0902_TXT_MODE_UNIVERSAL_SEL_ADDR (UI0902_RES_BASE + 0x043000UL) /* 3318 bytes */
|
||||
#define UI0902_TXT_MODE_UNIVERSAL_SEL_W 79
|
||||
#define UI0902_TXT_MODE_UNIVERSAL_SEL_H 21
|
||||
|
||||
#define UI0902_TXT_MODE_NORMAL_NOT_ADDR (UI0902_RES_BASE + 0x044000UL) /* 3318 bytes */
|
||||
#define UI0902_TXT_MODE_NORMAL_NOT_W 79
|
||||
#define UI0902_TXT_MODE_NORMAL_NOT_H 21
|
||||
|
||||
#define UI0902_TXT_MODE_NORMAL_SEL_ADDR (UI0902_RES_BASE + 0x045000UL) /* 3360 bytes */
|
||||
#define UI0902_TXT_MODE_NORMAL_SEL_W 80
|
||||
#define UI0902_TXT_MODE_NORMAL_SEL_H 21
|
||||
|
||||
#define UI0902_TXT_MODE_EXPERT_NOT_ADDR (UI0902_RES_BASE + 0x046000UL) /* 3360 bytes */
|
||||
#define UI0902_TXT_MODE_EXPERT_NOT_W 80
|
||||
#define UI0902_TXT_MODE_EXPERT_NOT_H 21
|
||||
|
||||
#define UI0902_TXT_MODE_EXPERT_SEL_ADDR (UI0902_RES_BASE + 0x047000UL) /* 3360 bytes */
|
||||
#define UI0902_TXT_MODE_EXPERT_SEL_W 80
|
||||
#define UI0902_TXT_MODE_EXPERT_SEL_H 21
|
||||
|
||||
#define UI0902_ICON_SET_BLUETOOTH_ADDR (UI0902_RES_BASE + 0x048000UL) /* 546 bytes */
|
||||
#define UI0902_ICON_SET_BLUETOOTH_W 13
|
||||
#define UI0902_ICON_SET_BLUETOOTH_H 21
|
||||
|
||||
#define UI0902_ICON_SET_GEAR_ADDR (UI0902_RES_BASE + 0x049000UL) /* 2244 bytes */
|
||||
#define UI0902_ICON_SET_GEAR_W 33
|
||||
#define UI0902_ICON_SET_GEAR_H 34
|
||||
|
||||
#define UI0902_ICON_CHEVRON_ADDR (UI0902_RES_BASE + 0x04A000UL) /* 360 bytes */
|
||||
#define UI0902_ICON_CHEVRON_W 10
|
||||
#define UI0902_ICON_CHEVRON_H 18
|
||||
|
||||
#define UI0902_ROW_SET_BLUETOOTH_ADDR (UI0902_RES_BASE + 0x04B000UL) /* 11484 bytes */
|
||||
#define UI0902_ROW_SET_BLUETOOTH_W 174
|
||||
#define UI0902_ROW_SET_BLUETOOTH_H 33
|
||||
|
||||
#define UI0902_ROW_SET_SYSTEM_ADDR (UI0902_RES_BASE + 0x04E000UL) /* 11484 bytes */
|
||||
#define UI0902_ROW_SET_SYSTEM_W 174
|
||||
#define UI0902_ROW_SET_SYSTEM_H 33
|
||||
|
||||
#define UI0902_ICON_SYS_LANG_ADDR (UI0902_RES_BASE + 0x051000UL) /* 760 bytes */
|
||||
#define UI0902_ICON_SYS_LANG_W 20
|
||||
#define UI0902_ICON_SYS_LANG_H 19
|
||||
|
||||
#define UI0902_ICON_SYS_RESTORE_ADDR (UI0902_RES_BASE + 0x052000UL) /* 684 bytes */
|
||||
#define UI0902_ICON_SYS_RESTORE_W 19
|
||||
#define UI0902_ICON_SYS_RESTORE_H 18
|
||||
|
||||
#define UI0902_ICON_SYS_ABOUT_ADDR (UI0902_RES_BASE + 0x053000UL) /* 756 bytes */
|
||||
#define UI0902_ICON_SYS_ABOUT_W 18
|
||||
#define UI0902_ICON_SYS_ABOUT_H 21
|
||||
|
||||
#define UI0902_ICON_SYS_VERSION_ADDR (UI0902_RES_BASE + 0x054000UL) /* 760 bytes */
|
||||
#define UI0902_ICON_SYS_VERSION_W 20
|
||||
#define UI0902_ICON_SYS_VERSION_H 19
|
||||
|
||||
#define UI0902_TXT_SET_LANG_ADDR (UI0902_RES_BASE + 0x055000UL) /* 1326 bytes */
|
||||
#define UI0902_TXT_SET_LANG_W 51
|
||||
#define UI0902_TXT_SET_LANG_H 13
|
||||
|
||||
#define UI0902_TXT_SET_RESTORE_ADDR (UI0902_RES_BASE + 0x056000UL) /* 1326 bytes */
|
||||
#define UI0902_TXT_SET_RESTORE_W 51
|
||||
#define UI0902_TXT_SET_RESTORE_H 13
|
||||
|
||||
#define UI0902_TXT_SET_ABOUT_ADDR (UI0902_RES_BASE + 0x057000UL) /* 1300 bytes */
|
||||
#define UI0902_TXT_SET_ABOUT_W 50
|
||||
#define UI0902_TXT_SET_ABOUT_H 13
|
||||
|
||||
#define UI0902_TXT_SET_VERSION_ADDR (UI0902_RES_BASE + 0x058000UL) /* 2156 bytes */
|
||||
#define UI0902_TXT_SET_VERSION_W 77
|
||||
#define UI0902_TXT_SET_VERSION_H 14
|
||||
|
||||
#define UI0902_TXT_SET2_A_ADDR (UI0902_RES_BASE + 0x059000UL) /* 3822 bytes */
|
||||
#define UI0902_TXT_SET2_A_W 91
|
||||
#define UI0902_TXT_SET2_A_H 21
|
||||
|
||||
#define UI0902_TXT_SET2_B_ADDR (UI0902_RES_BASE + 0x05A000UL) /* 440 bytes */
|
||||
#define UI0902_TXT_SET2_B_W 22
|
||||
#define UI0902_TXT_SET2_B_H 10
|
||||
|
||||
#define UI0902_TXT_SET2_C_ADDR (UI0902_RES_BASE + 0x05B000UL) /* 220 bytes */
|
||||
#define UI0902_TXT_SET2_C_W 11
|
||||
#define UI0902_TXT_SET2_C_H 10
|
||||
|
||||
#define UI0902_TXT_SET2_D_ADDR (UI0902_RES_BASE + 0x05C000UL) /* 768 bytes */
|
||||
#define UI0902_TXT_SET2_D_W 32
|
||||
#define UI0902_TXT_SET2_D_H 12
|
||||
|
||||
#define UI0902_BTN_TYPE_ACOUSTIC_SEL_ADDR (UI0902_RES_BASE + 0x05D000UL) /* 2166 bytes */
|
||||
#define UI0902_BTN_TYPE_ACOUSTIC_SEL_W 57
|
||||
#define UI0902_BTN_TYPE_ACOUSTIC_SEL_H 19
|
||||
|
||||
#define UI0902_BTN_TYPE_SING_NOT_ADDR (UI0902_RES_BASE + 0x05E000UL) /* 2166 bytes */
|
||||
#define UI0902_BTN_TYPE_SING_NOT_W 57
|
||||
#define UI0902_BTN_TYPE_SING_NOT_H 19
|
||||
|
||||
#define UI0902_BTN_TYPE_FINGER_NOT_ADDR (UI0902_RES_BASE + 0x05F000UL) /* 2166 bytes */
|
||||
#define UI0902_BTN_TYPE_FINGER_NOT_W 57
|
||||
#define UI0902_BTN_TYPE_FINGER_NOT_H 19
|
||||
|
||||
#define UI0902_BTN_TYPE_STRUM_NOT_ADDR (UI0902_RES_BASE + 0x060000UL) /* 2166 bytes */
|
||||
#define UI0902_BTN_TYPE_STRUM_NOT_W 57
|
||||
#define UI0902_BTN_TYPE_STRUM_NOT_H 19
|
||||
|
||||
#define UI0902_BTN_MINUS_BLUE_ADDR (UI0902_RES_BASE + 0x061000UL) /* 968 bytes */
|
||||
#define UI0902_BTN_MINUS_BLUE_W 22
|
||||
#define UI0902_BTN_MINUS_BLUE_H 22
|
||||
|
||||
#define UI0902_BTN_PLUS_BLUE_ADDR (UI0902_RES_BASE + 0x062000UL) /* 1012 bytes */
|
||||
#define UI0902_BTN_PLUS_BLUE_W 23
|
||||
#define UI0902_BTN_PLUS_BLUE_H 22
|
||||
|
||||
#define UI0902_BTN_MINUS_GRAY_ADDR (UI0902_RES_BASE + 0x063000UL) /* 968 bytes */
|
||||
#define UI0902_BTN_MINUS_GRAY_W 22
|
||||
#define UI0902_BTN_MINUS_GRAY_H 22
|
||||
|
||||
#define UI0902_BTN_PLUS_GRAY_ADDR (UI0902_RES_BASE + 0x064000UL) /* 968 bytes */
|
||||
#define UI0902_BTN_PLUS_GRAY_W 22
|
||||
#define UI0902_BTN_PLUS_GRAY_H 22
|
||||
|
||||
#define UI0902_SLIDER_WIDGET_ADDR (UI0902_RES_BASE + 0x065000UL) /* 14016 bytes */
|
||||
#define UI0902_SLIDER_WIDGET_W 219
|
||||
#define UI0902_SLIDER_WIDGET_H 32
|
||||
|
||||
#define UI0902_BTN_LANG_SEL_ADDR (UI0902_RES_BASE + 0x069000UL) /* 3332 bytes */
|
||||
#define UI0902_BTN_LANG_SEL_W 49
|
||||
#define UI0902_BTN_LANG_SEL_H 34
|
||||
|
||||
#define UI0902_BTN_LANG_CN1_ADDR (UI0902_RES_BASE + 0x06A000UL) /* 3264 bytes */
|
||||
#define UI0902_BTN_LANG_CN1_W 48
|
||||
#define UI0902_BTN_LANG_CN1_H 34
|
||||
|
||||
#define UI0902_BTN_LANG_CN2_ADDR (UI0902_RES_BASE + 0x06B000UL) /* 3332 bytes */
|
||||
#define UI0902_BTN_LANG_CN2_W 49
|
||||
#define UI0902_BTN_LANG_CN2_H 34
|
||||
|
||||
#define UI0902_BTN_LANG_EN_ADDR (UI0902_RES_BASE + 0x06C000UL) /* 3332 bytes */
|
||||
#define UI0902_BTN_LANG_EN_W 49
|
||||
#define UI0902_BTN_LANG_EN_H 34
|
||||
|
||||
#define UI0902_BTN_CANCEL_SM_ADDR (UI0902_RES_BASE + 0x06D000UL) /* 3430 bytes */
|
||||
#define UI0902_BTN_CANCEL_SM_W 49
|
||||
#define UI0902_BTN_CANCEL_SM_H 35
|
||||
|
||||
#define UI0902_BTN_CONFIRM_SM_ADDR (UI0902_RES_BASE + 0x06E000UL) /* 3360 bytes */
|
||||
#define UI0902_BTN_CONFIRM_SM_W 48
|
||||
#define UI0902_BTN_CONFIRM_SM_H 35
|
||||
|
||||
#define UI0902_BTN_CANCEL_SM2_ADDR (UI0902_RES_BASE + 0x06F000UL) /* 3430 bytes */
|
||||
#define UI0902_BTN_CANCEL_SM2_W 49
|
||||
#define UI0902_BTN_CANCEL_SM2_H 35
|
||||
|
||||
#define UI0902_BTN_CONFIRM_SM2_ADDR (UI0902_RES_BASE + 0x070000UL) /* 3430 bytes */
|
||||
#define UI0902_BTN_CONFIRM_SM2_W 49
|
||||
#define UI0902_BTN_CONFIRM_SM2_H 35
|
||||
|
||||
#define UI0902_BTN_CONFIRM_BIG_ADDR (UI0902_RES_BASE + 0x071000UL) /* 11872 bytes */
|
||||
#define UI0902_BTN_CONFIRM_BIG_W 106
|
||||
#define UI0902_BTN_CONFIRM_BIG_H 56
|
||||
|
||||
#define UI0902_MIXER_KNOB_ADDR (UI0902_RES_BASE + 0x074000UL) /* 1440 bytes */
|
||||
#define UI0902_MIXER_KNOB_W 30
|
||||
#define UI0902_MIXER_KNOB_H 24
|
||||
|
||||
#define UI0902_MIXER_KNOB2_ADDR (UI0902_RES_BASE + 0x075000UL) /* 1104 bytes */
|
||||
#define UI0902_MIXER_KNOB2_W 24
|
||||
#define UI0902_MIXER_KNOB2_H 23
|
||||
|
||||
#define UI0902_MIXER_TRACK_ADDR (UI0902_RES_BASE + 0x076000UL) /* 13330 bytes */
|
||||
#define UI0902_MIXER_TRACK_W 31
|
||||
#define UI0902_MIXER_TRACK_H 215
|
||||
|
||||
#define UI0902_TXT_MIXER_BAND_ADDR (UI0902_RES_BASE + 0x07A000UL) /* 700 bytes */
|
||||
#define UI0902_TXT_MIXER_BAND_W 25
|
||||
#define UI0902_TXT_MIXER_BAND_H 14
|
||||
|
||||
#define UI0902_TXT_MIXER_GUITAR_ADDR (UI0902_RES_BASE + 0x07B000UL) /* 336 bytes */
|
||||
#define UI0902_TXT_MIXER_GUITAR_W 12
|
||||
#define UI0902_TXT_MIXER_GUITAR_H 14
|
||||
|
||||
#define UI0902_TXT_MIXER_MIC_ADDR (UI0902_RES_BASE + 0x07C000UL) /* 338 bytes */
|
||||
#define UI0902_TXT_MIXER_MIC_W 13
|
||||
#define UI0902_TXT_MIXER_MIC_H 13
|
||||
|
||||
#define UI0902_TXT_MIXER_VOCALFX_ADDR (UI0902_RES_BASE + 0x07D000UL) /* 1036 bytes */
|
||||
#define UI0902_TXT_MIXER_VOCALFX_W 37
|
||||
#define UI0902_TXT_MIXER_VOCALFX_H 14
|
||||
|
||||
#define UI0902_TXT_MIXER_GUITARFX_ADDR (UI0902_RES_BASE + 0x07E000UL) /* 962 bytes */
|
||||
#define UI0902_TXT_MIXER_GUITARFX_W 37
|
||||
#define UI0902_TXT_MIXER_GUITARFX_H 13
|
||||
|
||||
#define UI0902_TXT_EFFECT_AMOUNT_ADDR (UI0902_RES_BASE + 0x07F000UL) /* 576 bytes */
|
||||
#define UI0902_TXT_EFFECT_AMOUNT_W 32
|
||||
#define UI0902_TXT_EFFECT_AMOUNT_H 9
|
||||
|
||||
#define UI0902_TXT_BAND_VOLUME_ADDR (UI0902_RES_BASE + 0x080000UL) /* 702 bytes */
|
||||
#define UI0902_TXT_BAND_VOLUME_W 39
|
||||
#define UI0902_TXT_BAND_VOLUME_H 9
|
||||
|
||||
#define UI0902_TXT_MIC_VOLUME_ADDR (UI0902_RES_BASE + 0x081000UL) /* 576 bytes */
|
||||
#define UI0902_TXT_MIC_VOLUME_W 32
|
||||
#define UI0902_TXT_MIC_VOLUME_H 9
|
||||
|
||||
#define UI0902_TXT_RESTORE_V1_ADDR (UI0902_RES_BASE + 0x082000UL) /* 1680 bytes */
|
||||
#define UI0902_TXT_RESTORE_V1_W 21
|
||||
#define UI0902_TXT_RESTORE_V1_H 40
|
||||
|
||||
#define UI0902_TXT_RESTORE_V2_ADDR (UI0902_RES_BASE + 0x083000UL) /* 1680 bytes */
|
||||
#define UI0902_TXT_RESTORE_V2_W 21
|
||||
#define UI0902_TXT_RESTORE_V2_H 40
|
||||
|
||||
#define UI0902_TXT_RESTORE_H_ADDR (UI0902_RES_BASE + 0x084000UL) /* 1128 bytes */
|
||||
#define UI0902_TXT_RESTORE_H_W 47
|
||||
#define UI0902_TXT_RESTORE_H_H 12
|
||||
|
||||
#define UI0902_TXT_RESTORE_CONFIRM_ADDR (UI0902_RES_BASE + 0x085000UL) /* 1988 bytes */
|
||||
#define UI0902_TXT_RESTORE_CONFIRM_W 71
|
||||
#define UI0902_TXT_RESTORE_CONFIRM_H 14
|
||||
|
||||
#define UI0902_BOOT_LOGO_ADDR (UI0902_RES_BASE + 0x086000UL) /* 153600 bytes */
|
||||
#define UI0902_BOOT_LOGO_W 240
|
||||
#define UI0902_BOOT_LOGO_H 320
|
||||
|
||||
#define UI0902_CHARGE_SCREEN_ADDR (UI0902_RES_BASE + 0x0AC000UL) /* 153600 bytes */
|
||||
#define UI0902_CHARGE_SCREEN_W 240
|
||||
#define UI0902_CHARGE_SCREEN_H 320
|
||||
|
||||
#define UI0902_FLASH_MODE_ADDR (UI0902_RES_BASE + 0x0D2000UL) /* 153600 bytes */
|
||||
#define UI0902_FLASH_MODE_W 240
|
||||
#define UI0902_FLASH_MODE_H 320
|
||||
|
||||
#define UI0902_BTN_CANCEL_BIG_ADDR (UI0902_RES_BASE + 0x0F8000UL) /* 11872 bytes */
|
||||
#define UI0902_BTN_CANCEL_BIG_W 106
|
||||
#define UI0902_BTN_CANCEL_BIG_H 56
|
||||
|
||||
#endif
|
||||
|
|
@ -35,7 +35,11 @@
|
|||
#include "Drv_ILI9341_Lcd_Init.h"
|
||||
#include "Drv_ILI9341_Lcd_App.h"
|
||||
#include "Drv_ILI9341_Lcd_Image.h"
|
||||
#include "Drv_ILI9341_Lcd_Image_ModeSelect0831.h"
|
||||
#include "Drv_ILI9341_Lcd_Image_UI0902.h"
|
||||
#include "Drv_ILI9341_Lcd_Image_ChargePct.h"
|
||||
#include "UI0902_Res_Addr.h"
|
||||
#include "ExtFlash_Tone_Addr.h"
|
||||
#include "LocalSongNames.h"
|
||||
#include "Drv_ILI9341_Lcd_Dump.h"
|
||||
#include "Drv_XPT2046_Touch.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ int main(void)
|
|||
/* add user code begin 2 */
|
||||
|
||||
bsp_init();
|
||||
BSP_MainPowerEnable(1);
|
||||
LCD_Init();
|
||||
LCD_Dump_Init();
|
||||
app_log_init();
|
||||
|
|
@ -103,9 +104,11 @@ int main(void)
|
|||
}
|
||||
/* add user code begin 3 */
|
||||
Power_Key_Scan();
|
||||
AutoPowerOff_Scan();
|
||||
LCD_Dump_Poll();
|
||||
#if !DEBUG_LCD_DUMP
|
||||
app_log_poll();
|
||||
TP_LivePoll();
|
||||
#endif
|
||||
|
||||
rt_thread_delay(1);
|
||||
|
|
@ -139,6 +142,7 @@ void bsp_init(void)
|
|||
|
||||
/* init spi1 function. */
|
||||
wk_spi1_init();
|
||||
W25Q128_Init();
|
||||
|
||||
/* init adc1 function. */
|
||||
wk_adc1_init();
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP
|
||||
* the RT_HEAP_SIZE max value = (sram size - ZI size), 1024 means 1024 bytes
|
||||
*/
|
||||
#define RT_HEAP_SIZE (20*1024)
|
||||
#define RT_HEAP_SIZE (19*1024) /* 20KB-1KB to fit 41KB preset buffer in 96KB RAM */
|
||||
static rt_uint8_t rt_heap[RT_HEAP_SIZE];
|
||||
|
||||
RT_WEAK void *rt_heap_begin_get(void)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ static struct rt_thread TaskBTRecvThread;
|
|||
static struct rt_thread TaskAutobandThread;
|
||||
|
||||
ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskScanThread_Stack[512];
|
||||
ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskUIThread_Stack[1024];
|
||||
ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskUIThread_Stack[2048];
|
||||
ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskTouchThread_Stack[1536];
|
||||
ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskMainThread_Stack[512];
|
||||
ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskBTTHandlehread_Stack[512];
|
||||
|
|
@ -45,15 +45,21 @@ void TaskUIThread_entry(void* parameter)
|
|||
void TaskTouchThread_entry(void* parameter)
|
||||
{
|
||||
static uint8_t s_last_pressed = 0;
|
||||
LOG_TPI("touch task running");
|
||||
while(1)
|
||||
{
|
||||
TP_Point tp = TP_Read(); /* 已含轴交换/镜像,直接进手势 */
|
||||
if (tp.pressed && !s_last_pressed)
|
||||
{
|
||||
LOG_TP("down cal x=%u y=%u", (unsigned)tp.x, (unsigned)tp.y);
|
||||
if (tp.pressed) {
|
||||
if (!s_last_pressed) {
|
||||
LOG_TPI("scan down x=%u y=%u", (unsigned)tp.x, (unsigned)tp.y);
|
||||
}
|
||||
} else if (s_last_pressed) {
|
||||
LOG_TPI("scan up");
|
||||
}
|
||||
s_last_pressed = tp.pressed;
|
||||
app_touch_process(tp.x, tp.y, tp.pressed);
|
||||
TP_LivePoll();
|
||||
app_log_poll();
|
||||
Read_Cur_Measure();
|
||||
rt_thread_mdelay(8);
|
||||
}
|
||||
|
|
@ -75,9 +81,13 @@ void TaskMainThread_entry(void* parameter)
|
|||
case MSG_ID_LOOP_LIGHT : Loop_Light_Handle(xEvent.ID); break;
|
||||
case MSG_ID_TM1629_KEY : break;
|
||||
case MSG_ID_TM1617_KEY : break;
|
||||
case MSG_ID_EC_VOL:
|
||||
/* 任意页面都先下发主音量,避免 UI 未处理导致屏显与实际脱节 */
|
||||
Send_volume((uint8_t)xEvent.ID);
|
||||
UITask_Sendmsg(xEvent.MessageType, xEvent.ID, xEvent.HiByte, xEvent.LoByte);
|
||||
break;
|
||||
case MSG_ID_TOUCH:
|
||||
case MSG_ID_CHARG:
|
||||
case MSG_ID_EC_VOL:
|
||||
case MSG_ID_TAP_SPEED:
|
||||
case MSG_ID_BP_TRANSPOSE:
|
||||
case MSG_ID_POWOFF_CHARG:
|
||||
|
|
@ -275,6 +285,10 @@ void StartTouchTask(void)
|
|||
{
|
||||
rt_uint8_t st = (rt_uint8_t)(TaskTouchThread.stat & RT_THREAD_STAT_MASK);
|
||||
|
||||
XPT2046_Init();
|
||||
app_touch_reset();
|
||||
LOG_TPI("gpio reinit before touch task");
|
||||
|
||||
if (st == RT_THREAD_CLOSE)
|
||||
{
|
||||
rt_thread_init(&TaskTouchThread,
|
||||
|
|
@ -287,8 +301,10 @@ void StartTouchTask(void)
|
|||
20);
|
||||
st = RT_THREAD_INIT;
|
||||
}
|
||||
if (st == RT_THREAD_INIT)
|
||||
if (st == RT_THREAD_INIT) {
|
||||
rt_thread_startup(&TaskTouchThread);
|
||||
LOG_TPI("touch task started stat=%u", (unsigned)TaskTouchThread.stat);
|
||||
}
|
||||
}
|
||||
|
||||
void StartScanTask(void)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
import subprocess, shutil, os, time
|
||||
|
||||
base = os.path.join(r"C:\Users\qjyu\Documents\SoundWalker", "一诺国际吉他",
|
||||
r"Code\YNGJ-GT1-M - AT32F403ARCT7")
|
||||
stage = r"C:\Temp\k1flash"
|
||||
os.makedirs(stage, exist_ok=True)
|
||||
|
||||
out_src = os.path.join(base, r"project\IAR_V7.4\YNGJ-GT1-M\Exe\YNGJ-GT1-M.out")
|
||||
out_dst = os.path.join(stage, "YNGJ-GT1-M.out")
|
||||
with open(out_src, "rb") as a, open(out_dst, "wb") as b:
|
||||
shutil.copyfileobj(a, b)
|
||||
print("copied", os.path.getsize(out_dst), flush=True)
|
||||
|
||||
gen_src = os.path.join(base, r"project\IAR_V7.4\settings\YNGJ-GT1-M.YNGJ-GT1-M.general.xcl")
|
||||
drv_src = os.path.join(base, r"project\IAR_V7.4\settings\YNGJ-GT1-M.YNGJ-GT1-M.driver.xcl")
|
||||
lines = open(gen_src, encoding="utf-8", errors="replace").read().splitlines()
|
||||
new = []
|
||||
for ln in lines:
|
||||
new.append(f'"{out_dst}" ' if (".out" in ln and "YNGJ" in ln) else ln)
|
||||
open(os.path.join(stage, "general.xcl"), "w", encoding="utf-8", newline="\n").write("\n".join(new) + "\n")
|
||||
shutil.copy2(drv_src, os.path.join(stage, "driver.xcl"))
|
||||
|
||||
for n in ("cspybat.exe", "CSpyBat.exe", "JLink.exe", "IarIdePm.exe",
|
||||
"JLinkGUIServer.exe", "JLinkRTTClient.exe", "JFlash.exe"):
|
||||
subprocess.run(["taskkill", "/F", "/IM", n], capture_output=True)
|
||||
time.sleep(1.5)
|
||||
|
||||
# Force Artery AT32F403ACx (RCT7) — avoid Cortex-M4 / wrong-chip popup
|
||||
drv_path = os.path.join(stage, "driver.xcl")
|
||||
drv_lines = open(drv_path, encoding="utf-8", errors="replace").read().splitlines()
|
||||
forced = []
|
||||
for ln in drv_lines:
|
||||
if ln.strip().startswith("--jlink_device"):
|
||||
continue
|
||||
forced.append(ln)
|
||||
forced.append('--jlink_device=AT32F403AC')
|
||||
open(drv_path, "w", encoding="utf-8", newline="\n").write("\n".join(forced) + "\n")
|
||||
print("driver device forced: AT32F403AC", flush=True)
|
||||
|
||||
cspy = r"C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\common\bin\cspybat.exe"
|
||||
cmd = [cspy, "-f", os.path.join(stage, "general.xcl"),
|
||||
f"--debug_file={out_dst}", "--download_only", "--backend",
|
||||
"-f", drv_path]
|
||||
logp = os.path.join(stage, "cspy.log")
|
||||
print("cspybat start (AT32F403AC / FlashAT32F403ARCT7)", flush=True)
|
||||
with open(logp, "w", encoding="utf-8", errors="replace") as log:
|
||||
r = subprocess.run(cmd, stdout=log, stderr=subprocess.STDOUT, timeout=180)
|
||||
print("cspy exit", r.returncode, flush=True)
|
||||
print(open(logp, encoding="utf-8", errors="replace").read()[-2000:])
|
||||
if r.returncode != 0:
|
||||
raise SystemExit(r.returncode)
|
||||
|
||||
jlink = r"C:\Program Files\SEGGER\JLink_V818\JLink.exe"
|
||||
reset = os.path.join(base, r"tools\reset_run.jlink")
|
||||
print("reset AT32F403AC", flush=True)
|
||||
subprocess.run([jlink, "-Device", "AT32F403AC", "-If", "SWD",
|
||||
"-Speed", "4000", "-AutoConnect", "1",
|
||||
"-CommandFile", reset], capture_output=True, timeout=30)
|
||||
time.sleep(3)
|
||||
print("Done", flush=True)
|
||||
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 357 B |
|
After Width: | Height: | Size: 520 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 416 B |
|
After Width: | Height: | Size: 365 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 902 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 982 B |
|
After Width: | Height: | Size: 607 B |
|
After Width: | Height: | Size: 648 B |
|
After Width: | Height: | Size: 516 B |
|
After Width: | Height: | Size: 746 B |
|
After Width: | Height: | Size: 496 B |
|
After Width: | Height: | Size: 557 B |
|
After Width: | Height: | Size: 445 B |
|
After Width: | Height: | Size: 644 B |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 915 B |
|
After Width: | Height: | Size: 893 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.7 KiB |