|
@@ -1524,7 +1524,7 @@ int DB_Initial()
|
|
|
|
|
|
char *sqlVariableMonitoring = "create table if not exists ocpp20_variable_monitoring (idx integer primary key,"
|
|
|
"id integer ,"
|
|
|
- "transaction text, "
|
|
|
+ "txn text, "
|
|
|
"value text , "
|
|
|
"type text, "
|
|
|
"severity integer, "
|
|
@@ -7781,7 +7781,8 @@ void CheckSystemValue(void)
|
|
|
if((server_sign == TRUE) && (getDiffSecNow(clientTime.Heartbeat) >= (HeartBeatWaitTime + HeartBeatWithNOResponse)))
|
|
|
{
|
|
|
|
|
|
- sendHeartbeatRequest(0);
|
|
|
+ if(HeartBeatWithNOResponse < 1)
|
|
|
+ sendHeartbeatRequest(0);
|
|
|
|
|
|
|
|
|
|
|
@@ -7827,51 +7828,12 @@ void CheckSystemValue(void)
|
|
|
(server_sign == TRUE) &&
|
|
|
(ShmOCPP20Data->GetMonitoringReport.requestId > 0))
|
|
|
{
|
|
|
- for(uint8_t idxCriterion=0;idxCriterion<ARRAY_SIZE(ShmOCPP20Data->GetMonitoringReport.monitoringCriteria);idxCriterion++)
|
|
|
- {
|
|
|
- if((strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idxCriterion], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_ThresholdMonitoring]) == 0) ||
|
|
|
- (strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idxCriterion], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_DeltaMonitoring]) == 0) ||
|
|
|
- (strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idxCriterion], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_PeriodicMonitoring]) == 0))
|
|
|
- {
|
|
|
-
|
|
|
- {
|
|
|
- if(strcmp((char*)ShmOCPP20Data->ControllerVariableMonitoring[idxVarMonitoring].variableMonitoring[idxVarMonitoring].type, (char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idxCriterion]))
|
|
|
- {
|
|
|
- strcpy(ShmOCPP20Data->NotifyMonitoringReport.monitor[idxVarMonitoring].component, ShmOCPP20Data->ControllerVariableMonitoring[idxVarMonitoring].
|
|
|
- }
|
|
|
- }*/
|
|
|
- }
|
|
|
-
|
|
|
- if(strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idxCriterion], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_ThresholdMonitoring]) == 0)
|
|
|
- {
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.requestId = ShmOCPP20Data->GetMonitoringReport.requestId;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.tbc = 0;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.seqNo = 0;
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyMonitoringReport.generatedAt);
|
|
|
|
|
|
-
|
|
|
- * TODO:
|
|
|
- * 1. Report component that are ThresholdMonitoring
|
|
|
- */
|
|
|
- }
|
|
|
- else if(strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idxCriterion], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_DeltaMonitoring]) == 0)
|
|
|
- {
|
|
|
-
|
|
|
- * TODO:
|
|
|
- * 1. Report component that are DeltaMonitoring
|
|
|
- */
|
|
|
- }
|
|
|
- else if(strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idxCriterion], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_PeriodicMonitoring]) == 0)
|
|
|
- {
|
|
|
-
|
|
|
- * TODO:
|
|
|
- * 1. Report component that are PeriodicMonitoring
|
|
|
- */
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
-
|
|
|
- * TODO:
|
|
|
- * 1. Process unknown criteria condition
|
|
|
- */
|
|
|
- }
|
|
|
- }
|
|
|
+ sendNotifyMonitoringReportRequest();
|
|
|
|
|
|
ShmOCPP20Data->GetMonitoringReport.requestId = 0;
|
|
|
}
|
|
@@ -16154,19 +16116,20 @@ int handleGetMonitoringReportRequest(char *uuid, char *payload)
|
|
|
}
|
|
|
json_object_put(GetMonitoringReport);
|
|
|
|
|
|
- strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_NotSupported]);
|
|
|
+
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_EmptyResultSet]);
|
|
|
|
|
|
if(cntComponentVariable>0)
|
|
|
{
|
|
|
uint8_t cntTypeSupport = 0;
|
|
|
for(int idx_cv=0; idx_cv < cntComponentVariable; idx_cv++)
|
|
|
{
|
|
|
+ cntTypeSupport = 0;
|
|
|
for(int idx=0; idx < 10; idx++)
|
|
|
{
|
|
|
if((strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].component.name, (char*)ShmOCPP20Data->GetMonitoringReport.componentVariable[idx_cv].component.name)==0) &&
|
|
|
(strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].variable.name, (char*)ShmOCPP20Data->GetMonitoringReport.componentVariable[idx_cv].variable.name)==0))
|
|
|
{
|
|
|
- cntTypeSupport = 0;
|
|
|
if(strlen((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[0]) > 0)
|
|
|
{
|
|
|
for(int idx_cri=0; idx_cri<cntCriteria; idx_cri++)
|
|
@@ -16175,14 +16138,15 @@ int handleGetMonitoringReportRequest(char *uuid, char *payload)
|
|
|
{
|
|
|
if(strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type, MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_ThresholdMonitoring])==0)
|
|
|
{
|
|
|
- memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
- memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
- strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
|
|
|
cntTypeSupport++;
|
|
|
break;
|
|
@@ -16192,14 +16156,15 @@ int handleGetMonitoringReportRequest(char *uuid, char *payload)
|
|
|
{
|
|
|
if(strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type, MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_DeltaMonitoring])==0)
|
|
|
{
|
|
|
- memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
- memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
- strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
|
|
|
cntTypeSupport++;
|
|
|
break;
|
|
@@ -16209,35 +16174,245 @@ int handleGetMonitoringReportRequest(char *uuid, char *payload)
|
|
|
{
|
|
|
if(strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type, MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_PeriodicMonitoring])==0)
|
|
|
{
|
|
|
- memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
- memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
- strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
- ShmOCPP20Data->NotifyMonitoringReport.monitor[cntFoundMonitoringVariable].variableMonitoring[cntTypeSupport].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
|
|
|
cntTypeSupport++;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[cntTypeSupport].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
|
|
|
+ cntTypeSupport++;
|
|
|
}
|
|
|
cntFoundMonitoringVariable++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for(int idx=0; idx < 10; idx++)
|
|
|
+ {
|
|
|
+ if(strlen((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[0]) > 0)
|
|
|
+ {
|
|
|
+ if((strlen((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].component.name)>0) && (strlen((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].variable.name)>0))
|
|
|
+ {
|
|
|
+ int isSameVariableFound = FALSE;
|
|
|
|
|
|
+ for(int idx_cri=0; idx_cri<cntCriteria; idx_cri++)
|
|
|
+ {
|
|
|
+ if(strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idx_cri], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_ThresholdMonitoring]) == 0)
|
|
|
+ {
|
|
|
+ if(strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type, MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_ThresholdMonitoring])==0)
|
|
|
+ {
|
|
|
+ for(int idx_cv=0; idx_cv < 10; idx_cv++)
|
|
|
+ {
|
|
|
+ if((strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name)>0) && (strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name)>0))
|
|
|
+ {
|
|
|
+ if((strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].component.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name) != NULL) &&
|
|
|
+ (strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].variable.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name) != NULL))
|
|
|
+ {
|
|
|
+ isSameVariableFound = TRUE;
|
|
|
+ for(int idx_vm=1; idx_vm < 10; idx_vm++)
|
|
|
+ {
|
|
|
+ if(strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type) == 0)
|
|
|
+ {
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(isSameVariableFound==FALSE)
|
|
|
+ {
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idx_cri], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_DeltaMonitoring]) == 0)
|
|
|
+ {
|
|
|
+ if(strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type, MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_DeltaMonitoring])==0)
|
|
|
+ {
|
|
|
+ for(int idx_cv=0; idx_cv < 10; idx_cv++)
|
|
|
+ {
|
|
|
+ if((strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name)>0) && (strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name)>0))
|
|
|
+ {
|
|
|
+ if((strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].component.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name) != NULL) &&
|
|
|
+ (strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].variable.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name) != NULL))
|
|
|
+ {
|
|
|
+ isSameVariableFound = TRUE;
|
|
|
+ for(int idx_vm=1; idx_vm < 10; idx_vm++)
|
|
|
+ {
|
|
|
+ if(strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type) == 0)
|
|
|
+ {
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(isSameVariableFound==FALSE)
|
|
|
+ {
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(strcmp((char*)ShmOCPP20Data->GetMonitoringReport.monitoringCriteria[idx_cri], MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_PeriodicMonitoring]) == 0)
|
|
|
+ {
|
|
|
+ if(strcmp((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type, MonitoringCriterionEnumTypeStr[MonitoringCriterionEnumType_PeriodicMonitoring])==0)
|
|
|
+ {
|
|
|
+ for(int idx_cv=0; idx_cv < 10; idx_cv++)
|
|
|
+ {
|
|
|
+ if((strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name)>0) && (strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name)>0))
|
|
|
+ {
|
|
|
+ if((strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].component.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name) != NULL) &&
|
|
|
+ (strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].variable.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name) != NULL))
|
|
|
+ {
|
|
|
+ isSameVariableFound = TRUE;
|
|
|
+ for(int idx_vm=1; idx_vm < 10; idx_vm++)
|
|
|
+ {
|
|
|
+ if(strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type) == 0)
|
|
|
+ {
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(isSameVariableFound==FALSE)
|
|
|
+ {
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if((strlen((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].component.name)>0) && (strlen((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].variable.name)>0))
|
|
|
+ {
|
|
|
+ int isSameVariableFound = FALSE;
|
|
|
+ for(int idx_cv=0; idx_cv < 10; idx_cv++)
|
|
|
+ {
|
|
|
+ if((strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name)>0) && (strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name)>0))
|
|
|
+ {
|
|
|
+ if((strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].component.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component.name) != NULL) &&
|
|
|
+ (strstr((char*)ShmOCPP20Data->MonitoringComponentVariable[idx].variable.name, (char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable.name) != NULL))
|
|
|
+ {
|
|
|
+ isSameVariableFound = TRUE;
|
|
|
+ for(int idx_vm=1; idx_vm < 10; idx_vm++)
|
|
|
+ {
|
|
|
+ if(strlen((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type) == 0)
|
|
|
+ {
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[idx_vm].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(isSameVariableFound==FALSE)
|
|
|
+ {
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].component, &ShmOCPP20Data->MonitoringComponentVariable[idx].component, sizeof(struct ComponentType));
|
|
|
+ memcpy(&ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variable, &ShmOCPP20Data->MonitoringComponentVariable[idx].variable, sizeof(struct VariableType));
|
|
|
+
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].id = ShmOCPP20Data->MonitoringComponentVariable[idx].id;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].severity = ShmOCPP20Data->MonitoringComponentVariable[idx].severity;
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].transaction = ShmOCPP20Data->MonitoringComponentVariable[idx].transaction;
|
|
|
+ strcpy((char*)ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].type,(char*)ShmOCPP20Data->MonitoringComponentVariable[idx].type);
|
|
|
+ ShmOCPP20Data->NotifyMonitoringReport.monitor[idx_cv].variableMonitoring[0].value = ShmOCPP20Data->MonitoringComponentVariable[idx].value;
|
|
|
+ strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ cntFoundMonitoringVariable++;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ if(strcmp((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]) != 0)
|
|
|
+ ShmOCPP20Data->GetMonitoringReport.requestId = 0;
|
|
|
|
|
|
-
|
|
|
- * TODO:
|
|
|
- * 1. Response result
|
|
|
- */
|
|
|
- strcpy((char*)ShmOCPP20Data->GetMonitoringReport.Response_status, GenericDeviceModelStatusEnumTypeStr[GenericDeviceModelStatusEnumType_Accepted]);
|
|
|
sendGetMonitoringReportConfirmation(uuid);
|
|
|
|
|
|
return result;
|
|
@@ -21147,7 +21322,7 @@ int initialConfigurationTable(void)
|
|
|
}
|
|
|
|
|
|
DB_getNetworkProfileFromDb();
|
|
|
-
|
|
|
+ DB_variableMonitoringLoadFromDb();
|
|
|
|
|
|
return 0;
|
|
|
}
|