|
@@ -115,6 +115,7 @@ void init_UPS_value(void)
|
|
|
UPS.VAC_out = 0;
|
|
|
UPS.Temp = 0;
|
|
|
UPS.data_check_load = 0;
|
|
|
+ UPS.data_check_load_flag = false;
|
|
|
UPS.Load = 0;
|
|
|
UPS.Load_test_akb = 0;
|
|
|
UPS.SOC = 0;
|
|
@@ -354,10 +355,11 @@ void ups_status_response(char *data)
|
|
|
UPS.Status = stat;
|
|
|
}
|
|
|
|
|
|
- if((UPS.Status >> 2) & 0x01) {
|
|
|
+ if((UPS.Status >> 2) & 0x01 || ((UPS.Status >> 7) & 0x01)) {
|
|
|
UPS.Load_test_akb = UPS.Load;
|
|
|
TM_RTC_t data;
|
|
|
TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
|
|
|
+ UPS.data_check_load_flag = true;
|
|
|
UPS.data_check_load = data.unix;
|
|
|
}
|
|
|
|
|
@@ -1211,8 +1213,10 @@ void request_task(void *params)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+#if CHECK_LOAD_ENABLE
|
|
|
xTimerStart(AutoTestTimer, 0);
|
|
|
- AutoTestCallback();
|
|
|
+ xTimerChangePeriod(AutoTestTimer, 60*configTICK_RATE_HZ, 0);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
vTaskDelay(1000);
|
|
@@ -1307,11 +1311,19 @@ void UPSReadTestStatus(void)
|
|
|
}
|
|
|
|
|
|
void AutoTestCallback(void)
|
|
|
-{
|
|
|
+{
|
|
|
+ static bool first_start = false;
|
|
|
+
|
|
|
+ if (!first_start) {
|
|
|
+ xTimerChangePeriod(AutoTestTimer, configTICK_RATE_HZ*PERIOD_AUTO_TEST, 0);
|
|
|
+ }
|
|
|
+
|
|
|
if(!((UPS.Status >> 2) & 0x01)) {
|
|
|
int res = ups_metac_service_pdu(ups_test_10sec);
|
|
|
set_act_source(AUTO_ACT);
|
|
|
}
|
|
|
+
|
|
|
+ first_start = true;
|
|
|
}
|
|
|
|
|
|
void ups_megatec_init(void)
|
|
@@ -1321,5 +1333,7 @@ void ups_megatec_init(void)
|
|
|
xTaskCreate(akb_time_work_task, ( char * ) "akb_time_work_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY,
|
|
|
NULL);
|
|
|
UPSRestoreTimer = xTimerCreate("UPSRestoreTmr", configTICK_RATE_HZ*30, pdFALSE, ( void * ) 0, UPSRestoreCallback);
|
|
|
+#if CHECK_LOAD_ENABLE
|
|
|
AutoTestTimer = xTimerCreate("AutoTestTmr", configTICK_RATE_HZ*PERIOD_AUTO_TEST, pdTRUE, ( void * ) 0, AutoTestCallback);
|
|
|
+#endif
|
|
|
}
|