Files
CuboBmsFirmware/Core/Src/modPowerState.c
Yury Shuvakin 190522943f Initial commit
2023-03-29 20:05:40 +03:00

161 lines
5.9 KiB
C

///*
// Copyright 2017 - 2018 Danny Bokma danny@diebie.nl
// Copyright 2019 - 2020 Kevin Dionne kevin.dionne@ennoid.me
//
// This file is part of the DieBieMS/ENNOID-BMS firmware.
//
// The DieBieMS/ENNOID-BMS firmware is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The DieBieMS/ENNOID-BMS firmware is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// */
//
//#include "modPowerState.h"
//
//modConfigGeneralConfigStructTypedef *modPowerStateGeneralConfigHandle;
//
//bool modPowerStatePulsePowerDownDesired;
//bool modPowerStateForceOnDesired;
//bool modPowerStateButtonPressedVar;
//bool modPowerStateLastButtonPressedVar;
//bool modPowerStateLastButtonFirstPress;
//bool modPowerStateButtonActuated;
//bool modPowerStateButtonPulsToggleMode;
//bool modPowerStatePowerModeDirectHCDelay;
//bool modPowerStateLongStartupButtonPress;
//uint32_t modPowerStateButtonPressedDuration;
//uint32_t modPowerStateButtonPressedTimeStamp;
//uint32_t modPowerStateStartupDelay;
//uint32_t modPowerStatePowerDownTimeout;
//
//bool tempButtonPressed;
//
//void modPowerStateInit(PowerStateStateTypedef desiredPowerState) {
// uint32_t startupDelay = HAL_GetTick();
// modPowerStateStartupDelay = HAL_GetTick();
// modPowerStatePowerDownTimeout = HAL_GetTick();
// modPowerStatePulsePowerDownDesired = false;
// modPowerStateForceOnDesired = false;
// modPowerStateButtonPressedVar = true;
// modPowerStateLongStartupButtonPress = false;
// modPowerStateButtonPulsToggleMode = true;
// modPowerStateButtonPressedDuration = 0;
// modPowerStateButtonPressedTimeStamp = 0;
// modPowerStateButtonActuated = false;
//
// driverHWPowerStateInit();
//
// while(!modDelayTick1ms(&modPowerStateStartupDelay,20)); // Needed for power button signal to reach uC
// modPowerStateLastButtonFirstPress = modPowerStateLastButtonPressedVar = driverHWPowerStateReadInput(P_STAT_BUTTON_INPUT);
//
// if(!modPowerStateLastButtonFirstPress) {
// while(!modDelayTick1ms(&modPowerStateStartupDelay,100));
// }
//
// modPowerStateSetState(desiredPowerState);
//};
//
//
//
//void modPowerStateSetConfigHandle(modConfigGeneralConfigStructTypedef *generalConfigPointer) {
// modPowerStateGeneralConfigHandle = generalConfigPointer;
//
// modPowerStateButtonPulsToggleMode = modPowerStateGeneralConfigHandle->pulseToggleButton;
// modPowerStatePowerModeDirectHCDelay = modPowerStateGeneralConfigHandle->togglePowerModeDirectHCDelay;
//}
//
//void modPowerStateTask(void) {
// //bool tempButtonPressed = driverHWPowerStateReadInput(P_STAT_BUTTON_INPUT);
// tempButtonPressed = driverHWPowerStateReadInput(P_STAT_BUTTON_INPUT);
//
// if(modPowerStateLastButtonPressedVar != tempButtonPressed) {
// if(modPowerStateLastButtonPressedVar){ // If is was high and now low (actuated)
// modPowerStateLastButtonFirstPress = false;
// modPowerStateButtonActuated = true;
// }else{ // If is was low and now high (non actuated)
// modPowerStateButtonPressedTimeStamp = HAL_GetTick();
// modPowerStateButtonActuated = false;
// }
// modPowerStateLastButtonPressedVar = tempButtonPressed;
// }
//
// if(tempButtonPressed) {
// modPowerStateButtonPressedDuration = HAL_GetTick() - modPowerStateButtonPressedTimeStamp;
//
// if((modPowerStateButtonPressedDuration > POWERBUTTON_DEBOUNCE_TIME) && (modPowerStateLastButtonFirstPress == false))
// modPowerStateButtonPressedVar = true;
//
// if((modPowerStateButtonPressedDuration >= POWERBUTTON_POWERDOWN_THRESHOLD_TIME) && (modPowerStateLastButtonFirstPress == false) && modPowerStateGeneralConfigHandle->pulseToggleButton) {
// modPowerStatePulsePowerDownDesired = true;
// modPowerStateButtonPressedDuration = 0;
// }
//
// if((modPowerStateButtonPressedDuration >= POWERBUTTON_FORCEON_THRESHOLD_TIME) && (modPowerStateLastButtonFirstPress == true) && modPowerStateGeneralConfigHandle->pulseToggleButton) {
// if(modPowerStateGeneralConfigHandle->allowForceOn) {
// modPowerStateForceOnDesired = true;
// }
//
// modPowerStateLongStartupButtonPress = true;
// modPowerStateButtonPressedDuration = 0;
// }
//
// modPowerStatePowerDownTimeout = HAL_GetTick();
// }else{
// if(modDelayTick1ms(&modPowerStatePowerDownTimeout,500) && modPowerStateButtonActuated)
// modPowerStateButtonPressedVar = false;
// }
//};
//
//bool modPowerStateGetButtonPressedState(void) {
// return modPowerStateButtonPressedVar;
//};
//
//bool modPowerStateChargerDetected(void) {
// static bool chargeDetect = false;
// chargeDetect = driverHWPowerStateReadInput(P_STAT_CHARGE_DETECT);
// return chargeDetect;
//};
//
//bool modPowerStatePowerdownRequest(void) {
// bool returnValue = false;
//
// if(modPowerStateGeneralConfigHandle->pulseToggleButton){
// returnValue = modPowerStatePulsePowerDownDesired;
// }else{
// returnValue = !modPowerStateButtonPressedVar;
// }
// return returnValue;
//};
//
//bool modPowerStateForceOnRequest(void) {
// static bool firstTrigger = true;
//
// if(modPowerStateForceOnDesired && firstTrigger){
// modPowerStateForceOnDesired = false;
// firstTrigger = false;
// return true;
// }else{
// return false;
// }
//};
//
//void modPowerStateSetState(PowerStateStateTypedef newState) {
// driverHWPowerStateSetOutput(P_STAT_POWER_ENABLE,newState);
//};
//
//bool modPowerStateButtonPressedOnTurnon(void) {
// return modPowerStateLastButtonFirstPress;
//};
//
//bool modPowerStateGetLongButtonPressState(void) {
// return modPowerStateLongStartupButtonPress;
//}