void EVENT_KeyAquaPressed(void) { if(IsPumping) return; // Not allowed if pumping yet switch(EState) { case StShowChannel: SetState(StManualAqua); PumpOn(EMenu.Pump); break; case StSetDuration: if(!EMenu.AquaWasPressed) { // For the first time, reset duration value Pumps[EMenu.Pump-1].Duration = 0; EMenu.AquaWasPressed = true; } Time.SecondPassed = false; // Reset timer PumpsSettingsChanged = true; PumpOn(EMenu.Pump); break; default: break; } // switch }
/** * @brief 状态转换 */ void StateTrans(void) { SourceOn(); PumpOn(); DeviceDataInit(); GasDataInit(); // 获取存储的数据 SaveReadInit(); // 获取存储的设置 Lcd__LangSet(sDevice.pSave->Language); StateSelfCheck(); ChargeOn(); while (1) { // 获取信号量 20mS rt_sem_take(&sSemSystemTime, RT_WAITING_FOREVER); /* Reload IWDG counter */ IWDG_ReloadCounter(); KEY_Get(); DeviceDispCount(); DeviceTimeCount(); switch (sState) { case STATE_SELF_CHECK: StateLedBzVbrCheck(); SelfCheckJumpCheck(); break; case STATE_DETECT: StateDetect(&sGas, &sDevice); // DisRecSet(0, 0, 127, 63); break; case STATE_MENU: MenuKey(gKeyShort); MenuNoOperateCountdown(); // 闪烁 // MenuBlink(&sDevice); break; case STATE_INPUT: StateInputKey(gKeyShort); // 闪烁 if (sDevice.pTemp->Disp.Fresh == TURN_ON) { DisBlink(); } break; case STATE_COUNTDOWN: StateCountdownKey(gKeyShort); StateCountdownSecond(); break; case STATE_RESULT: StateResultKey(gKeyShort); break; case STATE_SHUTDOWN: StateShutdownKey(gKeyLong); StateShutdownSecond(); break; case STATE_POWER_OFF: break; case STATE_INFO: StateInfoKey(gKeyShort); StateInfoSecond(); break; case STATE_CHARGE: // PumpOff(); // sDevice.pTemp->Fan.State = TURN_OFF; break; default: break; } if (sState != STATE_SELF_CHECK) { if (gKeyTrg) { S_Buzzer lBz; lBz.Src = BUZZER_KEY; lBz.Time = BUZZER_KEY_TIME; BuzzerOn(&lBz); } } if (sState != STATE_POWER_OFF) { if (gKeyTrg || gKeyLong) { PowerSaveBglFresh(); } } if (gKeyTrg || gKeyLong) { MenuNoOperateFresh(); } // 设备倒计时 PowerSaveBglCountdown(); LedCountdown(); BuzzerCountdown(); VibrationCountdown(); StateBatCheck(); StateChargeCheck(); } }