1 // 2 // Copyright (c) 2010-2018 Antmicro 3 // Copyright (c) 2011-2015 Realtime Embedded 4 // 5 // This file is licensed under the MIT License. 6 // Full license text is available in 'licenses/MIT.txt'. 7 // 8 using System.Collections.Generic; 9 using System; 10 using System.Linq; 11 using Antmicro.Renode.Peripherals; 12 13 namespace Antmicro.Renode.Config.Devices 14 { 15 public class DeviceInfo 16 { 17 //<irqcontroller, <source, dest>> 18 private Dictionary<string, dynamic> irqs = new Dictionary<string, dynamic>(); 19 20 public Dictionary<string, dynamic> Irqs{ get { return irqs; } } 21 22 private Dictionary<string, dynamic> irqsFrom = new Dictionary<string, dynamic>(); 23 24 public Dictionary<string, dynamic> IrqsFrom{ get { return irqsFrom; } } 25 26 public Dictionary<string, List<IDictionary<string, object>>> Connections{ get; private set; } 27 28 public IEnumerable<UInt32> Address{ get; set; } 29 30 public Type Type { get; set; } 31 32 public string Name{ get; set; } 33 34 public bool HasConnections{ get { return Connections.Any(); } } 35 36 public IPeripheral Peripheral{ get; set; } 37 38 public bool IsRegistered{ get; set; } 39 DeviceInfo()40 public DeviceInfo() 41 { 42 Connections = new Dictionary<string, List<IDictionary<string, object>>>(); 43 } 44 AddConnection(string container)45 public void AddConnection(string container) 46 { 47 AddConnection(container, new Dictionary<string, object>()); 48 } 49 AddConnection(string container, IDictionary<string,object> connectionDef)50 public void AddConnection(string container, IDictionary<string,object> connectionDef) 51 { 52 if(!Connections.ContainsKey(container)) 53 { 54 Connections.Add(container, new List<IDictionary<string,object>>()); 55 } 56 // connectionDef.Add("name", Name); 57 Connections[container].Add(connectionDef); 58 } 59 AddConnection(string container, IList<dynamic> list)60 public void AddConnection(string container, IList<dynamic> list) 61 { 62 foreach(var item in list) 63 { 64 AddConnection(container, item); 65 } 66 } 67 AddIrq(string section, dynamic value)68 public void AddIrq(string section, dynamic value) 69 { 70 irqs[section] = value; 71 } 72 AddIrqFrom(string section, dynamic value)73 public void AddIrqFrom(string section, dynamic value) 74 { 75 irqsFrom[section] = value; 76 } 77 } 78 } 79 80