public void TestDfuSuffix() { // Arrange DfuSuffix dfuSuffix = new DfuSuffix() { FirmwareVersion = 0x1234, ProductId = 0x5678, VersionId = 0x90AB, Crc = 0xCDEF0123 }; // Act var ser = dfuSuffix.Serialize(); var firmware = BinaryPrimitives.ReadUInt16LittleEndian(ser.AsSpan(0, 2)); var productId = BinaryPrimitives.ReadUInt16LittleEndian(ser.AsSpan(2, 2)); var versionId = BinaryPrimitives.ReadUInt16LittleEndian(ser.AsSpan(4, 2)); var ufd = BinaryPrimitives.ReadUInt16LittleEndian(ser.AsSpan(6, 2)); // Assert Assert.Equal(dfuSuffix.FirmwareVersion, firmware); Assert.Equal(dfuSuffix.ProductId, productId); Assert.Equal(dfuSuffix.VersionId, versionId); Assert.Equal((ushort)0x011A, ufd); Assert.Equal(0x44, ser[10]); Assert.Equal(16, ser[11]); Assert.Equal(0x23, ser[12]); Assert.Equal(0xCD, ser[15]); }
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)); }