diff --git a/includes/decoders/fms.py b/includes/decoders/fms.py index e28be3a..08c06f8 100644 --- a/includes/decoders/fms.py +++ b/includes/decoders/fms.py @@ -34,38 +34,42 @@ def decode(freq, decoded): @return: nothing @exception: Exception if FMS decode failed """ - fms_service = decoded[19] # Organisation - fms_country = decoded[36] # Bundesland - fms_location = decoded[65:67] # Ort - fms_vehicle = decoded[72:76] # Fahrzeug - fms_status = decoded[84] # Status - fms_direction = decoded[101] # Richtung - fms_directionText = decoded[103:110] # Richtung (Text) - fms_tsi = decoded[114:117] # Taktische Kruzinformation + try: + fms_service = decoded[19] # Organisation + fms_country = decoded[36] # Bundesland + fms_location = decoded[65:67] # Ort + fms_vehicle = decoded[72:76] # Fahrzeug + fms_status = decoded[84] # Status + fms_direction = decoded[101] # Richtung + fms_directionText = decoded[103:110] # Richtung (Text) + fms_tsi = decoded[114:117] # Taktische Kruzinformation - if "CRC correct" in decoded: #check CRC is correct - fms_id = fms_service+fms_country+fms_location+fms_vehicle+fms_status+fms_direction # build FMS id - # if FMS is valid - if re.search("[0-9a-f]{8}[0-9a-f]{1}[01]{1}", fms_id): - # check for double alarm - if doubleFilter.checkID("FMS", fms_id): - logging.info("FMS:%s Status:%s Richtung:%s TSI:%s", fms_id[0:8], fms_status, fms_direction, fms_tsi) - data = {"fms":fms_id[0:8], "status":fms_status, "direction":fms_direction, "directionText":fms_directionText, "tsi":fms_tsi, "description":fms_id[0:8]} - # If enabled, look up description - if globals.config.getint("FMS", "idDescribed"): - from includes import descriptionList - data["description"] = descriptionList.getDescription("FMS", fms_id[0:8]) - # processing the alarm - try: - from includes import alarmHandler - alarmHandler.processAlarm("FMS", freq, data) - except: - logging.error("processing alarm failed") - logging.debug("processing alarm failed", exc_info=True) - pass - # in every time save old data for double alarm - doubleFilter.newEntry(fms_id) + if "CRC correct" in decoded: #check CRC is correct + fms_id = fms_service+fms_country+fms_location+fms_vehicle+fms_status+fms_direction # build FMS id + # if FMS is valid + if re.search("[0-9a-f]{8}[0-9a-f]{1}[01]{1}", fms_id): + # check for double alarm + if doubleFilter.checkID("FMS", fms_id): + logging.info("FMS:%s Status:%s Richtung:%s TSI:%s", fms_id[0:8], fms_status, fms_direction, fms_tsi) + data = {"fms":fms_id[0:8], "status":fms_status, "direction":fms_direction, "directionText":fms_directionText, "tsi":fms_tsi, "description":fms_id[0:8]} + # If enabled, look up description + if globals.config.getint("FMS", "idDescribed"): + from includes import descriptionList + data["description"] = descriptionList.getDescription("FMS", fms_id[0:8]) + # processing the alarm + try: + from includes import alarmHandler + alarmHandler.processAlarm("FMS", freq, data) + except: + logging.error("processing alarm failed") + logging.debug("processing alarm failed", exc_info=True) + pass + # in every time save old data for double alarm + doubleFilter.newEntry(fms_id) + else: + logging.warning("No valid FMS: %s", fms_id) else: - logging.warning("No valid FMS: %s", fms_id) - else: - logging.warning("FMS CRC incorrect") + logging.warning("FMS CRC incorrect") + except: + logging.error("error while decoding") + logging.debug("error while decoding", exc_info=True) diff --git a/includes/decoders/poc.py b/includes/decoders/poc.py index 279c922..b40dafe 100644 --- a/includes/decoders/poc.py +++ b/includes/decoders/poc.py @@ -73,57 +73,61 @@ def decode(freq, decoded): @return: nothing @exception: Exception if POCSAG decode failed """ - bitrate = 0 + try: + bitrate = 0 - if "POCSAG512:" in decoded: - bitrate = 512 - poc_id = decoded[20:27].replace(" ", "").zfill(7) - poc_sub = str(int(decoded[39])+1) + if "POCSAG512:" in decoded: + bitrate = 512 + poc_id = decoded[20:27].replace(" ", "").zfill(7) + poc_sub = str(int(decoded[39])+1) - elif "POCSAG1200:" in decoded: - bitrate = 1200 - poc_id = decoded[21:28].replace(" ", "").zfill(7) - poc_sub = str(int(decoded[40])+1) + elif "POCSAG1200:" in decoded: + bitrate = 1200 + poc_id = decoded[21:28].replace(" ", "").zfill(7) + poc_sub = str(int(decoded[40])+1) - elif "POCSAG2400:" in decoded: - bitrate = 2400 - poc_id = decoded[21:28].replace(" ", "").zfill(7) - poc_sub = str(int(decoded[40])+1) + elif "POCSAG2400:" in decoded: + bitrate = 2400 + poc_id = decoded[21:28].replace(" ", "").zfill(7) + poc_sub = str(int(decoded[40])+1) - if bitrate is 0: - logging.warning("POCSAG Bitrate not found") - logging.debug(" - (%s)", decoded) - else: - logging.debug("POCSAG Bitrate: %s", bitrate) - - if "Alpha:" in decoded: #check if there is a text message - poc_text = decoded.split('Alpha: ')[1].strip().rstrip('').strip() + if bitrate is 0: + logging.warning("POCSAG Bitrate not found") + logging.debug(" - (%s)", decoded) else: - poc_text = "" + logging.debug("POCSAG Bitrate: %s", bitrate) - if re.search("[0-9]{7}", poc_id) and re.search("[1-4]{1}", poc_sub): #if POC is valid - if isAllowed(poc_id): - # check for double alarm - if doubleFilter.checkID("POC", poc_id+poc_sub, poc_text): - logging.info("POCSAG%s: %s %s %s ", bitrate, poc_id, poc_sub, poc_text) - data = {"ric":poc_id, "function":poc_sub, "msg":poc_text, "bitrate":bitrate, "description":poc_id} - # Add function as character a-d to dataset - data["functionChar"] = data["function"].replace("1", "a").replace("2", "b").replace("3", "c").replace("4", "d") - # If enabled, look up description - if globals.config.getint("POC", "idDescribed"): - from includes import descriptionList - data["description"] = descriptionList.getDescription("POC", poc_id) - # processing the alarm - try: - from includes import alarmHandler - alarmHandler.processAlarm("POC", freq, data) - except: - logging.error("processing alarm failed") - logging.debug("processing alarm failed", exc_info=True) - pass - # in every time save old data for double alarm - doubleFilter.newEntry(poc_id+poc_sub, poc_text) + if "Alpha:" in decoded: #check if there is a text message + poc_text = decoded.split('Alpha: ')[1].strip().rstrip('').strip() else: - logging.debug("POCSAG%s: %s is not allowed", bitrate, poc_id) - else: - logging.warning("No valid POCSAG%s RIC: %s SUB: %s", bitrate, poc_id, poc_sub) + poc_text = "" + + if re.search("[0-9]{7}", poc_id) and re.search("[1-4]{1}", poc_sub): #if POC is valid + if isAllowed(poc_id): + # check for double alarm + if doubleFilter.checkID("POC", poc_id+poc_sub, poc_text): + logging.info("POCSAG%s: %s %s %s ", bitrate, poc_id, poc_sub, poc_text) + data = {"ric":poc_id, "function":poc_sub, "msg":poc_text, "bitrate":bitrate, "description":poc_id} + # Add function as character a-d to dataset + data["functionChar"] = data["function"].replace("1", "a").replace("2", "b").replace("3", "c").replace("4", "d") + # If enabled, look up description + if globals.config.getint("POC", "idDescribed"): + from includes import descriptionList + data["description"] = descriptionList.getDescription("POC", poc_id) + # processing the alarm + try: + from includes import alarmHandler + alarmHandler.processAlarm("POC", freq, data) + except: + logging.error("processing alarm failed") + logging.debug("processing alarm failed", exc_info=True) + pass + # in every time save old data for double alarm + doubleFilter.newEntry(poc_id+poc_sub, poc_text) + else: + logging.debug("POCSAG%s: %s is not allowed", bitrate, poc_id) + else: + logging.warning("No valid POCSAG%s RIC: %s SUB: %s", bitrate, poc_id, poc_sub) + except: + logging.error("error while decoding") + logging.debug("error while decoding", exc_info=True) diff --git a/includes/decoders/zvei.py b/includes/decoders/zvei.py index 70d6196..ce6e9e2 100644 --- a/includes/decoders/zvei.py +++ b/includes/decoders/zvei.py @@ -56,26 +56,30 @@ def decode(freq, decoded): @return: nothing @exception: Exception if ZVEI decode failed """ - zvei_id = decoded[7:12] # ZVEI Code - zvei_id = removeF(zvei_id) # resolve F - if re.search("[0-9]{5}", zvei_id): # if ZVEI is valid - # check for double alarm - if doubleFilter.checkID("ZVEI", zvei_id): - logging.info("5-Ton: %s", zvei_id) - data = {"zvei":zvei_id, "description":zvei_id} - # If enabled, look up description - if globals.config.getint("ZVEI", "idDescribed"): - from includes import descriptionList - data["description"] = descriptionList.getDescription("ZVEI", zvei_id) - # processing the alarm - try: - from includes import alarmHandler - alarmHandler.processAlarm("ZVEI", freq, data) - except: - logging.error("processing alarm failed") - logging.debug("processing alarm failed", exc_info=True) - pass - # in every time save old data for double alarm - doubleFilter.newEntry(zvei_id) - else: - logging.warning("No valid ZVEI: %s", zvei_id) + try: + zvei_id = decoded[7:12] # ZVEI Code + zvei_id = removeF(zvei_id) # resolve F + if re.search("[0-9]{5}", zvei_id): # if ZVEI is valid + # check for double alarm + if doubleFilter.checkID("ZVEI", zvei_id): + logging.info("5-Ton: %s", zvei_id) + data = {"zvei":zvei_id, "description":zvei_id} + # If enabled, look up description + if globals.config.getint("ZVEI", "idDescribed"): + from includes import descriptionList + data["description"] = descriptionList.getDescription("ZVEI", zvei_id) + # processing the alarm + try: + from includes import alarmHandler + alarmHandler.processAlarm("ZVEI", freq, data) + except: + logging.error("processing alarm failed") + logging.debug("processing alarm failed", exc_info=True) + pass + # in every time save old data for double alarm + doubleFilter.newEntry(zvei_id) + else: + logging.warning("No valid ZVEI: %s", zvei_id) + except: + logging.error("error while decoding") + logging.debug("error while decoding", exc_info=True)