K1Guitar/UI/UI_Idle.c

289 lines
8.8 KiB
C
Raw Normal View History

#include "includes.h"
uint8_t CurrentMode = 0;
void RGB_Y_TO_R()
{
app_tm1629_all_on(LED_COLOR_YELL);
rt_thread_delay(1000);
app_tm1629_all_on(LED_COLOR_R);
}
void RGB_Y_TO_G()
{
app_tm1629_all_on(LED_COLOR_YELL);
rt_thread_delay(1000);
app_tm1629_all_on(LED_COLOR_G);
}
#define UI_MODE_SCREEN_WIDTH 240
#define UI_MODE_SCREEN_HEIGHT 320
#define UI_MODE_BG_COLOR 0x1925
#define UI_MODE_LINE_COLOR DARKBLUE
#define UI_MODE_TEXT_COLOR 0xFFFF
#define UI_MODE_FONT_SIZE 24
void UI_DrawModeSelectScreen(void)
{
// 1. <20><><EFBFBD><EFBFBD><E4B1B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><D2A1><EFBFBD>ɫ?????
// LCD_FillGradient(0, 0, 240, 320, 0x5AEB, 0x0000);
LCD_FillByColor(0, 0, 240, 320, BLACK);
label_top();
// 2. <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>???=220 ???????=87 Բ???=10 <20><><EFBFBD>ɫ<EFBFBD><C9AB>???????
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 = /*DARKLGRAY*//*0x2988*/BLACK; // <20><><EFBFBD>???????
// 3. <20><><EFBFBD><EFBFBD> 3 ???????<3F><>ť<EFBFBD><C5A5>Y=40<34><30><EFBFBD><EFBFBD>??????? 5<><35><EFBFBD><EFBFBD><EFBFBD>һ???????<3F><>ť<EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD> 9px
// <20><>ť Y: 40, 132, 224
//LCD_DrawLine(0, 30, 240, 30, btn_color);
// <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>Y=40???????
//LCD_FillRoundRect(btn_x, 40, btn_w, btn_h, btn_r, btn_color);
// LCD_FillRoundRectGradient(btn_x, 40, btn_w, btn_h, btn_r, 0XC618,0x5AEB);
LCD_FillRoundRectGradient(btn_x, 40, btn_w, btn_h, btn_r, START_COLOR, END_COLOR);
uint16_t x1 = LCD_ShowChinese_AutoAlign_Gradient(
btn_x, btn_x + btn_w,
40 + (btn_h - 24) / 2,
(uint8_t*)"\xCD\xF2\xC4\xDC\xC4\xA3\xCA\xBD", //<2F><><EFBFBD><EFBFBD>ģʽ
LCD_ALIGN_CENTER,
UI_MODE_TEXT_COLOR,
START_COLOR, END_COLOR,
24
);
LCD_WR_PIC(x1-45, 40 + (btn_h - 24) / 2-5,40,30,gImage_FreeMode_Icon_40_30);
// ר???ģʽ<C4A3><CABD>Y=132???????
// LCD_FillRoundRect(btn_x, 132, btn_w, btn_h, btn_r, btn_color);
LCD_FillRoundRectGradient(btn_x, 132, btn_w, btn_h, btn_r, START_COLOR, END_COLOR);
uint16_t x2 = LCD_ShowChinese_AutoAlign_Gradient(
btn_x, btn_x + btn_w,
132 + (btn_h - 24) / 2,
(uint8_t *)"\xC6\xD5\xCD\xA8\xC4\xA3\xCA\xBD", // <20><>ͨģʽ
LCD_ALIGN_CENTER,
UI_MODE_TEXT_COLOR,
START_COLOR, END_COLOR,
24
);
LCD_WR_PIC(x2-45, 132 + (btn_h - 24) / 2-5,40,30,gImage_NormalMode_Icon_40_30);
// <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>Y=224???????
// LCD_FillRoundRect(btn_x, 224, btn_w, btn_h, btn_r, btn_color);
LCD_FillRoundRectGradient(btn_x, 224, btn_w, btn_h, btn_r, START_COLOR, END_COLOR);
uint16_t x3 = LCD_ShowChinese_AutoAlign_Gradient(
btn_x, btn_x + btn_w,
224 + (btn_h - 24) / 2,
(const uint8_t *)"\xD7\xA8\xD2\xB5\xC4\xA3\xCA\xBD", // רҵģʽ
LCD_ALIGN_CENTER,
UI_MODE_TEXT_COLOR,
START_COLOR, END_COLOR,
24
);
LCD_WR_PIC(x3-45, 224 + (btn_h - 24) / 2-5,40,30,gImage_ExpressMode_Icon_40_30);
}
const Touch_AreaTypeDef Touch_ModeSelect_Areas[] = {
// Xmin, Xmax, Ymin, Ymax, flag, ID, action
{ 10, 229, 40, 126, 0, 0, GUI_MODE_SELECT3, NULL }, //<2F><><EFBFBD><EFBFBD>
{ 10, 229, 132, 218, 1, 0, GUI_MODE_SELECT1, NULL }, //????/<2F><><EFBFBD><EFBFBD>
{ 10, 229, 224, 310, 2, 0, GUI_MODE_SELECT2, NULL }, //רҵ/ר???
};
#define TOUCH_AREA_MODE_SELECT_NUM (sizeof(Touch_ModeSelect_Areas)/sizeof(Touch_AreaTypeDef))
/* Timbre_index <20><><EFBFBD><EFBFBD> midi_tables.h <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
extern uint8_t channel;
extern uint8_t level;
extern bool powon;
extern bool InModeFlag;
extern int16_t MIC_VOL_MAP[10];
extern int8_t delta;
extern STRING_MIDI USE_MIDI;
void LoadConfig()
{
SendProgramChangeMidiEvent(0,Timbre_index[mGuiData[GUI_TIMBRE_SELECT].Current]);
uint8_t val_127 = (faders[0].val * 127) / 20;
SendVolumeChangeMidiEvent(1,val_127);
SendVolumeChangeMidiEvent(2,val_127);
SendVolumeChangeMidiEvent(3,val_127);
SendVolumeChangeMidiEvent(4,val_127);
SendVolumeChangeMidiEvent(5,val_127);
SendVolumeChangeMidiEvent(6,val_127);
SendVolumeChangeMidiEvent(7,val_127);
SendVolumeChangeMidiEvent(8,val_127);
SendVolumeChangeMidiEvent(9,val_127);
SendVolumeChangeMidiEvent(10,val_127);
SendVolumeChangeMidiEvent(11,val_127);
SendVolumeChangeMidiEvent(12,val_127);
SendVolumeChangeMidiEvent(13,val_127);
SendVolumeChangeMidiEvent(14,val_127);
SendVolumeChangeMidiEvent(15,val_127);
SendVolumeChangeMidiEvent(0,faders[1].val);
AW816_Set_Volume(MIC_VOL_MAP[faders[2].val]);
AW816_Set_Reverb(faders[3].val * 10);
}
void Touch_Mode_Select_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex)
{
StartTask();
mGuiData[GUI_TAB_INDEX].Current = ID;
InModeFlag = true;
// <20>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD>
switch(ID)
{
case 0:
if(mGuiData[GUI_AUTOBAND_SW].Current)
{
ADDRESS = 0x0009EB5F;
}
else
{
ADDRESS = 0x0001B8F0;
}
MenuPage_SongMode_Proc();
break;
case 1:
if(mGuiData[GUI_AUTOBAND_SW].Current)
{
ADDRESS = 0x0009EB5F;
}
else
{
// ADDRESS = 0x0001B8F0;
ADDRESS = 0x00000000;
}
MenuPage_ExpertMode_Proc();
break;
case 2:
ADDRESS = 0x0009598F;
MenuPage_FreeMode_Proc();
break;
}
}
extern uint8_t bat_init_done;
void IdleProcess(DisplayTaskMessage_Type msg)
{
uint8_t vol;
switch (msg.MessageType)
{
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);
BSP_SelectAdcChannel(6);
wk_delay_ms(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;
Send_volume(vol);
UI_DrawModeSelectScreen();
TM1629D_AllLedOn(LED_COLOR_G);
TM1629D_UpdateDisplay(0);
StartTouchTask();
StartScanTask();
break;
case MSG_ID_POWER_OFF:
/* 关机:熄屏 + 关背光 */
LCD_BLK_Clr();
LCD_FillByColor(0, 0, 240, 320, BLACK);
break;
case MSG_ID_CHARG:
Show_Battery_Icon(msg.ID);
break;
case MSG_ID_TOUCH:
for(uint8_t k=0; k<TOUCH_AREA_MODE_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_Mode_Select_Action(pCurrentTouch_Area[k].Flag,pCurrentTouch_Area[k].ID,k);
break;
}
}
break;
case MSG_ID_BATTERY_VALUE:
if(usb_charging_state)
{
Draw_Battery_Icon(180, 5, msg.ID, 1, GREEN, BLACK, GREEN);
}else
{
Draw_Battery_Icon(180, 5, msg.ID, 1, WHITE, BLACK, WHITE);
}
break;
case MSG_ID_POWOFF_CHARG:
{
static bool flag = 0;
if(flag == 0)
{
BSP_MainPowerEnable(1);
LCD_WR_REG(0x29); //Display on
LCD_WR_PIC_FROM_FLASH(40, 50, 160, 190, 0x0000CB70);
LCD_BLK_Set();
flag = 1;
}
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,24);
}
//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);
ResetAutoPowerCount();
}
break;
}
}