Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }