Aggiornamento gestioen DECODER x allarmi e check variazioni

This commit is contained in:
Samuele Locatelli
2022-03-21 09:14:01 +01:00
parent 5177f412de
commit cf310ab003
2 changed files with 40 additions and 36 deletions
+17 -22
View File
@@ -11,7 +11,6 @@ namespace MP.MONO.DECODER
public class AlarmManager
{
protected List<string> AlarmList = new List<string>();
List<int> currAlarmStatus = new List<int>();
protected static Lua state = new Lua();
protected static string luaPath = "";
public static string alarmStatus = "";
@@ -20,40 +19,34 @@ namespace MP.MONO.DECODER
public AlarmManager()
{
// !!!FIXME TODO
#if false
// fare vero setup da file... x ora è fake
for (int i = 1; i < 16; i++)
{
AlarmList.Add($"Allarme{i:00}");
}
#endif
currAlarmStatus.Add(0);
// preparo variabile x avvisare script che il modo è da NLua
luaPath = Path.Combine(Directory.GetCurrentDirectory(), "lua", "AlarmDecoder.lua");
#if FALSE
state["alarmList"] = AlarmList;
state["numAlarm"] = AlarmList.Count;
#endif
#if false
state.DoString(" callMode = 'NLua' ");
// initi 0/0
#if false
state.DoString(" lastVal = 0 ");
state.DoString(" currVal = 0 ");
#endif
#if true
state["callMode"] = "NLua";
state["lastVal"] = 0;
state["currVal"] = 0;
#endif
Log.Info("AlarmManager OK");
Console.WriteLine("AlarmManager OK");
}
public static List<string> processData(string prefix, List<string> alarmList, uint muteMask, uint disableMask, uint newStatus)
/// <summary>
/// Funzione chiamata LUA x calcolo status allarmi
/// </summary>
/// <param name="prefix"></param>
/// <param name="alarmList"></param>
/// <param name="muteMask"></param>
/// <param name="disableMask"></param>
/// <param name="lastVal"></param>
/// <param name="currVal"></param>
/// <returns></returns>
public static List<string> processData(string prefix, List<string> alarmList, uint muteMask, uint disableMask, uint lastVal, ref uint currVal)
{
state["prefix"] = prefix;
state["alarmList"] = alarmList;
@@ -63,11 +56,13 @@ namespace MP.MONO.DECODER
List<string> answ = new List<string>();
// invio dati aggiornati a LUA
state["currVal"] = newStatus;
state["lastVal"] = lastVal;
state["currVal"] = currVal;
// FIXME TODO!!! fare invio banco allarmi correnti (SE fossero + banchi da config)
state.DoFile(luaPath);
alarmStatus = state.GetString("alarmStatus");
// recupero NUOVO valore (filtrato) attuale da salvare
currVal = (uint)state.GetNumber("lastVal");
bool.TryParse(state.GetString("valueChanged"), out valueChanged);
if (valueChanged)
{
+23 -14
View File
@@ -152,23 +152,32 @@ void AlarmValPipe_EA_NewMessage(object? sender, EventArgs e)
var bankVal = alarmList.FirstOrDefault(x => x.Key == alarmData.memAddr);
uint actVal = !string.IsNullOrEmpty(bankVal.Key) ? bankVal.Value : 0;
// valutare se dividere in 2 da 16... FIXME TODO
var bankAlarmList = AlarmManager.processData(alarmData.memAddr, alarmData.messages, alarmData.silenceMask[0], alarmData.disableMask[0], actVal);
// aggiungo...
activeAlarmList.AddRange(bankAlarmList);
AlarmLogModel newAlarm = new AlarmLogModel()
var bankAlarmList = AlarmManager.processData(alarmData.memAddr, alarmData.messages, alarmData.silenceMask[0], alarmData.disableMask[0], alarmData.alarmsState[0], ref actVal);
// salvo nuovo valore in oggetto...
if (alarmData.alarmsState[0] != actVal)
{
MachineId = MachineId,
DtRif = DateTime.Now,
MemAddress = bankVal.Key,
Index = alarmData != null ? alarmData.index : 0,
Status = alarmData != null ? (uint)bankVal.Value & alarmData.silenceMask[0] & alarmData.disableMask[0] : (uint)bankVal.Value,
ValDecoded = bankAlarmList.Count > 0 ? string.Join(", ", bankAlarmList) : "All OK"
};
alarmLogList.Add(newAlarm);
alarmData.alarmsState[0] = actVal;
// aggiungo...
activeAlarmList.AddRange(bankAlarmList);
AlarmLogModel newAlarm = new AlarmLogModel()
{
MachineId = MachineId,
DtRif = DateTime.Now,
MemAddress = bankVal.Key,
Index = alarmData != null ? alarmData.index : 0,
Status = alarmData != null ? (uint)bankVal.Value & alarmData.silenceMask[0] & alarmData.disableMask[0] : (uint)bankVal.Value,
ValDecoded = bankAlarmList.Count > 0 ? string.Join(", ", bankAlarmList) : "All OK"
};
alarmLogList.Add(newAlarm);
}
}
}
// serializzo...
// salvo status aggiornato allarme...
redisDb.StringSet(Constants.ALARMS_SETT_KEY, JsonConvert.SerializeObject(currAlarmsConf));
// serializzo l'elenco allarmi...
string serAlarms = "All OK";
if (activeAlarmList.Count > 0)
{