|
@@ -18,6 +18,7 @@
|
|
|
#include "can.h"
|
|
|
#include "api.h"
|
|
|
#include "board_config.h"
|
|
|
+#include "Customization.h"
|
|
|
/******************************
|
|
|
*
|
|
|
* Parameter
|
|
@@ -66,17 +67,19 @@ void power_voPowerManagement(UWORD uwPowerPara, ULONG SysTickCnt, ULONG OBC_Butt
|
|
|
ULONG ulAutoPowerOffDelayTime;
|
|
|
ULONG ulPowerStartDelayTime;
|
|
|
ULONG ulPowerOFFDelayTime;
|
|
|
-
|
|
|
- //ulPowerStartDelayTime = (ULONG)(power_stPowStateCof.uwPowerStartTouchTimeCnt + ((uwPowerPara & 0xF000)>>12) * 200);//ms
|
|
|
- ulPowerStartDelayTime = 5;
|
|
|
+ UBYTE keyState;
|
|
|
+
|
|
|
+ ulPowerStartDelayTime = (ULONG)(power_stPowStateCof.uwPowerStartTouchTimeCnt + ((uwPowerPara & 0xF000)>>12) * 200);//ms
|
|
|
ulPowerOFFDelayTime = (ULONG)(power_stPowStateCof.uwPowerShutTouchTimeCnt + ((uwPowerPara & 0x0F00)>>8) * 200);//ms
|
|
|
ulAutoPowerOffDelayTime = (ULONG)((uwPowerPara & 0x00FF) * 60);//s
|
|
|
|
|
|
+ keyState = iGpio_Read(HW_GPIO_POWERSTATE_PIN);
|
|
|
+
|
|
|
switch(power_stPowStateOut.powerstate)
|
|
|
{
|
|
|
case POWER_START: // 电源键按下,超过1s进入POWER ON
|
|
|
{
|
|
|
- if(iGpio_Read(HW_GPIO_POWERSTATE_PIN) != 0)
|
|
|
+ if(keyState != 0)
|
|
|
{
|
|
|
power_stPowStateOut.uwPowerStartupCnt++;
|
|
|
if (power_stPowStateOut.uwPowerStartupCnt == ulPowerStartDelayTime)
|
|
@@ -94,7 +97,7 @@ void power_voPowerManagement(UWORD uwPowerPara, ULONG SysTickCnt, ULONG OBC_Butt
|
|
|
power_stPowStateOut.uwPowerOn2OffCnt++;
|
|
|
if (power_stPowStateOut.uwPowerOn2OffCnt >= power_stPowStateCof.uwPowerOn2OffTimeCnt)
|
|
|
{
|
|
|
- if(iGpio_Read(HW_GPIO_POWERSTATE_PIN) == 0)
|
|
|
+ if(keyState == 0)
|
|
|
{
|
|
|
power_stPowStateOut.powerstate = POWER_ON_END;
|
|
|
power_stPowStateOut.blPowerStartupFlg = TRUE;
|
|
@@ -107,21 +110,24 @@ void power_voPowerManagement(UWORD uwPowerPara, ULONG SysTickCnt, ULONG OBC_Butt
|
|
|
case POWER_ON_END: // 电源键按下进入POWER_OFF,或待机设定时候后自动进入POWER_OFF
|
|
|
{
|
|
|
//The key pushed down for "uwPowerShutTouchTimeCnt" to POWER_OFF
|
|
|
-// if (iGpio_Read(HW_GPIO_POWERSTATE_PIN) != 0)
|
|
|
-// {
|
|
|
-// power_stPowStateOut.uwPowerShutdnCnt++;
|
|
|
-// if (power_stPowStateOut.uwPowerShutdnCnt >= ulPowerOFFDelayTime)
|
|
|
-// {
|
|
|
-// power_stPowStateOut.powerstate = POWER_OFF;
|
|
|
-// power_stPowStateOut.blPowerStartupFlg = FALSE;
|
|
|
-// //Send power off command
|
|
|
-// SendData(ID_MC_BC, MODE_REPORT, 0x1808, (uint8_t *)"SHUTDOWN");
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// power_stPowStateOut.uwPowerShutdnCnt = 0;
|
|
|
-// }
|
|
|
+#if(GIANT_ENABLE == 1)
|
|
|
+ keyState = 0;
|
|
|
+#endif
|
|
|
+ if (keyState != 0)
|
|
|
+ {
|
|
|
+ power_stPowStateOut.uwPowerShutdnCnt++;
|
|
|
+ if (power_stPowStateOut.uwPowerShutdnCnt >= ulPowerOFFDelayTime)
|
|
|
+ {
|
|
|
+ power_stPowStateOut.powerstate = POWER_OFF;
|
|
|
+ power_stPowStateOut.blPowerStartupFlg = FALSE;
|
|
|
+ //Send power off command
|
|
|
+ SendData(ID_MC_BC, MODE_REPORT, 0x1808, (uint8_t *)"SHUTDOWN");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ power_stPowStateOut.uwPowerShutdnCnt = 0;
|
|
|
+ }
|
|
|
|
|
|
//Do not auto power off
|
|
|
if(ulAutoPowerOffDelayTime == 0)
|
|
@@ -129,20 +135,23 @@ void power_voPowerManagement(UWORD uwPowerPara, ULONG SysTickCnt, ULONG OBC_Butt
|
|
|
AutoPowerOffTimeCnt = SysTickCnt;
|
|
|
}
|
|
|
//Stand for ulAutoPowerOffDelayTime seconds to POWER_OFF
|
|
|
-// if((uwTorqueIn < 20) && (CadenceIn < 5) && (BikeSpeed < 10) && ((SysTickCnt - OBC_ButtonSetTimeCnt) > 1000))
|
|
|
-// {
|
|
|
-// if(SysTickCnt - AutoPowerOffTimeCnt > ulAutoPowerOffDelayTime * 1000) //unit s
|
|
|
-// {
|
|
|
-// power_stPowStateOut.powerstate = POWER_OFF;
|
|
|
-// power_stPowStateOut.blPowerStartupFlg = FALSE;
|
|
|
-// //Send power off command
|
|
|
-// SendData(ID_MC_BC, MODE_REPORT, 0x1808, (uint8_t *)"SHUTDOWN");
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// AutoPowerOffTimeCnt = SysTickCnt;
|
|
|
-// }
|
|
|
+#if(GIANT_ENABLE == 1)
|
|
|
+ AutoPowerOffTimeCnt = SysTickCnt;
|
|
|
+#endif
|
|
|
+ if((uwTorqueIn < 20) && (CadenceIn < 5) && (BikeSpeed < 10) && ((SysTickCnt - OBC_ButtonSetTimeCnt) > 1000))
|
|
|
+ {
|
|
|
+ if(SysTickCnt - AutoPowerOffTimeCnt > ulAutoPowerOffDelayTime * 1000) //unit s
|
|
|
+ {
|
|
|
+ power_stPowStateOut.powerstate = POWER_OFF;
|
|
|
+ power_stPowStateOut.blPowerStartupFlg = FALSE;
|
|
|
+ //Send power off command
|
|
|
+ SendData(ID_MC_BC, MODE_REPORT, 0x1808, (uint8_t *)"SHUTDOWN");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ AutoPowerOffTimeCnt = SysTickCnt;
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
case POWER_OFF: // 关机处理,等待数据存储完成,关闭LOCK
|