/* * Infypwr_PsuCommObj.h * * Created on: 2019年11月26日 * Author: 7564 */ #ifndef INFYPWR_PSUCOMMOBJ_H_ #define INFYPWR_PSUCOMMOBJ_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*標準輸入輸出定義*/ #include /*標準函數庫定義*/ #include /*Unix 標準函數定義*/ #include /*檔控制定義*/ #include /*PPSIX 終端控制定義*/ #include /*錯誤號定義*/ #include #include #include #include #include #include typedef unsigned char byte; typedef unsigned short word; typedef unsigned int unit; #define INFYPWR_MODULE_CMD 0x02800000 // #define INFYPWR_GROUP_CMD 0x02C00000 // #define INFYPWR_MASTER_TXID 0xF0 // #define INFYPWR_BROADCAST_ID 0x3F // #define UNFEEDBACK_ID 0 #define FEEDBACK_ID 1 #define SET_MODULE_CMD 0 #define SET_GROUP_CMD 1 extern struct Current_cmd_Proc { int none; // 0 int _address_assignment; // 0x02000200 int _get_status; // 0x01000300 int _get_fw_ver; // 0x01000400 int _get_fan_speed; // 0x01000500 int _get_temperature; // 0x01000600 int _get_present_input_vol; // 0x01000700 int _get_present_output; // 0x01000800 int _get_available_cap; // 0x01000900 int _switch_output_pow; // 0x02000A00 int _set_present_output; // 0x02000B00 int _set_fan_speed; // 0x01000C00 int _upgrade_req; // 0x02000F00 int _start_block_trans; // 0x02001000 int _img_trans; // 0x02001100 int _upgrade_finish; // 0x02001200 int _get_serial_number; // 0x01001300 int _set_cooling_water_temp; // 0x02001400 int _get_presnet_input_cur; // 0x01001500 int _get_hw_verstion; // 0x01001600 int _switch_pfc_output; // 0x02001700 int _get_log_size; // 0x01001800 int _get_log_block_checksum; // 0x01001900 int _get_log_block_data; // 0x01001A00 int _switch_custom_info; // 0x02001B00 int _custom_info_transfer; // 0x0E001C00 }Psu_cmd; enum Receieve_PSU_msg { ADDRESS_REQ = 0x08000100, ACK_ADDRESS_ASSINGMENT = 0x0B000200, ACK_STATUS = 0x0B000300, ACK_FIRMWARE_VERSION = 0x0B000400, ACK_FAN_SPEED = 0x0B000500, ACK_TEMPERATURE = 0x0B000600, ACK_PRESENT_INPUT_VOLTAGE = 0x0B000700, ACK_GET_PRESENT_OUTPUT = 0x0B000800, ACK_AVAILABLE_CAP = 0x0B000900, ACK_OUTPUT_POWER_SWITCH = 0x0B000A00, ACK_SET_PRESENT_OUTPUT = 0x0B000B00, ACK_SET_FAN_SPEED = 0x0B000C00, ACK_UPGRADE_REQ = 0x0B000F00, ACK_START_BLOCK_TRANS = 0x0B001000, ACK_UPGRADE_FINISH = 0x0B001200, ACK_GET_SERIAL_NUMBER = 0x0B001300, ACK_COOLING_WATER_TEMP = 0x0B001400, ACK_PRESENT_INPUT_CURRENT = 0x0B001500, ACK_HARDWARE_VERSION = 0x0B001600, ACK_PFC_OUTPUT_SWITCH = 0x0B001700, ACK_LOG_SIZE = 0x0B001800, ACK_LOG_BLOCK_CHECKSUM = 0x0B001900, ACK_LOG_BLOCK_DATA = 0x0B001A00, ACK_CUSTOM_INFO_TRANSFER_SWITCH = 0x0B001B00, CUSTOM_LOG_INFO = 0x0E001C00, ALARM_NOTIFICATION = 0x0C000D00, FAULT_NOTIFICATION = 0X0D001D00, STATUS_NOTIFICATION = 0x0E000E00, }; enum Receieve_INFYPWR_msg { INFYPWR_GET_TOTAL_MOULE_MSG = 0x00020000, INFYPWR_GET_STATUS_MSG = 0x00040000, INFYPWR_GET_PRESENT_INPUT_VOLTAGE_MSG = 0x00060000, INFYPWR_GET_PRESENT_OUTPUT_MSG = 0x00090000, INFYPWR_GET_AVAILABLE_CAP_MSG = 0x000A0000, INFYPWR_GET_BARCODE_MSG = 0x000B0000, INFYPWR_GET_VEXT_IAVAIL_MSG = 0x000C0000, INFYPWR_GET_MISC_INFO_MSG = 0x000E0000, INFYPWR_SET_MISC_INFO_MSG = 0x000F0000, INFYPWR_SET_WALKIN_MODE_MSG = 0x00130000, INFYPWR_SET_GREEN_KED_FLASH_MSG = 0x00140000, INFYPWR_SET_GROUP_ASSINGMENT_MSG = 0x00160000, INFYPWR_SET_SLEEP_MODE_MSG = 0x00190000, INFYPWR_SET_POWER_SWITCH_MSG = 0x001A0000, INFYPWR_SET_GROUP_PERSENT_OUTPUT_MSG = 0x001B0000, INFYPWR_SET_MODULE_PERSENT_OUTPUT_MSG = 0x001C0000, INFYPWR_SET_ADDRESS_MODE_MSG = 0x001F0000, }; #define MISC_REQCMD_DC_BOARD_TMP 0x1107 #define MISC_REQCMD_PFC_BOARD_TMP 0x1108 #define MISC_REQCMD_FAN_SPEED 0x1201 #define MISC_SETCMD_FAN_DENOISE_MODE 0x1113 #define MISC_SETCMD_FAN_SPEED 0x1201 #define MISC_SETCMD_AC_INPUT_LIMIT 0x1205 #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0])) int CanFd; pid_t recFork; /* API Function */ bool InitialCommunication(); //void PsuAddressAssignment(byte phy_addr, char *serial_number, byte real_addr, byte group); void PsuAddressAssignment(byte phy_addr, byte group); void GetStatus(byte group, byte address); void GetFwVersion(byte group, byte address, byte type); void GetSerialNumber(byte group, byte address); //barcode void GetVextAndIavail(byte group, byte address); //void GetFanSpeed(byte group, byte address); void GetMiscInfo(byte group, byte address, unsigned short CmdType); //void GetTemperature(byte group, byte address); void GetPresentInputVol(byte group, byte address); void GetPresentOutput(byte group, byte address); void GetPresentInputCurrent(byte group, byte address); void GetAvailableCap(byte group, byte address, short _outputVol); void SetPresentOutput(byte group, byte address, float vol, float cur, float AvailableCur); void SetMiscInfo(byte group, byte address, unsigned short CmdType, unsigned int value); void EnableGreenLedFlash(byte group, byte address, byte value); void EnableSleepMode(byte group, byte address, byte value); void EnableDipAddrMode(void); void EnableWalkInMode(byte group, byte address, byte value); void RequestModuleTotalMumbert(void); /* API Function end */ /* Callback Function */ void GetPsuAddressReq(void *func); //void GetPsuRequestCallback(byte phy_id, char *serial_number) void (*get_psu_addr_req)(byte phy_id, char *serial_number); //ver 1.8 & 1.9 void RefreshSerialNumber(void *func); //void GetBarCodeCallback(byte address, char *serial_number , unsigned short module_ver) void (*return_serial_number)(byte address, char *serial_number , unsigned short module_ver); //ver 1.9 void RefreshVextAndIavail(void *func); //void SavePresentModeleVextIavailCallback(byte address, unsigned short Vext, unsigned short Iavail) void (*return_vext_and_iavail)(byte address, unsigned short Vext, unsigned short Iavail); void RefreshMiscInfo(void *func); //void GetMiscInfoCallback(byte address, unsigned short CmdType , unsigned int value) void (*return_misc_info)(byte address, unsigned short CmdType , unsigned int value); void RefreshStatus(void *func); //void SaveStatusCallback(byte group, byte address, char cri_temp1, int alarm) void (*return_status)(byte group, byte address, int alarm, int fault); void RefreshInputVol(void *func); //void SavePresentInputVoltageCallback(byte address, unsigned short vol1, unsigned short vol2, unsigned short vol3) void (*return_input_vol)(byte address, unsigned short vol1, unsigned short vol2, unsigned short vol3); void RefreshGetOutput(void *func); //void SavePresentOutputCallback(byte address, unsigned short out_vol, unsigned short out_cur) void (*return_get_output)(byte address, unsigned short out_vol, unsigned short out_cur); void RefreshAvailableCap(void *func); //void SaveAvailableCapCallback(byte address, unsigned short maxv,unsigned short minv, unsigned short able_cur, unsigned short able_power) void (*return_available_cap)(byte address, unsigned short maxv,unsigned short minv , unsigned short able_cur,unsigned short able_power); void RefreshOutputPowerSwitch(void *func); //void GetOutputPowerSwitchStatusCallback(byte address, unsigned char value) void (*return_output_pow_switch)(byte address, int result); /* Callback Function end */ void DisableDipAddrMode(void); void EnableOutputPower(byte group, byte address, byte value); #endif /* INFYPWR_PSUCOMMOBJ_H_ */