/* * Module_PowerSharing.h * * Created on: 2020/12/07 * Author: foluswen */ #ifndef MODULE_POWERSHARING_H_ #define MODULE_POWERSHARING_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "define.h" //#define DEBUG #define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args) #define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args) #define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args) #define DEBUG_INFO_CLIENT(format, args...) StoreLogMsgClient("[%s:%d][%s][Info] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args) #define DEBUG_WARN_CLIENT(format, args...) StoreLogMsgClient("[%s:%d][%s][Warn] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args) #define DEBUG_ERROR_CLIENT(format, args...) StoreLogMsgClient("[%s:%d][%s][Error] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args) #define is_error(ptr) ((unsigned long)ptr > (unsigned long)-4000L) #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0])) #define PASS 1 #define FAIL -1 #define ON 1 #define OFF 0 #define YES 1 #define NO 0 #define LISTEN_PORT_TCP 118 #define CONNECTION_LIMIT 5 #define TIMEOUT_SPEC_HEARTBEAT 180 #define INTERVAL_SPEC_CHECK_CAPACITY 10 #define INTERVAL_SPEC_POLLING_CMD 1 #define SHARE_MIN_AC 6 #define SHARE_MIN_DC 6 #define ShmPowerShargingKey LISTEN_PORT_TCP+8000 enum SHARING_COMMAND { SHARING_CMD_GET_STATUS=0x01, SHARING_CMD_SET_CAPACITY=0x02, SHARING_CMD_CONNECTION_FULL=0xfd, SHARING_CMD_CHKSUM_ERROR=0xfe, SHARING_CMD_UNKNOWN=0xff }; enum POWERSHARING_TIMER_IDX { POWERSHARING_TMR_IDX_HEARTBEAT, POWERSHARING_TMR_IDX_GET_STATUS, POWERSHARING_TMR_IDX_SET_CAPACITY, POWERSHARING_TMR_IDX_CNT }; enum GUN_TYPE { GUN_TYPE_UNKNOWN=0, GUN_TYPE_CHAdeMO, GUN_TYPE_CCS, GUN_TYPE_GBT, GUN_TYPE_DO, GUN_TYPE_AC }; enum CONNECTOR_TYPE { CONNECTOR_TYPE_AC=0, CONNECTOR_TYPE_AC_THREE, CONNECTOR_TYPE_DC }; struct Message { int size; uint8_t buffer[2048]; }; typedef struct CONNECTOR_INFO { uint8_t connectorType; uint16_t availableSharingCurrent; // Each connector available sharing current, resolution: 1A uint16_t presentOutputCurrent; // Each connector preset output current, resolution: 1A uint16_t SOC; // Each connector preset SOC, resolution: 0.1% uint16_t remindTime; // Each connector remind charging time, resolution: 1min struct timespec tmrCheckCapacity; // Each connector check capacity timer uint8_t isGunConnected:1; // Each connection gun connected flag }Connector_Info; struct CONNECTION_INFO { int socketFd; // Socket file description int connectorCount; // Each connection connector count Connector_Info connectorInfo[4]; // Connector info struct timespec timer[POWERSHARING_TMR_IDX_CNT]; uint8_t isSocketConnected:1; // Each connection socket connected flag }; struct POWER_SHARING { uint8_t connectedConnectionQty; uint8_t connectedConnectorQty; int32_t onHandCurrent; struct CONNECTION_INFO Connection_Info[CONNECTION_LIMIT]; uint8_t isDetectNewConnected:1; }; #endif /* MODULE_POWERSHARING_H_ */