124 lines
2.6 KiB
C++
124 lines
2.6 KiB
C++
/*
|
|
* Copyright 2008-2009 Haiku Inc. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*
|
|
* Authors:
|
|
* Pieter Panman
|
|
*/
|
|
#ifndef DEVICE_H
|
|
#define DEVICE_H
|
|
|
|
|
|
#include <map>
|
|
#include <vector>
|
|
|
|
#include <String.h>
|
|
#include <StringItem.h>
|
|
|
|
extern "C" {
|
|
#include "dm_wrapper.h"
|
|
}
|
|
|
|
|
|
typedef enum {
|
|
BUS_ISA = 1,
|
|
BUS_PCI,
|
|
BUS_SCSI,
|
|
BUS_ACPI,
|
|
BUS_NONE
|
|
} BusType;
|
|
|
|
|
|
struct Attribute {
|
|
Attribute(BString name, BString value)
|
|
{ fName = name; fValue = value; }
|
|
BString fName;
|
|
BString fValue;
|
|
};
|
|
|
|
|
|
typedef std::map<BString, BString>::const_iterator AttributeMapIterator;
|
|
typedef std::map<BString, BString> AttributeMap;
|
|
typedef std::pair<BString, BString> AttributePair;
|
|
typedef std::vector<Attribute> Attributes;
|
|
|
|
|
|
typedef enum {
|
|
CAT_NONE, // 0x00
|
|
CAT_MASS, // 0x01
|
|
CAT_NETWORK, // 0x02
|
|
CAT_DISPLAY, // 0x03
|
|
CAT_MULTIMEDIA, // 0x04
|
|
CAT_MEMORY, // 0x05
|
|
CAT_BUS, // 0x06
|
|
CAT_COMM, // 0x07
|
|
CAT_GENERIC, // 0x08
|
|
CAT_INPUT, // 0x09
|
|
CAT_DOCK, // 0x0A
|
|
CAT_CPU, // 0x0B
|
|
CAT_SERIAL, // 0x0C
|
|
CAT_WIRELESS, // 0x0D
|
|
CAT_INTEL, // 0x0E
|
|
CAT_SATELLITE, // 0x0F
|
|
CAT_CRYPTO, // 0x10
|
|
CAT_SIGNAL, // 0x11
|
|
CAT_COMPUTER, // 0x12
|
|
CAT_ACPI // 0x13
|
|
} Category;
|
|
|
|
|
|
extern const char* kCategoryString[];
|
|
extern const int kCategoryStringLength;
|
|
|
|
|
|
class Device : public BStringItem {
|
|
public:
|
|
Device(Device* physicalParent,
|
|
BusType busType = BUS_NONE,
|
|
Category category = CAT_NONE,
|
|
const BString& name = "unknown",
|
|
const BString& manufacturer = "unknown",
|
|
const BString& driverUsed = "unknown",
|
|
const BString& devPathsPublished = "unknown");
|
|
virtual ~Device();
|
|
|
|
virtual BString GetName();
|
|
virtual BString GetManufacturer();
|
|
virtual BString GetDriverUsed();
|
|
virtual BString GetDevPathsPublished();
|
|
virtual Category GetCategory() const
|
|
{ return fCategory; }
|
|
virtual Device* GetPhysicalParent() const
|
|
{ return fPhysicalParent; }
|
|
virtual BusType GetBusType() const
|
|
{ return fBusType; }
|
|
|
|
virtual Attributes GetBasicAttributes();
|
|
virtual Attributes GetBusAttributes();
|
|
virtual Attributes GetAllAttributes();
|
|
|
|
virtual BString GetBasicStrings();
|
|
virtual BString GetBusStrings();
|
|
virtual BString GetAllStrings();
|
|
|
|
virtual BString GetBusTabName();
|
|
|
|
virtual Attribute GetAttribute(const BString& name)
|
|
{ return Attribute(name.String(),
|
|
fAttributeMap[name]); }
|
|
|
|
virtual void SetAttribute(const BString& name,
|
|
const BString& value);
|
|
|
|
virtual void InitFromAttributes() { return; }
|
|
|
|
protected:
|
|
AttributeMap fAttributeMap;
|
|
BusType fBusType;
|
|
Category fCategory;
|
|
Device* fPhysicalParent;
|
|
};
|
|
|
|
#endif /* DEVICE_H */
|
|
|