| Index: hardware_class
|
| diff --git a/hardware_class b/hardware_class
|
| index c99db9b9e57edaa729f6fd0f962590a3bbd9b1c7..91360766677d555acb12716346f4570fb79a0a0d 100755
|
| --- a/hardware_class
|
| +++ b/hardware_class
|
| @@ -8,49 +8,69 @@
|
| # qualification ID) of this device, or "unknown" if it can't determine
|
| # the hardware class.
|
|
|
| -# TODO(petkov): The hardware qualification ID is not available on
|
| -# systems yet, so the script uses alternative ways to identify
|
| -# different system classes (e.g., the WiFi adapter PCI vendor and
|
| -# device IDs). Switch the script to use real hardware qualification ID
|
| -# when that becomes available.
|
| +# TODO(petkov): If the hardware qualification ID is not available on
|
| +# the systems, the script uses alternative ways to identify different
|
| +# system classes (e.g., the WiFi adapter PCI vendor and device
|
| +# IDs). Switch the script to use only real hardware qualification ID
|
| +# when that becomes available on all systems.
|
| +
|
| +HARDWARE_CLASS=
|
| +readonly HWID_PATH=/sys/bus/platform/devices/chromeos_acpi/HWID
|
|
|
| # Appends a new component ID to the hardware class. Separates IDs with
|
| # dashes.
|
| append_class() {
|
| + [ -n "$1" ] || return
|
| [ -n "$HARDWARE_CLASS" ] && HARDWARE_CLASS="${HARDWARE_CLASS}-"
|
| HARDWARE_CLASS="${HARDWARE_CLASS}$1"
|
| }
|
|
|
| +hwid() {
|
| + [ -r "$HWID_PATH" ] || return
|
| + local acpihwid
|
| + acpihwid=$(cat "$HWID_PATH")
|
| + [ -n "$acpihwid" ] || return
|
| + append_class "$acpihwid"
|
| +}
|
| +
|
| # Adds the CPU family, model and stepping info, if available, to the
|
| # class.
|
| cpu() {
|
| [ -r /proc/cpuinfo ] || return
|
| - FAMILY=`grep -m1 '^cpu family' /proc/cpuinfo \
|
| - | sed 's/cpu family\s\+:\s\+\([0-9]\+\)$/\1/'`
|
| - MODEL=`grep -m1 '^model' /proc/cpuinfo \
|
| - | sed 's/model\s\+:\s\+\([0-9]\+\)$/\1/'`
|
| - STEPPING=`grep -m1 '^stepping' /proc/cpuinfo \
|
| - | sed 's/stepping\s\+:\s\+\([0-9]\+\)$/\1/'`
|
| - if [ -n "$FAMILY" ] && [ -n "$MODEL" ] && [ -n "$STEPPING" ]; then
|
| - append_class "cpu/$FAMILY:$MODEL:$STEPPING"
|
| + local family
|
| + family=$(grep -m1 '^cpu family' /proc/cpuinfo \
|
| + | sed 's/cpu family\s\+:\s\+\([0-9]\+\)$/\1/')
|
| + local model
|
| + model=$(grep -m1 '^model' /proc/cpuinfo \
|
| + | sed 's/model\s\+:\s\+\([0-9]\+\)$/\1/')
|
| + local stepping
|
| + stepping=$(grep -m1 '^stepping' /proc/cpuinfo \
|
| + | sed 's/stepping\s\+:\s\+\([0-9]\+\)$/\1/')
|
| + if [ -n "$family" ] && [ -n "$model" ] && [ -n "$stepping" ]; then
|
| + append_class "cpu/$family:$model:$stepping"
|
| fi
|
| }
|
|
|
| # Adds the wlan0 PCI vendor and device ID, if available, to the class.
|
| wlan() {
|
| - WLAN_DEV=/sys/class/net/wlan0/device
|
| - if [ -r $WLAN_DEV/vendor ] && [ -r $WLAN_DEV/device ]; then
|
| - WLAN_ID=`paste -d ':' $WLAN_DEV/vendor $WLAN_DEV/device | sed s/0x//g`
|
| - append_class "wlan0/$WLAN_ID"
|
| + local dev=/sys/class/net/wlan0/device
|
| + if [ -r $dev/vendor ] && [ -r $dev/device ]; then
|
| + local id
|
| + id=$(paste -d ':' $dev/vendor $dev/device | sed s/0x//g)
|
| + append_class "wlan0/$id"
|
| fi
|
| }
|
|
|
| +main() {
|
| + hwid
|
| + # If the HWID is not available, use system component IDs.
|
| + if [ -z "$HARDWARE_CLASS" ]; then
|
| + cpu
|
| + wlan
|
| + [ -z "$HARDWARE_CLASS" ] && HARDWARE_CLASS=unknown
|
| + fi
|
|
|
| -HARDWARE_CLASS=
|
| -
|
| -cpu
|
| -wlan
|
| -
|
| -[ -z "$HARDWARE_CLASS" ] && HARDWARE_CLASS=unknown
|
| + echo $HARDWARE_CLASS
|
| +}
|
|
|
| -echo $HARDWARE_CLASS
|
| +main $@
|
|
|