|
@@ -1,5 +1,6 @@
|
|
|
#include "Module_OcppBackend20.h"
|
|
|
#include "define.h"
|
|
|
+//#define TEST_OCPP20
|
|
|
|
|
|
static char *APNAuthenticationEnumTypeStr[] = {
|
|
|
MACROSTR(CHAP),
|
|
@@ -7648,7 +7649,6 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
{
|
|
|
mtrace();
|
|
|
int result = FAIL;
|
|
|
- static uint32_t seqNo[CONNECTOR_QUANTITY] = {0};
|
|
|
char message[1024*20]={0};
|
|
|
char guid[37]={0};
|
|
|
char tempdata[128]={0};
|
|
@@ -7674,24 +7674,24 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
{
|
|
|
if((ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].Index == tempIndex))
|
|
|
{
|
|
|
- memset(&ShmOCPP20Data->TransactionEvent[index], 0x00, sizeof(struct TransactionEvent_20));
|
|
|
-
|
|
|
getNowDatetime(ShmOCPP20Data->TransactionEvent[index].timestamp);
|
|
|
|
|
|
- if((seqNo[index]+1) < INT_MAX)
|
|
|
- seqNo[index]++;
|
|
|
+ if((ShmOCPP20Data->TransactionEvent[index].seqNo + 1) < INT_MAX)
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo++;
|
|
|
else
|
|
|
- seqNo[index] = 0;
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo = 0;
|
|
|
|
|
|
- ShmOCPP20Data->TransactionEvent[index].seqNo = seqNo[index];
|
|
|
ShmOCPP20Data->TransactionEvent[index].offline = (!ShmOCPP20Data->OcppConnStatus?TRUE:FALSE);
|
|
|
|
|
|
ShmOCPP20Data->TransactionEvent[index].evse.id = 0;
|
|
|
ShmOCPP20Data->TransactionEvent[index].evse.connectorId = (gun_index + 1);
|
|
|
|
|
|
-
|
|
|
if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].SystemStatus == SYS_MODE_IDLE)//S_IDLE
|
|
|
{
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].transactionInfo, 0x00, sizeof(struct TransactionType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].idToken, 0x00, sizeof(struct IdTokenType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].meterValue, 0x00, sizeof(struct MeterValueType));
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Started]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Idle]);
|
|
|
|
|
@@ -7720,6 +7720,11 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].SystemStatus == SYS_MODE_CHARGING) //S_CHARGING
|
|
|
{
|
|
|
+ if(strlen((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId) == 0)
|
|
|
+ random_uuid(ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId);
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->TransactionEvent[index].idToken.idToken, "%s", ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].StartUserId);
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Updated]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Charging]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].triggerReason, "%s", TriggerReasonEnumTypeStr[TriggerReasonEnumType_ChargingStateChanged]);
|
|
@@ -7774,16 +7779,13 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
{
|
|
|
if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].Index == tempIndex)
|
|
|
{
|
|
|
- memset(&ShmOCPP20Data->TransactionEvent[index], 0x00, sizeof(struct TransactionEvent_20));
|
|
|
-
|
|
|
getNowDatetime(ShmOCPP20Data->TransactionEvent[index].timestamp);
|
|
|
|
|
|
- if((seqNo[index]+1) < INT_MAX)
|
|
|
- seqNo[index]++;
|
|
|
+ if((ShmOCPP20Data->TransactionEvent[index].seqNo + 1) < INT_MAX)
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo++;
|
|
|
else
|
|
|
- seqNo[index] = 0;
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo = 0;
|
|
|
|
|
|
- ShmOCPP20Data->TransactionEvent[index].seqNo = seqNo[index];
|
|
|
ShmOCPP20Data->TransactionEvent[index].offline = (!ShmOCPP20Data->OcppConnStatus?TRUE:FALSE);
|
|
|
|
|
|
ShmOCPP20Data->TransactionEvent[index].evse.id = 0;
|
|
@@ -7791,6 +7793,10 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
|
|
|
if (ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].SystemStatus == SYS_MODE_IDLE) //S_IDLE
|
|
|
{
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].transactionInfo, 0x00, sizeof(struct TransactionType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].idToken, 0x00, sizeof(struct IdTokenType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].meterValue, 0x00, sizeof(struct MeterValueType));
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Started]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Idle]);
|
|
|
|
|
@@ -7819,6 +7825,11 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].SystemStatus == SYS_MODE_CHARGING) //S_CHARGING
|
|
|
{
|
|
|
+ if(strlen((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId) == 0)
|
|
|
+ random_uuid(ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId);
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->TransactionEvent[index].idToken.idToken, "%s", ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].StartUserId);
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Updated]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Charging]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].triggerReason, "%s", TriggerReasonEnumTypeStr[TriggerReasonEnumType_ChargingStateChanged]);
|
|
@@ -7872,16 +7883,13 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
{
|
|
|
if(ShmSysConfigAndInfo->SysInfo.GbChargingData[index].Index == tempIndex)
|
|
|
{
|
|
|
- memset(&ShmOCPP20Data->TransactionEvent[index], 0x00, sizeof(struct TransactionEvent_20));
|
|
|
-
|
|
|
getNowDatetime(ShmOCPP20Data->TransactionEvent[index].timestamp);
|
|
|
|
|
|
- if((seqNo[index]+1) < INT_MAX)
|
|
|
- seqNo[index]++;
|
|
|
+ if((ShmOCPP20Data->TransactionEvent[index].seqNo + 1) < INT_MAX)
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo++;
|
|
|
else
|
|
|
- seqNo[index] = 0;
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo = 0;
|
|
|
|
|
|
- ShmOCPP20Data->TransactionEvent[index].seqNo = seqNo[index];
|
|
|
ShmOCPP20Data->TransactionEvent[index].offline = (!ShmOCPP20Data->OcppConnStatus?TRUE:FALSE);
|
|
|
|
|
|
ShmOCPP20Data->TransactionEvent[index].evse.id = 0;
|
|
@@ -7889,6 +7897,10 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
|
|
|
if (ShmSysConfigAndInfo->SysInfo.GbChargingData[index].SystemStatus == SYS_MODE_IDLE) //S_IDLE
|
|
|
{
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].transactionInfo, 0x00, sizeof(struct TransactionType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].idToken, 0x00, sizeof(struct IdTokenType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].meterValue, 0x00, sizeof(struct MeterValueType));
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Started]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Idle]);
|
|
|
|
|
@@ -7917,6 +7929,11 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.GbChargingData[index].SystemStatus == SYS_MODE_CHARGING) //S_CHARGING
|
|
|
{
|
|
|
+ if(strlen((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId) == 0)
|
|
|
+ random_uuid(ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId);
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->TransactionEvent[index].idToken.idToken, "%s", ShmSysConfigAndInfo->SysInfo.GbChargingData[index].StartUserId);
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Updated]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Charging]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].triggerReason, "%s", TriggerReasonEnumTypeStr[TriggerReasonEnumType_ChargingStateChanged]);
|
|
@@ -7963,16 +7980,13 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
{
|
|
|
if(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.Index == tempIndex)
|
|
|
{
|
|
|
- memset(&ShmOCPP20Data->TransactionEvent[index], 0x00, sizeof(struct TransactionEvent_20));
|
|
|
-
|
|
|
getNowDatetime(ShmOCPP20Data->TransactionEvent[index].timestamp);
|
|
|
|
|
|
- if((seqNo[index]+1) < INT_MAX)
|
|
|
- seqNo[index]++;
|
|
|
+ if((ShmOCPP20Data->TransactionEvent[index].seqNo + 1) < INT_MAX)
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo++;
|
|
|
else
|
|
|
- seqNo[index] = 0;
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo = 0;
|
|
|
|
|
|
- ShmOCPP20Data->TransactionEvent[index].seqNo = seqNo[index];
|
|
|
ShmOCPP20Data->TransactionEvent[index].offline = (!ShmOCPP20Data->OcppConnStatus?TRUE:FALSE);
|
|
|
|
|
|
ShmOCPP20Data->TransactionEvent[index].evse.id = 0;
|
|
@@ -7980,6 +7994,10 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
|
|
|
if (ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.SystemStatus == SYS_MODE_IDLE) //S_IDLE
|
|
|
{
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].transactionInfo, 0x00, sizeof(struct TransactionType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].idToken, 0x00, sizeof(struct IdTokenType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].meterValue, 0x00, sizeof(struct MeterValueType));
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Started]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Idle]);
|
|
|
|
|
@@ -8008,6 +8026,11 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.SystemStatus == SYS_MODE_CHARGING) //S_CHARGING
|
|
|
{
|
|
|
+ if(strlen((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId) == 0)
|
|
|
+ random_uuid(ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId);
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->TransactionEvent[index].idToken.idToken, "%s", ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.StartUserId);
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Updated]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Charging]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].triggerReason, "%s", TriggerReasonEnumTypeStr[TriggerReasonEnumType_ChargingStateChanged]);
|
|
@@ -8060,16 +8083,13 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
{
|
|
|
if(ShmSysConfigAndInfo->SysInfo.AcChargingData[index].Index == tempIndex)
|
|
|
{
|
|
|
- memset(&ShmOCPP20Data->TransactionEvent[index], 0x00, sizeof(struct TransactionEvent_20));
|
|
|
-
|
|
|
getNowDatetime(ShmOCPP20Data->TransactionEvent[index].timestamp);
|
|
|
|
|
|
- if((seqNo[index]+1) < INT_MAX)
|
|
|
- seqNo[index]++;
|
|
|
+ if((ShmOCPP20Data->TransactionEvent[index].seqNo + 1) < INT_MAX)
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo++;
|
|
|
else
|
|
|
- seqNo[index] = 0;
|
|
|
+ ShmOCPP20Data->TransactionEvent[index].seqNo = 0;
|
|
|
|
|
|
- ShmOCPP20Data->TransactionEvent[index].seqNo = seqNo[index];
|
|
|
ShmOCPP20Data->TransactionEvent[index].offline = (!ShmOCPP20Data->OcppConnStatus?TRUE:FALSE);
|
|
|
|
|
|
ShmOCPP20Data->TransactionEvent[index].evse.id = 0;
|
|
@@ -8077,6 +8097,10 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
|
|
|
if (ShmSysConfigAndInfo->SysInfo.AcChargingData[index].SystemStatus == SYS_MODE_IDLE) //SYS_MODE_IDLE
|
|
|
{
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].transactionInfo, 0x00, sizeof(struct TransactionType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].idToken, 0x00, sizeof(struct IdTokenType));
|
|
|
+ memset(&ShmOCPP20Data->TransactionEvent[index].meterValue, 0x00, sizeof(struct MeterValueType));
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Started]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Idle]);
|
|
|
|
|
@@ -8105,6 +8129,11 @@ int sendTransactionEventRequest(int gun_index)
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.AcChargingData[index].SystemStatus == SYS_MODE_CHARGING) //S_CHARGING
|
|
|
{
|
|
|
+ if(strlen((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId) == 0)
|
|
|
+ random_uuid(ShmOCPP20Data->TransactionEvent[index].transactionInfo.transactionId);
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->TransactionEvent[index].idToken.idToken, "%s", ShmSysConfigAndInfo->SysInfo.AcChargingData[index].StartUserId);
|
|
|
+
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].eventType, "%s", TransactionEventEnumTypeStr[TransactionEventEnumType_Updated]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].transactionInfo.chargingState, "%s", ChargingStateEnumTypeStr[ChargingStateEnumType_Charging]);
|
|
|
sprintf((char*)ShmOCPP20Data->TransactionEvent[index].triggerReason, "%s", TriggerReasonEnumTypeStr[TriggerReasonEnumType_ChargingStateChanged]);
|
|
@@ -15102,6 +15131,9 @@ int GetOcppServerURL()
|
|
|
if((ShmSysConfigAndInfo->SysConfig.OcppServerURL != NULL) && (strcmp((const char *)ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") != 0) )
|
|
|
{
|
|
|
memcpy(urlStr, ShmSysConfigAndInfo->SysConfig.OcppServerURL, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.OcppServerURL));
|
|
|
+#ifdef TEST_OCPP20
|
|
|
+ sprintf(urlStr, "ws://172.17.20.19:8080/"); // For test
|
|
|
+#endif
|
|
|
if(yuarel_parse(&url, urlStr) != -1)
|
|
|
{
|
|
|
sprintf(OcppProtocol, "%s", url.scheme);
|
|
@@ -15110,7 +15142,16 @@ int GetOcppServerURL()
|
|
|
if(url.path == NULL)
|
|
|
OcppTempPath[0] = '\0';
|
|
|
else
|
|
|
- sprintf(OcppTempPath, "%s", url.path);
|
|
|
+ {
|
|
|
+ if(url.path[strlen(url.path)-1] != '/')
|
|
|
+ {
|
|
|
+ sprintf(OcppTempPath, "%s/", url.path);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sprintf(OcppTempPath, "%s", url.path);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if(url.port == 0)
|
|
|
{
|
|
@@ -15190,8 +15231,9 @@ int GetOcppPath()
|
|
|
{
|
|
|
strcpy(OcppPath,"");
|
|
|
}
|
|
|
-
|
|
|
- //sprintf(OcppPath,"/AWLU770001D1P0D19520001A0"); // For test
|
|
|
+#ifdef TEST_OCPP20
|
|
|
+ sprintf(OcppPath,"/AWLU770001D1P0D19520001A0"); // For test
|
|
|
+#endif
|
|
|
return result;
|
|
|
}
|
|
|
|