⛏️ index : haiku.git

/*
 * Copyright 2008-2011, Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *		Alexander von Gluck, kallisti5@unixzen.com
 */


#include "DeviceSCSI.h"

#include <scsi.h>
#include <sstream>
#include <stdlib.h>

#include <Catalog.h>

#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "DeviceSCSI"


// standard SCSI device types
const char* SCSITypeMap[] = {
	B_TRANSLATE("Disk Drive"),			// 0x00
	B_TRANSLATE("Tape Drive"),			// 0x01
	B_TRANSLATE("Printer"),				// 0x02
	B_TRANSLATE("Processor"),			// 0x03
	B_TRANSLATE("Worm"),				// 0x04
	B_TRANSLATE("CD-ROM"),				// 0x05
	B_TRANSLATE("Scanner"),				// 0x06
	B_TRANSLATE("Optical Drive"),		// 0x07
	B_TRANSLATE("Changer"),				// 0x08
	B_TRANSLATE("Communications"),		// 0x09
	B_TRANSLATE("Graphics Peripheral"),	// 0x0A
	B_TRANSLATE("Graphics Peripheral"),	// 0x0B
	B_TRANSLATE("Array"),				// 0x0C
	B_TRANSLATE("Enclosure"),			// 0x0D
	B_TRANSLATE("RBC"),					// 0x0E
	B_TRANSLATE("Card Reader"),			// 0x0F
	B_TRANSLATE("Bridge"),				// 0x10
	B_TRANSLATE("Other")				// 0x11
};


DeviceSCSI::DeviceSCSI(Device* parent)
	:
	Device(parent)
{
}


DeviceSCSI::~DeviceSCSI()
{
}


void
DeviceSCSI::InitFromAttributes()
{
	BString nodeVendor(GetAttribute("scsi/vendor").fValue);
	BString nodeProduct(GetAttribute("scsi/product").fValue);

	fCategory = (Category)CAT_MASS;

	uint32 nodeTypeID = atoi(GetAttribute("scsi/type").fValue);

	SetAttribute(B_TRANSLATE("Device name"), nodeProduct.String());
	SetAttribute(B_TRANSLATE("Manufacturer"), nodeVendor.String());
	SetAttribute(B_TRANSLATE("Device class"), SCSITypeMap[nodeTypeID]);

	BString listName;
	listName
		<< "SCSI " << SCSITypeMap[nodeTypeID] << " (" << nodeProduct << ")";

	SetText(listName.String());
}