|
@@ -32,13 +32,14 @@ TimerHandle_t UPSRestoreTimer;
|
|
*/
|
|
*/
|
|
extern SETTINGS_t sSettings;
|
|
extern SETTINGS_t sSettings;
|
|
|
|
|
|
-#define UPS_PDU_MAX_LEN 50
|
|
|
|
|
|
+#define UPS_PDU_MAX_LEN 80
|
|
|
|
|
|
float TimeParamFloat = 0;
|
|
float TimeParamFloat = 0;
|
|
uint16_t TimeParam = 0;
|
|
uint16_t TimeParam = 0;
|
|
uint16_t TimeParam2 = 0;
|
|
uint16_t TimeParam2 = 0;
|
|
bool megatec_send = true;
|
|
bool megatec_send = true;
|
|
UPS_value_t UPS;
|
|
UPS_value_t UPS;
|
|
|
|
+int test_time = 0;
|
|
|
|
|
|
static bool flag_buzzer_on = false;
|
|
static bool flag_buzzer_on = false;
|
|
|
|
|
|
@@ -102,6 +103,7 @@ void init_UPS_value(void)
|
|
UPS.Status = 0;
|
|
UPS.Status = 0;
|
|
UPS.Mode = 0;
|
|
UPS.Mode = 0;
|
|
UPS.Alarm = 0;
|
|
UPS.Alarm = 0;
|
|
|
|
+ UPS.Test_Status = 0;
|
|
UPS.cnt_err_ups = 0;
|
|
UPS.cnt_err_ups = 0;
|
|
UPS.Flag_Present = false;
|
|
UPS.Flag_Present = false;
|
|
UPS.Present = false;
|
|
UPS.Present = false;
|
|
@@ -335,15 +337,17 @@ void ups_general_status_response(char *data)
|
|
UPS.Flag_Present = true;
|
|
UPS.Flag_Present = true;
|
|
UPS.cnt_err_ups = 0;
|
|
UPS.cnt_err_ups = 0;
|
|
|
|
|
|
- if (flUpdateLog) {
|
|
|
|
- flUpdateLog = false;
|
|
|
|
- log_add(data);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
data++;
|
|
data++;
|
|
|
|
|
|
DBG printf("UPS ups_status_parser_startr: %s\r\n", data);
|
|
DBG printf("UPS ups_status_parser_startr: %s\r\n", data);
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ data = data + 72;
|
|
|
|
+ uint8_t stat = 0;
|
|
|
|
+ UPS.Test_Status = 0;
|
|
|
|
+ for (i = 0; i < 2; i ++) {
|
|
|
|
+ UPS.Test_Status |= (data[i] - 0x30) << (1 - i);
|
|
|
|
+ }
|
|
|
|
+/*
|
|
len = get_ups_param(data, " ", value);
|
|
len = get_ups_param(data, " ", value);
|
|
data += (len + 1);
|
|
data += (len + 1);
|
|
if (len > 0) {
|
|
if (len > 0) {
|
|
@@ -413,6 +417,15 @@ void ups_general_status_response(char *data)
|
|
}
|
|
}
|
|
UPS.Status = stat;
|
|
UPS.Status = stat;
|
|
}
|
|
}
|
|
|
|
+ value[len - 2] = 0;
|
|
|
|
+
|
|
|
|
+ if (flUpdateLog) {
|
|
|
|
+ flUpdateLog = false;
|
|
|
|
+ memset(data, 0, UPS_PDU_MAX_LEN);
|
|
|
|
+ sprintf(data, "(%0.1f n/a %0.1f %d %0.1f %0.2f %0.1f %s", UPS.VAC_in, UPS.VAC_out, UPS.Load, UPS.Freq_in, UPS.Vakb_curr, UPS.Temp, &value[2]);
|
|
|
|
+ log_add(data);
|
|
|
|
+ }
|
|
|
|
+*/
|
|
}
|
|
}
|
|
|
|
|
|
void ups_info_response(char *data)
|
|
void ups_info_response(char *data)
|
|
@@ -791,6 +804,11 @@ int ups_metac_service_pdu(cmdMegaTecEnums_t command)
|
|
send_MegaTec_cmd(ups_shutdown_restore);
|
|
send_MegaTec_cmd(ups_shutdown_restore);
|
|
} else {
|
|
} else {
|
|
UPS.SOC_test = UPS.SOC;
|
|
UPS.SOC_test = UPS.SOC;
|
|
|
|
+ if (command == ups_test_low_bat) {
|
|
|
|
+ test_time = 0;
|
|
|
|
+ } else {
|
|
|
|
+ test_time = (int)TimeParam;
|
|
|
|
+ }
|
|
send_MegaTec_cmd(command);
|
|
send_MegaTec_cmd(command);
|
|
}
|
|
}
|
|
if (ups_megatec_rx_pdu()) {
|
|
if (ups_megatec_rx_pdu()) {
|
|
@@ -891,6 +909,7 @@ void request_task(void *params)
|
|
UPS.work_time = 0;
|
|
UPS.work_time = 0;
|
|
UPS.Status = 0;
|
|
UPS.Status = 0;
|
|
UPS.Mode = 0;
|
|
UPS.Mode = 0;
|
|
|
|
+ UPS.Test_Status = 0;
|
|
UPS.Alarm = 0;
|
|
UPS.Alarm = 0;
|
|
UPS.Present = false;
|
|
UPS.Present = false;
|
|
|
|
|
|
@@ -998,6 +1017,27 @@ void UPSRestoreCallback(TimerHandle_t pxTimer)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void UPSReadTestStatus(void)
|
|
|
|
+{
|
|
|
|
+ if(sSettings.UPS_Setting.type_ups == ups_kestar
|
|
|
|
+ || sSettings.UPS_Setting.type_ups == ups_offline) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (UPS.Present) {
|
|
|
|
+ while (!megatec_send) {
|
|
|
|
+ vTaskDelay(50);
|
|
|
|
+ }
|
|
|
|
+ memset(ups_pdu.data, 0, UPS_PDU_MAX_LEN);
|
|
|
|
+ megatec_send = false;
|
|
|
|
+ //UPS.Flag_Present = false;
|
|
|
|
+ send_MegaTec_cmd(ups_general_status_req);
|
|
|
|
+ if (ups_megatec_rx_pdu()) {
|
|
|
|
+ ups_megatec_process_pdu(ups_general_status_req);
|
|
|
|
+ }
|
|
|
|
+ megatec_send = true;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
void ups_megatec_init(void)
|
|
void ups_megatec_init(void)
|
|
{
|
|
{
|
|
init_UPS_value();
|
|
init_UPS_value();
|