/* * Config.h * * Created on: 2019年4月23日 * Author: foluswen */ #ifndef CONFIG_H_ #define CONFIG_H_ //------------------------------------------------------------------------------ #include //------------------------------------------------------------------------------ //Dispenser simulation ev signal //------------------------------------------------------------------------------ #define SIMULATION 0 //------------------------------------------------------------------------------ //independent common share memory key //------------------------------------------------------------------------------ #define ShmCsuMeterKey 2001 #define ShmCommonKey 2002 //------------------------------------------------------------------------------ #define TOTAL_QUANTITY_GUN 4 //Max Count //------------------------------------------------------------------------------ //system runtime state //------------------------------------------------------------------------------ #define MODE_BOOT (0) #define MODE_IDLE (1) #define MODE_AUTHORIZING (2) #define MODE_REASSIGN_CHECK (3) #define MODE_REASSIGN (4) #define MODE_PRECHARGE (5) #define MODE_PREPARE_FOR_EV (6) #define MODE_PREPARE_FOR_EVSE (7) #define MODE_CHARGING (8) #define MODE_TERMINATING (9) #define MODE_COMPLETE (10) #define MODE_ALARM (11) #define MODE_FAULT (12) #define MODE_RESERVATION (13) #define MODE_BOOKING (14) #define MODE_MAINTAIN (15) #define MODE_DEBUG (16) #define MODE_CCS_PRECHARGE_STEP0 (17) // ready for ccs precharge processing, For D+ relay to precharge relay #define MODE_CCS_PRECHARGE_STEP1 (18) // waitting for ev board inform to enter to charging, For precharge relay to D+ relay #define MODE_UPDATE (19) #define GFD_WAIT (0) #define GFD_PASS (1) #define GFD_FAIL (2) #define GFD_WARNING (3) #define PRECHARGE_WAIT (0) #define PRECHARGE_READY (1) #define PRECHARGE_PRERELAY_PASS (2) #define PRECHARGE_CHARELAY_PASS (3) #define BOOTTING (0) #define BOOT_COMPLETE (1) #define POWER_SAVE_MODE (1) //------------------------------------------------------------------------------ //common define //------------------------------------------------------------------------------ #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0])) #define PASS (1) #define FAIL (-1) #define START (1) #define STOP (0) #define YES (1) #define NO (0) #define NORMAL (0) #define ABNORMAL (1) #define EQUAL (0) #define NO_DEFINE (255) #define MtdBlockSize (0x300000) //(0x600000) //------------------------------------------------------------------------------ //gun temperatures //------------------------------------------------------------------------------ #define GUN_OTP_VALUE (150) #define GUN_OTP_RECOVERY (140) #define UNDEFINED_TEMP (255) #define TEMP_BOUNDARY (200) #define WARN_LV_NL (0) //normal state #define WARN_LV_WARN (1) #define WARN_LV_ER (2) //emergency state //------------------------------------------------------------------------------ #define DC_CONNECTOR_COUNT 2 enum _SYSTEM_STATUS { S_BOOTING = 0, S_IDLE, S_AUTHORIZING, S_REASSIGN_CHECK, S_REASSIGN, S_PREPARNING, S_PREPARING_FOR_EV, S_PREPARING_FOR_EVSE, S_CHARGING, S_TERMINATING, S_COMPLETE, S_ALARM, S_FAULT, S_RESERVATION, S_BOOKING, S_MAINTAIN, S_DEBUG, S_CCS_PRECHARGE_ST0, S_CCS_PRECHARGE_ST1, S_UPDATE, S_NONE, }; enum _AC_SYSTEM_STATUS { AC_SYS_NONE = 0, AC_SYS_A, AC_SYS_B, AC_SYS_C, AC_SYS_D, AC_SYS_E }; enum _GUN_TYPE { _Type_Chademo = 0, _Type_CCS_2, _Type_GB, _Type_AC, }; enum _CCS_GUN_TYPE { _TYPE_CCS_NONE = 0, _TYPE_CCS1_Natural, _TYPE_CCS1_Liquid, _TYPE_CCS2_Natural, _TYPE_CCS2_Liquid, }; enum _LCM_INDEX { _LCM_INIT = 0x00, _LCM_IDLE = 0x01, _LCM_AUTHORIZING = 0x02, _LCM_AUTHORIZ_COMP = 0x03, _LCM_AUTHORIZ_FAIL = 0x04, _LCM_WAIT_FOR_PLUG = 0x05, _LCM_PRE_CHARGE = 0x06, _LCM_CHARGING = 0x07, _LCM_COMPLETE = 0x08, _LCM_FIX = 0x09, #ifdef DD360Audi _LCM_SELECT_GUN = 0x0A, _LCM_EMERGENCY = 0x0B, _LCM_DISCONNECT = 0x0C, #else _LCM_EMERGENCY = 0x0A, #endif _LCM_NONE = 0xFF, }; enum _LCM_WISTRON_INDEX { _PAGE_INIT = 0x00, _PAGE_SELECTGUN, _PAGE_SETTING, _PAGE_BACKLIGHT, _PAGE_LANGUAGE, _PAGE_SELECT_PAY, _PAGE_AUTHORIZING, _PAGE_AUTHORIZE_COMPLETE, _PAGE_AUTHORIZE_FAIL, _PAGE_WAIT_FOR_PLUGIN, _PAGE_PLUGIN_TIMEOUT, _PAGE_PRECHARGE, _PAGE_PRECHARGE_FAIL, _PAGE_CHARGING, _PAGE_COMPLETE, _PAGE_COMPLETE_RECEIPT, _PAGE_APP_STOP, _PAGE_RFID_STOP, _PAGE_ALARM, _PAGE_MAINTAIN, _PAGE_EMG_BTN, _PAGE_DEBUG, _PAGE_NONE = 200, }; enum _SELF_TEST_SEQ { _STEST_VERSION = 0x00, _STEST_AC_CONTACTOR = 0x01, _STEST_PSU_DETECT = 0x02, _STEST_PSU_CAP = 0x03, _STEST_FAIL = 0x04, _STEST_COMPLETE = 0xEE, }; enum _MODULE_PSU_WORK_STEP { INITIAL_START = 0, GET_PSU_COUNT = 1, GET_SYS_CAP = 2, BOOTING_COMPLETE = 3, _WORK_CHARGING = 10, _TEST_MODE = 20, _NO_WORKING = 254, _INIT_PSU_STATUS = 255, }; enum _OFFLINE_POLICY { _OFFLINE_POLICY_LOCAL_LIST = 0x00, _OFFLINE_POLICY_PHIHONG_RFID_TAG = 0x01, _OFFLINE_POLICY_FREE_CHARGING = 0x02, _OFFLINE_POLICY_NO_CHARGING = 0x03, }; enum _REASSIGNED_RESOURCE_STEP { _REASSIGNED_NONE = 0, // _REASSIGNED_PREPARE_M_TO_A = 1, // 系統收到需要降載需求 (輸出總電流降低),PSU Task 收到將狀態切換至下個狀態 _REASSIGNED_GET_NEW_CAP = 2, // 充電中的重新取得屬於自己火線上的總能量並透過小板通知車端 - 超過10秒直接跳下一步 _REASSIGNED_ADJUST_M_TO_A = 3, // 模塊重新分配完成 _REASSIGNED_RELAY_M_TO_A = 4, // 切斷橋接的 Relay _REASSIGNED_PREPARE_A_TO_M = 11, _REASSIGNED_ADJUST_A_TO_M = 12, // 模塊升壓 _REASSIGNED_RELAY_A_TO_M = 13, // 搭接橋接的 Relay _REASSIGNED_WAITING = 14, _REASSIGNED_COMP = 15, }; enum _MAIN_CHARGING_MODE { _MAIN_CHARGING_MODE_MAX = 0, _MAIN_CHARGING_MODE_AVER = 1, }; enum _EXTRA_ERR_PROCESS { _EXTRA_ERR_PROCESS_NONE = 0, _EXTRA_ERR_PROCESS_INUVP = 1, _EXTRA_ERR_PROCESS_INOVP = 2, }; enum _CHARGER_TYPE { _CHARGER_TYPE_IEC = 0, _CHARGER_TYPE_UL = 1, }; enum _SYS_WIFI_MODE { _SYS_WIFI_MODE_DISABLE = 0, _SYS_WIFI_MODE_STATION = 1, _SYS_WIFI_MODE_AP = 2, }; enum _LED_INTENSITY_LV { _LED_INTENSITY_DARKEST = 0, _LED_INTENSITY_MEDIUM = 1, _LED_INTENSITY_BRIGHTEST = 2, }; enum _CCS_COMM_PROTOCOL { _CCS_COMM_V2GMessage_DIN70121 = 0x01, _CCS_COMM_V2GMessage_ISO15118_2014 = 0x02, _CCS_COMM_V2GMessage_ISO15118_2018 = 0x03 }; enum _ETHERNET_USAGE { _ETHERNET_USAGE_NONE = 0, _ETHERNET_USAGE_LAN, _ETHERNET_USAGE_WIFI, _ETHERNET_USAGE_3G_4g, }; enum _PRIMARY_CHECK_TAG { _PRIMARY_CHECK_TAG_AC_CONTACT = 0, _PRIMARY_CHECK_TAG_MAIN_BREAKER = 1, }; enum _CCS_VERSION_CHECK_TAG { _CCS_VERSION_CHECK_TAG_V015S0 = 0, _CCS_VERSION_CHECK_TAG_V013S0 = 1, }; enum RELAY_STATUS_ERROR_INDEX { RELAY_SMR1_P_STATUS = 0, RELAY_SMR1_N_STATUS = 1, RELAY_SMR2_P_STATUS = 2, RELAY_SMR2_N_STATUS = 3, RELAY_PARA_P_STATUS = 4, RELAY_PARA_N_STATUS = 5, }; enum RELAY_STATUS_ERROR_TYPE { RELAY_STATUS_ERROR_NONE = 0, RELAY_STATUS_ERROR_WELDING = 10, RELAY_STATUS_ERROR_DRIVING = 11, }; enum _CCS_TYPE { _CCS_TYPE_CCS1 = 0, _CCS_TYPE_CCS2 = 1, }; enum _WEATHER_TYPE { _WEATHER_TYPE_SUN = 1, _WEATHER_TYPE_CLOUDY, _WEATHER_TYPE_RAIN, _WEATHER_TYPE_THUNDER, _WEATHER_TYPE_SNOW, _WEATHER_TYPE_FOG, }; enum _CREDITCARD_STATUS { _CREDITCARD_IDLE, _CREDITCARD_PREAUTH, _CREDITCARD_PREAUTHCOMPLETE, _CREDITCARD_CANCEL, _CREDITCARD_SETTLEMENT, _CREDITCARD_START, }; enum _DERATING_TEMP { STAGE1_GUN_DERATING_TEMP = 140, STAGE2_GUN_DERATING_TEMP = 145, }; enum _TILT_SENSOR_STEP { _TILT_SENSOR_STEP_NONE, _TILT_SENSOR_STEP_PIN_ON, _TILT_SENSOR_STEP_PIN_WAIT, _TILT_SENSOR_STEP_PIN_OFF, _TILT_SENSOR_STEP_PIN_FINISH, }; enum _FUNCTION_SETTING { _SET_LANGUAGE, _SET_BACKLIGHT, _SET_NONE, }; enum BRIGHTNESS_LEVEL { BRIGHTNESS_LEVEL_0=0, BRIGHTNESS_LEVEL_1, BRIGHTNESS_LEVEL_2, BRIGHTNESS_LEVEL_3, BRIGHTNESS_LEVEL_4, BRIGHTNESS_LEVEL_5, BRIGHTNESS_LEVEL_6, BRIGHTNESS_LEVEL_7, BRIGHTNESS_LEVEL_8, BRIGHTNESS_LEVEL_9, BRIGHTNESS_LEVEL_10, BRIGHTNESS_LEVEL_11, BRIGHTNESS_LEVEL_AUTO, }; enum _CUSTOM_NAME_ID { _CUSTOM_ZEROVA = 0, _CUSTOM_AUDI, _CUSTOM_UPOWER, _CUSTOM_TCC, _CUSTOM_WATTEV, _CUSTOM_SHELL, }; enum _DISPENSER_GENERATION { _DISPENSER_GENERATION_3 = 0, _DISPENSER_GENERATION_3_5 = 1, _DISPENSER_GENERATION_4, }; // Meter OCMF struct StructMeter { float curMeterValue; float newMeterValue; uint8_t isCalculation; float _chargingValue; float _curTotalCharging; }; struct MeterInformation { struct StructMeter _meter[DC_CONNECTOR_COUNT]; uint8_t isWorking; }; enum _DC_METER_TRANSACTION_ACTION { _DC_METER_TRANSACTION_ACTION_NONE = 0, _DC_METER_TRANSACTION_ACTION_START, _DC_METER_TRANSACTION_ACTION_STOP, }; enum _OCMF_INFO_READY_FLAG { _OCMF_INFO_READY_NO = 0, _OCMF_INFO_READY_YES, _OCMF_INFO_READY_FAIL }; enum _CHARGING_START_METHOD { _CHARGING_START_NONE = 0, _CHARGING_START_RFID, _CHARGING_START_AUTOSTART, _CHARGING_START_REMOTESTART, _CHARGING_START_EVCCID, }; enum _AMBINET_LUX_LEVEL { _AMBINET_LUX_LEVEL_0 = 100, _AMBINET_LUX_LEVEL_1, _AMBINET_LUX_LEVEL_2, _AMBINET_LUX_LEVEL_3, _AMBINET_LUX_LEVEL_4, _AMBINET_LUX_LEVEL_5, _AMBINET_LUX_LEVEL_6, _AMBINET_LUX_LEVEL_7, _AMBINET_LUX_LEVEL_8, _AMBINET_LUX_LEVEL_9, _AMBINET_LUX_LEVEL_10, }; //------------------------------------------------------------------------------ //struct StructMeter { // float curMeterValue; // float newMeterValue; // uint8_t isCalculation; // float _chargingValue; // float _curTotalCharging; //}; //struct MeterInformation { // struct StructMeter _meter[2]; // uint8_t isWorking; //}; //struct DcCommonInformation { // // check if the guns are of the same type // uint8_t SysGunAreSameType; // // to check the ccs version // uint8_t CcsVersion; // // for relay welding/driving check // char RelayCheckStatus[6]; // char GunRelayWeldingOccur[2]; // char GunRelayDrivingOccur[2]; //}; typedef union { uint32_t GunErrMessage; struct { // Chademo uint8_t ChaGfdTrip: 1; uint8_t ChaUvpFail: 1; uint8_t ChaConnectOTP: 1; uint8_t ChaConnectOVP: 1; uint8_t ChaGfdWarning: 1; uint8_t ChaRelayWeldingFault: 1; uint8_t ChaRelayDrivingFault: 1; uint8_t ChaConnectTempSensorFail: 1; // CCS uint8_t CCSGfdTrip : 1; uint8_t CCSUvpFail : 1; uint8_t CCSConnectOTP : 1; uint8_t CCSConnectOVP : 1; uint8_t CCSGfdWarning : 1; uint8_t CCSRelayWeldingFault : 1; uint8_t CCSRelayDrivingFault : 1; uint8_t CCSConnectTempSensorFail : 1; // GBT uint8_t GBTGfdTrip : 1; uint8_t GBTUvpFail : 1; uint8_t GBTConnectOTP : 1; uint8_t GBTConnectOVP : 1; uint8_t GBTGfdWarning : 1; uint8_t GBTRelayWeldingFault : 1; uint8_t GBTRelayDrivingFault : 1; uint8_t GBTConnectTempSensorFail : 1; } GunBits; } EvBoardErrMsg; typedef union { uint8_t AlarmState; struct { uint8_t EmergencyStop: 1; //Power cabinet emergency stop uint8_t DoorOpen: 1; //Power cabinet emergency door open uint8_t DcInputOVP: 1; uint8_t DcInputUVP: 1; uint8_t SystemL1InputOVP: 1; //Power cabinet system L1 input OVP uint8_t SystemL2InputOVP: 1; //Power cabinet System L2 input OVP uint8_t SystemL3InputOVP: 1; //Power cabinet System L3 input OVP uint8_t PsuFailure: 1; //Power cabinet PSU Failure Alarm } StatusBit; } PowerAlarmState; typedef union { uint8_t TempErrMsg; struct { uint8_t ChillerOTP: 1; //chiller Temperature OVP uint8_t ChillerTempSensorFail: 1; //Chiller temperature sensor failure uint8_t ChillerTubeOTP : 1; uint8_t Reserved: 5; } StatusBit; } ChillerTempErr; typedef struct StChillerValve { uint8_t MultiChillerGun; //0x80, 0: 沒有水冷槍, 1: 有水冷槍, 0x7F: 紀錄水冷槍數 uint8_t LeftTemp; //左槍最高溫度 uint8_t RightTemp; //右槍最高溫度 uint8_t Reserved; } ChillerValve; typedef struct StPcPsuOutput { //from power cabinet PSU output uint16_t Voltage; uint16_t Current; } PcPsuOutput; typedef struct StPowerConsumptionInfo { float Gun1_Consumption; float Gun2_Consumption; float Gun3_Consumption; float Gun4_Consumption; } PowerConsumptionValue; typedef struct StPowConsumValue { uint32_t Gun1_Consumption; uint32_t Gun2_Consumption; uint32_t Gun3_Consumption; uint32_t Gun4_Consumption; } PowConsumValue; typedef struct StGunInfo { int ConnectorID; char ReceiptInfo[255]; int finalcost_flag; time_t EVLoseTimer; char ReservationID[32]; uint8_t ReservationStatus; char UserPriceString[255]; float PowerConsumption; time_t RecordEnergyTime; char ChargeStartTime[32]; char ChargeStopTime[32]; char ChargeDuration[32]; // 背光調整時間 char BackLightDayTime[32]; char BackLightNightTime[32]; uint8_t SendOcmfDataReq; char OcmfFileName[300]; double curMeterValue; double _curTotalCharging; uint8_t EVStatus; char StartUserId[32]; struct { uint8_t withChiller:1; //是否有水冷機 uint8_t WaitForPlugit:1; // 等待插槍FLAG uint8_t isMeterStart:1; uint8_t isMeterStop:1; }; uint8_t RelayTest; } GunInfo; typedef struct StGunStatus { time_t EVLoseTimer; struct { uint8_t EVLoseFlag:1; }; } GunStatus; typedef struct Psu_VersionInfo{ uint8_t n_PSU; uint8_t DCVersion[32]; uint8_t FPCVersion[32]; }PsuVerInfo; enum _LCM_UPGRADE_RESULT { _LCM_UPGRADE_RESULT_WAIT = 0, _LCM_UPGRADE_RESULT_PASS, _LCM_UPGRADE_RESULT_FAIL, }; typedef struct stTransInfo { unsigned char TransDate[6]; //交易日期 unsigned char TransTime[6]; //交易時間 unsigned char ROC[12]; //EDC簽單調閱編號 (左靠右補空白) unsigned char ApprovalNo[9]; //授權碼[信用卡退貨交易] (左靠右補空白) unsigned char StoreId[18]; //櫃號,機號,發票號碼(左靠右補空白) unsigned char RRN[12]; //信用卡交易序號 unsigned char CardNo[20]; //卡號(左靠右補空白),卡號部份隱藏 unsigned char TransAmount[12]; //交易金額 unsigned char VemData[64]; //無人自助設備交易資訊 交易別31/32 (預授權完成/預授權取消) 必要欄位 資訊來源為交易別13 (預授權)的回傳 }TransInfo; typedef struct stRecordTransactionInfo { int TransactionId; unsigned char DeductResult; // 0: Fail, 1: Pass unsigned char IsDonateInvoice; // 0: Do not donate, 1: Donate unsigned char ApprovalNo[9]; unsigned char CardNo[20]; //卡號(左靠右補空白),卡號部份隱藏 unsigned char VemData[64]; float Amount; unsigned char IsUpload; // 0: not upload, 1: uploaded unsigned char res; }RecordTransactionInfo; typedef struct stTestFlag { uint8_t ledflag:1; uint8_t fanflag:1; uint8_t chillerflag:1; uint8_t relayflag:1; uint8_t reserved:4; }TestFlag; typedef struct stLcmInfo { int8_t verHW[32]; int8_t verFW_OS[32]; int8_t verFW_APK[32]; int8_t verFW_UI[32]; int8_t macAddr[32]; int8_t orientation[32]; }LcmInfo; typedef struct StDcCommonInfo { uint8_t RebootCount; uint8_t CcsVersion; EvBoardErrMsg ConnectErrList[2]; //connector error list, 0: left gun, 1: right gun uint8_t CheckRelayStatus[6]; //check Relay welding or driving fault uint8_t GunRelayWeldingOccur[2]; uint8_t GunRelayDrivingOccur[2]; uint8_t ConnectorTemp[2][2]; uint8_t SystemTemp[4]; uint8_t SystemModeChange[2]; //for Module_EvRxComm PowerAlarmState PowerAlarmState; ChillerTempErr ChillerTempErr[2]; ChillerValve ChillerValve; uint8_t TestTemperature; //ReadCmdline test, manual input value uint8_t CcsTypeSaved[2]; PcPsuOutput PcPsuOutput[2]; uint8_t chillerCtrl; uint8_t debugflag; uint8_t LcmFwVersion; uint8_t _upgrade_lcm_flag; uint8_t _upgrade_lcm_result; uint8_t _upgrade_lcm_apk_flag; // Power Cabinet Version uint8_t CabinetModelName[32]; uint8_t CabinetBoolLoaderVersion[32]; uint8_t CabinetKernelVersion[32]; uint8_t CabinetRFSystemVersion[32]; uint8_t CabinetPrimaryVersion[32]; uint8_t CabinetIPAddr[32]; uint8_t CabinetRelay0Version[32]; uint8_t CabinetRelay1Version[32]; uint8_t CabinetFanVersion[32]; // PSU Version uint8_t PSU_Number; PsuVerInfo PsuVer[12]; int ConnectorId[2]; int WeatherID; float Temperature; int Location; char PresentTime[128]; TransInfo pCreditCard[2]; int runningcost[2]; float finalcost[2]; unsigned int finalcost_flag[2]; float ChargingRate; int PreAuth_Config; int PreAuth_Result; int LineStatus[2]; int donate_flag[2]; unsigned int AuthPass_flag[2]; unsigned int PayPass_flag[2]; unsigned int PayFinish[2]; unsigned int StopCharge[2]; unsigned int GetCardNo[2]; unsigned int TradeCancel; int reupload_deduct_status; // 0:Not ReUpload 1:ReUpload 2:ReUpload finish RecordTransactionInfo TransactionInfo[2]; int TZOffset; uint8_t AuthroizeType; // 0: Central 1: eMAID 2: ISO14443 3: ISO15693 4: KeyCode 5: Local 6: MacAddress 7: NoAuthorization time_t EVDisconnectTime[2]; int EVDisconnectFlag[2]; int isIntoCharge[2]; time_t RelayDisconnectTime; time_t LedDisconnectTime; time_t FanDisconnectTime; int DemoCount; char QRCodeString[255]; GunInfo pGunInfo[2]; GunStatus pGunStatus[2]; char DefaultPriceString[255]; PowerConsumptionValue pConsumption; LcmInfo pLcmInfo; uint8_t showNetPackage; uint8_t showCanPackage; char DebugVersion[32]; time_t FanOnTime; uint8_t language; uint8_t languageCount; int lcmtest; uint8_t previousPage; int SDUPATENUM; int BlackLight; int MaxBlackLight; uint8_t ScreenSave; struct timespec SleepTimer; // control by sleep mode struct timespec lcmwatchdog; // Detect LCM alive or not int8_t lcmmacAddr[32]; int8_t lcmcmd; float TempVolt[4]; int8_t demo_flag; int8_t isDark; TestFlag pTest; uint8_t _tiltSensorStep; uint8_t LcmPage; // Ocmf uint8_t _hour_index; //0 ~ 23 float energy_time_period[DC_CONNECTOR_COUNT][24]; // Ocmf Record resend int ocmfTridRecord[DC_CONNECTOR_COUNT]; uint8_t lcmstatus; uint8_t LcmSetItem; //設定頁面功能選擇 uint8_t Lcmreset; struct timespec _touch_time; uint8_t isTouch; int AmbinetLux; uint8_t AdjustBackLight; } DcCommonInfo; #endif /* CONFIG_H_ */