private IMessagePayload CreateBusMessage(KnxAddressBindingTypes bindingType, CemiFrame cemiFrame) { switch (bindingType) { case KnxAddressBindingTypes.Switch: bool onOff = (cemiFrame.Apdu & 1) == 1; return(new SwitchMessage(onOff)); case KnxAddressBindingTypes.Temperature: return(new TemperatureMessage(Dpt9001.BytesToCelsius(new ArraySegment <byte>(cemiFrame.Data.Array, cemiFrame.Data.Offset, cemiFrame.Data.Count)))); break; default: throw new ArgumentOutOfRangeException(nameof(bindingType), bindingType, null); } }
public void AddSwitch(GroupAddress groupAddress, IMessageBusAddress address, KnxAddressBindingTypes knxAddressBindingType) { _mapping.Add(address, groupAddress); _bindingTypes = _bindingTypes.Add(groupAddress, knxAddressBindingType); _messageBus.AddMessageSink(address, this, this); }
public KnxAddressBinding(GroupAddress groupAddress, KnxAddressBindingTypes knxAddressBindingType) { GroupAddress = groupAddress; KnxAddressBindingType = knxAddressBindingType; }