|
@@ -118,6 +118,21 @@ void RefreshIavailable(void *func)
|
|
|
return_iavail_info = func;
|
|
|
}
|
|
|
|
|
|
+void AutoMode_RefreshOutputAndTemp(void *func)
|
|
|
+{
|
|
|
+ return_output_temp = func;
|
|
|
+}
|
|
|
+
|
|
|
+void AutoMode_RefreshModuleStatus(void *func)
|
|
|
+{
|
|
|
+ return_module_status = func;
|
|
|
+}
|
|
|
+
|
|
|
+void AutoMode_RefreshModuleInput(void *func)
|
|
|
+{
|
|
|
+ return_module_input = func;
|
|
|
+}
|
|
|
+
|
|
|
//================================================
|
|
|
// CANBUS initialization
|
|
|
//================================================
|
|
@@ -305,6 +320,52 @@ void ReceiveDataFromCanBus()
|
|
|
//PRINTF_LIB_FUNC("address = %d, abVol = %d, bcVol = %d, caVol = %d \n", address, abVol, bcVol, caVol);
|
|
|
}
|
|
|
break;
|
|
|
+ case INFYPWR_GROUP_SHIFT | AUTO_OUTPUT_TEMP:
|
|
|
+ {
|
|
|
+ /*Test mode used*/
|
|
|
+ // 回傳輸出值與入風口溫度
|
|
|
+ address = frame.can_id & 0x000000FF;
|
|
|
+
|
|
|
+ short outputVol = ((frame.data[0] << 8) + frame.data[1]);
|
|
|
+ short outputCur = ((frame.data[2] << 8) + frame.data[3]);
|
|
|
+ short outputPow = ((frame.data[4] << 8) + frame.data[5]);
|
|
|
+ byte temp = frame.data[6];
|
|
|
+
|
|
|
+ return_output_temp(address, outputVol, outputCur, outputPow, temp);
|
|
|
+ //PRINTF_LIB_FUNC("address = %d, abVol = %d, bcVol = %d, caVol = %d \n", address, abVol, bcVol, caVol);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case INFYPWR_GROUP_SHIFT | AUTO_MODULE_STATUS:
|
|
|
+ {
|
|
|
+ /*Test mode used*/
|
|
|
+ // 回傳輸出值與入風口溫度
|
|
|
+ address = frame.can_id & 0x000000FF;
|
|
|
+
|
|
|
+ byte isErr = (frame.data[0] >> 0) & 0x01;
|
|
|
+ byte status = (frame.data[0] >> 1) & 0x01;
|
|
|
+ byte err1 = frame.data[2];
|
|
|
+ byte err2 = frame.data[3];
|
|
|
+ byte err3 = frame.data[4];
|
|
|
+ byte err4 = frame.data[5];
|
|
|
+
|
|
|
+ return_module_status(address, isErr, status, err1, err2, err3, err4);
|
|
|
+ //PRINTF_LIB_FUNC("address = %d, abVol = %d, bcVol = %d, caVol = %d \n", address, abVol, bcVol, caVol);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case INFYPWR_GROUP_SHIFT | AUTO_MODULE_INPUT:
|
|
|
+ {
|
|
|
+ /*Test mode used*/
|
|
|
+ // 回傳輸出值與入風口溫度
|
|
|
+ address = frame.can_id & 0x000000FF;
|
|
|
+
|
|
|
+ short vR = ((frame.data[0] << 8) + frame.data[1]);
|
|
|
+ short vS = ((frame.data[2] << 8) + frame.data[3]);
|
|
|
+ short vT = ((frame.data[4] << 8) + frame.data[5]);
|
|
|
+
|
|
|
+ return_module_input(address, vR, vS, vT);
|
|
|
+ //PRINTF_LIB_FUNC("address = %d, abVol = %d, bcVol = %d, caVol = %d \n", address, abVol, bcVol, caVol);
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
usleep(10000);
|
|
@@ -456,6 +517,51 @@ void FanNoiseInfo(byte group, byte value)
|
|
|
SendCmdToPsu(cmd, data, sizeof(data));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+void SetWalkInConfig(byte group, byte enable, byte sec)
|
|
|
+{
|
|
|
+ byte data[8];
|
|
|
+ uint cmd = INFYPWR_CMD | WALK_IN_MODE; //0x180100E5
|
|
|
+
|
|
|
+ memset(data, 0x00, ARRAY_SIZE(data));
|
|
|
+ unsigned short _Sec = sec * 100;
|
|
|
+
|
|
|
+ // Walk-in mode enable
|
|
|
+ data[0] = enable;
|
|
|
+ // Walk-in time (default == 5s)
|
|
|
+ data[6] = (_Sec >> 8) & 0xFF;
|
|
|
+ data[7] = _Sec & 0xFF;
|
|
|
+
|
|
|
+ if (group == SYSTEM_CMD)
|
|
|
+ cmd |= INFYPWR_BROADCAST | INFYPWR_DEFAULT;
|
|
|
+ else
|
|
|
+ cmd |= INFYPWR_GROUP_SHIFT | (group << 8) | INFYPWR_DEFAULT;
|
|
|
+ SendCmdToPsu(cmd, data, sizeof(data));
|
|
|
+}
|
|
|
+
|
|
|
+void SetDirModulePresentOutput(byte group, int voltage, int current, byte _switch)
|
|
|
+{
|
|
|
+ byte data[8];
|
|
|
+ uint cmd = TEST_PRESENT_OUT; //0x180100E5
|
|
|
+
|
|
|
+ memset(data, 0x00, ARRAY_SIZE(data));
|
|
|
+
|
|
|
+ // 輸出電壓
|
|
|
+ data[0] = (voltage >> 8) & 0xFF;
|
|
|
+ data[1] = voltage & 0xFF;
|
|
|
+ // 輸出電流
|
|
|
+ data[2] = (current >> 8) & 0xFF;
|
|
|
+ data[3] = current & 0xFF;
|
|
|
+ // 開 / 關
|
|
|
+ data[4] = _switch;
|
|
|
+
|
|
|
+ if (group == SYSTEM_CMD)
|
|
|
+ cmd |= INFYPWR_BROADCAST;
|
|
|
+ else
|
|
|
+ cmd |= (group << 8);
|
|
|
+ SendCmdToPsu(cmd, data, sizeof(data));
|
|
|
+}
|
|
|
+
|
|
|
/**********************************************************************************/
|
|
|
/*** ***/
|
|
|
/*** Get ***/
|