Пример #1
0
 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