public void Write(Stream stream, IDfuImage dfuImage) { var targetPrefixSerializer = this._createTargetPrefixSerializer(); targetPrefixSerializer.Write(stream, dfuImage.Prefix, dfuImage.ImageElements); foreach (var dfuImageElement in dfuImage.ImageElements) { var imageElementSerializer = this._createImageElementSerializer(); imageElementSerializer.Write(stream, dfuImageElement); } }
public uint GetSize(IDfuImage dfuImage) { var targetPrefixSerializer = this._createTargetPrefixSerializer(); var result = targetPrefixSerializer.GetSize(); foreach (var imageElement in dfuImage.ImageElements) { var imageElementSerializer = this._createImageElementSerializer(); result += imageElementSerializer.GetSize(imageElement); } return(result); }
internal void ProcessInternal(Stream dfuStream, int targetId, int elementIndex) { var dfuDeserializer = this._createDfuDeserializer(); var dfu = dfuDeserializer.Read(dfuStream); IDfuImage image = null; if (targetId >= 0) { image = dfu.Images.Images.FirstOrDefault(x => x.Prefix.TargetId == targetId); } if (image == null) { throw new ArgumentException("Target was not found!"); } if (elementIndex >= image.ImageElements.Count) { throw new IndexOutOfRangeException("Element's index out of range!"); } var element = image.ImageElements[elementIndex]; image.ImageElements.RemoveAt(elementIndex); image.Prefix.NbElements--; image.Prefix.TargetSize -= 8 + element.ElementSize; dfuStream.Seek(0, SeekOrigin.Begin); dfuStream.SetLength(0); var dfuSerializer = this._createDfuSerializer(); dfuSerializer.Write(dfuStream, dfu); }
public void ProcessInternal(Stream dfuStream, int id, uint setElementAddress, Stream setElementStream) { var dfuSerializer = this._createDfuSerializer(); var dfuDeserializer = this._createDfuDeserializer(); var dfu = dfuDeserializer.Read(dfuStream); IDfuImage image = null; if (id >= 0) { image = dfu.Images.Images.FirstOrDefault(x => x.Prefix.TargetId == id); } if (image == null) { throw new ArgumentException("Target was not found!"); } var imageElement = this._createImageElement(); imageElement.ElementAddress = setElementAddress; var buffer = new byte[setElementStream.Length]; setElementStream.Read(buffer, 0, buffer.Length); imageElement.Data = buffer; imageElement.ElementSize = Convert.ToUInt32(buffer.Length); image.ImageElements.Add(imageElement); image.Prefix.NbElements++; image.Prefix.TargetSize += 8 + imageElement.ElementSize; dfuStream.Seek(0, SeekOrigin.Begin); dfuStream.SetLength(0); dfuSerializer.Write(dfuStream, dfu); }