#!/bin/sh
# NAME=OSD detect
# DESCRIPTION=Detect optical disk drives using hal-device and try to guess correct vendor name.
# DEPENDS=OSD

strip_vendor()
{
	if echo "$OSD_MODEL" | grep -q "^$1"; then
		OSD_VENDOR=$2
		OSD_MODEL=`echo "$OSD_MODEL" | sed "s/^$1//;"`
	fi
}

detect_vendor()
{
	if echo "$OSD_MODEL" | grep -q "^$1"; then
		OSD_VENDOR=$2
	fi
}

hal-find-by-property --key storage.drive_type --string cdrom | while read L; do
	# Skip RMM2 virtual drive on some Intel motherboards
	hal-device "$L" | sed -n "/info.product/s/^.* = '\(.*\)' .*$/\1/gp" | 
		egrep -q "(RMM2 VDrive|Virtual)" && continue || true

	OSD_MODEL=`hal-get-property --udi $L --key storage.model`
	if [ -n "$OSD_MODEL" ]; then

		if [ "$OSD_MODEL" == "ATAPI CD-ROM 52XMax" ]; then
			OSD_VENDOR=MSI
			OSD_MODEL=MSI-8152
		fi

		OSD_MODEL=`echo $OSD_MODEL |
			   sed 's,CD-RW/DVD-ROM,,g; \
			   	s/CD-ROM//g; \
				s/COMBO //g; \
				s/DVDRW//g; \
				s/DVD-ROM//g; \
				s,DVD+/-RW,,g; \
				s,DVD/CDRW,,g; \
				s,DVD-RAM,,g; \
				s,DVD-RW,,g; \
				s/Slimtype COMBO //g; \
				s/Slimtype DVDRW //g; \
				s,CDW/DVD,,g; \
				s,CD-RW,,g; \
				s,CD/DVDW ,,g; \
				s,RW/DVD,,g; \
				s,DVD_RW,,g; \
				s/^  *//; \
				s/  *$//'`

		strip_vendor 'ASUS ' ASUS
		strip_vendor 'HL-DT-ST ' LG
		strip_vendor 'MATSHITA' Panasonic
		strip_vendor 'QSI ' QSI
		strip_vendor 'SAMSUNG CD ' SAMSUNG
		strip_vendor 'SAMSUNG ' SAMSUNG
		strip_vendor 'TOSHIBA ' Toshiba
		strip_vendor 'SONY ' SONY
		strip_vendor 'PIONEER ' Pioneer
		strip_vendor '_NEC ' NEC
		strip_vendor 'TSST ' TSST
		strip_vendor 'TSSTcorp ' TSST
		strip_vendor 'TSSTcorp' TSST
		strip_vendor 'PHILIPS ' Philips
		strip_vendor 'LITE-ON ' LITE-ON
		strip_vendor 'Optiarc' Optiarc
	
		detect_vendor 'CD-224' Teac
		detect_vendor 'DW-224' Teac
		detect_vendor 'UJDA' Panasonic
		detect_vendor 'LSC-' LITE-ON
		detect_vendor 'SDW-431S' LITE-ON
		detect_vendor 'SSC-2485' LITE-ON
		detect_vendor 'DW-552' TEAC
		detect_vendor 'CRX880A' Sony
		detect_vendor 'Slimtype *SSM-8515S' LITE-ON
		detect_vendor 'ATAPI DVD A DH20A4P' LITE-ON
		detect_vendor 'SR244W' Mitsumi
		detect_vendor 'SSM-' LITE-ON
		detect_vendor 'DV-28E-V' TEAC

		OSD_MODEL=`echo $OSD_MODEL | sed 's/^  *//;s/  *$//;'`
		OSD_SERIAL=""
		OSD_VERSION=""

		add_component OSD "$OSD_VENDOR" "$OSD_MODEL" "$OSD_SERIAL" "$OSD_VERSION"
	fi
done
