Esempio n. 1
0
        public static void SendImageBlockResponse(ushort address, byte status, IEzspService ezspService,
                                                  ushort mfgCode  = default(ushort), ushort imageType = default(ushort), uint fileVersion = default(uint),
                                                  uint fileOffset = default(uint), byte dataSize      = default(byte), byte[] imageData   = null, ushort blockRequestDelay = default(ushort))
        {
            var frame = new EmberApsFrame(ZclConstants.HomeAutomationProfileId, ClusterIds.OtaUpgradeCluster, 1, 1, EmberApsOption.EMBER_APS_OPTION_STANDARD, 0, 0);

            var buffer = new CommandBuffer();

            buffer.Add((byte)(ZclConstants.ZclFrameControlDisableDefaultResponseBit | ZclConstants.ZclFrameControlClusterServerToClientBit | ZclConstants.ZclFrameControlClusterSpecificBit));
            buffer.Add((byte)0x00); // Sequence
            buffer.Add(CommandIds.OtaUpgrade.ImageBlockResponse);
            buffer.Add(status);

            if (status == ZCLStatus.ZclStatusSuccess)
            {
                buffer.Add(mfgCode);
                buffer.Add(imageType);
                buffer.Add(fileVersion);
                buffer.Add(fileOffset);
                buffer.Add(dataSize);
                buffer.AddArray(imageData);
            }
            else if (status == ZCLStatus.ZclStatusWaitForData)
            {
                // Next two commands tell the device to wait 1 second before requesting more data
                buffer.Add((uint)0x00);        // Current Time (Base of wait calculation)
                buffer.Add((uint)0x01);        // Request Time (Offset of wait calculation)

                buffer.Add(blockRequestDelay); // Ensure the BlockRequestDelay is set to 0
            }

            ezspService.SendUnicast(EmberOutgoingMessageType.EMBER_OUTGOING_DIRECT, address, frame, 0, buffer.ToArray());
        }
Esempio n. 2
0
        public static void SendOnOffCommand(ushort address, byte command, IEzspService ezspService)
        {
            var frame = new EmberApsFrame(ZclConstants.HomeAutomationProfileId, ClusterIds.OnOffCluster, 1, 1, EmberApsOption.EMBER_APS_OPTION_STANDARD, 0, 0);

            var buffer = new CommandBuffer();

            buffer.Add(ZclConstants.ZclFrameControlClusterSpecificBit);
            buffer.Add((byte)0xb0);
            buffer.Add(command);
            buffer.AddArray(new byte[] { });

            ezspService.SendUnicast(EmberOutgoingMessageType.EMBER_OUTGOING_DIRECT, address, frame, 0, buffer.ToArray());
        }
Esempio n. 3
0
        public void SetupTests()
        {
            Mock <IManufacturingStoreRepository> mockManufacturingStoreRepository = new Mock <IManufacturingStoreRepository>();

            var product = new Product()
            {
                Board = new Board()
                {
                    ChipType = new ChipType()
                    {
                        Name = TEST_CHIPTYPE_NAME
                    }
                },
                ModelString = TEST_MODEL_STRING,
                SKU         = TEST_SKU
            };

            var targetDevices = new List <TargetDevice>();

            targetDevices.Add(new TargetDevice()
            {
                TestSession = new TestSession()
                {
                    Product = product
                }
            });

            var mockTargetDevices = MockHelper.MockDbSet(targetDevices);

            var euiLists = new List <EuiList>();

            euiLists.Add(new EuiList()
            {
                Id            = 0,
                EUI           = TEST_EUI,
                TargetDevices = targetDevices
            });

            var mockEuiLists = MockHelper.MockDbSet(euiLists);

            mockManufacturingStoreRepository.Setup(x => x.EuiLists).Returns(mockEuiLists);
            mockManufacturingStoreRepository.Setup(x => x.TargetDevices).Returns(mockTargetDevices);

            deviceValidationService = new DeviceValidationService(mockEzspService.Object, mockDataContextFactory.Object, mockErrorProducerService.Object);

            mockEzspService.SetupAllProperties();
            mockDataContextFactory.SetupAllProperties();
            mockDataContextFactory.Setup(x => x.CreateManufacturingStoreRepository()).Returns(mockManufacturingStoreRepository.Object);
            mockErrorProducerService.SetupAllProperties();

            deviceValidationService.ValidProduct = product;

            var deviceAnnounceBuffer = new CommandBuffer();

            deviceAnnounceBuffer.Add((byte)0);
            deviceAnnounceBuffer.Add(new EmberApsFrame(ZdoConstants.ZdoProfileId, ZdoClusterIds.DeviceAnnounce, 0, 0, EmberApsOption.EMBER_APS_OPTION_STANDARD, 0, 0));
            deviceAnnounceBuffer.Add((byte)0);
            deviceAnnounceBuffer.Add((sbyte)0);
            deviceAnnounceBuffer.Add((uint)0xFFFF);
            deviceAnnounceBuffer.Add((byte)11);
            deviceAnnounceBuffer.AddArray(new byte[] { 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255 });
            deviceAnnounceMessage = new EzspIncomingMessageHandlerResponse(deviceAnnounceBuffer);

            var ieeeAddressBuffer = new CommandBuffer();

            ieeeAddressBuffer.Add((byte)0);
            ieeeAddressBuffer.Add(new EmberApsFrame(ZdoConstants.ZdoProfileId, ZdoClusterIds.IEEEAddressResponse, 0, 0, EmberApsOption.EMBER_APS_OPTION_STANDARD, 0, 0));
            ieeeAddressBuffer.Add((byte)0);
            ieeeAddressBuffer.Add((sbyte)0);
            ieeeAddressBuffer.Add((uint)0xFFFF);
            ieeeAddressBuffer.Add((byte)10);
            ieeeAddressBuffer.AddArray(new byte[] { 0, 0, 255, 255, 255, 255, 255, 255, 255, 255 });
            ieeeAddressMessage = new EzspIncomingMessageHandlerResponse(ieeeAddressBuffer);

            var modelStringArray  = Encoding.ASCII.GetBytes(TEST_MODEL_STRING);
            var modelStringBuffer = new CommandBuffer();

            modelStringBuffer.Add((byte)0);
            modelStringBuffer.Add(new EmberApsFrame(ZclConstants.HomeAutomationProfileId, ClusterIds.BasicCluster, 0, 0, EmberApsOption.EMBER_APS_OPTION_STANDARD, 0, 0));
            modelStringBuffer.Add((byte)0);
            modelStringBuffer.Add((sbyte)0);
            modelStringBuffer.Add((uint)0xFFFF);
            modelStringBuffer.Add(((byte)(modelStringArray.Count() + 10)));
            modelStringBuffer.Add(ZclConstants.ZclFrameControlManufacturerSpecificBit);
            modelStringBuffer.Add(ZclConstants.CentraliteManufacturerId);
            modelStringBuffer.Add((byte)0);
            modelStringBuffer.Add(CommandIds.Global.ReadAttributesResponse);
            modelStringBuffer.Add(AttributeIds.BasicServer.ModelIdentifier);
            modelStringBuffer.Add(ZCLStatus.ZclStatusSuccess);
            modelStringBuffer.Add(ZclDataTypes.CharacterString);
            modelStringBuffer.Add(((byte)modelStringArray.Count()));
            modelStringBuffer.AddArray(modelStringArray);
            modelStringMessage = new EzspIncomingMessageHandlerResponse(modelStringBuffer);

            var firmwareVersionBuffer = new CommandBuffer();

            firmwareVersionBuffer.Add((byte)0);
            firmwareVersionBuffer.Add(new EmberApsFrame(ZclConstants.HomeAutomationProfileId, ClusterIds.OtaUpgradeCluster, 0, 0, EmberApsOption.EMBER_APS_OPTION_STANDARD, 0, 0));
            firmwareVersionBuffer.Add((byte)0);
            firmwareVersionBuffer.Add((sbyte)0);
            firmwareVersionBuffer.Add((uint)0xFFFF);
            firmwareVersionBuffer.Add((byte)11);
            firmwareVersionBuffer.Add((byte)0);
            firmwareVersionBuffer.Add((byte)0);
            firmwareVersionBuffer.Add(CommandIds.Global.ReadAttributesResponse);
            firmwareVersionBuffer.Add(AttributeIds.OtaServer.CurrentFileVersion);
            firmwareVersionBuffer.Add(ZCLStatus.ZclStatusSuccess);
            firmwareVersionBuffer.Add((byte)0);
            firmwareVersionBuffer.Add(TEST_FIRMWARE_VERSION);
            firmwareVersionMessage = new EzspIncomingMessageHandlerResponse(firmwareVersionBuffer);
        }