xref: /haiku/src/apps/devices/Device.h (revision 820dca4df6c7bf955c46e8f6521b9408f50b2900)
1 /*
2  * Copyright 2008-2009 Haiku Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Pieter Panman
7  */
8 #ifndef DEVICE_H
9 #define DEVICE_H
10 
11 
12 #include <map>
13 #include <vector>
14 
15 #include <String.h>
16 #include <StringItem.h>
17 
18 extern "C" {
19 #include "dm_wrapper.h"
20 }
21 
22 
23 typedef enum {
24 	BUS_ISA = 1,
25 	BUS_PCI,
26 	BUS_SCSI,
27 	BUS_ACPI,
28 	BUS_NONE
29 } BusType;
30 
31 
32 struct Attribute {
33 			Attribute(BString name, BString value)
34 				{ fName = name; fValue = value; }
35 	BString	fName;
36 	BString	fValue;
37 };
38 
39 
40 typedef std::map<BString, BString>::const_iterator AttributeMapIterator;
41 typedef std::map<BString, BString> AttributeMap;
42 typedef std::pair<BString, BString> AttributePair;
43 typedef std::vector<Attribute> Attributes;
44 
45 
46 typedef enum {
47 	CAT_NONE,		// 0x00
48 	CAT_MASS,		// 0x01
49 	CAT_NETWORK,	// 0x02
50 	CAT_DISPLAY,	// 0x03
51 	CAT_MULTIMEDIA,	// 0x04
52 	CAT_MEMORY,		// 0x05
53 	CAT_BUS,		// 0x06
54 	CAT_COMM,		// 0x07
55 	CAT_GENERIC,	// 0x08
56 	CAT_INPUT,		// 0x09
57 	CAT_DOCK,		// 0x0A
58 	CAT_CPU,		// 0x0B
59 	CAT_SERIAL,		// 0x0C
60 	CAT_WIRELESS,	// 0x0D
61 	CAT_INTEL,		// 0x0E
62 	CAT_SATELLITE,	// 0x0F
63 	CAT_CRYPTO,		// 0x10
64 	CAT_SIGNAL,		// 0x11
65 	CAT_COMPUTER,	// 0x12
66 	CAT_ACPI		// 0x13
67 } Category;
68 
69 
70 extern const char* kCategoryString[];
71 
72 
73 class Device : public BStringItem {
74 public:
75 							Device(Device* physicalParent,
76 								BusType busType = BUS_NONE,
77 								Category category = CAT_NONE,
78 								const BString& name = "unknown",
79 								const BString& manufacturer = "unknown",
80 								const BString& driverUsed = "unknown",
81 								const BString& devPathsPublished = "unknown");
82 	virtual					~Device();
83 
84 	virtual BString			GetName();
85 	virtual BString			GetManufacturer();
86 	virtual BString			GetDriverUsed();
87 	virtual BString			GetDevPathsPublished();
88 	virtual Category		GetCategory() const
89 								{ return fCategory; }
90 	virtual Device*			GetPhysicalParent() const
91 								{ return fPhysicalParent; }
92 	virtual BusType			GetBusType() const
93 								{ return fBusType; }
94 
95 	virtual Attributes		GetBasicAttributes();
96 	virtual Attributes		GetBusAttributes();
97 	virtual Attributes		GetAllAttributes();
98 
99 	virtual BString			GetBasicStrings();
100 	virtual BString			GetBusStrings();
101 	virtual BString			GetAllStrings();
102 
103 	virtual BString			GetBusTabName();
104 
105 	virtual Attribute		GetAttribute(const BString& name)
106 								{ return Attribute(name.String(),
107 									 fAttributeMap[name]); }
108 
109 	virtual void 			SetAttribute(const BString& name,
110 								const BString& value);
111 
112 	virtual void			InitFromAttributes() { return; }
113 
114 protected:
115 			AttributeMap	fAttributeMap;
116 			BusType			fBusType;
117 			Category		fCategory;
118 			Device*			fPhysicalParent;
119 };
120 
121 #endif /* DEVICE_H */
122 
123