Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
 public override void TelegramReceived(RadioErp1Packet telegram)
 {
     if (telegram.SenderIdString == _serial)
     {
         base.TelegramReceived(telegram);
     }
 }
Ejemplo n.º 3
0
 public virtual void TelegramReceived(RadioErp1Packet telegram)
 {
     foreach (var child in ChildrenT)
     {
         child.TelegramReceived(telegram);
     }
 }
Ejemplo n.º 4
0
        public override void TelegramReceived(RadioErp1Packet telegram)
        {
            var data = GetValueGeneric(telegram);

            if (data != null)
            {
                DispatchValue(data);
            }
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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...");
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 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);
 }
Ejemplo n.º 11
0
        public void TestA5_11_01_Data_TeachIn2()
        {
            var telegram = CreatePacket("55000707017AF6D000211D5A2001FFFFFFFF500002");

            Assert.True(RadioErp1Packet.IsTechIn(telegram));
        }
Ejemplo n.º 12
0
        public void TestA5_11_01_Data_TeachIn()
        {
            var telegram = CreatePacket("55000A0701EBA500008E48FFA8AB000001FFFFFFFF560073");

            Assert.False(RadioErp1Packet.IsTechIn(telegram));
        }
Ejemplo n.º 13
0
        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);
        }