/* * 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 #define INFYPWR_CMD 0x02000000 #define INFYPWR_BROADCAST 0x00003F00 #define INFYPWR_DEFAULT 0x000000F0 #define INFYPWR_GROUP_SHIFT 0x00400000 #define SYSTEM_CMD 0x3F #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0])) #define CMD_DELAY_TIME 25000 #define FAN_SPEED_CMD 0x1201 typedef unsigned char byte; typedef unsigned short word; typedef unsigned int unit; int CanFd; pid_t recFork; enum PSU_POWER_CMD { PSU_POWER_ON = 0, PSU_POWER_OFF = 1, }; enum PSU_SLEEP_MODE_CMD { PSU_SLEEP_MODE_WAKE_UP = 0, PSU_SLEEP_MODE_SLEEP = 1, }; enum PSU_FLASH_CMD { PSU_FLASH_NORMAL = 0, PSU_FLASH_ON = 1, }; enum PSU_FAN_NOISE_CMD { PSU_FAN_NOISE_BY_POWER = 0xA0, PSU_FAN_NOISE_BY_DENOISE = 0xA1, PSU_FAN_NOISE_BY_QUIET = 0xA2 }; enum PSU_SET_CMD { MIS_INFO = 0x008F0000, // 現在只能改變降噪模式 FLASH_LED = 0x00940000, WALK_IN_MODE = 0x00930000, SLEEP_MODE = 0x00990000, // 當 SWITCH POWER 打開時,可透過該指令讓模塊休眠 (風扇會停) SWITCH_POWER = 0x009A0000, // 打開,則模塊依照設定的輸出功率輸出 PRESENT_OUT_VOL = 0x009B0000, /*Test mode used*/ TEST_PRESENT_OUT = 0x180100E5, }; enum PSU_GET_CMD { MODULE_COUNT = 0x00820000, // 取得模塊數量 STATUS = 0x00840000, // 取得溫度、狀態 MODULE_INPUT = 0x00860000, // 取得三向輸入電壓 MODULE_VER = 0x00870000, // 取得版號 MODULE_OUTPUT_VOL_CUR = 0x00880000, // 取得當前輸出電壓電流 MODULE_CAP = 0x008A0000, // 取得當前 Group 的最大電壓、最大電流、最小電壓、額定功率 MODULE_BARCODE = 0x008B0000, // 取得 BarCode MODULE_IAVAILABLE = 0x008C0000, // 取得實際模塊可輸出的電流能力 (降載) MODULE_MIS_INFO = 0x008E0000, // 取得模塊資訊 (Tdc、Tpfc、風扇速度) /*Test mode used*/ AUTO_OUTPUT_TEMP = 0x00010000, AUTO_MODULE_STATUS = 0x00020000, AUTO_MODULE_INPUT = 0x00030000, }; union FloatingPointIEEE754 { struct { unsigned int mantissa : 23; unsigned int exponent : 8; unsigned int sign : 1; } raw; float f; } number; /*Initialization*/ bool InitialCommunication(); /*Set Cmd*/ void SwitchPower(byte group, byte value); void SleepMode(byte group, byte value); void FlashLed(byte group, byte value); void PresentOutputVol(byte group, int voltage, int current); void FanNoiseInfo(byte group, byte value); void SetWalkInConfig(byte group, byte enable, byte sec); /*Test mode used*/ void SetDirModulePresentOutput(byte group, int voltage, int current, byte _switch); /*Get Cmd*/ void GetStatus(byte group); void GetFanSpeed(byte group); void GetModuleCount(byte group); void GetModuleVer(byte group); void GetModuleCap(byte group); void GetModuleBarCode(byte group); void GetModuleInput(byte group); void GetModuleIavailable(byte group); void GetModuleOutput(byte group); /* Callback Function */ void RefreshStatus(void *func); void (*return_status)(byte group, byte address, byte temp, int status); void RefreshModuleCount(void *func); void (*return_module_count)(byte group, byte count); void RefreshAvailableCap(void *func); void (*return_available_cap)(byte address, short maxVol, short minVol, short maxCur, short totalPow); void RefreshFwVersion(void *func); void (*return_fw_version)(byte address, short dcSwVer, short pfcSwVer, short hwVer); void RefreshInputVol(void *func); void (*return_input_vol)(byte address, unsigned short vol1, unsigned short vol2, unsigned short vol3); void RefreshGetOutput(void *func); void (*return_get_output)(byte address, unsigned short outVol, unsigned short outCur); void RefreshFanInfo(void *func); void (*return_fanspeed_info)(byte address, unsigned int fanSpeed); void RefreshIavailable(void *func); void (*return_iavail_info)(byte address, unsigned short Iavail, unsigned short Vext); /*Test mode used*/ void AutoMode_RefreshOutputAndTemp(void *func); void (*return_output_temp)(byte address, unsigned short outputVol, unsigned short outputCur, unsigned short outputPower, unsigned char Temperature); void AutoMode_RefreshModuleStatus(void *func); void (*return_module_status)(byte address, unsigned char isErr, unsigned char status, unsigned char err1, unsigned char err2, unsigned char err3, unsigned char err4); void AutoMode_RefreshModuleInput(void *func); void (*return_module_input)(byte address, unsigned short inputR, unsigned short inputS, unsigned short inputT); /* Callback Function end */ #endif /* INFYPWR_PSUCOMMOBJ_H_ */