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