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 9 10#include "Device.h" 11 12#include <iostream> 13 14#include <Catalog.h> 15 16#undef B_TRANSLATION_CONTEXT 17#define B_TRANSLATION_CONTEXT "Device" 18 19// This list comes from the pciid list, except for the last ones 20const char* kCategoryString[] = { 21 B_TRANSLATE("Unclassified device"), // 0x00 22 B_TRANSLATE("Mass storage controller"), // 0x01 23 B_TRANSLATE("Network controller"), // 0x02 24 B_TRANSLATE("Display controller"), // 0x03 25 B_TRANSLATE("Multimedia controller"), // 0x04 26 B_TRANSLATE("Memory controller"), // 0x05 27 B_TRANSLATE("Bridge"), // 0x06 28 B_TRANSLATE("Communication controller"), // 0x07 29 B_TRANSLATE("Generic system peripheral"), // 0x08 30 B_TRANSLATE("Input device controller"), // 0x09 31 B_TRANSLATE("Docking station"), // 0x0a 32 B_TRANSLATE("Processor"), // 0x0b 33 B_TRANSLATE("Serial bus controller"), // 0x0c 34 B_TRANSLATE("Wireless controller"), // 0x0d 35 B_TRANSLATE("Intelligent controller"), // 0x0e 36 B_TRANSLATE("Satellite communications controller"), // 0x0f 37 B_TRANSLATE("Encryption controller"), // 0x10 38 B_TRANSLATE("Signal processing controller"), // 0x11 39 B_TRANSLATE("Computer"), // 0x12 (added later) 40 B_TRANSLATE("ACPI controller") // 0x13 (added later) 41}; 42const int kCategoryStringLength = sizeof(kCategoryString)/sizeof(char *); 43 44// This list is only used to translate Device properties 45B_TRANSLATE_MARK_VOID("unknown"); 46B_TRANSLATE_MARK_VOID("Device"); 47B_TRANSLATE_MARK_VOID("Computer"); 48B_TRANSLATE_MARK_VOID("ACPI bus"); 49B_TRANSLATE_MARK_VOID("PCI bus"); 50B_TRANSLATE_MARK_VOID("ISA bus"); 51B_TRANSLATE_MARK_VOID("USB bus"); 52B_TRANSLATE_MARK_VOID("Unknown device"); 53 54 55Device::Device(Device* physicalParent, BusType busType, Category category, 56 const BString& name, const BString& manufacturer, 57 const BString& driverUsed, const BString& devPathsPublished) 58 : 59 BStringItem(name.String()), 60 fBusType(busType), 61 fCategory(category), 62 fPhysicalParent(physicalParent) 63{ 64 SetAttribute(B_TRANSLATE("Device name"), B_TRANSLATE(name)); 65 SetAttribute(B_TRANSLATE("Manufacturer"), B_TRANSLATE(manufacturer)); 66 SetAttribute(B_TRANSLATE("Driver used"), B_TRANSLATE(driverUsed)); 67 SetAttribute(B_TRANSLATE("Device paths"), B_TRANSLATE(devPathsPublished)); 68} 69 70 71Device::~Device() 72{ 73} 74 75 76BString 77Device::GetName() 78{ 79 return fAttributeMap[B_TRANSLATE("Device name")]; 80} 81 82 83BString 84Device::GetManufacturer() 85{ 86 return fAttributeMap[B_TRANSLATE("Manufacturer")]; 87} 88 89 90BString 91Device::GetDriverUsed() 92{ 93 return fAttributeMap[B_TRANSLATE("Driver used")]; 94} 95 96 97BString 98Device::GetDevPathsPublished() 99{ 100 return fAttributeMap[B_TRANSLATE("Device paths")]; 101} 102 103 104void 105Device::SetAttribute(const BString& name, const BString& value) 106{ 107 if (name == B_TRANSLATE("Device name")) { 108 SetText(value.String()); 109 } 110 fAttributeMap[name] = value; 111} 112 113 114Attributes 115Device::GetAllAttributes() 116{ 117 Attributes attributes; 118 AttributeMapIterator iter; 119 for (iter = fAttributeMap.begin(); iter != fAttributeMap.end(); iter++) { 120 attributes.push_back(Attribute(iter->first, iter->second)); 121 } 122 return attributes; 123} 124 125 126BString 127Device::GetAllStrings() 128{ 129 BString str; 130 AttributeMapIterator iter; 131 for (iter = fAttributeMap.begin(); iter != fAttributeMap.end(); iter++) { 132 str << iter->first << " : " << iter->second << "\n"; 133 } 134 return str; 135} 136