Beispiel #1
0
        public static DeviceInfo From(XElement node)
        {
            var xName = node.Attribute("name");

            var xFlash     = node.Element("flash");
            var xEeprom    = node.Element("eeprom");
            var xRam       = node.Attribute("ram");
            var xSignature = node.Attribute("signature");
            var xLockBits  = node.Element("lockBits");
            var xFuseBits  = node.Element("fuseBits");
            var xStkCode   = node.Attribute("stkCode");
            var res        = new DeviceInfo {
                Name   = xName != null ? xName.Value : "unknown",
                _flash = xFlash != null?DeviceFlashParameters.From(xFlash) : new DeviceFlashParameters(),
                             _eeprom = xEeprom != null?DeviceEepromParameters.From(xEeprom) : new DeviceEepromParameters(),
                                           RamSize = xRam != null?int.Parse(xRam.Value) : 0,
                                                         Signature = xSignature != null?AvrSignature.Parse(xSignature.Value) : new AvrSignature(),
                                                                         _lockBits = xLockBits != null?DeviceBits.Parse(xLockBits) : new DeviceBits(),
                                                                                         _fuseBits = xFuseBits != null?DeviceBits.Parse(xFuseBits) : new DeviceBits(),
                                                                                                         StkCode = xStkCode != null?ParseStkCode(xStkCode.Value) : StkDeviceCode.None,
            };

            var xMasks = node.Element("masks");

            if (xMasks != null)
            {
                foreach (var xMask in xMasks.Elements())
                {
                    var mask = MemoryMask.From(xMask);
                    res.Masks.Add(mask);
                }
            }
            return(res);
        }
Beispiel #2
0
        public static MemoryMask From(XElement node)
        {
            var xWordSize   = node.Attribute("wordSize");
            var xMemoryType = node.Attribute("memoryType");
            var xStart      = node.Attribute("start");
            var xEnd        = node.Attribute("end");
            var xMask       = node.Attribute("mask");

            var memType = AvrMemoryType.Flash;

            if (xMemoryType != null)
            {
                Enum.TryParse(xMemoryType.Value, true, out memType);
            }

            var start = 0;

            if (xStart != null)
            {
                DeviceInfoUtils.TryParseInt(xStart.Value, out start);
            }

            int?end = null;

            if (xEnd != null)
            {
                int endVal;
                if (DeviceInfoUtils.TryParseInt(xEnd.Value, out endVal))
                {
                    end = endVal;
                }
            }

            var wordSize = 1;

            if (xWordSize != null)
            {
                DeviceInfoUtils.TryParseInt(xWordSize.Value, out wordSize);
            }

            var mask = 0xffffffff;

            if (xMask != null)
            {
                DeviceInfoUtils.TryParseUInt(xMask.Value, out mask);
            }

            var res = new MemoryMask {
                MemoryType   = memType,
                AddressStart = start,
                AddressEnd   = end,
                WordSize     = wordSize,
                Mask         = mask
            };

            return(res);
        }