big refactoring: J1939, log output, state machine bug fixes
This commit is contained in:
+34
-24
@@ -7,12 +7,14 @@
|
||||
#include "connector.h"
|
||||
#include "board.h"
|
||||
#include "edcan.h"
|
||||
#include "debug.h"
|
||||
#include <string.h>
|
||||
#include <charger_gbt.h>
|
||||
|
||||
|
||||
CONN_State_t connectorState;
|
||||
CONN_t CONN;
|
||||
// CONN[0] - GB/T, CONN[1] - CCS (reserved for future use)
|
||||
CONN_t CONN[2];
|
||||
|
||||
uint8_t CC_STATE_FILTERED;
|
||||
|
||||
@@ -20,19 +22,18 @@ static void CONN_UpdateEdcanOutput(void);
|
||||
|
||||
void CONN_Init(){
|
||||
memset(&CONN, 0, sizeof(CONN));
|
||||
CONN.connControl = CMD_NONE;
|
||||
CONN[0].connControl = CMD_NONE;
|
||||
CONN_SetState(Unknown);
|
||||
}
|
||||
|
||||
void CONN_Task(){
|
||||
|
||||
switch (connectorState){
|
||||
case Unknown:
|
||||
CONN_SetState(Unplugged);
|
||||
break;
|
||||
|
||||
case Disabled:
|
||||
if(CONN.chargingError == 0) {
|
||||
if(CONN[0].chargingError == 0) {
|
||||
CONN_SetState(Unplugged);
|
||||
}
|
||||
break;
|
||||
@@ -40,10 +41,11 @@ void CONN_Task(){
|
||||
{
|
||||
// Обновляем признак физического подключения разъёма по уровню CC
|
||||
if(CONN_CC_GetState() == GBT_CC_4V){
|
||||
CONN.EvseConnected = 1;
|
||||
CONN[0].EvseConnected = 1;
|
||||
log_printf(LOG_INFO, "Charger plugged, waiting for 12V AUX\n");
|
||||
CONN_SetState(AuthRequired);
|
||||
}else{
|
||||
CONN.EvseConnected = 0;
|
||||
CONN[0].EvseConnected = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -52,6 +54,7 @@ void CONN_Task(){
|
||||
{
|
||||
// Если уровень CC вернулся к 6/12В – считаем, что коннектор выдернули
|
||||
if(CONN_CC_GetState() != GBT_CC_4V){
|
||||
log_printf(LOG_INFO, "Charger unplugged\n");
|
||||
CONN_SetState(Unplugged);
|
||||
GBT_Reset();
|
||||
break;
|
||||
@@ -59,6 +62,7 @@ void CONN_Task(){
|
||||
|
||||
// Как только появляется 12V AUX от станции – переходим в Preparing (инициализация протокола)
|
||||
if(IN_ReadInput(IN_0) == 1){
|
||||
log_printf(LOG_INFO, "12V AUX detected, starting session\n");
|
||||
CONN_SetState(Preparing);
|
||||
GBT_SwitchState(GBT_EV_CONNECTING);
|
||||
}
|
||||
@@ -69,11 +73,15 @@ void CONN_Task(){
|
||||
// Ожидаем переход стейт-машины GB/T в режим зарядки.
|
||||
// Как только GBT_State уходит в режим CHARGING – считаем, что начался заряд.
|
||||
if(GBT_State == GBT_EV_CHARGING){
|
||||
log_printf(LOG_INFO, "Charging started\n");
|
||||
CONN_SetState(Charging);
|
||||
}
|
||||
if(IN_ReadInput(IN_0) == 0){
|
||||
CONN_SetState(Unplugged);
|
||||
GBT_Reset();
|
||||
// if(IN_ReadInput(IN_0) == 0){
|
||||
// CONN_SetState(Unplugged);
|
||||
// GBT_Reset();
|
||||
// }
|
||||
if(GBT_State == GBT_DISABLED){
|
||||
CONN_SetState(Finished);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -84,6 +92,7 @@ void CONN_Task(){
|
||||
CONN_SetState(Finished);
|
||||
}
|
||||
if(IN_ReadInput(IN_0) == 0){
|
||||
log_printf(LOG_INFO, "12V AUX removed, finishing session\n");
|
||||
CONN_SetState(Finished);
|
||||
}
|
||||
break;
|
||||
@@ -91,6 +100,7 @@ void CONN_Task(){
|
||||
case Finished: // Сессия завершена, ждём окончания и возможного переподключения
|
||||
// Когда GB/T стейт-машина полностью вернулась в исходное состояние,
|
||||
// можно считать сессию закрытой и вернуться в Unplugged.
|
||||
cc_enable = 0;
|
||||
if(CONN_CC_GetState() != GBT_CC_4V){
|
||||
CONN_SetState(Unplugged);
|
||||
GBT_Reset();
|
||||
@@ -111,22 +121,22 @@ void CONN_Task(){
|
||||
|
||||
void CONN_SetState(CONN_State_t state){
|
||||
connectorState = state;
|
||||
CONN.connState = state;
|
||||
CONN[0].connState = state;
|
||||
|
||||
if(connectorState == Unknown) EDCAN_printf(LOG_INFO,"Unknown\n");
|
||||
if(connectorState == Unplugged) EDCAN_printf(LOG_INFO,"Unplugged\n");
|
||||
if(connectorState == Disabled) EDCAN_printf(LOG_INFO,"Disabled\n");
|
||||
if(connectorState == Preparing) EDCAN_printf(LOG_INFO,"Preparing\n");
|
||||
if(connectorState == AuthRequired) EDCAN_printf(LOG_INFO,"AuthRequired\n");
|
||||
if(connectorState == WaitingForEnergy) EDCAN_printf(LOG_INFO,"WaitingForEnergy\n");
|
||||
if(connectorState == ChargingPausedEV) EDCAN_printf(LOG_INFO,"ChargingPausedEV\n");
|
||||
if(connectorState == ChargingPausedEVSE) EDCAN_printf(LOG_INFO,"ChargingPausedEVSE\n");
|
||||
if(connectorState == Charging) EDCAN_printf(LOG_INFO,"Charging\n");
|
||||
if(connectorState == AuthTimeout) EDCAN_printf(LOG_INFO,"AuthTimeout\n");
|
||||
if(connectorState == Finished) EDCAN_printf(LOG_INFO,"Finished\n");
|
||||
if(connectorState == FinishedEVSE) EDCAN_printf(LOG_INFO,"FinishedEVSE\n");
|
||||
if(connectorState == FinishedEV) EDCAN_printf(LOG_INFO,"FinishedEV\n");
|
||||
if(connectorState == Replugging) EDCAN_printf(LOG_INFO,"Replugging\n");
|
||||
if(connectorState == Unknown) log_printf(LOG_DEBUG,"ConnState: Unknown\n");
|
||||
if(connectorState == Unplugged) log_printf(LOG_DEBUG,"ConnState: Unplugged\n");
|
||||
if(connectorState == Disabled) log_printf(LOG_DEBUG,"ConnState: Disabled\n");
|
||||
if(connectorState == Preparing) log_printf(LOG_DEBUG,"ConnState: Preparing\n");
|
||||
if(connectorState == AuthRequired) log_printf(LOG_DEBUG,"ConnState: AuthRequired\n");
|
||||
if(connectorState == WaitingForEnergy) log_printf(LOG_DEBUG,"ConnState: WaitingForEnergy\n");
|
||||
if(connectorState == ChargingPausedEV) log_printf(LOG_DEBUG,"ConnState: ChargingPausedEV\n");
|
||||
if(connectorState == ChargingPausedEVSE) log_printf(LOG_DEBUG,"ConnState: ChargingPausedEVSE\n");
|
||||
if(connectorState == Charging) log_printf(LOG_DEBUG,"ConnState: Charging\n");
|
||||
if(connectorState == AuthTimeout) log_printf(LOG_DEBUG,"ConnState: AuthTimeout\n");
|
||||
if(connectorState == Finished) log_printf(LOG_DEBUG,"ConnState: Finished\n");
|
||||
if(connectorState == FinishedEVSE) log_printf(LOG_DEBUG,"ConnState: FinishedEVSE\n");
|
||||
if(connectorState == FinishedEV) log_printf(LOG_DEBUG,"ConnState: FinishedEV\n");
|
||||
if(connectorState == Replugging) log_printf(LOG_DEBUG,"ConnState: Replugging\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user