|
@@ -785,6 +785,11 @@ static uint8_t gunType[4] = {0};
|
|
|
//===============================
|
|
|
static int localversion=0;
|
|
|
|
|
|
+//===============================
|
|
|
+// Variable Version
|
|
|
+//===============================
|
|
|
+static int variableVersion=1;
|
|
|
+
|
|
|
//===============================
|
|
|
// OCPP sign variable
|
|
|
//===============================
|
|
@@ -1371,6 +1376,21 @@ int DB_updateBootType(BootReasonEnumType reason)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+int DB_variableClear()
|
|
|
+{
|
|
|
+ int result = PASS;
|
|
|
+ char * sqlcleanLocalList = "delete from ocpp20_variable";
|
|
|
+ char *errMsg = 0;
|
|
|
+
|
|
|
+ if (sqlite3_exec(db, sqlcleanLocalList, 0, 0, &errMsg) != SQLITE_OK)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("%s\n", errMsg);
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
int DB_cbVariableSaveToDb(void *para, int columnCount, char **columnValue, char **columnName)
|
|
|
{
|
|
|
for(int i = 0; i<columnCount; i++)
|
|
@@ -2106,6 +2126,14 @@ int DB_cbVariableIsCreate(void *para, int columnCount, char **columnValue, char
|
|
|
sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_PublicKeyWithSignedMeterValue].variableAttribute[0].value, "Never,OncePerTransaction,EveryMeterValue");
|
|
|
DB_variableSaveToDb(&ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_PublicKeyWithSignedMeterValue]);
|
|
|
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].component.name, "OCPPCommCtrlr");
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].variable.name, "VariableVersion");
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].variableCharacteristics.dataType, "%s", DataEnumTypeStr[DataEnumType_integer]);
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].variableAttribute[0].type, "%s", AttributeEnumTypeStr[AttributeEnumType_Target]);
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].variableAttribute[0].mutability, "%s", MutabilityEnumTypeStr[MutabilityEnumType_ReadOnly]);
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].variableAttribute[0].value, "%d", variableVersion);
|
|
|
+ DB_variableSaveToDb(&ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion]);
|
|
|
+
|
|
|
/* ReservationCtrlr Required item */
|
|
|
sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[ReservationCtrlr_Enabled].component.name, "ReservationCtrlr");
|
|
|
sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[ReservationCtrlr_Enabled].variable.name, "Enabled");
|
|
@@ -2762,6 +2790,9 @@ int DB_cbVariableIsCreate(void *para, int columnCount, char **columnValue, char
|
|
|
sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_PublicKeyWithSignedMeterValue].component.name, "OCPPCommCtrlr");
|
|
|
sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_PublicKeyWithSignedMeterValue].variable.name, "PublicKeyWithSignedMeterValue");
|
|
|
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].component.name, "OCPPCommCtrlr");
|
|
|
+ sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].variable.name, "VariableVersion");
|
|
|
+
|
|
|
/* ReservationCtrlr Required item */
|
|
|
sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[ReservationCtrlr_Enabled].component.name, "ReservationCtrlr");
|
|
|
sprintf((char*)ShmOCPP20Data->ControllerComponentVariable[ReservationCtrlr_Enabled].variable.name, "Enabled");
|
|
@@ -17383,6 +17414,16 @@ int initialConfigurationTable(void)
|
|
|
memset(&ShmOCPP20Data->ControllerComponentVariable[0], 0, ARRAY_SIZE(ShmOCPP20Data->ControllerComponentVariable));
|
|
|
DB_variableIsCreate();
|
|
|
DB_variableLoadFromDb();
|
|
|
+
|
|
|
+ if(atoi((char*)ShmOCPP20Data->ControllerComponentVariable[OCPPCommCtrlr_VariableVersion].variableAttribute[0].value) != variableVersion)
|
|
|
+ {
|
|
|
+ DEBUG_WARN("EVSE variable version in local db older than firmware.\n");
|
|
|
+
|
|
|
+ DB_variableClear();
|
|
|
+ DB_variableIsCreate();
|
|
|
+ DB_variableLoadFromDb();
|
|
|
+ }
|
|
|
+
|
|
|
DB_getNetworkProfileFromDb();
|
|
|
|
|
|
return 0;
|