Each device has: - Name (long/short) - Manufacturer (long/short) - Category (one master list, each bus type maps its device types onto the master list) - Driver used - Device paths - Its bus type - Its connection parent, if applicable Each source has: (currently the RescanDevices method does this) - Init function - Scan method that returns the devices. - DevManSource, USBSource, FWSource, ... DeviceManager Specification =========================== DeviceManager : BApplication ------------- DeviceManagerView : BView ----------------- Device : public BStringItem ------ BString GetName() const; BString GetManufacturer() const; Category GetCategory() const; BString DriverUsed() const; BString DevPathsPublished() const; BView Get private: BString _name; BString _manufacturer; Category _category; BString _driverUsed; BString devPathsPublished; map _attributes; Bus : public BStringItem --- virtual bool IsPresent() const = 0; virtual Scan() = 0; virtual vector Devices() = 0; PCIBus : public Bus ------ PCIDevice: public Device --------- ISABus : public Bus ----- ISADevice : public Device --------- USBBus : public Bus ------ USBDevice : public Device --------- SCSIBus : public Bus ------- SCSIDevice : public Device ----------