public static void Save(IValueSink sink, ChangeOfValue value) { sink.EnterSequence(); Value <NewValue> .Save(sink, value.NewValue); Value <StatusFlags> .Save(sink, value.StatusFlags); sink.LeaveSequence(); }
public static void Save(IValueSink sink, ChangeOfValue value) { sink.EnterSequence(); Value <uint> .Save(sink, value.TimeDelay); Value <COVCriteria> .Save(sink, value.CovCriteria); sink.LeaveSequence(); }
public ChangeOfValueWrapper(ChangeOfValue item) { this.Item = item; }
public static void Save(IValueSink sink, ChangeOfValue value) { sink.EnterSequence(); Value<NewValue>.Save(sink, value.NewValue); Value<StatusFlags>.Save(sink, value.StatusFlags); sink.LeaveSequence(); }
public ErrorCodes WriteProperty(BacnetObjectId objectId, BacnetPropertyIds propertyId, uint arrayIndex, IList <BacnetValue> value, bool addIfNotExits = false) { //wildcard device_id if (objectId.type == BacnetObjectTypes.OBJECT_DEVICE && objectId.instance >= Serialize.ASN1.BACNET_MAX_INSTANCE) { objectId.instance = DeviceId; } //overrides if (WriteOverride != null) { bool handled; ErrorCodes status; WriteOverride(objectId, propertyId, arrayIndex, value, out status, out handled); if (handled) { return(status); } } //find var p = FindProperty(objectId, propertyId); if (p == null) { if (!addIfNotExits) { return(ErrorCodes.NotExist); } //add obj var obj = FindObject(objectId); if (obj == null) { obj = new Object { Type = objectId.type, Instance = objectId.instance }; var arr = Objects; Array.Resize(ref arr, arr.Length + 1); arr[arr.Length - 1] = obj; Objects = arr; } //add property p = new Property { Id = propertyId }; var props = obj.Properties; Array.Resize(ref props, props.Length + 1); props[props.Length - 1] = p; obj.Properties = props; } //set type if needed if (p.Tag == BacnetApplicationTags.BACNET_APPLICATION_TAG_NULL && value != null) { foreach (var v in value) { if (v.Tag == BacnetApplicationTags.BACNET_APPLICATION_TAG_NULL) { continue; } p.Tag = v.Tag; break; } } //write p.BacnetValue = value; //send event ... for subscriptions ChangeOfValue?.Invoke(this, objectId, propertyId, arrayIndex, value); return(ErrorCodes.Good); }
public static void Save(IValueSink sink, ChangeOfValue value) { sink.EnterSequence(); Value<uint>.Save(sink, value.TimeDelay); Value<COVCriteria>.Save(sink, value.CovCriteria); sink.LeaveSequence(); }