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 $@ |