예제 #1
0
        public void TestATCommandResponseParse()
        {
            var packet = new byte[] { 0x00, 0x20, 0x95, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0x7D, 0x84, 0x02, 0x7D, 0x84, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0x20, 0x00, 0xFF, 0xFE, 0x01, 0x01, 0xC1, 0x05, 0x10, 0x1E, 0x1B };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <NodeIdentification>());

            var cmd = (NodeIdentification)frame;

            Assert.That(cmd.Source, Is.TypeOf <XBeeNode>());
            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x7D84)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));

            Assert.That(cmd.ReceiveOptions, Is.EqualTo(ReceiveOptionsType.BroadcastPacket));
            Assert.That(cmd.Source2, Is.TypeOf <XBeeNode>());
            Assert.That(cmd.Source2.Address16, Is.EqualTo(new XBeeAddress16(0x7D84)));
            Assert.That(cmd.Source2.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));

            Assert.That(cmd.NodeIdentifier, Is.EqualTo(" "));
            Assert.That(cmd.ParentAddress, Is.EqualTo(new XBeeAddress16(0xFFFE)));

            Assert.That(cmd.Type, Is.EqualTo(NodeIdentification.DeviceType.Router));
            Assert.That(cmd.SourceEvent, Is.EqualTo(NodeIdentification.SourceEventType.PushButtonEvent));
            Assert.That(cmd.ProfileId, Is.EqualTo(0xC105));
            Assert.That(cmd.ManufacturerId, Is.EqualTo(0x101E));
        }
예제 #2
0
        public void TestModemStatusParse()
        {
            var packet = new byte[] { 0x00, 0x02, 0x8A, 0x06, 0x6F };
            var frame  = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ModemStatus>());

            var cmd = (ModemStatus)frame;

            Assert.That(cmd.Status, Is.EqualTo(ModemStatus.StatusType.CoordinatorStarted));
        }
예제 #3
0
        public void TestXBeeUnmarshalerATCommand()
        {
            var packetData = new byte[] { 0x00, 0x08, 0x08, 0x01, (byte)'D', (byte)'H', 0x11, 0x22, 0x33, 0x00, 0x04 };

            var frame = XBeePacketUnmarshaler.Unmarshal(packetData);

            Assert.That(frame, Is.InstanceOf <ATCommand>());
            var cmd = (ATCommand)frame;

            Assert.That(cmd.FrameId, Is.EqualTo(0x01));
            Assert.That(cmd.Command, Is.EqualTo(AT.DestinationHigh));
        }
예제 #4
0
        public void TestManyToOneRouteRequestParse()
        {
            var packet = new byte[] { 0x00, 0x0C, 0xA3, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x40, 0x11, 0x22, 0x00, 0x00, 0x00, 0xF4 };
            var frame  = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ManyToOneRouteRequest>());

            var cmd = (ManyToOneRouteRequest)frame;

            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x0000)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040401122)));
        }
예제 #5
0
        public void TestNetworkDiscoveryParsing()
        {
            var packet = new byte[]
            {
                0x00, 0x19, 0x88, 0x01, 0x4E, 0x44, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA2, 0x00,
                0x40, 0x47, 0x81, 0x4F, 0x20, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0xC1, 0x05, 0x10,
                0x1E, 0xC7
            };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ATCommandResponse>());
        }
예제 #6
0
        public void TestZigBeeReceivePacketParse()
        {
            var packet = new byte[] { 0x00, 0x12, 0x90, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0x7D, 0x84, 0x01, 0x52, 0x78, 0x44, 0x61, 0x74, 0x61, 0x0D };
            var frame  = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ZigBeeReceivePacket>());

            var cmd = (ZigBeeReceivePacket)frame;

            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x7D84)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));
            Assert.That(cmd.ReceiveOptions, Is.EqualTo(ReceiveOptionsType.Acknowledged));
            Assert.That(new System.Text.UTF8Encoding().GetString(cmd.Data), Is.EqualTo("RxData"));
        }
예제 #7
0
        public void TestTransmitStatusParse()
        {
            var packet = new byte[] { 0x00, 0x07, 0x8B, 0x01, 0x7D, 0x84, 0x00, 0x00, 0x01, 0x71 };
            var frame  = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ZigBeeTransmitStatus>());

            var cmd = (ZigBeeTransmitStatus)frame;

            Assert.That(cmd.Address, Is.EqualTo(new XBeeAddress16(0x7d84)));
            Assert.That(cmd.TransmitRetryCount, Is.EqualTo(0));
            Assert.That(cmd.DeliveryStatus, Is.EqualTo(ZigBeeTransmitStatus.DeliveryStatusType.Success));
            Assert.That(cmd.DiscoveryStatus, Is.EqualTo(ZigBeeTransmitStatus.DiscoveryStatusType.AddressDiscovery));
        }
예제 #8
0
        public void TestATCommandResponseParse()
        {
            var packet = new byte[] { 0x00, 0x05, 0x88, 0x01, 0x42, 0x44, 0x00, 0xF0 };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ATCommandResponse>());

            var cmd = (ATCommandResponse)frame;

            Assert.That(cmd.FrameId, Is.EqualTo(0x01));
            Assert.That(cmd.Command, Is.EqualTo(AT.BaudRate));
            Assert.That(cmd.CommandStatus, Is.EqualTo(0));
        }
예제 #9
0
        public void TestATCommandResponseParse()
        {
            var packet = new byte[] { 0x00, 0x16, 0xA0, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x3E, 0x07, 0x50, 0x00, 0x00, 0x01, 0x52, 0x00, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0x66 };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <OverAirUpdateStatus>());

            var cmd = (OverAirUpdateStatus)frame;

            Assert.That(cmd.Source, Is.TypeOf <XBeeNode>());
            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x0000)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A200403E0750)));

            Assert.That(cmd.ReceiveOptions, Is.EqualTo(ReceiveOptionsType.Acknowledged));
            Assert.That(cmd.BootloaderMessage, Is.EqualTo(OverAirUpdateStatus.BootloaderMessageType.QueryResponse));
            Assert.That(cmd.BlockNumber, Is.EqualTo(0));
            Assert.That(cmd.Target, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));
        }
예제 #10
0
        public void TestATCommandResponseParse()
        {
            var packet = new byte[] { 0x00, 0x13, 0x97, 0x55, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0x7D, 0x84, 0x53, 0x4C, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0xF0 };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <RemoteCommandResponse>());

            var cmd = (RemoteCommandResponse)frame;

            Assert.That(cmd.FrameId, Is.EqualTo(0x55));
            Assert.That(cmd.Source, Is.TypeOf <XBeeNode>());
            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x7D84)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));

            Assert.That(cmd.Command, Is.EqualTo(AT.SerialNumberLow));
            Assert.That(cmd.CommandStatus, Is.EqualTo(RemoteCommandResponse.CommandStatusType.Ok));
            Assert.That(((ATLongValue)cmd.Value).Value, Is.EqualTo(new ATLongValue(0x40522BAA).Value));
        }
예제 #11
0
        public void TestRouteRecordIndicatorParse()
        {
            var packet = new byte[] { 0x00, 0x13, 0xA1, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x40, 0x11, 0x22, 0x33, 0x44, 0x01, 0x03, 0xEE, 0xFF, 0xCC, 0xDD, 0xAA, 0xBB, 0x80 };
            var frame  = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <RouteRecordIndicator>());

            var cmd = (RouteRecordIndicator)frame;

            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x3344)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040401122)));
            Assert.That(cmd.ReceiveOptions, Is.EqualTo(ReceiveOptionsType.Acknowledged));
            Assert.That(cmd.NumberOfHops, Is.EqualTo(3));

            Assert.That(cmd.Addresses, Is.TypeOf <List <XBeeAddress16> >());
            var list = cmd.Addresses;

            Assert.That(list[0], Is.EqualTo(new XBeeAddress16(0xEEFF)));
            Assert.That(list[2], Is.EqualTo(new XBeeAddress16(0xAABB)));
        }
예제 #12
0
        public void TestZigBeeExplicitRXIndicatorParse()
        {
            var packet = new byte[] { 0x00, 0x18, 0x91, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0x7D, 0x84, 0xE0, 0xE0, 0x22, 0x11, 0xC1, 0x05, 0x02, 0x52, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52 };
            var frame  = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ZigBeeExplicitRXIndicator>());

            var cmd = (ZigBeeExplicitRXIndicator)frame;

            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x7D84)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));

            Assert.That(cmd.SourceEndpoint, Is.EqualTo(0xE0));
            Assert.That(cmd.DestinationEndpoint, Is.EqualTo(0xE0));
            Assert.That(cmd.ClusterId, Is.EqualTo(0x2211));
            Assert.That(cmd.ProfileId, Is.EqualTo(0xC105));

            Assert.That(cmd.ReceiveOptions, Is.EqualTo(ReceiveOptionsType.BroadcastPacket));
            Assert.That(new UTF8Encoding().GetString(cmd.Data), Is.EqualTo("RxData"));
        }
예제 #13
0
        public void TestRemoteATCommandParse()
        {
            var packet = new byte[]
            {
                0x00, 0x10, 0x17, 0x01, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x40, 0x11, 0x22, 0xFF, 0xFE, 0x02,
                0x42, 0x48, 0x01, 0xF5
            };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <RemoteATCommand>());

            var cmd = (RemoteATCommand)frame;

            Assert.That(cmd.FrameId, Is.EqualTo(0x01));
            Assert.That(cmd.Destination.Address16, Is.EqualTo(XBeeAddress16.ZNET_BROADCAST));
            Assert.That(cmd.Destination.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040401122)));
            Assert.That(cmd.RemoteOptions, Is.EqualTo(0x02));
            Assert.That(cmd.Command, Is.EqualTo(AT.BroadcastHops));
        }
예제 #14
0
        public void TestSensorReadIndicatorParse()
        {
            var packet = new byte[] { 0x00, 0x14, 0x92, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0x7D, 0x84, 0x01, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x14, 0x02, 0x25, 0xF5 };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ZigBeeIODataSample>());

            var cmd = (ZigBeeIODataSample)frame;

            Assert.That(cmd.Source, Is.TypeOf <XBeeNode>());
            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0x7D84)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));
            Assert.That(cmd.ReceiveOptions, Is.EqualTo(ReceiveOptionsType.Acknowledged));

            Assert.That(cmd.NumberOfSamples, Is.EqualTo(1));
            Assert.That(cmd.DigitalChannelMask, Is.EqualTo(0x001C));
            Assert.That(cmd.AnalogChannelMask, Is.EqualTo(0x02));
            Assert.That(cmd.DigitalSamples, Is.EqualTo(0x0014));
            Assert.That(cmd.AnalogSamples[1], Is.EqualTo(0x0225));
        }
예제 #15
0
        public void TestSensorReadIndicatorParse()
        {
            var packet = new byte[] { 0x00, 0x17, 0x94, 0x00, 0x13, 0xA2, 0x00, 0x40, 0x52, 0x2B, 0xAA, 0xDD, 0x6C, 0x01, 0x03, 0x00, 0x02, 0x00, 0xCE, 0x00, 0xEA, 0x00, 0x52, 0x01, 0x6A, 0x8B };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <SensorReadIndicator>());

            var cmd = (SensorReadIndicator)frame;

            Assert.That(cmd.Source, Is.TypeOf <XBeeNode>());
            Assert.That(cmd.Source.Address16, Is.EqualTo(new XBeeAddress16(0xDD6C)));
            Assert.That(cmd.Source.Address64, Is.EqualTo(new XBeeAddress64(0x0013A20040522BAA)));

            Assert.That(cmd.ReceiveOptions, Is.EqualTo(ReceiveOptionsType.Acknowledged));
            Assert.That(cmd.ADValues[0], Is.EqualTo(0x0002));
            Assert.That(cmd.ADValues[1], Is.EqualTo(0x00CE));
            Assert.That(cmd.ADValues[2], Is.EqualTo(0x00EA));
            Assert.That(cmd.ADValues[3], Is.EqualTo(0x0052));
            Assert.That(cmd.Temperature, Is.EqualTo(0x016A));
            Assert.That(cmd.GetCelciusTemperature(), Is.EqualTo(22.625));
        }
        public void TestExplicitAddressingRequestBroadcastRadiusOptionsParse()
        {
            var packet = new byte[]
            {
                0x00, 0x14, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0xA0, 0xA1, 0x15, 0x54, 0xC1,
                0x05, 0x02, 0x41, 0x3F
            };

            var frame = XBeePacketUnmarshaler.Unmarshal(packet);

            Assert.That(frame, Is.InstanceOf <ExplicitAddressingTransmit>());
            var cmd = (ExplicitAddressingTransmit)frame;

            Assert.That(cmd.FrameId, Is.EqualTo(0x01));

            Assert.That(cmd.BroadcastRadius, Is.EqualTo(2));
            Assert.That(cmd.Options, Is.EqualTo(ExplicitAddressingTransmit.OptionValues.DisableAck | ExplicitAddressingTransmit.OptionValues.ExtendedTimeout));

            Assert.That(cmd.SourceEndpoint, Is.EqualTo(0xA0));
            Assert.That(cmd.DestinationEndpoint, Is.EqualTo(0xA1));
            Assert.That(cmd.ClusterId, Is.EqualTo(0x1554));
            Assert.That(cmd.ProfileId, Is.EqualTo(0xC105));
        }
예제 #17
0
        public void TestXBeeUnmarshalerATCommandWrongLength()
        {
            var packetData = new byte[] { 0x00, 0x08, 0x08, 0x01, (byte)'D', (byte)'H' };

            Assert.Throws <XBeeFrameException>(delegate { XBeeFrame frame = XBeePacketUnmarshaler.Unmarshal(packetData); });
        }
예제 #18
0
 public void TestXBeeUnmarshalerRegister()
 {
     XBeePacketUnmarshaler.RegisterFrameHandler(XBeeAPICommandId.UNKNOWN, typeof(XBeeUnknownFrame));
 }
예제 #19
0
 public void TestXBeeUnmarshalerRegisterWrong()
 {
     XBeePacketUnmarshaler.RegisterFrameHandler(XBeeAPICommandId.REMOTE_AT_COMMAND_REQUEST, typeof(NotXBeeFrame));
 }