Darin Petkov | 51a83db | 2010-05-26 15:37:25 -0700 | [diff] [blame^] | 1 | #!/bin/sh |
| 2 | |
| 3 | # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 4 | # Use of this source code is governed by a BSD-style license that can be |
| 5 | # found in the LICENSE file. |
| 6 | |
| 7 | # This script prints the hardware class (e.g., the hardware |
| 8 | # qualification ID) of this device, or "unknown" if it can't determine |
| 9 | # the hardware class. |
| 10 | |
| 11 | # TODO(petkov): The hardware qualification ID is not available on |
| 12 | # systems yet, so the script uses alternative ways to identify |
| 13 | # different system classes (e.g., the WiFi adapter PCI vendor and |
| 14 | # device IDs). Switch the script to use real hardware qualification ID |
| 15 | # when that becomes available. |
| 16 | |
| 17 | # Appends a new component ID to the hardware class. Separates IDs with |
| 18 | # dashes. |
| 19 | append_class() { |
| 20 | [ -n "$HARDWARE_CLASS" ] && HARDWARE_CLASS="${HARDWARE_CLASS}-" |
| 21 | HARDWARE_CLASS="${HARDWARE_CLASS}$1" |
| 22 | } |
| 23 | |
| 24 | # Adds the CPU family, model and stepping info, if available, to the |
| 25 | # class. |
| 26 | cpu() { |
| 27 | [ -r /proc/cpuinfo ] || return |
| 28 | FAMILY=`grep -m1 '^cpu family' /proc/cpuinfo \ |
| 29 | | sed 's/cpu family\s\+:\s\+\([0-9]\+\)$/\1/'` |
| 30 | MODEL=`grep -m1 '^model' /proc/cpuinfo \ |
| 31 | | sed 's/model\s\+:\s\+\([0-9]\+\)$/\1/'` |
| 32 | STEPPING=`grep -m1 '^stepping' /proc/cpuinfo \ |
| 33 | | sed 's/stepping\s\+:\s\+\([0-9]\+\)$/\1/'` |
| 34 | if [ -n "$FAMILY" ] && [ -n "$MODEL" ] && [ -n "$STEPPING" ]; then |
| 35 | append_class "cpu/$FAMILY:$MODEL:$STEPPING" |
| 36 | fi |
| 37 | } |
| 38 | |
| 39 | # Adds the wlan0 PCI vendor and device ID, if available, to the class. |
| 40 | wlan() { |
| 41 | WLAN_DEV=/sys/class/net/wlan0/device |
| 42 | if [ -r $WLAN_DEV/vendor ] && [ -r $WLAN_DEV/device ]; then |
| 43 | WLAN_ID=`paste -d ':' $WLAN_DEV/vendor $WLAN_DEV/device | sed s/0x//g` |
| 44 | append_class "wlan0/$WLAN_ID" |
| 45 | fi |
| 46 | } |
| 47 | |
| 48 | |
| 49 | HARDWARE_CLASS= |
| 50 | |
| 51 | cpu |
| 52 | wlan |
| 53 | |
| 54 | [ -z "$HARDWARE_CLASS" ] && HARDWARE_CLASS=unknown |
| 55 | |
| 56 | echo $HARDWARE_CLASS |