fix(pick): block accompaniment until a play mode is entered
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
3eba48ece1
commit
18394d0b9b
|
|
@ -229,6 +229,7 @@ void System_PowerOn(void)
|
|||
LOG_I("PWR", "power_on begin");
|
||||
/* 软关机不复位 MCU:清掉上次会话演奏状态,默认当前调一级大和弦(C 调=do mi sol) */
|
||||
StartFlag = 0;
|
||||
InModeFlag = false; /* 停在模式选择,禁止拨片/侧面键起奏 */
|
||||
Accomp_ApplyDefaultIChord();
|
||||
app_tm1629_reset_key_state();
|
||||
s_pwr_rails_cut = 0u;
|
||||
|
|
@ -272,6 +273,7 @@ static void PowerOff(void)
|
|||
|
||||
LOG_I("PWR", "power_off begin");
|
||||
powon = false; /* 更新关机标志 */
|
||||
InModeFlag = false; /* 软关机后勿残留进模式,避免再开机模式选择页拨片起奏 */
|
||||
s_pwr_off_grace_ms = 0u; /* 主路径已接管,取消紧急倒计时 */
|
||||
StopFullTask();
|
||||
|
||||
|
|
@ -901,6 +903,9 @@ void ADC_IN1_KEY_Handle(uint8_t key,bool on)
|
|||
uint8_t was_playing;
|
||||
|
||||
(void)on;
|
||||
/* 模式选择页:侧面键不得起奏 */
|
||||
if (!InModeFlag)
|
||||
return;
|
||||
/* 万能:前奏/间奏/尾奏/断奏无响应(含 App 06 指令) */
|
||||
if (mGuiData[GUI_TAB_INDEX].Current == 0)
|
||||
return;
|
||||
|
|
@ -1617,6 +1622,13 @@ void Pick_Handle()
|
|||
uint8_t note_cnt = 0;
|
||||
uint8_t chord_id = KEY_ID_1629;
|
||||
|
||||
/* 未进入演奏模式(开机模式选择页)禁止起奏 */
|
||||
if (!InModeFlag)
|
||||
{
|
||||
LOG_I("pick", "abort: not in mode");
|
||||
return;
|
||||
}
|
||||
|
||||
/* 空库/加载失败时禁止起奏:否则 TMR6 ISR 内 AutoBand 可能 HardFault,
|
||||
* LCD 卡死且主循环 Power_Key_Scan 不再跑 → 只能 RESET */
|
||||
if (!App_Auto_IsPresetReady())
|
||||
|
|
|
|||
|
|
@ -192,6 +192,7 @@ extern volatile uint32_t ADDRESS;
|
|||
extern uint8_t key_toggle[4];
|
||||
|
||||
extern bool StartFlag;
|
||||
extern bool InModeFlag; /* 已进入演奏模式;模式选择页必须为 false */
|
||||
|
||||
extern int16_t MIC_VOL_MAP[11];
|
||||
extern const uint8_t Version[3];
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ void UI_ReturnToModeSelect(void)
|
|||
|
||||
void UI_DrawModeSelectScreen(void)
|
||||
{
|
||||
InModeFlag = false; /* 模式选择页:未进入演奏模式,禁止伴奏起奏 */
|
||||
UI_ClearFocus();
|
||||
pCurrentTouch_Area = Touch_ModeSelect_Areas;
|
||||
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ void TaskMainThread_entry(void* parameter)
|
|||
case MSG_ID_POWER_OFF : break;
|
||||
//case MSG_ID_ADCIN1KEY : ADC_IN1_KEY_Handle(xEvent.ID);break;
|
||||
case MSG_ID_BP_KEY:
|
||||
if (!System_LowBat_IsActive())
|
||||
if (!System_LowBat_IsActive() && InModeFlag)
|
||||
Pick_Handle();
|
||||
break;
|
||||
case MSG_ID_STOP_BAND:
|
||||
|
|
@ -121,7 +121,7 @@ void TaskMainThread_entry(void* parameter)
|
|||
break;
|
||||
case MSG_ID_START_FOLLOWUP:
|
||||
/* 停后补发:强制再 Start,勿因 NotifyPlayActivity 误判「在播」只换和弦 */
|
||||
if (!System_LowBat_IsActive() && Band_TakeStartFollowup())
|
||||
if (!System_LowBat_IsActive() && InModeFlag && Band_TakeStartFollowup())
|
||||
{
|
||||
Band_BeginStartFollowup();
|
||||
Pick_Handle();
|
||||
|
|
|
|||
Loading…
Reference in New Issue