def _set_value(self, value, timestamp=None): if isinstance(value, cas.gdd): info = self._gdd_to_dict(value) self._timestamp = info['timestamp'] self._value = info['value'] self._status = info['status'] self._severity = info['severity'] else: gdd = cas.gdd() gdd.setPrimType(self._ca_type) if timestamp is None: timestamp = cas.epicsTimeStamp() self._timestamp = timestamp self._value = value self._status, self._severity = self.check_alarm() if not self._interest: return self._gdd_set_value(gdd) # Notify clients of the update self.postEvent(self._mask, gdd) self._mask = cas.DBE_VALUE | cas.DBE_LOG
def _set_value(self, value, timestamp=None): if isinstance(value, cas.gdd): gdd = value info = self._gdd_to_dict(gdd) self._timestamp = info['timestamp'] self._value = info['value'] self._status = info['status'] self._severity = info['severity'] else: gdd = cas.gdd() gdd.setPrimType(self._ca_type) if timestamp is None: timestamp = cas.epicsTimeStamp() self._timestamp = timestamp self._value = value self._status, self._severity = self.check_alarm() self._gdd_set_value(gdd) if self._interest: # Notify clients of the update self.postEvent(self._mask, gdd)
def _gdd_to_dict(self, gdd): '''Take a gdd value and dump the important parts into a dictionary''' timestamp = cas.epicsTimeStamp() gdd.getTimeStamp(timestamp) value = gdd.get() status, severity = self.check_alarm(value) return dict(timestamp=timestamp, value=value, status=status, severity=severity)
def touch(self): '''Update the timestamp and alarm status (without changing the value)''' self._timestamp = cas.epicsTimeStamp() self._status, self._severity = self.check_alarm()