Fix mode-select touch area IDs and keep touch thread from blocking on LCD dump.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
68e3a37883
commit
ba31d91aef
49
UI/UI_Idle.c
49
UI/UI_Idle.c
|
|
@ -95,10 +95,11 @@ void UI_DrawModeSelectScreen(void)
|
|||
}
|
||||
|
||||
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 }, //רҵ/ר???
|
||||
/* Xmin,Xmax,Ymin,Ymax, Flag, Value, ID, action
|
||||
* Flag=按钮序号;ID=进入的 TAB(0万能Song / 1专业Expert / 2普通Free) */
|
||||
{ 10, 229, 40, 126, 0, 0, 0, NULL }, /* 万能模式 → SongMode */
|
||||
{ 10, 229, 132, 218, 1, 0, 2, NULL }, /* 普通模式 → FreeMode */
|
||||
{ 10, 229, 224, 310, 2, 0, 1, NULL }, /* 专业模式 → ExpertMode */
|
||||
};
|
||||
|
||||
#define TOUCH_AREA_MODE_SELECT_NUM (sizeof(Touch_ModeSelect_Areas)/sizeof(Touch_AreaTypeDef))
|
||||
|
|
@ -141,44 +142,36 @@ void LoadConfig()
|
|||
|
||||
void Touch_Mode_Select_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex)
|
||||
{
|
||||
(void)areaIndex;
|
||||
StartTask();
|
||||
s_mode_select_focus = (uint8_t)FLAG;
|
||||
/* ID 为 TAB 索引:0=万能(Song) 1=专业(Expert) 2=普通(Free) */
|
||||
mGuiData[GUI_TAB_INDEX].Current = ID;
|
||||
InModeFlag = true;
|
||||
// <20>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD>
|
||||
switch(ID)
|
||||
|
||||
switch (ID)
|
||||
{
|
||||
case 0:
|
||||
if(mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
case 0: /* 万能 */
|
||||
if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
ADDRESS = 0x0009EB5F;
|
||||
}
|
||||
else
|
||||
{
|
||||
ADDRESS = 0x0001B8F0;
|
||||
}
|
||||
|
||||
ADDRESS = 0x0001B8F0;
|
||||
MenuPage_SongMode_Proc();
|
||||
|
||||
break;
|
||||
case 1:
|
||||
if(mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
{
|
||||
break;
|
||||
case 1: /* 专业 */
|
||||
if (mGuiData[GUI_AUTOBAND_SW].Current)
|
||||
ADDRESS = 0x0009EB5F;
|
||||
}
|
||||
else
|
||||
{
|
||||
// ADDRESS = 0x0001B8F0;
|
||||
ADDRESS = 0x00000000;
|
||||
}
|
||||
ADDRESS = 0x00000000;
|
||||
MenuPage_ExpertMode_Proc();
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 2: /* 普通 */
|
||||
ADDRESS = 0x0009598F;
|
||||
MenuPage_FreeMode_Proc();
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extern uint8_t bat_init_done;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ void TaskTouchThread_entry(void* parameter)
|
|||
{
|
||||
TP_Point tp = TP_Read(); /* 读 XPT2046 触摸坐标 */
|
||||
app_touch_process(240-tp.x, tp.y, tp.pressed);
|
||||
LCD_Dump_Poll();
|
||||
/* DUMP 由 lcd_dump 专用线程轮询,勿在触摸线程里做 SPI 读屏,避免卡死触摸 */
|
||||
Read_Cur_Measure();
|
||||
rt_thread_mdelay(10);
|
||||
}
|
||||
|
|
@ -220,20 +220,90 @@ rt_err_t TaskInit(void)
|
|||
|
||||
void StartTask(void)
|
||||
{
|
||||
rt_thread_startup(&TaskScanThread);
|
||||
rt_thread_startup(&TaskBTHandleThread);
|
||||
rt_thread_startup(&TaskBTRecvThread);
|
||||
rt_thread_startup(&TaskAutobandThread);
|
||||
/* 扫描任务可能已由 StartScanTask 拉起;重复 startup 会被 RT-Thread 忽略 */
|
||||
StartScanTask();
|
||||
|
||||
if ((TaskBTHandleThread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_CLOSE)
|
||||
{
|
||||
rt_thread_init(&TaskBTHandleThread,
|
||||
"TaskBTHandleThread",
|
||||
TaskBTHandleThread_entry,
|
||||
RT_NULL,
|
||||
&TaskBTTHandlehread_Stack,
|
||||
sizeof(TaskBTTHandlehread_Stack),
|
||||
5,
|
||||
20);
|
||||
}
|
||||
if ((TaskBTHandleThread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_INIT)
|
||||
rt_thread_startup(&TaskBTHandleThread);
|
||||
|
||||
if ((TaskBTRecvThread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_CLOSE)
|
||||
{
|
||||
rt_thread_init(&TaskBTRecvThread,
|
||||
"TaskBTRecvThread",
|
||||
TaskBTRecvThread_entry,
|
||||
RT_NULL,
|
||||
&TaskBTRecvThread_Stack,
|
||||
sizeof(TaskBTRecvThread_Stack),
|
||||
5,
|
||||
20);
|
||||
}
|
||||
if ((TaskBTRecvThread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_INIT)
|
||||
rt_thread_startup(&TaskBTRecvThread);
|
||||
|
||||
if ((TaskAutobandThread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_CLOSE)
|
||||
{
|
||||
rt_thread_init(&TaskAutobandThread,
|
||||
"TaskAutobandThread",
|
||||
TaskAutobandThread_entry,
|
||||
RT_NULL,
|
||||
&TaskAutobandThread_Stack,
|
||||
sizeof(TaskAutobandThread_Stack),
|
||||
4,
|
||||
20);
|
||||
}
|
||||
if ((TaskAutobandThread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_INIT)
|
||||
rt_thread_startup(&TaskAutobandThread);
|
||||
}
|
||||
|
||||
void StartTouchTask(void)
|
||||
{
|
||||
rt_thread_startup(&TaskTouchThread);
|
||||
rt_uint8_t st = (rt_uint8_t)(TaskTouchThread.stat & RT_THREAD_STAT_MASK);
|
||||
|
||||
if (st == RT_THREAD_CLOSE)
|
||||
{
|
||||
rt_thread_init(&TaskTouchThread,
|
||||
"TaskTouchThread",
|
||||
TaskTouchThread_entry,
|
||||
RT_NULL,
|
||||
&TaskTouchThread_Stack,
|
||||
sizeof(TaskTouchThread_Stack),
|
||||
5,
|
||||
20);
|
||||
st = RT_THREAD_INIT;
|
||||
}
|
||||
if (st == RT_THREAD_INIT)
|
||||
rt_thread_startup(&TaskTouchThread);
|
||||
}
|
||||
|
||||
void StartScanTask(void)
|
||||
{
|
||||
rt_thread_startup(&TaskScanThread);
|
||||
rt_uint8_t st = (rt_uint8_t)(TaskScanThread.stat & RT_THREAD_STAT_MASK);
|
||||
|
||||
if (st == RT_THREAD_CLOSE)
|
||||
{
|
||||
rt_thread_init(&TaskScanThread,
|
||||
"TaskScanThread",
|
||||
TaskScanThread_entry,
|
||||
RT_NULL,
|
||||
&TaskScanThread_Stack,
|
||||
sizeof(TaskScanThread_Stack),
|
||||
5,
|
||||
20);
|
||||
st = RT_THREAD_INIT;
|
||||
}
|
||||
if (st == RT_THREAD_INIT)
|
||||
rt_thread_startup(&TaskScanThread);
|
||||
}
|
||||
|
||||
void StopFullTask(void)
|
||||
|
|
|
|||
Loading…
Reference in New Issue