Kaynağa Gözat

[ups_monitor]sync data for load alarm

balbekova 3 yıl önce
ebeveyn
işleme
326f5de73b

+ 9 - 1
modules/MegaTec/megatec.c

@@ -49,6 +49,8 @@ static float Ubat_sum = 0;
 static float Pload_sum = 0;
 uint32_t Period_testing = 0;
 
+static bool sync_data = false;
+
 enum {
     NORMAL = 0x00,
     VER_ERROR = 0x01,
@@ -301,6 +303,7 @@ void ups_status_response(char *data)
     if (len > 0) {
         UPS.Load = atoi(value);
     }
+    sync_data = true;
 
     len = get_ups_param(data, " ", value);
     data += (len + 1);
@@ -800,7 +803,7 @@ char ups_warn_status_response(char *data)
     UPS.cnt_err_ups = 0;
 
     data++;
-
+    sync_data = false;
     UPS.warn_status = BIT_OFFSET(data[0], 0) + + BIT_OFFSET(data[2], 1) + BIT_OFFSET(data[5], 2) + BIT_OFFSET(data[6], 3) 
                         + BIT_OFFSET(data[7], 4) + BIT_OFFSET(data[8], 5) + BIT_OFFSET(data[12], 6) + BIT_OFFSET(data[13], 7); 
 }
@@ -1060,6 +1063,11 @@ void request_task(void *params)
     }
 }
 
+bool get_sync_data(void)
+{
+    return sync_data;
+}
+
 void akb_time_work_task(void *params)
 {
     static uint32_t tick_prev = 0;

+ 2 - 0
modules/MegaTec/megatec.h

@@ -99,4 +99,6 @@ float voltage_bat_average(void);
 
 float power_load_average(void);
 
+bool get_sync_data(void);
+
 #endif /* MEGATEC_H_ */

+ 4 - 0
modules/monitor/ups_monitor.c

@@ -916,6 +916,10 @@ void UPS_PowerMonitor(void)
   uint8_t powerStatusCurrent;
   static uint8_t powerStatusOld = 0;
 
+  if(!get_sync_data()) {
+    return;
+  }
+
   powerStatusCurrent = ((UPS.warn_status >> 5) & 0x01);
   powerStatusCurrent |= UPS_LoadRangeAlarm();