BOSWatch/includes/multicastAlarm.py

63 lines
2 KiB
Python
Raw Normal View History

2017-09-23 09:25:08 +02:00
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
multicastAlarm is the function to enable BOSwatch to work in networks that optimise the transmission of POCSAG telegrams
2017-09-23 09:25:08 +02:00
@author: Fabian Kessler
@requires: Configuration has to be set in the config.ini
"""
import logging # Global logger
import time # timestamp for multicastAlarm
from includes import globalVars # Global variables
multiList = []
2017-10-03 12:08:04 +02:00
def newEntrymultiList(data):
2017-09-23 09:25:08 +02:00
"""
add entry to multi alarm list and remove old entries
@return: nothing
"""
global multiList
tmpmultiList = []
timestamp = int(time.time())
# multicastAlarm processing if enabled and delimiter RIC has been received
if data['ric'] == globalVars.config.get("multicastAlarm", "multicastAlarm_delimiter_ric"):
2017-09-23 09:25:08 +02:00
multiList = []
2017-10-03 12:03:08 +02:00
logging.debug("multicastAlarm delimiter RIC received --> buffer cleared")
2017-09-23 09:25:08 +02:00
else:
multiList.append([typ, data['ric'], data['function'], data['functionChar'], data['msg'].strip(), data['description'], timestamp])
2017-10-03 12:03:08 +02:00
logging.debug("Added %s to multiList", data['ric'])
2017-09-23 09:25:08 +02:00
# check for old entries in multiList
2017-10-02 15:32:01 +02:00
for i, _ in enumerate(multiList):
2017-09-23 09:25:08 +02:00
# we have to remove entries older than timestamp - ignore time
if int(multiList[i][6]) > timestamp-globalVars.config.getint("multicastAlarm", "multicastAlarm_ignore_time"):
2017-09-23 09:25:08 +02:00
tmpmultiList.append(multiList[i])
multiList = tmpmultiList
def multicastAlarmExec(typ, freq, data):
"""
call alarmHandler for every entry in multiList
@return: nothing
"""
logging.debug("data before update from multiList: %s", data)
2017-10-02 15:32:01 +02:00
for i, _ in enumerate(multiList):
#update data with values multiList
2017-09-23 09:25:08 +02:00
data['ric'] = multiList[i][1]
data['function'] = multiList[i][2]
data['functionChar'] = multiList[i][3]
data['description'] = multiList[i][5]
2017-09-23 09:25:08 +02:00
logging.debug("data after update from multiList: %s", data)
try:
from includes import alarmHandler
alarmHandler.processAlarmHandler(typ, freq, data)
except:
logging.error("processing alarm failed")
logging.debug("processing alarm failed", exc_info=True)