Beispiel #1
0
        public void TestDfuImage()
        {
            // Arrange
            DfuImage dfuImage = new DfuImage();

            dfuImage.TargetPrefix.AlternateSetting = false;
            dfuImage.TargetPrefix.TargetName       = "Ellerbach";
            for (int i = 0; i < 5; i++)
            {
                var imageElement = new ImageElement()
                {
                    ElementAddress = (uint)(16 * i), Data = new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }
                };
                dfuImage.ImageElements.Add(imageElement);
            }
            dfuImage.TargetPrefix.NumberOfElements = (uint)dfuImage.ImageElements.Count;
            // Act
            var ser = dfuImage.Serialize();
            // Assert
            var size   = BinaryPrimitives.ReadUInt32LittleEndian(ser.AsSpan(266, 4));
            var elemns = BinaryPrimitives.ReadUInt32LittleEndian(ser.AsSpan(270, 4));

            // Assert
            // T
            Assert.Equal(0x54, ser[0]);
            // t
            Assert.Equal(0x74, ser[5]);
            Assert.Equal(0x00, ser[6]);
            Assert.Equal(0x01, ser[7]);
            // E
            Assert.Equal(0x45, ser[11]);
            // h
            Assert.Equal(0x68, ser[11 + dfuImage.TargetPrefix.TargetName.Length - 1]);
            Assert.Equal(dfuImage.TargetPrefix.TargetSize, size);
            Assert.Equal(dfuImage.TargetPrefix.NumberOfElements, elemns);
            Assert.Equal(0x00, ser[274]);
        }
Beispiel #2
0
        public void CanWriteReal()
        {
            var sampleData = new byte[] { 1, 2, 3, 4 };

            var dfuPrefix = new DfuPrefix();

            var dfuSuffix = new DfuSuffix {
                Device  = 0x5678,
                Product = 0x1234,
                Vendor  = 0x0483
            };

            var targetPrefix = new TargetPrefix {
                TargetId      = 2,
                IsTargetNamed = true,
                TargetName    = new string('Q', 256)
            };

            var imageElement = new ImageElement {
                ElementAddress = 0x08000000,
                Data           = sampleData
            };

            var dfuImage = new DfuImage {
                Prefix = targetPrefix
            };

            dfuImage.ImageElements.Add(imageElement);

            var dfuImages = new DfuImages();

            dfuImages.Images.Add(dfuImage);


            var dfu = new Dfu {
                Prefix = dfuPrefix,
                Images = dfuImages,
                Suffix = dfuSuffix
            };

            // Array generated by DFU File Manager v3.0.6
            var expected = new byte[] {
                0x44, 0x66, 0x75, 0x53, 0x65,
                0x01,
                0x29, 0x01, 0x00, 0x00,
                0x01,

                0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
                0x02,
                0x01, 0x00, 0x00, 0x00,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x0C, 0x00, 0x00, 0x00,
                0x01, 0x00, 0x00, 0x00,

                0x00, 0x00, 0x00, 0x08,
                0x04, 0x00, 0x00, 0x00,
                0x01, 0x02, 0x03, 0x04,

                0x78, 0x56,
                0x34, 0x12,
                0x83, 0x04,
                0x1A, 0x01,
                0x55, 0x46, 0x44,
                0x10,
                0xB7, 0x02, 0xE0, 0x8D
            };

            var sut = this.Resolve <IDfuSerializer>();

            var tempStream = new MemoryStream();

            sut.Write(tempStream, dfu);

            var actual = tempStream.ToArray();

            Assert.That(actual, Is.EqualTo(expected));
        }