Эх сурвалжийг харах

2020.06.15 / Folus Wen

Actions:
1. EVSE/Modularization/ocppfiles/MessageHandler.h move OCPP variable enum from MessageHandler.c
2. EVSE/Modularization/ocppfiles/Module_OcppBackend.h create contant QUEUE_MESSAGE_LENGTH for queue operation.
3. EVSE/Modularization/ocppfiles/SystemLogMessage.c add parameter "-n" reduce log line quantity.
4. EVSE/Modularization/ocppfiles/Module_OcppBackend.c queue related operation buffer change to constant QUEUE_MESSAGE_LENGTH.
5. EVSE/Modularization/ocppfiles/MessageHandler.c meterValues、startTransaction、stopTransaction add 3 phase info for AC 3 phase model.
6. EVSE/Modularization/ocppfiles/MessageHandler.c sendMeterValuesRequest() context type get from parameter.
7. EVSE/Modularization/ocppfiles/MessageHandler.c HeartbeatInterval default setting value change to 20.
8. EVSE/Modularization/ocppfiles/MessageHandler.c MeterValueSampleInterval default setting value change to 30.
9. EVSE/Modularization/ocppfiles/MessageHandler.c setKeyValue() add limit condition(>=10) for HeartbeatInterval、MeterValueSampleInterval、ClockAlignedDataInterval configuration.

Files:
1. As follow commit history

Image version: D0.00.XX.XXXX.XX
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 4 жил өмнө
parent
commit
16e4f98219

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 223 - 448
EVSE/Modularization/ocppfiles/MessageHandler.c


+ 426 - 33
EVSE/Modularization/ocppfiles/MessageHandler.h

@@ -1,6 +1,420 @@
 #ifndef MessageHandler_H
 #define MessageHandler_H
 
+//===================================
+//	Define CP State constant
+//===================================
+#define CP_STATE_UNKNOWN			0
+#define CP_STATE_A					1
+#define CP_STATE_B					2
+#define CP_STATE_C					3
+#define CP_STATE_D					4
+#define CP_STATE_E					5
+#define CP_STATE_F					6
+
+//==========================================
+// Init all Enumeration & Mapping String
+//==========================================
+#define MACROSTR(k) #k
+
+/*ChargePointErrorCode*/
+typedef enum {
+	ConnectorLockFailure,
+	EVCommunicationError,
+	GroundFailure,
+	HighTemperature,
+	InternalError,
+	LocalListConflict,
+	NoError,
+	OtherError,
+	OverCurrentFailure,
+	OverVoltage,
+	PowerMeterFailure,
+	PowerSwitchFailure,
+	ReaderFailure,
+	ResetFailure,
+	UnderVoltage,
+	WeakSignal
+} ChargePointErrorCode;
+
+/*ChargePointStatus*/
+typedef enum {
+	Available =0,
+	Preparing,
+	Charging,
+	SuspendedEVSE,
+	SuspendedEV,
+	Finishing,
+	Reserved,
+	Unavailable,
+	Faulted
+}  ChargePointStatus;
+
+/*AvailabilityType*/
+typedef enum {
+	RegistrationStatus_Accepted,
+	RegistrationStatus_Pending,
+	RegistrationStatus_Rejected
+} RegistrationStatus;
+
+/*AvailabilityType*/
+typedef enum {
+	Inoperative,
+	Operative
+} AvailabilityType;
+
+/*AvailabilityStatus*/
+typedef enum {
+	Accepted,
+	Rejected,
+	Scheduled
+}  AvailabilityStatus;
+
+/*ConfigurationStatus*/
+typedef enum {
+	ConfigurationStatus_Accepted,
+	ConfigurationStatus_Rejected,
+	RebootRequired,
+	NotSupported
+}  ConfigurationStatus;
+
+/*ClearCacheStatus*/
+typedef enum {
+	ClearCacheStatus_Accepted,
+	ClearCacheStatus_Rejected
+}  ClearCacheStatus;
+
+/*ChargingProfilePurposeType*/
+typedef enum {
+	ChargePointMaxProfile,
+	TxDefaultProfile,
+	TxProfile
+}  ChargingProfilePurposeType;
+
+/*ChargingProfileStatus*/
+typedef enum {
+	ChargingProfileStatus_Accepted,
+	ChargingProfileStatus_Rejected,
+	ChargingProfileStatus_NotSupported
+}  ChargingProfileStatus;
+
+/*ClearChargingProfileStatus*/
+typedef enum {
+	ClearChargingProfileStatus_Accepted,
+	ClearChargingProfileStatus_Unknown
+}  ClearChargingProfileStatus;
+
+/*GetCompositeScheduleStatus*/
+typedef enum {
+	GetCompositeScheduleStatus_Accepted,
+	GetCompositeScheduleStatus_Rejected
+}  GetCompositeScheduleStatus;
+
+/*ChargingRateUnitType*/
+typedef enum {
+	ChargingRateUnitType_W,
+	ChargingRateUnitType_A
+}  ChargingRateUnitType;
+
+/*AuthorizationStatus*/
+typedef enum {
+	AuthorizationStatus_Accepted ,
+	AuthorizationStatus_Blocked ,
+	AuthorizationStatus_Expired ,
+	AuthorizationStatus_Invalid ,
+	AuthorizationStatus_ConcurrentTx
+}  AuthorizationStatus;
+
+/*UpdateType*/
+typedef enum {
+	Differential  ,
+	Full
+}  UpdateType;
+
+/*UpdateStatus*/
+typedef enum {
+	UpdateStatus_Accepted   ,
+	UpdateStatus_Failed ,
+	UpdateStatus_NotSupported ,
+	UpdateStatus_VersionMismatch
+}  UpdateStatus;
+
+/*RemoteStartStopStatus*/
+typedef enum {
+	RemoteStartStopStatus_Accepted,
+	RemoteStartStopStatus_Rejected
+
+}  RemoteStartStopStatus;
+
+/*ReservationStatus*/
+typedef enum {
+	ReservationStatus_Accepted,
+	ReservationStatus_Faulted,
+	ReservationStatus_Occupied,
+	ReservationStatus_Rejected,
+	ReservationStatus_Unavailable
+
+}  ReservationStatus;
+
+/*ResetType*/
+typedef enum {
+	Hard,
+	Soft
+}  ResetType;
+
+/*ResetStatus*/
+typedef enum {
+	ResetStatus_Accepted,
+	ResetStatus_Rejected
+}  ResetStatus;
+
+/*DiagnosticsStatus*/
+typedef enum {
+	DiagnosticsStatus_Idle,
+	DiagnosticsStatus_Uploaded,
+	DiagnosticsStatus_UploadFailed,
+	DiagnosticsStatus_Uploading
+}  DiagnosticsStatus;
+
+/*FirmwareStatus*/
+typedef enum {
+	FirmwareStatus_Downloaded,
+	FirmwareStatus_DownloadFailed,
+	FirmwareStatus_Downloading,
+	FirmwareStatus_Idle,
+	FirmwareStatus_InstallationFailed,
+	FirmwareStatus_Installing,
+	FirmwareStatus_Installed
+}  FirmwareStatus;
+
+/*MessageTrigger*/
+typedef enum {
+	BootNotification,
+	DiagnosticsStatusNotification,
+	FirmwareStatusNotification,
+	Heartbeat,
+	MeterValues,
+	StatusNotification
+}   MessageTrigger;
+
+/*TriggerMessageStatus*/
+typedef enum {
+	TriggerMessageStatus_Accepted ,
+	TriggerMessageStatus_Rejected ,
+	TriggerMessageStatus_NotImplemented
+}   TriggerMessageStatus;
+
+/*UnlockStatus*/
+typedef enum {
+	Unlocked,
+	UnlockFailed,
+	UnlockStatus_NotSupported
+}   UnlockStatus;
+
+/*StopTransactionReason*/
+typedef enum {
+	EmergencyStop,
+	EVDisconnected,
+	HardReset,
+	Local,
+	Other,
+	PowerLoss,
+	Reboot,
+	Remote,
+	SoftReset,
+	UnlockCommand,
+	DeAuthorized
+}   StopTransactionReason;
+
+/*CancelReservationStatus*/
+typedef enum {
+	CancelReservationStatus_Accepted,
+	CancelReservationStatus_Rejected
+}   CancelReservationStatus;
+
+/*ReadingContext*/
+typedef enum {
+	ReadingContext_Interruption_Begin,
+	ReadingContext_Interruption_End,
+	ReadingContext_Other,
+	ReadingContext_Sample_Clock,
+	ReadingContext_Sample_Periodic ,
+	ReadingContext_Transaction_Begin ,
+	ReadingContext_Transaction_End,
+	ReadingContext_Trigger
+}  ReadingContext;
+
+/*ValueFormat*/
+typedef enum {
+	Raw,
+	SignedData
+}  ValueFormat;
+
+/*Measurand*/
+typedef enum {
+	Current_Export ,
+	Current_Import,
+	Current_Offered,
+	Energy_Active_Export_Register,
+	Energy_Active_Import_Register,
+	Energy_Reactive_Export_Register,
+	Energy_Reactive_Import_Register,
+	Energy_Active_Export_Interval,
+	Energy_Active_Import_Interval,
+	Energy_Reactive_Export_Interval,
+	Energy_Reactive_Import_Interval,
+	Frequency,
+	Power_Active_Export ,
+	Power_Active_Import,
+	Power_Factor,
+	Power_Offered,
+	Power_Reactive_Export,
+	Power_Reactive_Import,
+	RPM,
+	SoC,
+	Temperature ,
+	Voltage
+}  Measurand;
+
+/*Location*/
+typedef enum {
+	Location_Body,
+	Location_Cable,
+	Location_EV,
+	Location_Inlet ,
+	Location_Outlet
+}  Location;
+
+/*Phase*/
+typedef enum {
+	L1,
+	L2,
+	L3,
+	N,
+	L1_N,
+	L2_N,
+	L3_N,
+	L1_L2,
+	L2_L3,
+	L3_L1
+}  Phase;
+
+/*UnitOfMeasure*/
+typedef enum {
+	UnitOfMeasure_Wh,
+	UnitOfMeasure_kWh ,
+	UnitOfMeasure_varh ,
+	UnitOfMeasure_kvarh ,
+	UnitOfMeasure_W ,
+	UnitOfMeasure_kW ,
+	UnitOfMeasure_VA ,
+	UnitOfMeasure_kVA ,
+	UnitOfMeasure_var ,
+	UnitOfMeasure_kvar ,
+	UnitOfMeasure_A ,
+	UnitOfMeasure_V ,
+	UnitOfMeasure_Celsius ,
+	UnitOfMeasure_Fahrenheit ,
+	UnitOfMeasure_K ,
+	UnitOfMeasure_Percent
+
+}  UnitOfMeasure;
+
+enum LocalAuthListManagementProfile{
+	LocalAuthListEnabled=0,
+	LocalAuthListMaxLength,
+	SendLocalListMaxLength,
+	_LocalAuthListManagementProfile_CNT
+};
+
+enum ReservationProfile{
+	ReserveConnectorZeroSupported
+};
+
+enum SmartChargingProfile{
+	ChargeProfileMaxStackLevel,
+	ChargingScheduleAllowedChargingRateUnit,
+	ChargingScheduleMaxPeriods,
+	ConnectorSwitch3to1PhaseSupported,
+	MaxChargingProfilesInstalled
+};
+
+enum ChargerSystemStatus{
+	ChargerSystemStatus_Booting,
+	ChargerSystemStatus_Idle,
+	ChargerSystemStatus_Authorizing,
+	ChargerSystemStatus_Preparing,
+	ChargerSystemStatus_Charging,
+	ChargerSystemStatus_Terminating,
+	ChargerSystemStatus_Alarm,
+	ChargerSystemStatus_Fault
+};
+
+enum GetConfigurationKey {
+	GetConfiguration_AllowOfflineTxForUnknownId=0,
+	GetConfiguration_AuthorizationCacheEnabled,
+	GetConfiguration_AuthorizeRemoteTxRequests,
+	GetConfiguration_BlinkRepeat,
+	GetConfiguration_ClockAlignedDataInterval,
+	GetConfiguration_ConnectionTimeOut,
+	GetConfiguration_GetConfigurationMaxKeys,
+	GetConfiguration_HeartbeatInterval,
+	GetConfiguration_LightIntensity,
+	GetConfiguration_LocalAuthorizeOffline,
+	GetConfiguration_LocalPreAuthorize,
+	GetConfiguration_MaxEnergyOnInvalidId,
+	GetConfiguration_MeterValuesAlignedData,
+	GetConfiguration_MeterValuesAlignedDataMaxLength,
+	GetConfiguration_MeterValuesSampledData,
+	GetConfiguration_MeterValuesSampledDataMaxLength,
+	GetConfiguration_MeterValueSampleInterval,
+	GetConfiguration_MinimumStatusDuration,
+	GetConfiguration_NumberOfConnectors,
+	GetConfiguration_ResetRetries,
+	GetConfiguration_ConnectorPhaseRotation,
+	GetConfiguration_ConnectorPhaseRotationMaxLength,
+	GetConfiguration_StopTransactionOnEVSideDisconnect,
+	GetConfiguration_StopTransactionOnInvalidId,
+	GetConfiguration_StopTxnAlignedData,
+	GetConfiguration_StopTxnAlignedDataMaxLength,
+	GetConfiguration_StopTxnSampledData,
+	GetConfiguration_StopTxnSampledDataMaxLength,
+	GetConfiguration_SupportedFeatureProfiles,
+	GetConfiguration_SupportedFeatureProfilesMaxLength,
+	GetConfiguration_TransactionMessageAttempts,
+	GetConfiguration_TransactionMessageRetryInterval,
+	GetConfiguration_UnlockConnectorOnEVSideDisconnect,
+	GetConfiguration_WebSocketPingInterval,
+	GetConfiguration_LocalAuthListEnabled,
+	GetConfiguration_LocalAuthListMaxLength,
+	GetConfiguration_SendLocalListMaxLength,
+	GetConfiguration_ReserveConnectorZeroSupported,
+	GetConfiguration_ChargeProfileMaxStackLevel,
+	GetConfiguration_ChargingScheduleAllowedChargingRateUnit,
+	GetConfiguration_ChargingScheduleMaxPeriods,
+	GetConfiguration_ConnectorSwitch3to1PhaseSupported,
+	GetConfiguration_MaxChargingProfilesInstalled,
+};
+
+enum FIRMWARE_NOTIFICATION_STATUS
+{
+	FIRMWARE_STATUS_DOWNLOADED = 0,
+	FIRMWARE_STATUS_DOWNLOAD_DAILED = 1,
+	FIRMWARE_STATUS_DOWNLOADING = 2,
+	FIRMWARE_STATUS_IDLE = 3,
+	FIRMWARE_STATUS_INSTALLATION_FAILED =4,
+	FIRMWARE_STATUS_INSTALLING = 5,
+	FIRMWARE_STATUS_INSTALLED = 6
+};
+
+enum DIAGNOSTIC_NOTIFICATION_STATUS
+{
+	DIAGNOSTIC_STATUS_IDLE = 0,
+	DIAGNOSTIC_STATUS_UPLOADED = 1,
+	DIAGNOSTIC_STATUS_UPLOAD_FAIL = 2,
+	DIAGNOSTIC_STATUS_UPLOADING =3
+};
+
 struct StructPeriod
 {
 	int		StartPeriod;
@@ -15,7 +429,6 @@ struct StructProfile
 	struct StructPeriod	Period[10];
 };
 
-
 //===============================================
 // Common routine
 //===============================================
@@ -36,7 +449,7 @@ int sendHeartbeatRequest(int gun_index);
 int sendStartTransactionRequest(int gun_index);
 int sendStatusNotificationRequest(int gun_index);
 int sendStopTransactionRequest(int gun_index);
-int sendMeterValuesRequest(int gun_index);
+int sendMeterValuesRequest(int gun_index, ReadingContext dataType);
 
 //==========================================
 // send confirm routine
@@ -136,37 +549,17 @@ void InitialSystemValue(void);
 void checkTempStopTransaction(int gun_index);
 void storeTempStopTransaction(int gun_index);
 
- //===============================================
- // sqlite related routine
- //===============================================
- int SettingChargingRecord(int target, int transactionId);
- int addBuff(int gun_idx, int user_id, int cmd_sn);
- void OCPP_getListVerion();
- int OCPP_cleanLocalList();
- int OCPP_addLocalList(int version, char *idTag, char *parentTage, char *expiryDate, char *status);
- int OCPP_addLocalList_1(int version, char *idTag, char *parentTage, char *expiryDate, char *status);
- void OCPP_getIdTag(char idTag[]);
- void OCPP_deleteIdTag(char idTag[]);
-
-
-enum FIRMWARE_NOTIFICATION_STATUS
-{
-	FIRMWARE_STATUS_DOWNLOADED = 0,
-	FIRMWARE_STATUS_DOWNLOAD_DAILED = 1,
-	FIRMWARE_STATUS_DOWNLOADING = 2,
-	FIRMWARE_STATUS_IDLE = 3,
-	FIRMWARE_STATUS_INSTALLATION_FAILED =4,
-	FIRMWARE_STATUS_INSTALLING = 5,
-	FIRMWARE_STATUS_INSTALLED = 6
-};
-
-enum DIAGNOSTIC_NOTIFICATION_STATUS
-{
-	DIAGNOSTIC_STATUS_IDLE = 0,
-	DIAGNOSTIC_STATUS_UPLOADED = 1,
-	DIAGNOSTIC_STATUS_UPLOAD_FAIL = 2,
-	DIAGNOSTIC_STATUS_UPLOADING =3
-};
+//===============================================
+// sqlite related routine
+//===============================================
+int SettingChargingRecord(int target, int transactionId);
+int addBuff(int gun_idx, int user_id, int cmd_sn);
+void OCPP_getListVerion();
+int OCPP_cleanLocalList();
+int OCPP_addLocalList(int version, char *idTag, char *parentTage, char *expiryDate, char *status);
+int OCPP_addLocalList_1(int version, char *idTag, char *parentTage, char *expiryDate, char *status);
+void OCPP_getIdTag(char idTag[]);
+void OCPP_deleteIdTag(char idTag[]);
 
 
 #endif

+ 10 - 10
EVSE/Modularization/ocppfiles/Module_OcppBackend.c

@@ -200,7 +200,7 @@ static int OCPP16Callback(struct lws *wsi, enum lws_callback_reasons reason, voi
 			DEBUG_INFO("LWS_CALLBACK_CLIENT_ESTABLISHED\n");
 
 			char frontUUID[100] ={0};
-			char frontData[1200] ={0};
+			char frontData[QUEUE_MESSAGE_LENGTH] ={0};
 			int queueNotEmpty = FALSE;
 
 			//connected
@@ -450,7 +450,7 @@ int showfront(char *uuid, char *data)
 {
 	FILE *fp;
 	int result = FALSE; // 1: TRUE  0:FALSE
-	char str[1200]={0};
+	char str[QUEUE_MESSAGE_LENGTH]={0};
 	char sstr[50]={ 0 };//sstr[200]={ 0 };
 	int c = 0;
 	char *loc;
@@ -501,7 +501,7 @@ int showfront(char *uuid, char *data)
 		return FALSE;
 	}
 
-	if( fgets (str, 1200, fp)!=NULL ) {
+	if( fgets (str, QUEUE_MESSAGE_LENGTH, fp)!=NULL ) {
 		/* writing content to stdout */
 		//DEBUG_INFO("str=%s",str);
 		if ((str[0] == '\n')||(strcmp(str,"")==0))
@@ -677,7 +677,7 @@ int delq()
 	}
 	else
 	{
-		char buf[1200]={0};
+		char buf[QUEUE_MESSAGE_LENGTH]={0};
 
 		int i = 0;
 		//DEBUG_INFO("Orignal File is not NULL\n");
@@ -766,7 +766,7 @@ int showqueue()
 	}
 
 	FILE *fp = fopen("/Storage/OCPP/TransactionRelatedQueue", "r");
-	char line[1200]={0};
+	char line[QUEUE_MESSAGE_LENGTH]={0};
 	// check if file exist (and you can open it) or not
 	if (fp == NULL) {
 		DEBUG_INFO("can open file TransactionRelatedQueue!");
@@ -796,8 +796,8 @@ int sentqueue(){
 	int IsStopTransaction = FALSE;
 	//int IsconnectorIdNULL = FALSE;
 	//int IsIdtagNULL = FALSE;
-	char str[1200]={0};
-	char strcomposite[1200]={0};
+	char str[QUEUE_MESSAGE_LENGTH]={0};
+	char strcomposite[QUEUE_MESSAGE_LENGTH]={0};
 	char rmFileCmd[100]={0};
 	char connectorStr[2]={0};
 	struct stat stats;
@@ -834,7 +834,7 @@ int sentqueue(){
 		return FALSE;
 	}
 
-	if( fgets (str, 1200, fp)!=NULL ) {
+	if( fgets (str, QUEUE_MESSAGE_LENGTH, fp)!=NULL ) {
 
 		//---- writing content to stdout ---//
 
@@ -1054,7 +1054,7 @@ int sentqueue(){
 void* processTransactionQueue(void* data)
 {
 	char frontUUID[100] ={0};
-	char frontData[1200/*1024*4*/] ={0};
+	char frontData[QUEUE_MESSAGE_LENGTH/*1024*4*/] ={0};
 	int queueNotEmpty = FALSE;
 
 	while(1)
@@ -1158,7 +1158,7 @@ void* processWatchdog()
 void CheckTransactionPacket(char *uuid)
 {
 	char frontUUID[100]={0};
-	char frontData[1200]={0};
+	char frontData[QUEUE_MESSAGE_LENGTH]={0};
 	int queueNotEmpty = FALSE;
 	int cmpResult = 0;
 

+ 2 - 0
EVSE/Modularization/ocppfiles/Module_OcppBackend.h

@@ -72,6 +72,8 @@
 #define QUEUE_OPERATION_SENT		3
 #define QUEUE_OPERATION_ADD			4
 #define QUEUE_OPERATION_STORE		5
+#define QUEUE_MESSAGE_LENGTH		3584
+
 
 extern void CheckSystemValue(void);
 extern int FirstHeartBeatResponse(void);

+ 2 - 2
EVSE/Modularization/ocppfiles/SystemLogMessage.c

@@ -18,7 +18,7 @@ int StoreLogMsg(const char *fmt, ...)
 	memset(Buf,0,sizeof(Buf));
 	CurrentTime = time(NULL);
 	tm=localtime(&CurrentTime);
-	sprintf(Buf,"echo \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >>  /Storage/OCPP/[%04d.%02d]SystemLog",
+	sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >>  /Storage/OCPP/[%04d.%02d]SystemLog",
 			tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,
 			buffer,
 			tm->tm_year+1900,tm->tm_mon+1);
@@ -49,7 +49,7 @@ int StoreOcppMsg(const char *fmt, ...)
 	memset(Buf,0,sizeof(Buf));
 	CurrentTime = time(NULL);
 	tm=localtime(&CurrentTime);
-	sprintf(Buf,"echo \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >>  /Storage/OCPP/[%04d.%02d]OcppMessage",
+	sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >>  /Storage/OCPP/[%04d.%02d]OcppMessage",
 			tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,
 			buffer,
 			tm->tm_year+1900,tm->tm_mon+1);

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно