public override async Task WriteValue(IDispatchable source, object value) { if (bool.TryParse(value.ToString(), out bool bolValue)) { if (bolValue) { var dg = new RadioErp1Packet(Rorg.Rps, new ReadOnlyMemory <byte>(new byte[] { 0x10 })); await Driver.SendTelegram(dg); await Task.Delay(150); dg = new RadioErp1Packet(Rorg.Rps, new ReadOnlyMemory <byte>(new byte[] { 0x00 })); await Driver.SendTelegram(dg); } else { var dg = new RadioErp1Packet(Rorg.Rps, new ReadOnlyMemory <byte>(new byte[] { 0x30 })); await Driver.SendTelegram(dg); await Task.Delay(150); dg = new RadioErp1Packet(Rorg.Rps, new ReadOnlyMemory <byte>(new byte[] { 0x20 })); await Driver.SendTelegram(dg); } } }
public override void TelegramReceived(RadioErp1Packet telegram) { if (telegram.SenderIdString == _serial) { base.TelegramReceived(telegram); } }
public virtual void TelegramReceived(RadioErp1Packet telegram) { foreach (var child in ChildrenT) { child.TelegramReceived(telegram); } }
public override void TelegramReceived(RadioErp1Packet telegram) { var data = GetValueGeneric(telegram); if (data != null) { DispatchValue(data); } }
public void TestRockerSwitch_R2_TeachIn() { DispatcherMock.Instance.Clear(); var driver = CreateDriverForF6("FEF7D96E", EnOceanRorgF6Data.DataFieldF6_02_01_1_R2_Guid); var telegram = CreatePacket("55000707017AF630FEF7D96E0001FFFFFFFF460039"); driver.TelegramReceived(telegram); Assert.True(RadioErp1Packet.IsTechIn(telegram)); }
public override void TelegramReceived(RadioErp1Packet telegram) { var value = GetValueGeneric(telegram); if (value != null && value is int bValue) { DispatchValue(bValue == 0); } else if (value is bool booleanValue) { DispatchValue(!booleanValue); } }
public void Test_PackageParseNoLearnMode() { var byteData = Automatica.Core.Driver.Utility.Utils.StringToByteArray("55000707017AD508019C20150001FFFFFFFF500088"); var packet = EnOceanPacket.Parse(byteData); var radioErp1 = new RadioErp1Packet(); radioErp1.FromPacket(packet); Assert.False(RadioErp1Packet.IsTechIn(radioErp1)); Assert.Equal(EnOcean.PacketType.RadioErp1, packet.PacketType); Assert.False(packet.SecurityLevel); }
static async void Run() { var logger = new ConsoleLogger("EnOnean", (s, level) => true, false); Logger.Logger.Instance = logger; var driver = new Driver("COM3"); await driver.Open(); var telegram = new RadioErp1Packet(Rorg.Rps, new ReadOnlyMemory <byte>(new byte[] { 0 })); var rec = await driver.SendTelegram(telegram); driver.TelegramReceived += Driver_TelegramReceived; System.Console.WriteLine("rec..."); }
public static EnOceanTelegram FromPacket(EnOceanPacket packet) { EnOceanTelegram telegram; switch (packet.PacketType) { case EnOcean.PacketType.RadioErp1: { telegram = new RadioErp1Packet(); break; } default: throw new NotImplementedException(); } telegram.FromPacket(packet); return(telegram); }
private void TelegramReceivedEventHandler(object sender, PacketReceivedEventArgs packetReceivedEventArgs) { if (packetReceivedEventArgs.Telegram is RadioErp1Packet radio1 && _learnModeActive && RadioErp1Packet.IsTechIn(radio1)) { TeachInReceived?.Invoke(sender, packetReceivedEventArgs); } TelegramReceived?.Invoke(sender, packetReceivedEventArgs); }
public void TestA5_11_01_Data_TeachIn2() { var telegram = CreatePacket("55000707017AF6D000211D5A2001FFFFFFFF500002"); Assert.True(RadioErp1Packet.IsTechIn(telegram)); }
public void TestA5_11_01_Data_TeachIn() { var telegram = CreatePacket("55000A0701EBA500008E48FFA8AB000001FFFFFFFF560073"); Assert.False(RadioErp1Packet.IsTechIn(telegram)); }
public object GetValueGeneric(RadioErp1Packet telegram) { var dif = BitOffs / 8; var mod = BitOffs % Length; var size = Length / 8; int index; if (dif > 0) { index = BitOffs - (dif * 8); index = Math.Abs(index - 7); } else { index = Math.Abs(BitOffs - 7); } if (!telegram.Data.IsEmpty && telegram.Data.Length >= 1) { if (mod == 0 && size == 1) // full byte { var b = telegram.Data.Span[dif]; return(ScaleMinMax(b)); } if (Length > 8 && Length < 14) { var b1 = telegram.Data.Span[dif]; var b2 = telegram.Data.Span[dif + 1]; var bitMask = (byte)0x0; var b2Len = Length - 8; for (var i = 0; i < b2Len; i++) { var bitIndex = index - i; bitMask = Automatica.Core.Driver.Utility.Utils.SetBitsTo1(bitMask, (byte)(bitIndex)); } var val = BitConverter.ToInt16(new [] { b1, (byte)(b2 & bitMask) }, 0); return(ScaleMinMax(val)); } if (Length < 8) { var bitMask = (byte)0x0; for (var i = 0; i < Length; i++) { var bitIndex = index - i; bitMask = Automatica.Core.Driver.Utility.Utils.SetBitsTo1(bitMask, (byte)(bitIndex)); } if (BitOffs < 8 && Length > 1) { bitMask <<= BitOffs; } var ret = (telegram.Data.Span[dif] & bitMask) >> (index - Length + 1); if (Length == 1) { return(ret >= 1); } if (BitOffs < 8 && Length > 1) { return(ret >> BitOffs); } return(ret); } } return(null); }