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