Update gestione SIM e DECODER x allarmi (NON ancora OK)
This commit is contained in:
@@ -5,32 +5,35 @@ Variabili IN:
|
||||
- alarmList(array/tabella) (elenco allarmi gestiti a bitmap, se ## = silenziati)
|
||||
- currVal(INT) stato corrente
|
||||
- lastVal(INT) ultimo stato (oppure 0) - opzionale
|
||||
- muteMap(INT) valore BITMASK x silenziamento allarmi (xFF default = tutto attivo, ogni bit a 0 è silenziato) - opzionale
|
||||
- muteMask(INT) valore disableMask x silenziamento allarmi (xFF default = tutto attivo, ogni bit a 0 è silenziato) - opzionale
|
||||
|
||||
Variabili OUT:
|
||||
- alarmStatus (stirng con status finale risultato allarmi attivi)
|
||||
|
||||
Viene calcolato internamente la bitmask dall'elenco allarmi
|
||||
Viene calcolato internamente la disableMask dall'elenco allarmi
|
||||
-----------------------------------------------------]]
|
||||
|
||||
-- ricezione da codice tab status allarmi, attenzione da C# è 0 based, qui è 1 based --> fix costruzione tabella
|
||||
|
||||
-- variabile semaforo callMode (locali o remote da NLua)
|
||||
callMode = callMode or ''
|
||||
currVal = currVal or 0
|
||||
lastVal = lastVal or 0
|
||||
muteMap = muteMap or 0Xff
|
||||
bitMask = bitMask or 0x00
|
||||
valueChanged = false
|
||||
callMode = callMode or ''
|
||||
currVal = currVal or 0
|
||||
lastVal = lastVal or 0
|
||||
muteMask = muteMask or 0XFF
|
||||
disableMask = disableMask or 0xFF
|
||||
--disableMask = disableMask or 0x00 -- caso calcolato internamente
|
||||
valueChanged = false
|
||||
prefix = prefix or 'AREA'
|
||||
|
||||
-- se non è da NLua inizializzo variabili accessorie
|
||||
local function checkInit()
|
||||
if(callMode ~= 'NLua') then
|
||||
alarmList = {"##Allarme01", "Allarme02", "Allarme03", "##Allarme04", "Allarme05", "Allarme06", "Allarme07", "##Allarme08"}
|
||||
alarmList = {"Allarme01", "Allarme02", "Allarme03", "Allarme04", "Allarme05", "Allarme06", "Allarme07", "Allarme08", "##Allarme09", "##Allarme10", "##Allarme11", "##Allarme12", "##Allarme13", "##Allarme14", "##Allarme15", "##Allarme16"}
|
||||
numAlarm = #alarmList
|
||||
-- valori status da testare
|
||||
lastVal = 0
|
||||
currVal = 255
|
||||
disableMask = 0x00
|
||||
end
|
||||
end
|
||||
|
||||
@@ -43,12 +46,12 @@ local function testBit(testVal, i)
|
||||
end
|
||||
|
||||
local function valMask(testVal)
|
||||
return testVal & bitMask
|
||||
return testVal & disableMask & muteMask
|
||||
end
|
||||
|
||||
local function setupTable()
|
||||
if numAlarm > 0 and alarmList[0] ~= nil then
|
||||
bitMask = 0
|
||||
disableMask = 0
|
||||
for i = numAlarm,1, -1 do
|
||||
alarmListTable[i] = alarmList[i-1]
|
||||
end
|
||||
@@ -57,13 +60,15 @@ local function setupTable()
|
||||
end
|
||||
end
|
||||
-- calcolo maschera...
|
||||
local function setupBitMask()
|
||||
for i = 1, numAlarm,1 do
|
||||
if(string.sub(alarmListTable[i],0,2)~='##') then
|
||||
bitMask = bitMask + 2^(i-1)
|
||||
end
|
||||
local function setupdisableMask()
|
||||
if(callMode ~= 'NLua') then
|
||||
for i = 1, numAlarm,1 do
|
||||
if(string.sub(alarmListTable[i],0,2)~='##') then
|
||||
disableMask = disableMask + 2^(i-1)
|
||||
end
|
||||
end
|
||||
disableMask = math.tointeger(disableMask)
|
||||
end
|
||||
bitMask = math.tointeger(bitMask)
|
||||
end
|
||||
|
||||
-- confronto lastVal e currVal
|
||||
@@ -87,7 +92,7 @@ local function checkActiveAlarms()
|
||||
for i = 1, numAlarm do
|
||||
bTest = testBit(valMask(currVal),i)
|
||||
if(bTest) then
|
||||
alarmListActive[#alarmListActive+1]=string.format("%03d",i) ..' - '.. alarmListTable[i]
|
||||
alarmListActive[#alarmListActive+1]= '[' .. prefix ..'.' .. string.format("%02d",i) ..'] '.. alarmListTable[i]
|
||||
hasAlarms = 1
|
||||
end
|
||||
end
|
||||
@@ -113,7 +118,7 @@ end
|
||||
|
||||
local function displayTestInfo()
|
||||
if(callMode ~= 'NLua') then
|
||||
print('muteMap: '.. muteMap .. ' | bitMask: '.. bitMask)
|
||||
print('muteMask: '.. muteMask .. ' | disableMask: '.. disableMask)
|
||||
print(alarmStatus)
|
||||
--print('------------------------------')
|
||||
--for i,val in pairs(alarmListTable) do
|
||||
@@ -130,7 +135,7 @@ alarmStatus = ""
|
||||
|
||||
checkInit()
|
||||
setupTable()
|
||||
setupBitMask()
|
||||
setupdisableMask()
|
||||
checkVariation()
|
||||
checkActiveAlarms()
|
||||
calcStatusVar()
|
||||
|
||||
Reference in New Issue
Block a user