Browse Source

add log data in alarm case

balbekova 7 years ago
parent
commit
c6843c0850
4 changed files with 53 additions and 1 deletions
  1. 1 0
      modules/common/hal.c
  2. 26 1
      modules/log/log.c
  3. 5 0
      modules/log/log.h
  4. 21 0
      modules/monitor/ups_monitor.c

+ 1 - 0
modules/common/hal.c

@@ -18,6 +18,7 @@ void Reboot(void) {
 	SNMP_SendUserTrap(DEVICE_REBOOTED);
 	log_event_data(LOG_SYSTEM_BOOT, "Администратор");
 	vTaskDelay(1010);
+	LOG_Disable();
     NVIC_SystemReset();
 }
 

+ 26 - 1
modules/log/log.c

@@ -82,11 +82,36 @@ static struct ringfs fs2;
 
 static SemaphoreHandle_t log_mutex;
 
+
+/**
+  * @brief  Отключает журнал для безопасной перезагрузки
+  */
+bool LOG_Disable(void)
+{
+    if (fLogInit) {
+        /* Ожидаем завершения работы с журнал */
+        if ( xSemaphoreTake(log_mutex, 10000) == pdTRUE ) {
+            //fLogInit = false;
+            //xSemaphoreGive(logMutex);
+            return true;
+        }
+        else {
+           return false;
+        }
+    }
+    else {
+        return true;
+    }
+}
+
 void log_task(void)
 {
 	for(;;){
 		flUpdateLog = true;
-		vTaskDelay(LOG_TIME);
+		//vTaskDelay(LOG_TIME);
+		vTaskDelay(50);
+		log_event_data(LOG_SYSTEM_BOOT, "Администратор");
+		log_add(")215.7;215.7;220.5;000;50.1;2.30;25.0;00000001;");
 	}
 }
 

+ 5 - 0
modules/log/log.h

@@ -55,6 +55,11 @@ void log_event_data(log_type_t type, char *data);
   */
 bool LOG_IsInit();
 
+/**
+  * @brief  Отключает журнал для безопасной перезагрузки
+  */
+bool LOG_Disable(void);
+
 /**
   * @brief  Возвращает общее количество страниц
   */

+ 21 - 0
modules/monitor/ups_monitor.c

@@ -41,6 +41,8 @@ bool flNonCriticalAlarm = false;
   */
 extern SETTINGS_t sSettings;
 
+extern bool flUpdateLog;
+
 
 /**
   * @brief  Задача мониторинга параметров UPS
@@ -88,6 +90,7 @@ void UPS_DI0Monitor(void)
 	  if (!DI0StateCurrent){
 		  log_event_data(LOG_ALARM_DIO, "Авария");
 		  SNMP_SendUserTrap(DI0_ALARM);
+		  flUpdateLog = true;
 	  }
 	  return;
 	}
@@ -103,10 +106,12 @@ void UPS_DI0Monitor(void)
 		  if (DI0StateCurrent){
 			log_event_data(LOG_ALARM_DIO, "Норма");
 			SNMP_SendUserTrap(DI0_NORM);
+			flUpdateLog = true;
 		  }
 		  else{
 			log_event_data(LOG_ALARM_DIO, "Авария");
 			SNMP_SendUserTrap(DI0_ALARM);
+			flUpdateLog = true;
 		  }
 	  }
 	}
@@ -354,6 +359,7 @@ void UPS_LineFailMonitor(void)
     if (lineFailCurrent){
     	log_event_data(LOG_ALARM_LINE, "Авария");
           SNMP_SendUserTrap(LINE_ALARM);
+          flUpdateLog = true;
     }
     return;
   }
@@ -367,10 +373,12 @@ void UPS_LineFailMonitor(void)
     if (lineFailCurrent){
       log_event_data(LOG_ALARM_LINE, "Авария");
       SNMP_SendUserTrap(LINE_ALARM);
+      flUpdateLog = true;
     }
     else{
       log_event_data(LOG_ALARM_LINE, "Норма");
       SNMP_SendUserTrap(LINE_NORM);
+      flUpdateLog = true;
     }
   }
   
@@ -396,6 +404,7 @@ void UPS_LowBatMonitor(void)
     if (lowBatCurrent){
     	log_event_data(LOG_ALARM_LOW_BAT, "Авария");
           SNMP_SendUserTrap(LOW_BAT_ALARM);
+          flUpdateLog = true;
     }
     return;
   }
@@ -407,10 +416,12 @@ void UPS_LowBatMonitor(void)
     if (lowBatCurrent){
       SNMP_SendUserTrap(LOW_BAT_ALARM);
       log_event_data(LOG_ALARM_LOW_BAT, "Авария");
+      flUpdateLog = true;
     }
     else{
       SNMP_SendUserTrap(LOW_BAT_NORM);
       log_event_data(LOG_ALARM_LOW_BAT, "Норма");
+      flUpdateLog = true;
     }
   }
   
@@ -441,6 +452,7 @@ void UPS_PowerMonitor(void)
 	  log_event_data(LOG_ALARM_POWER, "Авария");
 	  // Отправка трапа о завышении 
 	  SNMP_SendUserTrap(POWER_ALARM);
+	  flUpdateLog = true;
 	}
   }
   /* Отслеживается нормализация */
@@ -456,6 +468,7 @@ void UPS_PowerMonitor(void)
 	  log_event_data(LOG_ALARM_POWER, "Норма");
 	  // Отправка трапа о нормализации 
 	  SNMP_SendUserTrap(POWER_NORM);
+	  flUpdateLog = true;
 	}
   }
 }
@@ -483,6 +496,7 @@ void UPS_TemperatureMonitor(void)
 	  log_event_data(LOG_ALARM_TEMP, "Авария");
 	  // Отправка трапа о завышении 
 	  SNMP_SendUserTrap(BATTERY_TEMPERATURE_ALARM);
+	  flUpdateLog = true;
 	}
   }
   /* Отслеживается нормализация */
@@ -496,6 +510,7 @@ void UPS_TemperatureMonitor(void)
 	  log_event_data(LOG_ALARM_TEMP, "Норма");
 	  // Отправка трапа о нормализации 
 	  SNMP_SendUserTrap(BATTERY_TEMPERATURE_NORM);
+	  flUpdateLog = true;
 	}
   }
 }
@@ -519,6 +534,7 @@ void UPS_ConnectMonitor(void)
     if (!connectCurrent){
     	log_event_data(LOG_ALARM_UPS, "Авария");
     	SNMP_SendUserTrap(CONNECT_MONITOR_ALARM);
+    	flUpdateLog = true;
     }
     return;
   }
@@ -530,10 +546,12 @@ void UPS_ConnectMonitor(void)
     if (connectCurrent){
       log_event_data(LOG_ALARM_UPS, "Норма");
       SNMP_SendUserTrap(CONNECT_MONITOR_NORM);
+      flUpdateLog = true;
     }
     else{
       log_event_data(LOG_ALARM_UPS, "Авария");
       SNMP_SendUserTrap(CONNECT_MONITOR_ALARM);
+      flUpdateLog = true;
     }
   }
   
@@ -563,6 +581,7 @@ void UPS_BatteryConnectMonitor(void)
     if (AKBconnectCurrent){
       log_event_data(LOG_ALARM_AKB, "Авария");
 	  SNMP_SendUserTrap(BATTERY_CONNECT_ALARM);
+	  flUpdateLog = true;
     }
     return;
   }
@@ -574,10 +593,12 @@ void UPS_BatteryConnectMonitor(void)
     if (!AKBconnectCurrent){
       log_event_data(LOG_ALARM_AKB, "Норма");
       SNMP_SendUserTrap(BATTERY_CONNECT_NORM);
+      flUpdateLog = true;
     }
     else{
       log_event_data(LOG_ALARM_AKB, "Авария");
       SNMP_SendUserTrap(BATTERY_CONNECT_ALARM);
+      flUpdateLog = true;
     }
   }