def _poll_alarms(self): # thread while 1: ideal_alarms = [] cpc_alarms = self._cpc_uhp_node.get_alarms() for cpc_alarm in cpc_alarms: if not isinstance(cpc_alarm, CpcAlarm): # could be None or Exception continue src = '%s:%s:%s,%s:%s' % (cpc_alarm.device_name, str(cpc_alarm.item), \ cpc_alarm.item_num, str(cpc_alarm.obj), \ cpc_alarm.obj_num) tm_tuple = (cpc_alarm.orig_date[0], cpc_alarm.orig_date[1], cpc_alarm.orig_date[2], \ cpc_alarm.orig_time[0], cpc_alarm.orig_time[1], 0, 0, 0, -1) tm_sec = time.mktime(tm_tuple) state = 'Not acked' if cpc_alarm.ack_date >= cpc_alarm.orig_date: state = 'Acked' type = 'Alarm' if cpc_alarm.type == 0: type = 'Notice' i = cpc_alarm.text.find('\x00') data = cpc_alarm.text[:i] ideal_alarm = Alarm(id=cpc_alarm.id, type=type, source=src, timestamp=tm_sec, data=data, state=state) ideal_alarms.append(ideal_alarm) msglog.log('mpx',msglog.types.INFO,'CPC Alarm: %s' % ideal_alarm.as_list()) # legal protection in case CPC eqpt fails or Costco doesn't see alarm if len(ideal_alarms) > 0: ae = NewAlarmsEvent(self, ideal_alarms) self.parent.event_generate(ae) for i in range(30): if self._go == 0: return time.sleep(1.0) return