fix reset, unplug delay 5s
This commit is contained in:
@@ -11,11 +11,31 @@
|
|||||||
|
|
||||||
|
|
||||||
CONN_State_t connectorState;
|
CONN_State_t connectorState;
|
||||||
|
|
||||||
extern uint8_t config_initialized;
|
extern uint8_t config_initialized;
|
||||||
|
|
||||||
gbtCcState_t CC_STATE_FILTERED;
|
gbtCcState_t CC_STATE_FILTERED;
|
||||||
|
|
||||||
|
// name - уникальный идентификатор таймера для данного места использования
|
||||||
|
// cond - условие, которое должно непрерывно держаться delay_ms мс
|
||||||
|
// delay_ms - задержка в миллисекундах
|
||||||
|
#define DELAYED_HOLD_MS(name, cond, delay_ms) \
|
||||||
|
({ \
|
||||||
|
static uint32_t name = 0; \
|
||||||
|
uint8_t __hold_result = 0; \
|
||||||
|
if (cond) { \
|
||||||
|
if (name == 0) { \
|
||||||
|
name = HAL_GetTick(); \
|
||||||
|
} else if ((HAL_GetTick() - name) >= (uint32_t)(delay_ms)) {\
|
||||||
|
__hold_result = 1; \
|
||||||
|
name = 0; \
|
||||||
|
} \
|
||||||
|
} else { \
|
||||||
|
name = 0; \
|
||||||
|
} \
|
||||||
|
__hold_result; \
|
||||||
|
})
|
||||||
|
|
||||||
void CONN_Task(){
|
void CONN_Task(){
|
||||||
|
|
||||||
switch (connectorState){
|
switch (connectorState){
|
||||||
@@ -105,11 +125,11 @@ void CONN_Task(){
|
|||||||
|
|
||||||
case Finished: // charging completed, waiting to disconnect, unlocked
|
case Finished: // charging completed, waiting to disconnect, unlocked
|
||||||
GBT_Lock(0);
|
GBT_Lock(0);
|
||||||
|
|
||||||
//TODO Force unlock time limit
|
//TODO Force unlock time limit
|
||||||
if(CONN.connControl == CMD_FORCE_UNLOCK) GBT_ForceLock(0);
|
if(CONN.connControl == CMD_FORCE_UNLOCK) GBT_ForceLock(0);
|
||||||
|
|
||||||
if(CONN_CC_GetState()==GBT_CC_6V){
|
if(DELAYED_HOLD_MS(cc6v_hold_tick, CONN_CC_GetState()==GBT_CC_6V, 5000)){
|
||||||
GBT_Lock(0);
|
GBT_Lock(0);
|
||||||
CONN_SetState(Unplugged);
|
CONN_SetState(Unplugged);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,9 +96,11 @@ void SC_CommandHandler(ReceivedCommand_t* cmd) {
|
|||||||
SC_SendPacket(NULL, 0, RESP_SUCCESS);
|
SC_SendPacket(NULL, 0, RESP_SUCCESS);
|
||||||
|
|
||||||
while(huart2.gState == HAL_UART_STATE_BUSY_TX); // Ожидание завершения передачи
|
while(huart2.gState == HAL_UART_STATE_BUSY_TX); // Ожидание завершения передачи
|
||||||
|
|
||||||
|
HAL_Delay(10);
|
||||||
// 3. Выполняем программный сброс
|
// 3. Выполняем программный сброс
|
||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
return; // Сюда код уже не дойдет, но для компилятора нужно
|
return; // Сюда код уже не дойдет, но для компилятора нxужно
|
||||||
|
|
||||||
case CMD_ISOLATION_STATUS:
|
case CMD_ISOLATION_STATUS:
|
||||||
if (cmd->argument_length == sizeof(IsolationStatusPacket_t)) {
|
if (cmd->argument_length == sizeof(IsolationStatusPacket_t)) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
../Core/Src/connector.c:19:6:CONN_Task 32
|
../Core/Src/connector.c:39:6:CONN_Task 35
|
||||||
../Core/Src/connector.c:126:6:CONN_SetState 15
|
../Core/Src/connector.c:146:6:CONN_SetState 15
|
||||||
../Core/Src/connector.c:147:6:CONN_CC_ReadStateFiltered 4
|
../Core/Src/connector.c:167:6:CONN_CC_ReadStateFiltered 4
|
||||||
../Core/Src/connector.c:166:9:CONN_CC_GetState 1
|
../Core/Src/connector.c:186:9:CONN_CC_GetState 1
|
||||||
../Core/Src/connector.c:169:9:CONN_CC_GetStateRaw 9
|
../Core/Src/connector.c:189:9:CONN_CC_GetStateRaw 9
|
||||||
../Core/Src/connector.c:182:7:CONN_CC_GetAdc 1
|
../Core/Src/connector.c:202:7:CONN_CC_GetAdc 1
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1
|
../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1
|
||||||
../Core/Src/serial_handler.c:28:6:SC_CommandHandler 19
|
../Core/Src/serial_handler.c:28:6:SC_CommandHandler 19
|
||||||
../Core/Src/serial_handler.c:128:6:monitoring_data_callback 1
|
../Core/Src/serial_handler.c:130:6:monitoring_data_callback 1
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user