summaryrefslogtreecommitdiff
path: root/doc/spec/hal-spec.html
diff options
context:
space:
mode:
authorDanny Kukawka <danny.kukawka@web.de>2006-07-27 09:24:09 +0000
committerDanny Kukawka <danny.kukawka@web.de>2006-07-27 09:24:09 +0000
commit67562a2ffbd265de7b03daf284c649e43a31484e (patch)
tree692eb0de2ace4951a2e5a1ba89362a664200b8e6 /doc/spec/hal-spec.html
parent52769da4eb6ab2cda958160ad54e9fab2461e3ef (diff)
fixed building of hal-spec.html
submitted html to fix invalid chars
Diffstat (limited to 'doc/spec/hal-spec.html')
-rw-r--r--doc/spec/hal-spec.html13828
1 files changed, 11715 insertions, 2113 deletions
diff --git a/doc/spec/hal-spec.html b/doc/spec/hal-spec.html
index 3c67c66d..8b523bfb 100644
--- a/doc/spec/hal-spec.html
+++ b/doc/spec/hal-spec.html
@@ -1,161 +1,774 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>HAL 0.5.8 Specification</title><link rel="stylesheet" href="docbook.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="index"></a>HAL 0.5.8 Specification</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Zeuthen</span></h3><div class="affiliation"><div class="address"><p><br>
-            <code class="email">&lt;<a href="mailto:david@fubar.dk">david@fubar.dk</a>&gt;</code><br>
-          </p></div></div></div></div></div><div><p class="releaseinfo">Version 0.5.8</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#introduction">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2947616">About</a></span></dt><dt><span class="sect1"><a href="#id2909516">Acknowledgements</a></span></dt><dt><span class="sect1"><a href="#ov_halarch">Architecture of HAL</a></span></dt><dt><span class="sect1"><a href="#ov_hal_linux26">HAL on Linux 2.6</a></span></dt><dt><span class="sect1"><a href="#id2964011">Device Objects</a></span></dt><dt><span class="sect1"><a href="#device-capabilities">Device Capabilities</a></span></dt><dt><span class="sect1"><a href="#using-devices">Using devices</a></span></dt></dl></dd><dt><span class="chapter"><a href="#device-properties">2. Device Properties</a></span></dt><dd><dl><dt><span class="sect1"><a href="#properties-metadata">Metadata Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-info">
- <code class="literal">info</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-linux">
- <code class="literal">linux</code> namespace
- </a></span></dt></dl></dd><dt><span class="sect1"><a href="#properties-bus">Physical Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-pci">
- <code class="literal">pci</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-serialif">
- <code class="literal">serial</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-usb">
- <code class="literal">usb_device</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-usbif">
- <code class="literal">usb</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-platform">
- <code class="literal">platform</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ide-host">
- <code class="literal">ide_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ide">
- <code class="literal">ide</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-scsi_host">
- <code class="literal">scsi_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-scsi">
- <code class="literal">scsi</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ieee1394_host">
- <code class="literal">ieee1394_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ieee1394_node">
- <code class="literal">ieee1394_node</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ieee1394">
- <code class="literal">ieee1394</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-mmc_host">
- <code class="literal">mmc_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-mmc">
- <code class="literal">mmc</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ccw">
- <code class="literal">ccw</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ccwgroup">
- <code class="literal">ccwgroup</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-iucv">
- <code class="literal">iucv</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-block">
- <code class="literal">block</code> namespace
- </a></span></dt></dl></dd><dt><span class="sect1"><a href="#properties-functional">Functional Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-volume">
- <code class="literal">volume</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-kernel">
- <code class="literal">system</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-volume-disc">
- <code class="literal">volume.disc</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-storage">
- <code class="literal">storage</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-storage-cdrom">
- <code class="literal">storage.cdrom</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-net">
- <code class="literal">net</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-net-80203">
- <code class="literal">net.80203</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-net-80211">
- <code class="literal">net.80211</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-input">
- <code class="literal">input</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-pcmcia_socket">
- <code class="literal">pcmcia_socket namespace</code>
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-printer">
- <code class="literal">printer</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-portable_audio_player">
- <code class="literal">portable_audio_player</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-alsa">
- <code class="literal">alsa</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-oss">
- <code class="literal">oss</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-camera">
- <code class="literal">camera</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-laptop-panel">
- <code class="literal">laptop_panel</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-video_adapter_pm">
- <code class="literal">video_adapter_pm</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ac_adaptor">
- <code class="literal">ac_adaptor</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-battery">
- <code class="literal">battery</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-button">
- <code class="literal">button</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-processor">
- <code class="literal">processor</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-display_device">
- <code class="literal">display_device</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-sensor">
- <code class="literal">sensor</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-power-management">
- <code class="literal">power_management</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-tape">
- <code class="literal">tape</code> namespace
- </a></span></dt></dl></dd><dt><span class="sect1"><a href="#properties-policy">Policy Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-storage-policy-default">
- <code class="literal">storage.policy.default</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-storage-policy">
- <code class="literal">storage.policy</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-volume-policy">
- <code class="literal">volume.policy</code> namespace
- </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#spec-device-info">3. Device Information Files</a></span></dt><dd><dl><dt><span class="sect1"><a href="#fdi-facts">Facts about devices</a></span></dt><dd><dl><dt><span class="sect2"><a href="#fdi-example-mp3player">Example: MP3 player</a></span></dt><dt><span class="sect2"><a href="#fdi-example-camera">Example: Digital Still Camera</a></span></dt><dt><span class="sect2"><a href="#fdi-example-6in1">Example: Card Reader</a></span></dt></dl></dd><dt><span class="sect1"><a href="#fdi-policy">Policy settings for devices</a></span></dt><dd><dl><dt><span class="sect2"><a href="#fdi-example-mountsetting">Storage Devices</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#examples">4. Examples and other stuff</a></span></dt><dd><dl><dt><span class="sect1"><a href="#callouts">Callouts</a></span></dt><dt><span class="sect1"><a href="#dbus-api">D-BUS Network API</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2942932">Interface org.freedesktop.Hal.Manager</a></span></dt><dt><span class="sect2"><a href="#id2968014">Interface org.freedesktop.Hal.Device</a></span></dt></dl></dd><dt><span class="sect1"><a href="#enforcing-policy">Enforcing Policy</a></span></dt><dd><dl><dt><span class="sect2"><a href="#enforcing-stor-vol">Storage Devices</a></span></dt></dl></dd></dl></dd></dl></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="introduction"></a>Chapter 1. Introduction</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2947616">About</a></span></dt><dt><span class="sect1"><a href="#id2909516">Acknowledgements</a></span></dt><dt><span class="sect1"><a href="#ov_halarch">Architecture of HAL</a></span></dt><dt><span class="sect1"><a href="#ov_hal_linux26">HAL on Linux 2.6</a></span></dt><dt><span class="sect1"><a href="#id2964011">Device Objects</a></span></dt><dt><span class="sect1"><a href="#device-capabilities">Device Capabilities</a></span></dt><dt><span class="sect1"><a href="#using-devices">Using devices</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2947616"></a>About</h2></div></div></div><p>
- This document concerns the specification of HAL which is a
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>HAL 0.5.8 Specification</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
+><BODY
+CLASS="book"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="BOOK"
+><A
+NAME="index"
+></A
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="title"
+><A
+NAME="AEN2"
+>HAL 0.5.8 Specification</A
+></H1
+><H3
+CLASS="author"
+><A
+NAME="AEN7"
+></A
+>David Zeuthen</H3
+><DIV
+CLASS="affiliation"
+><DIV
+CLASS="address"
+><P
+CLASS="address"
+><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE
+CLASS="email"
+>&#60;<A
+HREF="mailto:david@fubar.dk"
+>david@fubar.dk</A
+>&#62;</CODE
+><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
+></DIV
+></DIV
+><HR></DIV
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+>1. <A
+HREF="#introduction"
+>Introduction</A
+></DT
+><DD
+><DL
+><DT
+>1.1. <A
+HREF="#AEN15"
+>About</A
+></DT
+><DT
+>1.2. <A
+HREF="#AEN24"
+>Acknowledgements</A
+></DT
+><DT
+>1.3. <A
+HREF="#ov_halarch"
+>Architecture of HAL</A
+></DT
+><DT
+>1.4. <A
+HREF="#ov_hal_linux26"
+>HAL on Linux 2.6</A
+></DT
+><DT
+>1.5. <A
+HREF="#AEN84"
+>Device Objects</A
+></DT
+><DT
+>1.6. <A
+HREF="#device-capabilities"
+>Device Capabilities</A
+></DT
+><DT
+>1.7. <A
+HREF="#using-devices"
+>Using devices</A
+></DT
+></DL
+></DD
+><DT
+>2. <A
+HREF="#device-properties"
+>Device Properties</A
+></DT
+><DD
+><DL
+><DT
+>2.1. <A
+HREF="#properties-metadata"
+>Metadata Properties</A
+></DT
+><DD
+><DL
+><DT
+>2.1.1. <A
+HREF="#device-properties-info"
+><TT
+CLASS="literal"
+>info</TT
+> namespace</A
+></DT
+><DT
+>2.1.2. <A
+HREF="#device-properties-linux"
+><TT
+CLASS="literal"
+>linux</TT
+> namespace</A
+></DT
+></DL
+></DD
+><DT
+>2.2. <A
+HREF="#properties-bus"
+>Physical Properties</A
+></DT
+><DD
+><DL
+><DT
+>2.2.1. <A
+HREF="#device-properties-pci"
+><TT
+CLASS="literal"
+>pci</TT
+> namespace</A
+></DT
+><DT
+>2.2.2. <A
+HREF="#device-properties-serialif"
+><TT
+CLASS="literal"
+>serial</TT
+> namespace</A
+></DT
+><DT
+>2.2.3. <A
+HREF="#device-properties-usb"
+><TT
+CLASS="literal"
+>usb_device</TT
+> namespace</A
+></DT
+><DT
+>2.2.4. <A
+HREF="#device-properties-usbif"
+><TT
+CLASS="literal"
+>usb</TT
+> namespace</A
+></DT
+><DT
+>2.2.5. <A
+HREF="#device-properties-platform"
+><TT
+CLASS="literal"
+>platform</TT
+> namespace</A
+></DT
+><DT
+>2.2.6. <A
+HREF="#device-properties-ide-host"
+><TT
+CLASS="literal"
+>ide_host</TT
+> namespace</A
+></DT
+><DT
+>2.2.7. <A
+HREF="#device-properties-ide"
+><TT
+CLASS="literal"
+>ide</TT
+> namespace</A
+></DT
+><DT
+>2.2.8. <A
+HREF="#device-properties-scsi_host"
+><TT
+CLASS="literal"
+>scsi_host</TT
+> namespace</A
+></DT
+><DT
+>2.2.9. <A
+HREF="#device-properties-scsi"
+><TT
+CLASS="literal"
+>scsi</TT
+> namespace</A
+></DT
+><DT
+>2.2.10. <A
+HREF="#device-properties-ieee1394_host"
+><TT
+CLASS="literal"
+>ieee1394_host</TT
+> namespace</A
+></DT
+><DT
+>2.2.11. <A
+HREF="#device-properties-ieee1394_node"
+><TT
+CLASS="literal"
+>ieee1394_node</TT
+> namespace</A
+></DT
+><DT
+>2.2.12. <A
+HREF="#device-properties-ieee1394"
+><TT
+CLASS="literal"
+>ieee1394</TT
+> namespace</A
+></DT
+><DT
+>2.2.13. <A
+HREF="#device-properties-mmc_host"
+><TT
+CLASS="literal"
+>mmc_host</TT
+> namespace</A
+></DT
+><DT
+>2.2.14. <A
+HREF="#device-properties-mmc"
+><TT
+CLASS="literal"
+>mmc</TT
+> namespace</A
+></DT
+><DT
+>2.2.15. <A
+HREF="#device-properties-ccw"
+><TT
+CLASS="literal"
+>ccw</TT
+> namespace</A
+></DT
+><DT
+>2.2.16. <A
+HREF="#device-properties-ccwgroup"
+><TT
+CLASS="literal"
+>ccwgroup</TT
+> namespace</A
+></DT
+><DT
+>2.2.17. <A
+HREF="#device-properties-iucv"
+><TT
+CLASS="literal"
+>iucv</TT
+> namespace</A
+></DT
+><DT
+>2.2.18. <A
+HREF="#device-properties-block"
+><TT
+CLASS="literal"
+>block</TT
+> namespace</A
+></DT
+></DL
+></DD
+><DT
+>2.3. <A
+HREF="#properties-functional"
+>Functional Properties</A
+></DT
+><DD
+><DL
+><DT
+>2.3.1. <A
+HREF="#device-properties-volume"
+><TT
+CLASS="literal"
+>volume</TT
+> namespace</A
+></DT
+><DT
+>2.3.2. <A
+HREF="#device-properties-kernel"
+><TT
+CLASS="literal"
+>system</TT
+> namespace</A
+></DT
+><DT
+>2.3.3. <A
+HREF="#device-properties-volume-disc"
+><TT
+CLASS="literal"
+>volume.disc</TT
+> namespace</A
+></DT
+><DT
+>2.3.4. <A
+HREF="#device-properties-storage"
+><TT
+CLASS="literal"
+>storage</TT
+> namespace</A
+></DT
+><DT
+>2.3.5. <A
+HREF="#device-properties-storage-cdrom"
+><TT
+CLASS="literal"
+>storage.cdrom</TT
+> namespace</A
+></DT
+><DT
+>2.3.6. <A
+HREF="#device-properties-net"
+><TT
+CLASS="literal"
+>net</TT
+> namespace</A
+></DT
+><DT
+>2.3.7. <A
+HREF="#device-properties-net-80203"
+><TT
+CLASS="literal"
+>net.80203</TT
+> namespace</A
+></DT
+><DT
+>2.3.8. <A
+HREF="#device-properties-net-80211"
+><TT
+CLASS="literal"
+>net.80211</TT
+> namespace</A
+></DT
+><DT
+>2.3.9. <A
+HREF="#device-properties-input"
+><TT
+CLASS="literal"
+>input</TT
+> namespace</A
+></DT
+><DT
+>2.3.10. <A
+HREF="#device-properties-pcmcia_socket"
+><TT
+CLASS="literal"
+>pcmcia_socket namespace</TT
+></A
+></DT
+><DT
+>2.3.11. <A
+HREF="#device-properties-printer"
+><TT
+CLASS="literal"
+>printer</TT
+> namespace</A
+></DT
+><DT
+>2.3.12. <A
+HREF="#device-properties-portable_audio_player"
+><TT
+CLASS="literal"
+>portable_audio_player</TT
+> namespace</A
+></DT
+><DT
+>2.3.13. <A
+HREF="#device-properties-alsa"
+><TT
+CLASS="literal"
+>alsa</TT
+> namespace</A
+></DT
+><DT
+>2.3.14. <A
+HREF="#device-properties-oss"
+><TT
+CLASS="literal"
+>oss</TT
+> namespace</A
+></DT
+><DT
+>2.3.15. <A
+HREF="#device-properties-camera"
+><TT
+CLASS="literal"
+>camera</TT
+> namespace</A
+></DT
+><DT
+>2.3.16. <A
+HREF="#device-properties-laptop-panel"
+><TT
+CLASS="literal"
+>laptop_panel</TT
+> namespace</A
+></DT
+><DT
+>2.3.17. <A
+HREF="#device-properties-video_adapter_pm"
+><TT
+CLASS="literal"
+>video_adapter_pm</TT
+> namespace</A
+></DT
+><DT
+>2.3.18. <A
+HREF="#device-properties-ac_adaptor"
+><TT
+CLASS="literal"
+>ac_adaptor</TT
+> namespace</A
+></DT
+><DT
+>2.3.19. <A
+HREF="#device-properties-battery"
+><TT
+CLASS="literal"
+>battery</TT
+> namespace</A
+></DT
+><DT
+>2.3.20. <A
+HREF="#device-properties-button"
+><TT
+CLASS="literal"
+>button</TT
+> namespace</A
+></DT
+><DT
+>2.3.21. <A
+HREF="#device-properties-processor"
+><TT
+CLASS="literal"
+>processor</TT
+> namespace</A
+></DT
+><DT
+>2.3.22. <A
+HREF="#device-properties-display_device"
+><TT
+CLASS="literal"
+>display_device</TT
+> namespace</A
+></DT
+><DT
+>2.3.23. <A
+HREF="#device-properties-sensor"
+><TT
+CLASS="literal"
+>sensor</TT
+> namespace</A
+></DT
+><DT
+>2.3.24. <A
+HREF="#device-properties-power-management"
+><TT
+CLASS="literal"
+>power_management</TT
+> namespace</A
+></DT
+><DT
+>2.3.25. <A
+HREF="#device-properties-tape"
+><TT
+CLASS="literal"
+>tape</TT
+> namespace</A
+></DT
+></DL
+></DD
+><DT
+>2.4. <A
+HREF="#properties-policy"
+>Policy Properties</A
+></DT
+><DD
+><DL
+><DT
+>2.4.1. <A
+HREF="#device-properties-storage-policy-default"
+><TT
+CLASS="literal"
+>storage.policy.default</TT
+> namespace</A
+></DT
+><DT
+>2.4.2. <A
+HREF="#device-properties-storage-policy"
+><TT
+CLASS="literal"
+>storage.policy</TT
+> namespace</A
+></DT
+><DT
+>2.4.3. <A
+HREF="#device-properties-volume-policy"
+><TT
+CLASS="literal"
+>volume.policy</TT
+> namespace</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>3. <A
+HREF="#spec-device-info"
+>Device Information Files</A
+></DT
+><DD
+><DL
+><DT
+>3.1. <A
+HREF="#fdi-facts"
+>Facts about devices</A
+></DT
+><DD
+><DL
+><DT
+>3.1.1. <A
+HREF="#fdi-example-mp3player"
+>Example: MP3 player</A
+></DT
+><DT
+>3.1.2. <A
+HREF="#fdi-example-camera"
+>Example: Digital Still Camera</A
+></DT
+><DT
+>3.1.3. <A
+HREF="#fdi-example-6in1"
+>Example: Card Reader</A
+></DT
+></DL
+></DD
+><DT
+>3.2. <A
+HREF="#fdi-policy"
+>Policy settings for devices</A
+></DT
+><DD
+><DL
+><DT
+>3.2.1. <A
+HREF="#fdi-example-mountsetting"
+>Storage Devices</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>4. <A
+HREF="#examples"
+>Examples and other stuff</A
+></DT
+><DD
+><DL
+><DT
+>4.1. <A
+HREF="#callouts"
+>Callouts</A
+></DT
+><DT
+>4.2. <A
+HREF="#dbus-api"
+>D-BUS Network API</A
+></DT
+><DD
+><DL
+><DT
+>4.2.1. <A
+HREF="#AEN3950"
+>Interface org.freedesktop.Hal.Manager</A
+></DT
+><DT
+>4.2.2. <A
+HREF="#AEN3969"
+>Interface org.freedesktop.Hal.Device</A
+></DT
+></DL
+></DD
+><DT
+>4.3. <A
+HREF="#enforcing-policy"
+>Enforcing Policy</A
+></DT
+><DD
+><DL
+><DT
+>4.3.1. <A
+HREF="#enforcing-stor-vol"
+>Storage Devices</A
+></DT
+></DL
+></DD
+></DL
+></DD
+></DL
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="introduction"
+></A
+>Chapter 1. Introduction</H1
+><DIV
+CLASS="sect1"
+><H2
+CLASS="sect1"
+><A
+NAME="AEN15"
+>1.1. About</A
+></H2
+><P
+>&#13; This document concerns the specification of HAL which is a
piece of software that provides a view of the various hardware
attached to a system. In addition to this, HAL keeps detailed
metadata for each piece of hardware and provide hooks such
that system- and desktop-level software can react to changes
in the hardware configuration in order to maintain system
policy.
- </p><p>
- HAL represents a piece of hardware as a <span class="emphasis"><em>device object</em></span>.
+ </P
+><P
+>&#13; HAL represents a piece of hardware as a <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>device object</I
+></SPAN
+>.
A device object is identified by a unique identifer and carries a set of
- key/value paris referred to as <span class="emphasis"><em>device properties</em></span>.
+ key/value paris referred to as <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>device properties</I
+></SPAN
+>.
Some properties are derived from the actual hardware, some are merged
- from <span class="emphasis"><em>device information files</em></span>
+ from <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>device information files</I
+></SPAN
+>
and some are related to the
actual device configuration. This document specifies the set
of device properties and gives them well-defined meaning. This
enable system and desktop level components to distinguish
between the different device objects and discover and
configure devices based on these properties.
- </p><p>
- HAL provides an easy-to-use API through D-BUS which is an IPC
+ </P
+><P
+>&#13; HAL provides an easy-to-use API through D-BUS which is an IPC
framework that, among other things, provides a system-wide
message-bus that allows applications to talk to one
another. Specifically, D-BUS provides asynchronous
notification such that HAL can notify other peers on the
message-bus when devices are added and removed as well as when
properties on a device are changing.
- </p><p>
- The most important goal of HAL is to provide plug-and-play
+ </P
+><P
+>&#13; The most important goal of HAL is to provide plug-and-play
facilities for UNIX-like desktops with focus on providing a
rich and extensible description of device characteristics and
features. HAL has no other major dependencies apart from D-BUS
which, given sufficient infrastructure, allows it to be
implemented on many UNIX-like systems. The major focus,
initially, is systems running the Linux 2.6 series kernels.
- </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2909516"></a>Acknowledgements</h2></div></div></div><p>
- Havoc Pennington's article
- <a href="http://www.ometer.com/hardware.html" target="_top">''Making Hardware Just Work''
- </a>
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="AEN24"
+>1.2. Acknowledgements</A
+></H2
+><P
+>&#13; Havoc Pennington's article
+ <A
+HREF="http://www.ometer.com/hardware.html"
+TARGET="_top"
+>''Making Hardware Just Work''
+ </A
+>
motivated this work. The specification and software would not exist
without all the useful ideas, suggestions, comments and patches
from the
- <a href="http://freedesktop.org/mailman/listinfo/xdg" target="_top">Free Desktop</a> and
- <a href="http://freedesktop.org/mailman/listinfo/hal" target="_top">HAL</a>
+ <A
+HREF="http://freedesktop.org/mailman/listinfo/xdg"
+TARGET="_top"
+>Free Desktop</A
+> and
+ <A
+HREF="http://freedesktop.org/mailman/listinfo/hal"
+TARGET="_top"
+>HAL</A
+>
mailing lists.
- </p><p>
- All trademarks mentioned belong to their respective owners.
- </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ov_halarch"></a>Architecture of HAL</h2></div></div></div><p>
- The HAL consists of a number of components as outlined in the
+ </P
+><P
+>&#13; All trademarks mentioned belong to their respective owners.
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="ov_halarch"
+>1.3. Architecture of HAL</A
+></H2
+><P
+>&#13; The HAL consists of a number of components as outlined in the
diagram below. Note that this diagram is high-level and doesn't
capture implementation details.
- </p><p>
- <img src="hal-arch.png">
- </p><p>
- Details on each component
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- <span class="emphasis"><em>HAL daemon</em></span>
- </p><p>
- A system-wide daemon that maintains a persistent database of
+ </P
+><P
+>&#13; <IMG
+SRC="hal-arch.png">
+ </P
+><P
+>&#13; Details on each component
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>HAL daemon</I
+></SPAN
+>
+ </P
+><P
+>&#13; A system-wide daemon that maintains a persistent database of
device objects. The daemon is also responsible for merging
information from the device information file repository and
managing the life cycle of device objects. The HAL daemon
@@ -164,10 +777,20 @@
networking and storage devices). The HAL daemon notifies system
level components through callouts and session level
components using the D-BUS interface.
- </p></li><li><p>
- <span class="emphasis"><em>Applications</em></span>
- </p><p>
- This represents the end consumers of the HAL and comprises
+ </P
+></LI
+><LI
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Applications</I
+></SPAN
+>
+ </P
+><P
+>&#13; This represents the end consumers of the HAL and comprises
both applications that need to search for a device, but
also (existing) device specific libraries and/or services
that provide access to devices. Specifically, the
@@ -175,8 +798,9 @@
(the special device file or other details), of the device
through HAL, to interact with the device through the
kernel as usual.
- </p><p>
- In addition, this group include desktop environments such
+ </P
+><P
+>&#13; In addition, this group include desktop environments such
as GNOME or KDE. Specifically, using HAL, desktop
environments may include session-level daemons enforcing
certain policies when the device database managed by the
@@ -186,71 +810,173 @@
information files for a new device, displaying link status
information about network devices, mounting removable
storage and so on.
- </p><p>
- Note that several desktop sessions may be active on the
+ </P
+><P
+>&#13; Note that several desktop sessions may be active on the
same system; it is the responsibility of session-level
software to arbitrate the device access between sessions.
- </p></li><li><p>
- <span class="emphasis"><em>Callouts</em></span>
- </p><p>
- Callouts are programs invoked when the device object list
+ </P
+></LI
+><LI
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Callouts</I
+></SPAN
+>
+ </P
+><P
+>&#13; Callouts are programs invoked when the device object list
is modified As such, callouts can be used to maintain
system-wide policy (that may be specific to the particular
OS) such as changing permissions on device nodes, updating
- the systemwide <code class="literal">/etc/fstab</code> file or
+ the systemwide <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file or
configuring the networking subsystem.
- </p></li></ul></div><p>
- </p><p>
- The HAL uses D-BUS to provide a ''network API'' to
+ </P
+></LI
+></UL
+>
+ </P
+><P
+>&#13; The HAL uses D-BUS to provide a ''network API'' to
applications. As D-BUS is designed to be language independent,
potentially many languages / runtime systems will be able to
easily access the services offered by HAL. The D-BUS API is
- detailed in <a href="#dbus-api" title="D-BUS Network API">the section called &#8220;D-BUS Network API&#8221;</a>
+ detailed in <A
+HREF="#dbus-api"
+>Section 4.2</A
+>
.
Note that HAL doesn't
enforce any policy at all, this is left for desktop environments
and operating systems vendors to implement. However, to ensure
interoperability between operating systems and desktop
environments, recommendations and best practises on how to
- enforce policy is discussed in <a href="#enforcing-policy" title="Enforcing Policy">the section called &#8220;Enforcing Policy&#8221;</a>
+ enforce policy is discussed in <A
+HREF="#enforcing-policy"
+>Section 4.3</A
+>
.
- </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ov_hal_linux26"></a>HAL on Linux 2.6</h2></div></div></div><p>
- On a Linux 2.6 system HAL is implemented as shown in the diagram
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="ov_hal_linux26"
+>1.4. HAL on Linux 2.6</A
+></H2
+><P
+>&#13; On a Linux 2.6 system HAL is implemented as shown in the diagram
below:
- </p><p>
- <img src="hal-linux26.png">
- </p><p>
- Highlights
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- HAL depends on the <code class="literal">udev</code> and
- <code class="literal">linux-hotplug</code> packages
- </p></li><li><p>
- The diagram shows an example callout program,
- <code class="literal">fstab-sync</code>, that creates/destroys
- mount points and modifies the <code class="literal">/etc/fstab</code>
+ </P
+><P
+>&#13; <IMG
+SRC="hal-linux26.png">
+ </P
+><P
+>&#13; Highlights
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; HAL depends on the <TT
+CLASS="literal"
+>udev</TT
+> and
+ <TT
+CLASS="literal"
+>linux-hotplug</TT
+> packages
+ </P
+></LI
+><LI
+><P
+>&#13; The diagram shows an example callout program,
+ <TT
+CLASS="literal"
+>fstab-sync</TT
+>, that creates/destroys
+ mount points and modifies the <TT
+CLASS="literal"
+>/etc/fstab</TT
+>
file accordingly whenever storage devices are added or
removed.
- </p></li><li><p>
- A session-level daemon, <code class="literal">*-volume-manager</code>,
+ </P
+></LI
+><LI
+><P
+>&#13; A session-level daemon, <TT
+CLASS="literal"
+>*-volume-manager</TT
+>,
for mounting storage devices is shown. This piece of software
- depends on a properly updated <code class="literal">/etc/fstab</code>
- file and a setuid <code class="literal">mount(1)</code> binary that
+ depends on a properly updated <TT
+CLASS="literal"
+>/etc/fstab</TT
+>
+ file and a setuid <TT
+CLASS="literal"
+>mount(1)</TT
+> binary that
allows an unprivileged user to mount devices marked with option
- <code class="literal">user</code> in the <code class="literal">/etc/fstab</code> file.
- </p></li><li><p>
- The <code class="literal">fstab-sync</code> and
- <code class="literal">*-volume-manager</code> programs are only
+ <TT
+CLASS="literal"
+>user</TT
+> in the <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file.
+ </P
+></LI
+><LI
+><P
+>&#13; The <TT
+CLASS="literal"
+>fstab-sync</TT
+> and
+ <TT
+CLASS="literal"
+>*-volume-manager</TT
+> programs are only
examples on how to enforce policy and are not part of HAL
proper. An OS vendor may choose to enforce policy in a
different way e.g. he might want to ignore the
- <code class="literal">/etc/fstab</code> file and mount storage volumes
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file and mount storage volumes
in the callout, run a daemon with sufficient privileges
or use another setuid mount wrapper.
- See <a href="#enforcing-policy" title="Enforcing Policy">the section called &#8220;Enforcing Policy&#8221;</a>
+ See <A
+HREF="#enforcing-policy"
+>Section 4.3</A
+>
for more details.
- </p></li></ul></div><p>
- </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2964011"></a>Device Objects</h2></div></div></div><p>
- It is important to precisely define the term HAL device
+ </P
+></LI
+></UL
+>
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="AEN84"
+>1.5. Device Objects</A
+></H2
+><P
+>&#13; It is important to precisely define the term HAL device
object. It's actually a bit blurry to define in general, it
includes what most UNIX-like systems consider first class
objects when it comes to hardware. In particular, a device
@@ -267,8 +993,9 @@
between device objects and the actual iron constituting what
users normally understand as a single piece of hardware;
a device object represents the smallest addressable unit.
- </p><p>
- Device objects in HAL are organised on a by-connection basis,
+ </P
+><P
+>&#13; Device objects in HAL are organised on a by-connection basis,
e.g. for a given device object X it is possible to find the
device object Y where X is attached to Y. This gives structure
to the device database of HAL; it is possible to map the
@@ -280,113 +1007,244 @@
objects are not referenced anywhere in the device objects that
users are interested in; they are merely used as glue to build
the device tree.
- </p><p>
- In addition to provide information about what kind of hardware
+ </P
+><P
+>&#13; In addition to provide information about what kind of hardware
a device object represents (such as a PCI or USB device) and
how to address it, HAL merges information about the functional
interfaces the OS kernel provides in order to use the device;
in most cases this is represented on the device object as a
string property with the name of the special device file in
- <code class="literal">/dev</code>. In addition to the special device
+ <TT
+CLASS="literal"
+>/dev</TT
+>. In addition to the special device
file, a number of other useful properties are merged. This
means that both hardware and functional properties are on the
same device object, which is very useful for an application
programmer. For example, an application might query HAL for
the device object that exports the special device file
- <code class="literal">/dev/input/mouse2</code> and learn that this is
+ <TT
+CLASS="literal"
+>/dev/input/mouse2</TT
+> and learn that this is
provide by an USB mouse from a certain manufacturer by
checking the properties that export the USB vendor and product
- identifiers. See <a href="#device-capabilities" title="Device Capabilities">the section called &#8220;Device Capabilities&#8221;</a>
+ identifiers. See <A
+HREF="#device-capabilities"
+>Section 1.6</A
+>
and
- <a href="#device-properties" title="Chapter 2. Device Properties">Chapter 2, <i>Device Properties</i></a>
+ <A
+HREF="#device-properties"
+>Chapter 2</A
+>
for details.
- </p><p>
- On a formal level, a device object is comprised by
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- <span class="emphasis"><em>UDI</em></span>
- </p><p>
- This is an identifier, the Unique Device Identifer, that is
+ </P
+><P
+>&#13; On a formal level, a device object is comprised by
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>UDI</I
+></SPAN
+>
+ </P
+><P
+>&#13; This is an identifier, the Unique Device Identifer, that is
unique for a device object - that is, no other device object
can have the same UDI at the same time. The UDI is computed
using bus-specific information and is meant to be unique
across device insertions and independent of the physical
port or slot the device may be plugged into.
- </p></li><li><p>
- <span class="emphasis"><em>Properties</em></span>
- </p><p>
- Each device object got a set of properties which are
+ </P
+></LI
+><LI
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Properties</I
+></SPAN
+>
+ </P
+><P
+>&#13; Each device object got a set of properties which are
key/value pairs. The key is an ASCII string while the value
can be one of several types
- </p><div class="itemizedlist"><ul type="circle"><li><p>
- <code class="literal">string</code> - UTF8 string
- </p></li><li><p>
- <code class="literal">strlist</code> - sorted list with UTF8 strings
- </p></li><li><p>
- <code class="literal">int</code> - 32-bit signed integer
- </p></li><li><p>
- <code class="literal">uint64</code> - 64-bit unsigned integer
- </p></li><li><p>
- <code class="literal">bool</code> - truth value
- </p></li><li><p>
- <code class="literal">double</code> - IEEE754 double precision
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>string</TT
+> - UTF8 string
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>strlist</TT
+> - sorted list with UTF8 strings
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>int</TT
+> - 32-bit signed integer
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>uint64</TT
+> - 64-bit unsigned integer
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>bool</TT
+> - truth value
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>double</TT
+> - IEEE754 double precision
floating point number
- </p></li></ul></div><p>
- </p></li></ul></div><p>
- Properties of a device object carry all the important
+ </P
+></LI
+></UL
+>
+ </P
+></LI
+></UL
+><P
+>&#13; Properties of a device object carry all the important
information about a device object. For organisational reasons
properties are also namespaced using ''.'' as a separator.
- </p><p>
- It can be useful to classify properties into four groups
- </p><div class="itemizedlist"><ul type="disc"><li><p>Metadata - Information about how the devices
+ </P
+><P
+>&#13; It can be useful to classify properties into four groups
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>Metadata - Information about how the devices
are connected with respect to each other
(parent/child relationships), what kind of
device it is, what functionality it provides
etc.
- </p></li><li><p>Facts -
+ </P
+></LI
+><LI
+><P
+>Facts -
vendor ID, product ID, disk serial numbers,
number of buttons on a mouse, formats accepted
by a mp3 player and so on.
- </p></li><li><p>Usage specific information -
+ </P
+></LI
+><LI
+><P
+>Usage specific information -
Network link status, special device file name,
filesystem mount location etc.
- </p></li><li><p>Policy -
+ </P
+></LI
+><LI
+><P
+>Policy -
How the device is to be used be users; usually
defined by the system administrator.
- </p></li></ul></div><p>
- The first category is determined by HAL, the next is merged
+ </P
+></LI
+></UL
+><P
+>&#13; The first category is determined by HAL, the next is merged
from either the hardware itself or device information files,
the third is intercepted by monitoring the operating system
and the last is merged from files that only the system
administrator can edit. This specification is concerned with
- precisely defining several properties; see <a href="#device-properties" title="Chapter 2. Device Properties">Chapter 2, <i>Device Properties</i></a>
+ precisely defining several properties; see <A
+HREF="#device-properties"
+>Chapter 2</A
+>
and onwards for more
information. As a complement to device properties, HAL also
- provides <span class="emphasis"><em>conditions</em></span> on HAL device
+ provides <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>conditions</I
+></SPAN
+> on HAL device
objects. Conditions are used to relay events that are
happening on devices which are not easily expressed in
properties. This includes events such as ''processor is
overheating'' or ''block device unmounted''.
- </p><p>
- There is a special hal device object referred to as the ''root
+ </P
+><P
+>&#13; There is a special hal device object referred to as the ''root
computer device object''. This device object represent the
entire system as a whole and all other devices are either
directly or indirectly childs of this device object. It has
the
- UDI <code class="literal">/org/freedesktop/Hal/devices/computer</code>.
- </p><p>
- The fundamental idea about HAL is that all ''interesting''
+ UDI <TT
+CLASS="literal"
+>/org/freedesktop/Hal/devices/computer</TT
+>.
+ </P
+><P
+>&#13; The fundamental idea about HAL is that all ''interesting''
information about hardware that a desktop application needs,
can be obtained by querying HAL. Below is a screenshot of a
simple device manager application shipped with HAL
- called <code class="literal">hal-device-manager</code>. This
+ called <TT
+CLASS="literal"
+>hal-device-manager</TT
+>. This
application is communicating with the HAL daemon and displays
the tree of device objects. The shown properties are for a
device object representing a harddisk.
- </p><p>
- <img src="hal-devices1.png">
- </p><p>
- </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="device-capabilities"></a>Device Capabilities</h2></div></div></div><p>
- Mainstream hardware isn't very good at reporting what they are,
+ </P
+><P
+>&#13; <IMG
+SRC="hal-devices1.png">
+ </P
+><P
+>&#13; </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="device-capabilities"
+>1.6. Device Capabilities</A
+></H2
+><P
+>&#13; Mainstream hardware isn't very good at reporting what they are,
they only report, at best, how to interact with them. This is a
problem; many devices, such as MP3 players or digital still
cameras, appear to the operating system as plain USB Mass
@@ -394,20 +1252,46 @@
that. The core of the problem is that without external
metadata, the operating system and desktop environment will
present it to the user as just e.g. a mass storage device.
- </p><p>
- As HAL is concerned with merging of external metadata, through
+ </P
+><P
+>&#13; As HAL is concerned with merging of external metadata, through
e.g. device information files, there needs to be some scheme on
how to record what the device actually is. This is achieved by
- two textual properties, <code class="literal">info.category</code> and
- <code class="literal">info.capabilities</code>. The former describes
- <span class="emphasis"><em>what the device is</em></span> (as a single
+ two textual properties, <TT
+CLASS="literal"
+>info.category</TT
+> and
+ <TT
+CLASS="literal"
+>info.capabilities</TT
+>. The former describes
+ <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>what the device is</I
+></SPAN
+> (as a single
alphanumeric keyword) and the latter describes
- <span class="emphasis"><em>what the device does</em></span> (as a number of
+ <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>what the device does</I
+></SPAN
+> (as a number of
alphanumeric keywords separated by whitespace). The keywords
available for use is defined in this document; we'll refer to
- them in following simply as <span class="emphasis"><em>capabilities</em></span>.
- </p><p>
- HAL itself, assigns capabilities on device detection time by
+ them in following simply as <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>capabilities</I
+></SPAN
+>.
+ </P
+><P
+>&#13; HAL itself, assigns capabilities on device detection time by
inspecting the device class (if available, it depends on the
bus type) and looking at information from the operating system
(most OS'es have a concept of device classes). At this time the
@@ -416,16 +1300,18 @@
overridden by either device information files or callouts. This
gives maximum flexibility, while maintaining a base level of
capability detection.
- </p><p>
- The idea of HAL is that existing device capability specific
+ </P
+><P
+>&#13; The idea of HAL is that existing device capability specific
libraries (such as libghoto2), would advertise what kind of HAL
capabilities they are able to handle. As this happens over
time, this specification will grow to precisely define what a
device with a given capability is supposed to do and what
library, or service, the application programmer can use to
access the device.
- </p><p>
- Having a capability also means that part of the property
+ </P
+><P
+>&#13; Having a capability also means that part of the property
namespace, prefixed with the capability name, will be populated
with more specific information about the capability. Indeed,
some properties may even be required such that applications and
@@ -435,745 +1321,3870 @@
support recording of audio, and how to interact with the
device. For example, the latter may specify ''USB Storage
Device'' or ''proprietary protocol, use libfooplayer''.
- </p><p>
- Just as device objects can appear and disappear at any time
+ </P
+><P
+>&#13; Just as device objects can appear and disappear at any time
(e.g. when a device is plugged in respectively removed),
capabilities can also appear and disappear - one example of
this happening is when device drivers are loaded and unloaded.
- </p><p>
- Finally, capabilities have an inheritance scheme, e.g. if a device
- has a capability <code class="literal">foo.bar</code>, it must also have
- the capability <code class="literal">foo</code>.
- </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="using-devices"></a>Using devices</h2></div></div></div><p>
- While the HAL daemon provides generic operations that apply to
+ </P
+><P
+>&#13; Finally, capabilities have an inheritance scheme, e.g. if a device
+ has a capability <TT
+CLASS="literal"
+>foo.bar</TT
+>, it must also have
+ the capability <TT
+CLASS="literal"
+>foo</TT
+>.
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="using-devices"
+>1.7. Using devices</A
+></H2
+><P
+>&#13; While the HAL daemon provides generic operations that apply to
all devices (though some may be no-ops), HAL is not concerned
with providing non-generic device operations. Specifically, one
goal of HAL is to integrate with existing and future libraries
that target a specific class of devices such as cameras or mp3
players.
- </p><p>
- For instance, <code class="literal">libgphoto2</code> could be extended
+ </P
+><P
+>&#13; For instance, <TT
+CLASS="literal"
+>libgphoto2</TT
+> could be extended
such that the application programmer can simply pass the UDI of
the camera he wishes to interact with
- and <code class="literal">libghoto2</code> would then, via D-BUS, acquire
+ and <TT
+CLASS="literal"
+>libghoto2</TT
+> would then, via D-BUS, acquire
the bus-specific information required, the address so to speak,
from the HAL daemon, and then interact directly with the
hardware.
- </p><p>
- Another option is to use the existing API of the device library
+ </P
+><P
+>&#13; Another option is to use the existing API of the device library
to discover devices (the library would be using HAL under the
hood) and provide a function to retrieve the HAL UDI of the
device. When the library is built without HAL support this
- function returns <code class="literal">NULL</code>, however, when the UDI
+ function returns <TT
+CLASS="literal"
+>NULL</TT
+>, however, when the UDI
is available, then applications using the library can use the
UDI both as stable reference to the device and also to extract
more information directly from the HAL daemon.
- </p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="device-properties"></a>Chapter 2. Device Properties</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#properties-metadata">Metadata Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-info">
- <code class="literal">info</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-linux">
- <code class="literal">linux</code> namespace
- </a></span></dt></dl></dd><dt><span class="sect1"><a href="#properties-bus">Physical Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-pci">
- <code class="literal">pci</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-serialif">
- <code class="literal">serial</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-usb">
- <code class="literal">usb_device</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-usbif">
- <code class="literal">usb</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-platform">
- <code class="literal">platform</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ide-host">
- <code class="literal">ide_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ide">
- <code class="literal">ide</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-scsi_host">
- <code class="literal">scsi_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-scsi">
- <code class="literal">scsi</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ieee1394_host">
- <code class="literal">ieee1394_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ieee1394_node">
- <code class="literal">ieee1394_node</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ieee1394">
- <code class="literal">ieee1394</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-mmc_host">
- <code class="literal">mmc_host</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-mmc">
- <code class="literal">mmc</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ccw">
- <code class="literal">ccw</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ccwgroup">
- <code class="literal">ccwgroup</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-iucv">
- <code class="literal">iucv</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-block">
- <code class="literal">block</code> namespace
- </a></span></dt></dl></dd><dt><span class="sect1"><a href="#properties-functional">Functional Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-volume">
- <code class="literal">volume</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-kernel">
- <code class="literal">system</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-volume-disc">
- <code class="literal">volume.disc</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-storage">
- <code class="literal">storage</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-storage-cdrom">
- <code class="literal">storage.cdrom</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-net">
- <code class="literal">net</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-net-80203">
- <code class="literal">net.80203</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-net-80211">
- <code class="literal">net.80211</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-input">
- <code class="literal">input</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-pcmcia_socket">
- <code class="literal">pcmcia_socket namespace</code>
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-printer">
- <code class="literal">printer</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-portable_audio_player">
- <code class="literal">portable_audio_player</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-alsa">
- <code class="literal">alsa</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-oss">
- <code class="literal">oss</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-camera">
- <code class="literal">camera</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-laptop-panel">
- <code class="literal">laptop_panel</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-video_adapter_pm">
- <code class="literal">video_adapter_pm</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-ac_adaptor">
- <code class="literal">ac_adaptor</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-battery">
- <code class="literal">battery</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-button">
- <code class="literal">button</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-processor">
- <code class="literal">processor</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-display_device">
- <code class="literal">display_device</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-sensor">
- <code class="literal">sensor</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-power-management">
- <code class="literal">power_management</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-tape">
- <code class="literal">tape</code> namespace
- </a></span></dt></dl></dd><dt><span class="sect1"><a href="#properties-policy">Policy Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#device-properties-storage-policy-default">
- <code class="literal">storage.policy.default</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-storage-policy">
- <code class="literal">storage.policy</code> namespace
- </a></span></dt><dt><span class="sect2"><a href="#device-properties-volume-policy">
- <code class="literal">volume.policy</code> namespace
- </a></span></dt></dl></dd></dl></div><p>
- Properties are arranged in a namespaces using ''.'' as a separator
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="device-properties"
+></A
+>Chapter 2. Device Properties</H1
+><P
+>&#13; Properties are arranged in a namespaces using ''.'' as a separator
and are key/value pairs. The value may assume different types; currently
int32, double, bool, UTF8 strings and UTF8 string lists are supported.
The key of a property is always an ASCII string without any whitespace.
The properties are updated in real-time.
- </p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="properties-metadata"></a>Metadata Properties</h2></div></div></div><p>
- The section represents properties that aren't tied to either
+ </P
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-metadata"
+>2.1. Metadata Properties</A
+></H2
+><P
+>&#13; The section represents properties that aren't tied to either
physical or functional characteristics of what the device
object represents.
- </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-info"></a>
- <code class="literal">info</code> namespace
- </h3></div></div></div><p>
- The <code class="literal">info</code> namespace contain properties that
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-info"
+>2.1.1. <TT
+CLASS="literal"
+>info</TT
+> namespace</A
+></H3
+><P
+>&#13; The <TT
+CLASS="literal"
+>info</TT
+> namespace contain properties that
can be considered metadata about device objects. These
properties are always available.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">info.bus</code> (string)
- </td><td>pci, usb, ide_host, ide, block, usb, usbif, scsi_host, scsi</td><td>Yes</td><td>Describes what ''physical'' bus the device is connected to</td></tr><tr><td>
- <code class="literal">info.udi</code> (string)
- </td><td>example: /org/freedesktop/Hal/devices/pci_10ec_8139</td><td>Yes</td><td>The HAL unique device id</td></tr><tr><td>
- <code class="literal">info.persistent</code> (bool)
- </td><td> </td><td>
- No, but required if <code class="literal">info.not_available</code> is set to TRUE
- </td><td>If this property is set, the device will remain in the
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN178"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.bus</TT
+> (string)
+ </TD
+><TD
+>pci, usb, ide_host, ide, block, usb, usbif, scsi_host, scsi</TD
+><TD
+>Yes</TD
+><TD
+>Describes what ''physical'' bus the device is connected to</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.udi</TT
+> (string)
+ </TD
+><TD
+>example: /org/freedesktop/Hal/devices/pci_10ec_8139</TD
+><TD
+>Yes</TD
+><TD
+>The HAL unique device id</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.persistent</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; No, but required if <TT
+CLASS="literal"
+>info.not_available</TT
+> is set to TRUE
+ </TD
+><TD
+>If this property is set, the device will remain in the
the GDL even if the device is unplugged. NOTE: property not implemented yet
- </td></tr><tr><td>
- <code class="literal">info.not_available</code> (bool)
- </td><td> </td><td>No</td><td>The device is currently not available (it may be unplugged
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.not_available</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>The device is currently not available (it may be unplugged
or powered down) NOTE: property not implemented yet
- </td></tr><tr><td>
- <code class="literal">info.capabilities</code> (strlist)
- </td><td>example: 'block, storage, storage.cdrom'</td><td>No</td><td>A string list of capabilities describing what the devices does</td></tr><tr><td>
- <code class="literal">info.category</code> (string)
- </td><td>example: storage.cdrom</td><td>No</td><td>The prominent capability describing what the device is</td></tr><tr><td>
- <code class="literal">info.product</code> (string)
- </td><td>examples: ''SleekKeyboard'', ''MouseMan 2003'', ''Volume'', ''LS-120 SLIM3 00 UHD Floppy''</td><td>No</td><td>The name of the device</td></tr><tr><td>
- <code class="literal">info.vendor</code> (string)
- </td><td>examples: Logitch, Mustek</td><td>No</td><td>The name of the vendor of the device</td></tr><tr><td>
- <code class="literal">info.parent</code> (string)
- </td><td>example: /org/freedesktop/Hal/devices/ide_1_0</td><td>Yes, for all non-root device objects</td><td>The UDI of the device object that this device object
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.capabilities</TT
+> (strlist)
+ </TD
+><TD
+>example: 'block, storage, storage.cdrom'</TD
+><TD
+>No</TD
+><TD
+>A string list of capabilities describing what the devices does</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.category</TT
+> (string)
+ </TD
+><TD
+>example: storage.cdrom</TD
+><TD
+>No</TD
+><TD
+>The prominent capability describing what the device is</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.product</TT
+> (string)
+ </TD
+><TD
+>examples: ''SleekKeyboard'', ''MouseMan 2003'', ''Volume'', ''LS-120 SLIM3 00 UHD Floppy''</TD
+><TD
+>No</TD
+><TD
+>The name of the device</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.vendor</TT
+> (string)
+ </TD
+><TD
+>examples: Logitch, Mustek</TD
+><TD
+>No</TD
+><TD
+>The name of the vendor of the device</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.parent</TT
+> (string)
+ </TD
+><TD
+>example: /org/freedesktop/Hal/devices/ide_1_0</TD
+><TD
+>Yes, for all non-root device objects</TD
+><TD
+>The UDI of the device object that this device object
is connected to.
- </td></tr><tr><td>
- <code class="literal">info.locked</code> (bool)
- </td><td> </td><td>No</td><td>
- If this property is available and set
- to <code class="literal">TRUE</code> it means that a process
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.locked</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If this property is available and set
+ to <TT
+CLASS="literal"
+>TRUE</TT
+> it means that a process
is using the device that the hal device object in
question represents and no other process should attempt
to use or configure the device. The lock is only
advisory.
- </td></tr><tr><td>
- <code class="literal">info.locked.reason</code> (string)
- </td><td>
- example: ''The optical drive is currently being used to
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.locked.reason</TT
+> (string)
+ </TD
+><TD
+>&#13; example: ''The optical drive is currently being used to
record a CD-RW disc.''
- </td><td>
- Only available if <code class="literal">info.locked</code> is set
- to <code class="literal">TRUE</code>.
- </td><td>A localized text suitable for UI display</td></tr><tr><td>
- <code class="literal">info.locked.dbus_service</code> (string)
- </td><td>example: :1.278</td><td>
- Only available if <code class="literal">info.locked</code> is set
- to <code class="literal">TRUE</code>.
- </td><td>The base D-BUS service of the process holding the lock.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-linux"></a>
- <code class="literal">linux</code> namespace
- </h3></div></div></div><p>
- This namespace is used to store Linux-specific metadata about the
+ </TD
+><TD
+>&#13; Only available if <TT
+CLASS="literal"
+>info.locked</TT
+> is set
+ to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>A localized text suitable for UI display</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.locked.dbus_service</TT
+> (string)
+ </TD
+><TD
+>example: :1.278</TD
+><TD
+>&#13; Only available if <TT
+CLASS="literal"
+>info.locked</TT
+> is set
+ to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>The base D-BUS service of the process holding the lock.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-linux"
+>2.1.2. <TT
+CLASS="literal"
+>linux</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is used to store Linux-specific metadata about the
device object and is only available on Linux systems.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">linux.sysfs_path</code> (string)
- </td><td>examples: /sys/block/sda/sda1, /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0</td><td>Yes (only if available for the device) </td><td>A fully-qualified path into the sysfs filesystem for the
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN269"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+> (string)
+ </TD
+><TD
+>examples: /sys/block/sda/sda1, /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0</TD
+><TD
+>Yes (only if available for the device) </TD
+><TD
+>A fully-qualified path into the sysfs filesystem for the
physical device
- </td></tr><tr><td>
- <code class="literal">linux.sysfs_path_device</code> (string)
- </td><td> </td><td>Yes (only if available for the device) </td><td>Normally this property assumes the same value as
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>linux.sysfs_path_device</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes (only if available for the device) </TD
+><TD
+>Normally this property assumes the same value as
linux.sysfs_path, however for some devices it assumes an
alternate location in the sysfs filesystem. It is used
internally in HAL
- </td></tr><tr><td>
- <code class="literal">linux.acpi_path</code> (string)
- </td><td>example: /proc/acpi/button/power/PWRF, /proc/pmu/battery_0</td><td>No</td><td>
- A fully-qualified path into the procfs filesystem for a
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>linux.acpi_path</TT
+> (string)
+ </TD
+><TD
+>example: /proc/acpi/button/power/PWRF, /proc/pmu/battery_0</TD
+><TD
+>No</TD
+><TD
+>&#13; A fully-qualified path into the procfs filesystem for a
device object representing an ACPI abstraction.
- </td></tr><tr><td>
- <code class="literal">linux.driver</code> (string)
- </td><td>examples: agpgart-intel, yenta_cardbus, usb, hub, usbhid</td><td>No</td><td>Name of the driver bound to this device</td></tr><tr><td>
- <code class="literal">linux.kernel_devname</code> (string)
- </td><td>example: usb-0000:00:07.2-1.2</td><td>No</td><td>A name used internally in the Linux kernel to identify
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>linux.driver</TT
+> (string)
+ </TD
+><TD
+>examples: agpgart-intel, yenta_cardbus, usb, hub, usbhid</TD
+><TD
+>No</TD
+><TD
+>Name of the driver bound to this device</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>linux.kernel_devname</TT
+> (string)
+ </TD
+><TD
+>example: usb-0000:00:07.2-1.2</TD
+><TD
+>No</TD
+><TD
+>A name used internally in the Linux kernel to identify
the device. Used internally in HAL.
- </td></tr><tr><td>
- <code class="literal">linux.is_selinux_enabled</code> (bool)
- </td><td> </td><td>No; can only appear on the root computer device object</td><td>Whether SELinux is enabled on the system</td></tr></tbody></table></div><p>
- </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="properties-bus"></a>Physical Properties</h2></div></div></div><p>
- In this section properties for device objects that represent
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>linux.is_selinux_enabled</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No; can only appear on the root computer device object</TD
+><TD
+>Whether SELinux is enabled on the system</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; </P
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-bus"
+>2.2. Physical Properties</A
+></H2
+><P
+>&#13; In this section properties for device objects that represent
physically addressable hardware is described. Availability of
- these depends on the value of the <code class="literal">info.bus</code>
+ these depends on the value of the <TT
+CLASS="literal"
+>info.bus</TT
+>
property. These properties are not of particular interest to
application developers, instead they are useful for libraries
and userspace drivers that needs to interact with the device
given a UDI. Knowledge of various bus interconnect
technologies is assumed for this section to be useful.
- </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-pci"></a>
- <code class="literal">pci</code> namespace
- </h3></div></div></div><p>
- This namespace contains properties for device objects representing
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-pci"
+>2.2.1. <TT
+CLASS="literal"
+>pci</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace contains properties for device objects representing
functions on devices on a PCI bus. These properties are available
- exactly when <code class="literal">info.bus</code> equals <code class="literal">pci</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">pci.device_class</code> (int)
- </td><td>example: 3</td><td>Yes</td><td>Device Class</td></tr><tr><td>
- <code class="literal">pci.device_subclass</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>PCI Device Sub Class</td></tr><tr><td>
- <code class="literal">pci.device_protocol</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>Device Protocol</td></tr><tr><td>
- <code class="literal">pci.product_id</code> (int)
- </td><td>example: 0x4c4d</td><td>Yes</td><td>Product ID</td></tr><tr><td>
- <code class="literal">pci.vendor_id</code> (int)
- </td><td>example: 0x1002</td><td>Yes</td><td>Vendor ID</td></tr><tr><td>
- <code class="literal">pci.subsys_product_id</code> (int)
- </td><td>example: 0x009e</td><td>Yes</td><td>Subsystem product id</td></tr><tr><td>
- <code class="literal">pci.subsys_vendor_id</code> (int)
- </td><td>example: 0x1028</td><td>Yes</td><td>Subsystem vendor id</td></tr><tr><td>
- <code class="literal">pci.linux.sysfs_path</code> (string)
- </td><td>example: /sys/devices/pci0000:00/0000:00:01/0000:01:00.0</td><td>Yes (only on Linux)</td><td>
- Equals <code class="literal">linux.sysfs_path</code>
- </td></tr><tr><td>
- <code class="literal">pci.product</code> (string)
- </td><td>Rage Mobility P/M AGP 2x</td><td>No</td><td>Name of the product per the PCI database</td></tr><tr><td>
- <code class="literal">pci.vendor</code> (string)
- </td><td>ATI Technologies Inc</td><td>No</td><td>Name of the vendor per the PCI database</td></tr><tr><td>
- <code class="literal">pci.subsys_product</code> (string)
- </td><td>Inspiron 7500</td><td>No</td><td>Name of the subsystem product per the PCI database</td></tr><tr><td>
- <code class="literal">pci.subsys_vendor</code> (string)
- </td><td>Dell Computer Corporation</td><td>No</td><td>Name of the subsystem vendor per the PCI database</td></tr></tbody></table></div><p>
- (FIXME: Some key PCI information (bus, slot, port, function
+ exactly when <TT
+CLASS="literal"
+>info.bus</TT
+> equals <TT
+CLASS="literal"
+>pci</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN325"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.device_class</TT
+> (int)
+ </TD
+><TD
+>example: 3</TD
+><TD
+>Yes</TD
+><TD
+>Device Class</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.device_subclass</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>PCI Device Sub Class</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.device_protocol</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Device Protocol</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.product_id</TT
+> (int)
+ </TD
+><TD
+>example: 0x4c4d</TD
+><TD
+>Yes</TD
+><TD
+>Product ID</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.vendor_id</TT
+> (int)
+ </TD
+><TD
+>example: 0x1002</TD
+><TD
+>Yes</TD
+><TD
+>Vendor ID</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.subsys_product_id</TT
+> (int)
+ </TD
+><TD
+>example: 0x009e</TD
+><TD
+>Yes</TD
+><TD
+>Subsystem product id</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.subsys_vendor_id</TT
+> (int)
+ </TD
+><TD
+>example: 0x1028</TD
+><TD
+>Yes</TD
+><TD
+>Subsystem vendor id</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.linux.sysfs_path</TT
+> (string)
+ </TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:01/0000:01:00.0</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>&#13; Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.product</TT
+> (string)
+ </TD
+><TD
+>Rage Mobility P/M AGP 2x</TD
+><TD
+>No</TD
+><TD
+>Name of the product per the PCI database</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.vendor</TT
+> (string)
+ </TD
+><TD
+>ATI Technologies Inc</TD
+><TD
+>No</TD
+><TD
+>Name of the vendor per the PCI database</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.subsys_product</TT
+> (string)
+ </TD
+><TD
+>Inspiron 7500</TD
+><TD
+>No</TD
+><TD
+>Name of the subsystem product per the PCI database</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pci.subsys_vendor</TT
+> (string)
+ </TD
+><TD
+>Dell Computer Corporation</TD
+><TD
+>No</TD
+><TD
+>Name of the subsystem vendor per the PCI database</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; (FIXME: Some key PCI information (bus, slot, port, function
etc.) is missing here)
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-serialif"></a>
- <code class="literal">serial</code> namespace
- </h3></div></div></div><p>
- Device objects that represent serial devices (e.g. /dev/ttyS* or
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-serialif"
+>2.2.2. <TT
+CLASS="literal"
+>serial</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects that represent serial devices (e.g. /dev/ttyS* or
/dev/ttyUSB*).
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">serial.physical_device</code> (string)
- </td><td>
- example: <code class="literal">/org/freedesktop/Hal/devices/pnp_PNP0501</code>
- </td><td>Yes</td><td>UDI of the physical device the serial device is bound to.</td></tr><tr><td>
- <code class="literal">serial.device</code> (string)
- </td><td>example: /dev/ttyS0</td><td>Yes</td><td>The device node to access the OSS device.</td></tr><tr><td>
- <code class="literal">serial.port</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>
- The port number of the device, based on the number in
- <code class="literal">serial.device</code>
- </td></tr><tr><td>
- <code class="literal">serial.type</code> (string)
- </td><td>example: platform, usb, unknown</td><td>Yes</td><td>This property defines the type of the serial device.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-usb"></a>
- <code class="literal">usb_device</code> namespace
- </h3></div></div></div><p>
- For device objects representing USB devices the property
- <code class="literal">info.bus</code> will be <code class="literal">usb_device</code>,
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN412"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>serial.physical_device</TT
+> (string)
+ </TD
+><TD
+>&#13; example: <TT
+CLASS="literal"
+>/org/freedesktop/Hal/devices/pnp_PNP0501</TT
+>
+ </TD
+><TD
+>Yes</TD
+><TD
+>UDI of the physical device the serial device is bound to.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>serial.device</TT
+> (string)
+ </TD
+><TD
+>example: /dev/ttyS0</TD
+><TD
+>Yes</TD
+><TD
+>The device node to access the OSS device.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>serial.port</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The port number of the device, based on the number in
+ <TT
+CLASS="literal"
+>serial.device</TT
+>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>serial.type</TT
+> (string)
+ </TD
+><TD
+>example: platform, usb, unknown</TD
+><TD
+>Yes</TD
+><TD
+>This property defines the type of the serial device.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-usb"
+>2.2.3. <TT
+CLASS="literal"
+>usb_device</TT
+> namespace</A
+></H3
+><P
+>&#13; For device objects representing USB devices the property
+ <TT
+CLASS="literal"
+>info.bus</TT
+> will be <TT
+CLASS="literal"
+>usb_device</TT
+>,
and the following properties will be available. Note that the
corresponding USB interfaces are represented by separate
device objects as children.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">usb_device.bus_number</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>The USB bus the device is attached to</td></tr><tr><td>
- <code class="literal">usb_device.configuration_value</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>The current configuration the USB device is in;
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN453"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.bus_number</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>The USB bus the device is attached to</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.configuration_value</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>The current configuration the USB device is in;
starting from 1
- </td></tr><tr><td>
- <code class="literal">usb_device.num_configurations</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>Number of configurations this USB device
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.num_configurations</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Number of configurations this USB device
can assume
- </td></tr><tr><td>
- <code class="literal">usb_device.device_class</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>USB Device Class</td></tr><tr><td>
- <code class="literal">usb_device.device_subclass</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>USB Device Sub Class</td></tr><tr><td>
- <code class="literal">usb_device.device_protocol</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>USB Device Protocol</td></tr><tr><td>
- <code class="literal">usb_device.is_self_powered</code> (bool)
- </td><td>example: false</td><td>Yes</td><td>The device, in the current configuration, is self
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.device_class</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>USB Device Class</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.device_subclass</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>USB Device Sub Class</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.device_protocol</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>USB Device Protocol</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.is_self_powered</TT
+> (bool)
+ </TD
+><TD
+>example: false</TD
+><TD
+>Yes</TD
+><TD
+>The device, in the current configuration, is self
powered
- </td></tr><tr><td>
- <code class="literal">usb_device.can_wake_up</code> (bool)
- </td><td>example: true</td><td>Yes</td><td>The device, in the current configuration, can wake up</td></tr><tr><td>
- <code class="literal">usb_device.max_power</code> (int)
- </td><td>example: 98</td><td>Yes</td><td>Max power drain of device, in mA</td></tr><tr><td>
- <code class="literal">usb_device.num_interfaces</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>Number of USB Interfaces in the current configuration</td></tr><tr><td>
- <code class="literal">usb_device.num_ports</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>Number of ports on a hub. Zero for non-hubs</td></tr><tr><td>
- <code class="literal">usb_device.port_number</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>The port number on the parent hub that the device is attached to, starting from 1</td></tr><tr><td>
- <code class="literal">usb_device.speed_bcd</code> (int)
- </td><td>examples: 0x00150, 0x01200, 0x48000</td><td>Yes</td><td>Speed of device, in Mbit/s, in BCD with two decimals</td></tr><tr><td>
- <code class="literal">usb_device.version_bcd</code> (int)
- </td><td>examples: 0x0100, 0x0110, 0x0200</td><td>Yes</td><td>USB version of device in BCD with two decimals</td></tr><tr><td>
- <code class="literal">usb_device.level_number</code> (int)
- </td><td>example: 2</td><td>Yes</td><td>Depth in physical USB tree, where the virtual root hub
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.can_wake_up</TT
+> (bool)
+ </TD
+><TD
+>example: true</TD
+><TD
+>Yes</TD
+><TD
+>The device, in the current configuration, can wake up</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.max_power</TT
+> (int)
+ </TD
+><TD
+>example: 98</TD
+><TD
+>Yes</TD
+><TD
+>Max power drain of device, in mA</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.num_interfaces</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Number of USB Interfaces in the current configuration</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.num_ports</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Number of ports on a hub. Zero for non-hubs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.port_number</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>The port number on the parent hub that the device is attached to, starting from 1</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.speed_bcd</TT
+> (int)
+ </TD
+><TD
+>examples: 0x00150, 0x01200, 0x48000</TD
+><TD
+>Yes</TD
+><TD
+>Speed of device, in Mbit/s, in BCD with two decimals</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.version_bcd</TT
+> (int)
+ </TD
+><TD
+>examples: 0x0100, 0x0110, 0x0200</TD
+><TD
+>Yes</TD
+><TD
+>USB version of device in BCD with two decimals</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.level_number</TT
+> (int)
+ </TD
+><TD
+>example: 2</TD
+><TD
+>Yes</TD
+><TD
+>Depth in physical USB tree, where the virtual root hub
is at depth 0
- </td></tr><tr><td>
- <code class="literal">usb_device.linux.device_number</code> (string)
- </td><td>example: 19</td><td>Yes (only on Linux)</td><td>USB Device Number as assigned by the Linux kernel</td></tr><tr><td>
- <code class="literal">usb_device.linux.parent_number</code> (string)
- </td><td>example: 19</td><td>Yes (only on Linux)</td><td>Device number of parent device as assigned by the
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.linux.device_number</TT
+> (string)
+ </TD
+><TD
+>example: 19</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>USB Device Number as assigned by the Linux kernel</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.linux.parent_number</TT
+> (string)
+ </TD
+><TD
+>example: 19</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Device number of parent device as assigned by the
Linux kernel
- </td></tr><tr><td>
- <code class="literal">usb_device.linux.sysfs_path</code> (string)
- </td><td>example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1</td><td>Yes (only on Linux)</td><td>
- Equals <code class="literal">linux.sysfs_path</code>
- </td></tr><tr><td>
- <code class="literal">usb_device.product_id</code> (int)
- </td><td>example: 0x3005</td><td>Yes</td><td>USB Product ID</td></tr><tr><td>
- <code class="literal">usb_device.vendor_id</code> (int)
- </td><td>example: 0x04b3</td><td>Yes</td><td>USB Vendor ID</td></tr><tr><td>
- <code class="literal">usb_device.device_revision_bcd</code> (int)
- </td><td>example: 0x0100</td><td>Yes</td><td>Device Revision Number encoded in BCD with two decimals</td></tr><tr><td>
- <code class="literal">usb_device.serial</code> (string)
- </td><td> </td><td>No</td><td>A string uniquely identifying the instance
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.linux.sysfs_path</TT
+> (string)
+ </TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>&#13; Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.product_id</TT
+> (int)
+ </TD
+><TD
+>example: 0x3005</TD
+><TD
+>Yes</TD
+><TD
+>USB Product ID</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.vendor_id</TT
+> (int)
+ </TD
+><TD
+>example: 0x04b3</TD
+><TD
+>Yes</TD
+><TD
+>USB Vendor ID</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.device_revision_bcd</TT
+> (int)
+ </TD
+><TD
+>example: 0x0100</TD
+><TD
+>Yes</TD
+><TD
+>Device Revision Number encoded in BCD with two decimals</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.serial</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>A string uniquely identifying the instance
of the device; ie. it will be different for two devices
of the same type. Note that the serial number is broken
on some USB devices.
- </td></tr><tr><td>
- <code class="literal">usb_device.product</code> (string)
- </td><td>example: IBM USB HUB KEYBOARD</td><td>No</td><td>Name of the product per the USB ID Database</td></tr><tr><td>
- <code class="literal">usb_device.vendor</code> (string)
- </td><td>example: IBM Corp.</td><td>No</td><td>Name of the vendor per the USB ID Database</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-usbif"></a>
- <code class="literal">usb</code> namespace
- </h3></div></div></div><p>
- Device objects that represent USB interfaces, ie. when
- <code class="literal">info.bus</code> assumes <code class="literal">usb</code>,
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.product</TT
+> (string)
+ </TD
+><TD
+>example: IBM USB HUB KEYBOARD</TD
+><TD
+>No</TD
+><TD
+>Name of the product per the USB ID Database</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb_device.vendor</TT
+> (string)
+ </TD
+><TD
+>example: IBM Corp.</TD
+><TD
+>No</TD
+><TD
+>Name of the vendor per the USB ID Database</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-usbif"
+>2.2.4. <TT
+CLASS="literal"
+>usb</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects that represent USB interfaces, ie. when
+ <TT
+CLASS="literal"
+>info.bus</TT
+> assumes <TT
+CLASS="literal"
+>usb</TT
+>,
are represented by the properties below. In addition all
- the <code class="literal">usb_device.*</code> properties from the parent
+ the <TT
+CLASS="literal"
+>usb_device.*</TT
+> properties from the parent
USB device is available in this namespace but only with
- the <code class="literal">usb</code> prefix instead of
- <code class="literal">usb_device</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">usb.interface.class</code> (int)
- </td><td>example: 0x03</td><td>Yes</td><td>USB Class for the interface</td></tr><tr><td>
- <code class="literal">usb.interface.subclass</code> (int)
- </td><td>example: 0x01</td><td>Yes</td><td>USB Sub Class for this interface</td></tr><tr><td>
- <code class="literal">usb.interface.protocol</code> (int)
- </td><td>example: 0x01</td><td>Yes</td><td>USB Protocol for the interface</td></tr><tr><td>
- <code class="literal">usb.interface.number</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>Number of this interface, starting from zero</td></tr><tr><td>
- <code class="literal">usb.linux.sysfs_path</code> (string)
- </td><td>example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1/1-1.1:1.0</td><td>Yes (only on Linux)</td><td>
- Equals <code class="literal">linux.sysfs_path</code>
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-platform"></a>
- <code class="literal">platform</code> namespace
- </h3></div></div></div><p>
- Devices that are built into the platform or present on busses that
+ the <TT
+CLASS="literal"
+>usb</TT
+> prefix instead of
+ <TT
+CLASS="literal"
+>usb_device</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN616"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb.interface.class</TT
+> (int)
+ </TD
+><TD
+>example: 0x03</TD
+><TD
+>Yes</TD
+><TD
+>USB Class for the interface</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb.interface.subclass</TT
+> (int)
+ </TD
+><TD
+>example: 0x01</TD
+><TD
+>Yes</TD
+><TD
+>USB Sub Class for this interface</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb.interface.protocol</TT
+> (int)
+ </TD
+><TD
+>example: 0x01</TD
+><TD
+>Yes</TD
+><TD
+>USB Protocol for the interface</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb.interface.number</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Number of this interface, starting from zero</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>usb.linux.sysfs_path</TT
+> (string)
+ </TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1/1-1.1:1.0</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>&#13; Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-platform"
+>2.2.5. <TT
+CLASS="literal"
+>platform</TT
+> namespace</A
+></H3
+><P
+>&#13; Devices that are built into the platform or present on busses that
cannot be properly enumerated (e.g. ISA) are represented by device
- objects where <code class="literal">info.bus</code> equals
- <code class="literal">platform</code>. These kind of devices are commonly,
+ objects where <TT
+CLASS="literal"
+>info.bus</TT
+> equals
+ <TT
+CLASS="literal"
+>platform</TT
+>. These kind of devices are commonly,
somewhat incorrectly, called legacy devices.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">platform.id</code> (string)
- </td><td>example: serial</td><td>Yes</td><td>Device identification</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ide-host"></a>
- <code class="literal">ide_host</code> namespace
- </h3></div></div></div><p>
- The <code class="literal">ide_host</code> namespace is present for
- device objects where <code class="literal">info.bus</code> is set
- to <code class="literal">ide_host</code>. Such device objects represent
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN662"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>platform.id</TT
+> (string)
+ </TD
+><TD
+>example: serial</TD
+><TD
+>Yes</TD
+><TD
+>Device identification</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ide-host"
+>2.2.6. <TT
+CLASS="literal"
+>ide_host</TT
+> namespace</A
+></H3
+><P
+>&#13; The <TT
+CLASS="literal"
+>ide_host</TT
+> namespace is present for
+ device objects where <TT
+CLASS="literal"
+>info.bus</TT
+> is set
+ to <TT
+CLASS="literal"
+>ide_host</TT
+>. Such device objects represent
IDE and ATA host adaptors for harddisks and optical drives as
found in the majority of computer systems.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ide_host.number</code> (int)
- </td><td> </td><td>Yes</td><td>A unique number identifying the IDE host adaptor</td></tr><tr><td>
- <code class="literal">ide_host.linux.sysfs_path</code> (string)
- </td><td>example: /sys/devices/pci0000:00/0000:00:07.1/ide0</td><td>Yes (only on Linux)</td><td>
- Equals <code class="literal">linux.sysfs_path</code>
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ide"></a>
- <code class="literal">ide</code> namespace
- </h3></div></div></div><p>
- ATA and IDE drives are represented by device objects where
- <code class="literal">info.bus</code> equals <code class="literal">ide</code>. The
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN684"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ide_host.number</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>A unique number identifying the IDE host adaptor</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ide_host.linux.sysfs_path</TT
+> (string)
+ </TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:07.1/ide0</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>&#13; Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ide"
+>2.2.7. <TT
+CLASS="literal"
+>ide</TT
+> namespace</A
+></H3
+><P
+>&#13; ATA and IDE drives are represented by device objects where
+ <TT
+CLASS="literal"
+>info.bus</TT
+> equals <TT
+CLASS="literal"
+>ide</TT
+>. The
following properties are available for such device objects.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ide.host</code> (int)
- </td><td> </td><td>Yes</td><td>Corresponds
- to <code class="literal">ide_host.host_number</code> of
- the <code class="literal">ide_host</code> device that is the
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN712"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ide.host</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Corresponds
+ to <TT
+CLASS="literal"
+>ide_host.host_number</TT
+> of
+ the <TT
+CLASS="literal"
+>ide_host</TT
+> device that is the
parent of this device object
- </td></tr><tr><td>
- <code class="literal">ide.channel</code> (int)
- </td><td> </td><td>Yes</td><td>Identifies the IDE channel of the host interface</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-scsi_host"></a>
- <code class="literal">scsi_host</code> namespace
- </h3></div></div></div><p>
- The <code class="literal">scsi_host</code> namespace is present for
- device objects where <code class="literal">info.bus</code> is set
- to <code class="literal">scsi_host</code>. Such device objects represent
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ide.channel</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Identifies the IDE channel of the host interface</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-scsi_host"
+>2.2.8. <TT
+CLASS="literal"
+>scsi_host</TT
+> namespace</A
+></H3
+><P
+>&#13; The <TT
+CLASS="literal"
+>scsi_host</TT
+> namespace is present for
+ device objects where <TT
+CLASS="literal"
+>info.bus</TT
+> is set
+ to <TT
+CLASS="literal"
+>scsi_host</TT
+>. Such device objects represent
SCSI host adaptors for SCSI devices as found in some computer
systems.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">scsi_host.host</code> (int)
- </td><td> </td><td>Yes</td><td>A unique number identifying the SCSI host adaptor</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-scsi"></a>
- <code class="literal">scsi</code> namespace
- </h3></div></div></div><p>
- SCSI devices are represented by device objects where
- <code class="literal">info.bus</code> equals <code class="literal">scsi</code>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN742"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>scsi_host.host</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>A unique number identifying the SCSI host adaptor</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-scsi"
+>2.2.9. <TT
+CLASS="literal"
+>scsi</TT
+> namespace</A
+></H3
+><P
+>&#13; SCSI devices are represented by device objects where
+ <TT
+CLASS="literal"
+>info.bus</TT
+> equals <TT
+CLASS="literal"
+>scsi</TT
+>.
The following properties are available for such device objects.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">scsi.host</code> (int)
- </td><td> </td><td>Yes</td><td>
- Corresponds to <code class="literal">scsi_host.host</code>
- of the <code class="literal">scsi_host</code> device that is the
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN763"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>scsi.host</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Corresponds to <TT
+CLASS="literal"
+>scsi_host.host</TT
+>
+ of the <TT
+CLASS="literal"
+>scsi_host</TT
+> device that is the
parent of this device object
- </td></tr><tr><td>
- <code class="literal">scsi.bus</code> (int)
- </td><td> </td><td>Yes</td><td>SCSI channel number</td></tr><tr><td>
- <code class="literal">scsi.target</code> (int)
- </td><td> </td><td>Yes</td><td>SCSI identifier number</td></tr><tr><td>
- <code class="literal">scsi.lun</code> (int)
- </td><td> </td><td>Yes</td><td>SCSI Logical Unit Number</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ieee1394_host"></a>
- <code class="literal">ieee1394_host</code> namespace
- </h3></div></div></div><p>
- Device objects with <code class="literal">info.bus</code> set to
- <code class="literal">ieee1394_host</code> represent IEEE 1394 host
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>scsi.bus</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>SCSI channel number</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>scsi.target</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>SCSI identifier number</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>scsi.lun</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>SCSI Logical Unit Number</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ieee1394_host"
+>2.2.10. <TT
+CLASS="literal"
+>ieee1394_host</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>ieee1394_host</TT
+> represent IEEE 1394 host
adaptors. The following properties are available for such
device objects.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ieee1394_host.is_busmgr</code> (bool)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_host.is_irn</code> (bool)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_host.is_root</code> (bool)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_host.node_count</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_host.nodes_active</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ieee1394_node"></a>
- <code class="literal">ieee1394_node</code> namespace
- </h3></div></div></div><p>
- Device objects with <code class="literal">info.bus</code> set to
- <code class="literal">ieee1394_node</code> represent IEEE 1394 nodes on
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN804"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_host.is_busmgr</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_host.is_irn</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_host.is_root</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_host.node_count</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_host.nodes_active</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ieee1394_node"
+>2.2.11. <TT
+CLASS="literal"
+>ieee1394_node</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>ieee1394_node</TT
+> represent IEEE 1394 nodes on
a IEEE 1394 bus. The following properties are available for
such device objects.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ieee1394_node.capabilities</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_node.guid</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_node.nodeid</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_node.vendor</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">ieee1394_node.vendor_id</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ieee1394"></a>
- <code class="literal">ieee1394</code> namespace
- </h3></div></div></div><p>
- Device objects with <code class="literal">info.bus</code> set to
- <code class="literal">ieee1394</code> represent IEEE 1394 devices. The
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN849"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_node.capabilities</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_node.guid</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_node.nodeid</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_node.vendor</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394_node.vendor_id</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ieee1394"
+>2.2.12. <TT
+CLASS="literal"
+>ieee1394</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>ieee1394</TT
+> represent IEEE 1394 devices. The
following properties are available for such device objects.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ieee1394.specifier_id</code> (int)
- </td><td> </td><td>Yes</td><td>TODO</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-mmc_host"></a>
- <code class="literal">mmc_host</code> namespace
- </h3></div></div></div><p>
- Device objects with <code class="literal">info.bus</code> set to
- <code class="literal">mmc_host</code> represent MultiMediaCard or
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN894"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ieee1394.specifier_id</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-mmc_host"
+>2.2.13. <TT
+CLASS="literal"
+>mmc_host</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>mmc_host</TT
+> represent MultiMediaCard or
Secure Digital host adaptors. The following properties
are available for such device objects.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">mmc_host.host</code> (int)
- </td><td> </td><td>Yes</td><td>A unique number identifying the MMC/SD host adaptor</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-mmc"></a>
- <code class="literal">mmc</code> namespace
- </h3></div></div></div><p>
- Device objects with <code class="literal">info.bus</code> set to
- <code class="literal">mmc</code> represent MultiMediaCard or Secure
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN915"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc_host.host</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>A unique number identifying the MMC/SD host adaptor</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-mmc"
+>2.2.14. <TT
+CLASS="literal"
+>mmc</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>mmc</TT
+> represent MultiMediaCard or Secure
Digital cards. The following properties are available for
such device objects.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">mmc.cid</code> (string)
- </td><td>example: 0150415330303842413a1a8083003a9d</td><td>Yes</td><td>Card Identification Data register (unique for every card
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN936"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.cid</TT
+> (string)
+ </TD
+><TD
+>example: 0150415330303842413a1a8083003a9d</TD
+><TD
+>Yes</TD
+><TD
+>Card Identification Data register (unique for every card
in existence)
- </td></tr><tr><td>
- <code class="literal">mmc.csd</code> (string)
- </td><td>example: 005d013213598067b6d9cfff1640002d</td><td>Yes</td><td>Card Specific Data register</td></tr><tr><td>
- <code class="literal">mmc.scr</code> (string)
- </td><td>example: 00a5000000410000</td><td>Only for SD cards</td><td>SD Card Register</td></tr><tr><td>
- <code class="literal">mmc.rca</code> (int)
- </td><td>example: 8083</td><td>Yes</td><td>Card bus address</td></tr><tr><td>
- <code class="literal">mmc.oem</code> (string)
- </td><td> </td><td>Yes</td><td>Card OEM distributor</td></tr><tr><td>
- <code class="literal">mmc.date</code> (string)
- </td><td>example: 10/2003</td><td>Yes</td><td>Manufacturing date</td></tr><tr><td>
- <code class="literal">mmc.serial</code> (int)
- </td><td>example: 0x3a1a8083</td><td>Yes</td><td>Card serial number</td></tr><tr><td>
- <code class="literal">mmc.hwrev</code> (int)
- </td><td>example: 4</td><td>Yes</td><td>Hardware revision</td></tr><tr><td>
- <code class="literal">mmc.fwrev</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>Firmware revision</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ccw"></a>
- <code class="literal">ccw</code> namespace
- </h3></div></div></div><p>
- Device objects that represent s390 ccw devices (when <code class="literal">info.bus
- </code>
- is set to <code class="literal">ccw</code>) are represented by the
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.csd</TT
+> (string)
+ </TD
+><TD
+>example: 005d013213598067b6d9cfff1640002d</TD
+><TD
+>Yes</TD
+><TD
+>Card Specific Data register</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.scr</TT
+> (string)
+ </TD
+><TD
+>example: 00a5000000410000</TD
+><TD
+>Only for SD cards</TD
+><TD
+>SD Card Register</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.rca</TT
+> (int)
+ </TD
+><TD
+>example: 8083</TD
+><TD
+>Yes</TD
+><TD
+>Card bus address</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.oem</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Card OEM distributor</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.date</TT
+> (string)
+ </TD
+><TD
+>example: 10/2003</TD
+><TD
+>Yes</TD
+><TD
+>Manufacturing date</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.serial</TT
+> (int)
+ </TD
+><TD
+>example: 0x3a1a8083</TD
+><TD
+>Yes</TD
+><TD
+>Card serial number</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.hwrev</TT
+> (int)
+ </TD
+><TD
+>example: 4</TD
+><TD
+>Yes</TD
+><TD
+>Hardware revision</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>mmc.fwrev</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Firmware revision</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ccw"
+>2.2.15. <TT
+CLASS="literal"
+>ccw</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects that represent s390 ccw devices (when <TT
+CLASS="literal"
+>info.bus
+ </TT
+>
+ is set to <TT
+CLASS="literal"
+>ccw</TT
+>) are represented by the
properties below.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccw.devtype</code> (string)
- </td><td>example: 1732/01</td><td>Yes</td><td>Device type/model or n/a</td></tr><tr><td>
- <code class="literal">ccw.cutype</code> (string)
- </td><td>example: 1731/01</td><td>Yes</td><td>Control unit type/model</td></tr><tr><td>
- <code class="literal">ccw.cmb_enable</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>If channel measurements are enabled</td></tr><tr><td>
- <code class="literal">ccw.availability</code> (string)
- </td><td>example: good</td><td>Yes</td><td>Can be one of 'good', 'boxed', 'no path',
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1005"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.devtype</TT
+> (string)
+ </TD
+><TD
+>example: 1732/01</TD
+><TD
+>Yes</TD
+><TD
+>Device type/model or n/a</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.cutype</TT
+> (string)
+ </TD
+><TD
+>example: 1731/01</TD
+><TD
+>Yes</TD
+><TD
+>Control unit type/model</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.cmb_enable</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>If channel measurements are enabled</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.availability</TT
+> (string)
+ </TD
+><TD
+>example: good</TD
+><TD
+>Yes</TD
+><TD
+>Can be one of 'good', 'boxed', 'no path',
or 'no device'
- </td></tr><tr><td>
- <code class="literal">ccw.online</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>Online status</td></tr><tr><td>
- <code class="literal">ccw.bus_id</code> (string)
- </td><td>example: 0.0.f588</td><td>Yes</td><td>The device's bus id in sysfs</td></tr><tr><td>
- <code class="literal">ccw.subchannel.pim</code> (int)
- </td><td>example: 0x80</td><td>No</td><td>path installed mask</td></tr><tr><td>
- <code class="literal">ccw.subchannel.pam</code> (int)
- </td><td>example: 0x80</td><td>No</td><td>path available mask</td></tr><tr><td>
- <code class="literal">ccw.subchannel.pom</code> (int)
- </td><td>example: 0xff</td><td>No</td><td>path operational mask</td></tr><tr><td>
- <code class="literal">ccw.subchannel.chpid0..7</code> (int)
- </td><td>example: 0x40</td><td>No</td><td>channel path ids</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccw</code> devices where
- <code class="literal">linux.driver</code> is either <code class="literal">dasd-eckd</code>
- or <code class="literal">dasd-fba</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccw.dasd.use_diag</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>If the device driver shall use diagnose calls to access
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.online</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Online status</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.bus_id</TT
+> (string)
+ </TD
+><TD
+>example: 0.0.f588</TD
+><TD
+>Yes</TD
+><TD
+>The device's bus id in sysfs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.subchannel.pim</TT
+> (int)
+ </TD
+><TD
+>example: 0x80</TD
+><TD
+>No</TD
+><TD
+>path installed mask</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.subchannel.pam</TT
+> (int)
+ </TD
+><TD
+>example: 0x80</TD
+><TD
+>No</TD
+><TD
+>path available mask</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.subchannel.pom</TT
+> (int)
+ </TD
+><TD
+>example: 0xff</TD
+><TD
+>No</TD
+><TD
+>path operational mask</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.subchannel.chpid0..7</TT
+> (int)
+ </TD
+><TD
+>example: 0x40</TD
+><TD
+>No</TD
+><TD
+>channel path ids</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is either <TT
+CLASS="literal"
+>dasd-eckd</TT
+>
+ or <TT
+CLASS="literal"
+>dasd-fba</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1079"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.dasd.use_diag</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>If the device driver shall use diagnose calls to access
the device
- </td></tr><tr><td>
- <code class="literal">ccw.dasd.readonly</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>If the device can only be accessed readonly</td></tr><tr><td>
- <code class="literal">ccw.dasd.discipline</code> (string)
- </td><td>example: ECKD</td><td>No</td><td>The dasd discipline used to access the device</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccw</code> devices where
- <code class="literal">linux.driver</code> is <code class="literal">zfcp</code>. They are
- only present when <code class="literal">ccw.online = 1</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccw.zfcp.in_recovery</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>Shows whether the adapter is currently in recovery</td></tr><tr><td>
- <code class="literal">ccw.zfcp.failed</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>Shows whether the adapter is in failed state</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccw</code> devices where
- <code class="literal">linux.driver</code> is of the form <code class="literal">tape_3xxx
- </code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.dasd.readonly</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>If the device can only be accessed readonly</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.dasd.discipline</TT
+> (string)
+ </TD
+><TD
+>example: ECKD</TD
+><TD
+>No</TD
+><TD
+>The dasd discipline used to access the device</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>zfcp</TT
+>. They are
+ only present when <TT
+CLASS="literal"
+>ccw.online = 1</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1111"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.zfcp.in_recovery</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Shows whether the adapter is currently in recovery</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.zfcp.failed</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Shows whether the adapter is in failed state</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is of the form <TT
+CLASS="literal"
+>tape_3xxx
+ </TT
+>
.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccw.tape.state</code> (string)
- </td><td>example: IN_USE</td><td>Yes</td><td>The current status of the tape</td></tr><tr><td>
- <code class="literal">ccw.tape.operation</code> (string)
- </td><td>example: REW</td><td>Yes</td><td>A three-letter mnemonic of the current tape operation
- </td></tr><tr><td>
- <code class="literal">ccw.tape.medium_state</code> (string)
- </td><td>example: no medium</td><td>No</td><td>
- If <code class="literal">ccw.online = 1</code>, shows whether a tape
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1136"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.tape.state</TT
+> (string)
+ </TD
+><TD
+>example: IN_USE</TD
+><TD
+>Yes</TD
+><TD
+>The current status of the tape</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.tape.operation</TT
+> (string)
+ </TD
+><TD
+>example: REW</TD
+><TD
+>Yes</TD
+><TD
+>A three-letter mnemonic of the current tape operation
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.tape.medium_state</TT
+> (string)
+ </TD
+><TD
+>example: no medium</TD
+><TD
+>No</TD
+><TD
+>&#13; If <TT
+CLASS="literal"
+>ccw.online = 1</TT
+>, shows whether a tape
is loaded
- </td></tr><tr><td>
- <code class="literal">ccw.tape.blocksize</code> (int)
- </td><td>example: 512</td><td>No</td><td>
- If <code class="literal">ccw.online = 1</code>, shows the blocksize
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.tape.blocksize</TT
+> (int)
+ </TD
+><TD
+>example: 512</TD
+><TD
+>No</TD
+><TD
+>&#13; If <TT
+CLASS="literal"
+>ccw.online = 1</TT
+>, shows the blocksize
used for reads and writes to the tape
- </td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccw</code> devices where
- <code class="literal">linux.driver</code> is <code class="literal">3270</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccw.3270.model</code> (int)
- </td><td>example: 3</td><td>Yes</td><td>The model of the device, determining rows and columns
- </td></tr><tr><td>
- <code class="literal">ccw.3270.rows</code> (int)
- </td><td>example: 32</td><td>Yes</td><td>The number of rows</td></tr><tr><td>
- <code class="literal">ccw.3270.columns</code> (int)
- </td><td>example: 80</td><td>Yes</td><td>The number of columns</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ccwgroup"></a>
- <code class="literal">ccwgroup</code> namespace
- </h3></div></div></div><p>
- Device objects that represent groups of <code class="literal">ccw</code> devices
- (when <code class="literal">info.bus</code> is set to <code class="literal">ccwgroup</code>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>3270</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1175"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.3270.model</TT
+> (int)
+ </TD
+><TD
+>example: 3</TD
+><TD
+>Yes</TD
+><TD
+>The model of the device, determining rows and columns
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.3270.rows</TT
+> (int)
+ </TD
+><TD
+>example: 32</TD
+><TD
+>Yes</TD
+><TD
+>The number of rows</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccw.3270.columns</TT
+> (int)
+ </TD
+><TD
+>example: 80</TD
+><TD
+>Yes</TD
+><TD
+>The number of columns</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ccwgroup"
+>2.2.16. <TT
+CLASS="literal"
+>ccwgroup</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects that represent groups of <TT
+CLASS="literal"
+>ccw</TT
+> devices
+ (when <TT
+CLASS="literal"
+>info.bus</TT
+> is set to <TT
+CLASS="literal"
+>ccwgroup</TT
+>
have the properties specified below.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccwgroup.online</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>Online status</td></tr><tr><td>
- <code class="literal">ccwgroup.bus_id</code> (string)
- </td><td>example: 0.0.f588</td><td>Yes</td><td>The device's bus id in sysfs</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccwgroup</code> devices
- where <code class="literal">linux.driver</code> is <code class="literal">qeth</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccwgroup.qeth.large_send</code> (string)
- </td><td>example: TSO</td><td>No</td><td>Whether large send is provided. Can be "no", "EDDP"
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1209"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.online</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Online status</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.bus_id</TT
+> (string)
+ </TD
+><TD
+>example: 0.0.f588</TD
+><TD
+>Yes</TD
+><TD
+>The device's bus id in sysfs</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>qeth</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1234"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.large_send</TT
+> (string)
+ </TD
+><TD
+>example: TSO</TD
+><TD
+>No</TD
+><TD
+>Whether large send is provided. Can be "no", "EDDP"
(software) or "TSO" (hardware).
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.card_type</code> (string)
- </td><td>example: OSD_1000</td><td>Yes</td><td>Type of the card</td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.checksumming</code> (string)
- </td><td>example: sw checksumming</td><td>No</td><td>The method used to checksum incoming packets</td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.canonical_macaddr</code> (int)
- </td><td>example: 0</td><td>No</td><td>Specifies the token ring macaddress format. Not valid in
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.card_type</TT
+> (string)
+ </TD
+><TD
+>example: OSD_1000</TD
+><TD
+>Yes</TD
+><TD
+>Type of the card</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.checksumming</TT
+> (string)
+ </TD
+><TD
+>example: sw checksumming</TD
+><TD
+>No</TD
+><TD
+>The method used to checksum incoming packets</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.canonical_macaddr</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Specifies the token ring macaddress format. Not valid in
layer2 mode and for ethernet devices.
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.broadcast_mode</code> (string)
- </td><td>example: broadcast_allrings</td><td>No</td><td>The scope of token ring broadcasts. Not valid in layer2
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.broadcast_mode</TT
+> (string)
+ </TD
+><TD
+>example: broadcast_allrings</TD
+><TD
+>No</TD
+><TD
+>The scope of token ring broadcasts. Not valid in layer2
mode and for ethernet devices.
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.fake_broadcast</code> (int)
- </td><td>example: 0</td><td>No</td><td>Whether to fake broadcast capability. Not valid in layer2
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.fake_broadcast</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Whether to fake broadcast capability. Not valid in layer2
mode.
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.fake_ll</code> (int)
- </td><td>example: 0</td><td>No</td><td>Whether to add a faked link level header to packets.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.fake_ll</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Whether to add a faked link level header to packets.
Not valid in layer2 mode.
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.layer2</code> (int)
- </td><td>example: 0</td><td>No</td><td>Whether the card operates in layer 2 mode</td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.portname</code> (string)
- </td><td>example: OSAPORT</td><td>No</td><td>The port name which has been specified for the card</td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.portno</code> (int)
- </td><td>example: 0</td><td>No</td><td>The relative port number on the card</td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.buffer_count</code> (int)
- </td><td>example: 16</td><td>Yes</td><td>Number of inbound buffers used</td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.add_hhlen</code> (int)
- </td><td>example: 0</td><td>No</td><td>How much additional space is provided in the hardware
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.layer2</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Whether the card operates in layer 2 mode</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.portname</TT
+> (string)
+ </TD
+><TD
+>example: OSAPORT</TD
+><TD
+>No</TD
+><TD
+>The port name which has been specified for the card</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.portno</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>The relative port number on the card</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.buffer_count</TT
+> (int)
+ </TD
+><TD
+>example: 16</TD
+><TD
+>Yes</TD
+><TD
+>Number of inbound buffers used</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.add_hhlen</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>How much additional space is provided in the hardware
header in skbs in front of packets
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.priority_queueing</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.priority_queueing</TT
+>
(string)
- </td><td>example: always queue 2</td><td>No</td><td>Which priority queueing algorithm is to be used</td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.route4</code> (string)
- </td><td>example: no</td><td>No</td><td>Whether the card has a routing functionality for ipv4.
+ </TD
+><TD
+>example: always queue 2</TD
+><TD
+>No</TD
+><TD
+>Which priority queueing algorithm is to be used</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.route4</TT
+> (string)
+ </TD
+><TD
+>example: no</TD
+><TD
+>No</TD
+><TD
+>Whether the card has a routing functionality for ipv4.
Not valid in layer2 mode.
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.route6</code> (string)
- </td><td>example: no</td><td>No</td><td>Whether the card has a routing functionality for ipv6.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.route6</TT
+> (string)
+ </TD
+><TD
+>example: no</TD
+><TD
+>No</TD
+><TD
+>Whether the card has a routing functionality for ipv6.
Not valid in layer2 mode.
- </td></tr><tr><td>
- <code class="literal">ccwgroup.qeth.state</code> (string)
- </td><td>example: UP (LAN ONLINE)</td><td>Yes</td><td>The device's current state</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccwgroup</code> devices
- where <code class="literal">linux.driver</code> is <code class="literal">ctc</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccwgroup.ctc.protocol</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>The protocol/method used by the connection</td></tr><tr><td>
- <code class="literal">ccwgroup.ctc.type</code> (string)
- </td><td>example: CTC/A</td><td>Yes</td><td>The device/connection type</td></tr><tr><td>
- <code class="literal">ccwgroup.ctc.buffer</code> (int)
- </td><td>example: 32768</td><td>No</td><td>The maximum buffer size of the connection</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccwgroup</code> devices
- where <code class="literal">linux.driver</code> is <code class="literal">lcs</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccwgroup.lcs.portnumber</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>The port on the card that is used</td></tr><tr><td>
- <code class="literal">ccwgroup.lcs.type</code> (string)
- </td><td>example: OSA LCS card</td><td>Yes</td><td>The type of the card</td></tr><tr><td>
- <code class="literal">ccwgroup.lcs.lancmd_timeout</code> (int)
- </td><td>example: 5</td><td>Yes</td><td>The timeout value for LAN commands in seconds</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">ccwgroup</code> devices
- where <code class="literal">linux.driver</code> is <code class="literal">claw</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ccwgroup.claw.api_type</code> (string)
- </td><td> </td><td>Yes</td><td>Determines the packing algorithm for outgoing pakets
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.qeth.state</TT
+> (string)
+ </TD
+><TD
+>example: UP (LAN ONLINE)</TD
+><TD
+>Yes</TD
+><TD
+>The device's current state</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>ctc</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1343"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.ctc.protocol</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>The protocol/method used by the connection</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.ctc.type</TT
+> (string)
+ </TD
+><TD
+>example: CTC/A</TD
+><TD
+>Yes</TD
+><TD
+>The device/connection type</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.ctc.buffer</TT
+> (int)
+ </TD
+><TD
+>example: 32768</TD
+><TD
+>No</TD
+><TD
+>The maximum buffer size of the connection</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>lcs</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1374"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.lcs.portnumber</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>The port on the card that is used</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.lcs.type</TT
+> (string)
+ </TD
+><TD
+>example: OSA LCS card</TD
+><TD
+>Yes</TD
+><TD
+>The type of the card</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.lcs.lancmd_timeout</TT
+> (int)
+ </TD
+><TD
+>example: 5</TD
+><TD
+>Yes</TD
+><TD
+>The timeout value for LAN commands in seconds</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>claw</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1405"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.claw.api_type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Determines the packing algorithm for outgoing pakets
(matching the remote peer)
- </td></tr><tr><td> </td><td>IP</td><td> </td><td>Using the IP protocol</td></tr><tr><td> </td><td>PACKED</td><td> </td><td>Using an enhanced packing algorithm</td></tr><tr><td> </td><td>TCPIP</td><td> </td><td>Using the TCP/IP protocol</td></tr><tr><td>
- <code class="literal">ccwgroup.claw.adapter_name</code> (string)
- </td><td>example: RS1</td><td>Yes</td><td>The host name of the remote communication peer.</td></tr><tr><td>
- <code class="literal">ccwgroup.claw.host_name</code> (string)
- </td><td>example: LNX1</td><td>Yes</td><td>The host name of the local adapter.</td></tr><tr><td>
- <code class="literal">ccwgroup.claw.read_buffer</code> (int)
- </td><td>example: 4</td><td>Yes</td><td>The number of read buffers allocated</td></tr><tr><td>
- <code class="literal">ccwgroup.claw.write_buffer</code> (int)
- </td><td>example: 5</td><td>Yes</td><td>The number of write buffers allocated</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-iucv"></a>
- <code class="literal">iucv</code> namespace
- </h3></div></div></div><p>
- Device objects with <code class="literal">info.bus</code> set to <code class="literal">iucv
- </code>
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>IP</TD
+><TD
+>&nbsp;</TD
+><TD
+>Using the IP protocol</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>PACKED</TD
+><TD
+>&nbsp;</TD
+><TD
+>Using an enhanced packing algorithm</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>TCPIP</TD
+><TD
+>&nbsp;</TD
+><TD
+>Using the TCP/IP protocol</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.claw.adapter_name</TT
+> (string)
+ </TD
+><TD
+>example: RS1</TD
+><TD
+>Yes</TD
+><TD
+>The host name of the remote communication peer.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.claw.host_name</TT
+> (string)
+ </TD
+><TD
+>example: LNX1</TD
+><TD
+>Yes</TD
+><TD
+>The host name of the local adapter.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.claw.read_buffer</TT
+> (int)
+ </TD
+><TD
+>example: 4</TD
+><TD
+>Yes</TD
+><TD
+>The number of read buffers allocated</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ccwgroup.claw.write_buffer</TT
+> (int)
+ </TD
+><TD
+>example: 5</TD
+><TD
+>Yes</TD
+><TD
+>The number of write buffers allocated</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-iucv"
+>2.2.17. <TT
+CLASS="literal"
+>iucv</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to <TT
+CLASS="literal"
+>iucv
+ </TT
+>
are using the "Intra-User Comminication Vehicle" and are
described by the following properties.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">iucv.bus_id</code> (string)
- </td><td>example: netiucv0</td><td>Yes</td><td>The device's bus id in sysfs</td></tr></tbody></table></div><p>
- The following properties describe <code class="literal">iucv</code> devices
- where <code class="literal">linux.driver</code> is <code class="literal">netiucv</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">iucv.netiucv.user</code> (string)
- </td><td>example: linux12</td><td>Yes</td><td>The guest name of the connection's target</td></tr><tr><td>
- <code class="literal">iucv.netiucv.buffer</code> (int)
- </td><td>example: 32768</td><td>Yes</td><td>The maximum buffer size of the connection</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-block"></a>
- <code class="literal">block</code> namespace
- </h3></div></div></div><p>
- Device objects representing addressable block devices, such as
- drives and partitions, will have <code class="literal">info.bus</code>
- set to <code class="literal">block</code> and will export a number of
- properties in the <code class="literal">block</code> namespace.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">block.device</code> (string)
- </td><td>example: /dev/sda </td><td>Yes</td><td>Special device file to interact with the block device</td></tr><tr><td>
- <code class="literal">block.major</code> (int)
- </td><td>example: 8</td><td>Yes</td><td>Major number of special file to interact with the
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1465"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>iucv.bus_id</TT
+> (string)
+ </TD
+><TD
+>example: netiucv0</TD
+><TD
+>Yes</TD
+><TD
+>The device's bus id in sysfs</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following properties describe <TT
+CLASS="literal"
+>iucv</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>netiucv</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1484"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>iucv.netiucv.user</TT
+> (string)
+ </TD
+><TD
+>example: linux12</TD
+><TD
+>Yes</TD
+><TD
+>The guest name of the connection's target</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>iucv.netiucv.buffer</TT
+> (int)
+ </TD
+><TD
+>example: 32768</TD
+><TD
+>Yes</TD
+><TD
+>The maximum buffer size of the connection</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-block"
+>2.2.18. <TT
+CLASS="literal"
+>block</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects representing addressable block devices, such as
+ drives and partitions, will have <TT
+CLASS="literal"
+>info.bus</TT
+>
+ set to <TT
+CLASS="literal"
+>block</TT
+> and will export a number of
+ properties in the <TT
+CLASS="literal"
+>block</TT
+> namespace.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1512"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.device</TT
+> (string)
+ </TD
+><TD
+>example: /dev/sda </TD
+><TD
+>Yes</TD
+><TD
+>Special device file to interact with the block device</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.major</TT
+> (int)
+ </TD
+><TD
+>example: 8</TD
+><TD
+>Yes</TD
+><TD
+>Major number of special file to interact with the
device
- </td></tr><tr><td>
- <code class="literal">block.minor</code> (int)
- </td><td>example: 1</td><td>Yes</td><td>Minor number of special file to interact with the
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.minor</TT
+> (int)
+ </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Minor number of special file to interact with the
device
- </td></tr><tr><td>
- <code class="literal">block.is_volume</code> (bool)
- </td><td> </td><td>Yes</td><td>True only when the block device is a volume that can
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.is_volume</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>True only when the block device is a volume that can
be mounted into the file system. In this case the
- <code class="literal">volume</code> capability will be set and
- thus, properties, in the <code class="literal">volume</code>
+ <TT
+CLASS="literal"
+>volume</TT
+> capability will be set and
+ thus, properties, in the <TT
+CLASS="literal"
+>volume</TT
+>
namespace are available.
- </td></tr><tr><td>
- <code class="literal">block.no_partitions</code> (bool)
- </td><td> </td><td>Yes</td><td>For toplevel block devices, this is TRUE only
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.no_partitions</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>For toplevel block devices, this is TRUE only
when no known partition tables have been found on the
media (In this case, if the storage device contain a
file system it will be accessible using the same
@@ -1181,237 +5192,1427 @@
and the device object representing the filesystem will
appear as a separate device object as a child). For
the child, that is
- when <code class="literal">block.is_volume</code> is true, this
+ when <TT
+CLASS="literal"
+>block.is_volume</TT
+> is true, this
property is TRUE exactly when it was created for a
storage device with
- the <code class="literal">storage.no_partitions_hint</code> set
+ the <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+> set
to TRUE.
- </td></tr><tr><td>
- <code class="literal">block.have_scanned</code> (bool)
- </td><td> </td><td>Yes</td><td>
- An internal property used by HAL to specify whether a top
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.have_scanned</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; An internal property used by HAL to specify whether a top
level block device have already been scanned for filesystems.
- </td></tr></tbody></table></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="properties-functional"></a>Functional Properties</h2></div></div></div><p>
- The section describe functional properties of device objects,
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-functional"
+>2.3. Functional Properties</A
+></H2
+><P
+>&#13; The section describe functional properties of device objects,
that is, properties that are merged onto device objects
representing physically addressable hardware. In most
circumstances such properties stem from a kernel level
driver attached to the device represented by the device object,
however, as HAL can merge properties from anywhere, they
may have been merged from device information files or callouts.
- </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-volume"></a>
- <code class="literal">volume</code> namespace
- </h3></div></div></div><p>
- This namespace is for device objects that represent storage
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-volume"
+>2.3.1. <TT
+CLASS="literal"
+>volume</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is for device objects that represent storage
devices with a filesystem that can be mounted. Such device
- objects will have the capability <code class="literal">volume</code> and
+ objects will have the capability <TT
+CLASS="literal"
+>volume</TT
+> and
they will export the properties below. Note that device
- objects can only have the <code class="literal">volume</code> capability
- if they already have the capability <code class="literal">block</code>
- and the property <code class="literal">block.is_volume</code> set to TRUE.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">volume.ignore</code> (bool)
- </td><td> </td><td>Yes</td><td>This is a hint to software higher in the stack
+ objects can only have the <TT
+CLASS="literal"
+>volume</TT
+> capability
+ if they already have the capability <TT
+CLASS="literal"
+>block</TT
+>
+ and the property <TT
+CLASS="literal"
+>block.is_volume</TT
+> set to TRUE.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1572"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.ignore</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This is a hint to software higher in the stack
that this volume should be ignored. If TRUE, the volume
should be invisible in the UI and mount wrappers should
refuse to mount it on behalf on an unprivileged
user. This is useful for hiding e.g. firmware partitions
(e.g. bootstrap on Mac's) and OS reinstall partitions on
e.g. OEM systems.
- </td></tr><tr><td>
- <code class="literal">volume.is_mounted</code> (bool)
- </td><td> </td><td>Yes</td><td>This property is TRUE if and only if the volume is mounted</td></tr><tr><td>
- <code class="literal">volume.is_mounted_read_only</code> (bool)
- </td><td> </td><td>Yes</td><td>This property is TRUE if and only if the volume is mounted and
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.is_mounted</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property is TRUE if and only if the volume is mounted</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.is_mounted_read_only</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property is TRUE if and only if the volume is mounted and
the volume's file-system is read-only.
- </td></tr><tr><td>
- <code class="literal">volume.mount_point</code> (string)
- </td><td>example: /media/compact_flash1 </td><td>Yes (is blank only when volume.is_mounted is FALSE)</td><td>A fully qualified path to the mount point of the volume</td></tr><tr><td>
- <code class="literal">volume.fsusage</code> (string)
- </td><td>example: filesystem</td><td>Yes</td><td>
- This property specifies the expected usage of the volume
- </td></tr><tr><td> </td><td>filesystem</td><td> </td><td>The volume is a mountable filesystem</td></tr><tr><td> </td><td>partitiontable</td><td> </td><td>The volume conatains a partitiontable</td></tr><tr><td> </td><td>raid</td><td> </td><td>The volume is a member of a raid set and not mountable</td></tr><tr><td> </td><td>other</td><td> </td><td>The volume is not mountable like a swap partition</td></tr><tr><td> </td><td>unused</td><td> </td><td>The volume is marked a unused or free</td></tr><tr><td>
- <code class="literal">volume.fstype</code> (string)
- </td><td>example: ext3</td><td>Yes (is blank if the filesystem type is unknown)</td><td> </td></tr><tr><td>
- <code class="literal">volume.fsversion</code> (string)
- </td><td>example: FAT32</td><td> </td><td>Version number or subtype of the filesystem</td></tr><tr><td>
- <code class="literal">volume.label</code> (string)
- </td><td>example: 'Fedora Core 1.90' </td><td>Yes (is blank if no label is found)</td><td>The label of the volume</td></tr><tr><td>
- <code class="literal">volume.uuid</code> (string)
- </td><td>example: 4060-6C11</td><td>Yes (is blank if no UUID is found)</td><td>The Universal Unique Identifer for the volume</td></tr><tr><td>
- <code class="literal">volume.is_disc</code> (bool)
- </td><td> </td><td>Yes</td><td>If the volume stems from an optical disc, this
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)
+ </TD
+><TD
+>example: /media/compact_flash1 </TD
+><TD
+>Yes (is blank only when volume.is_mounted is FALSE)</TD
+><TD
+>A fully qualified path to the mount point of the volume</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.fsusage</TT
+> (string)
+ </TD
+><TD
+>example: filesystem</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This property specifies the expected usage of the volume
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>filesystem</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is a mountable filesystem</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>partitiontable</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume conatains a partitiontable</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>raid</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is a member of a raid set and not mountable</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>other</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is not mountable like a swap partition</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>unused</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is marked a unused or free</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.fstype</TT
+> (string)
+ </TD
+><TD
+>example: ext3</TD
+><TD
+>Yes (is blank if the filesystem type is unknown)</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.fsversion</TT
+> (string)
+ </TD
+><TD
+>example: FAT32</TD
+><TD
+>&nbsp;</TD
+><TD
+>Version number or subtype of the filesystem</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.label</TT
+> (string)
+ </TD
+><TD
+>example: 'Fedora Core 1.90' </TD
+><TD
+>Yes (is blank if no label is found)</TD
+><TD
+>The label of the volume</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.uuid</TT
+> (string)
+ </TD
+><TD
+>example: 4060-6C11</TD
+><TD
+>Yes (is blank if no UUID is found)</TD
+><TD
+>The Universal Unique Identifer for the volume</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.is_disc</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>If the volume stems from an optical disc, this
property is true and the device object will also have
- the capability <code class="literal">volume.disc</code>
- </td></tr><tr><td>
- <code class="literal">volume.block_size</code> (string)
- </td><td> </td><td>No</td><td>
- The block size of the volume
- </td></tr><tr><td>
- <code class="literal">volume.num_blocks</code> (string)
- </td><td> </td><td>No</td><td>
- Number of blocks on the volume
- </td></tr><tr><td>
- <code class="literal">volume.size</code> (uint64)
- </td><td> </td><td>No</td><td>
- Size of the volume in bytes
- </td></tr><tr><td>
- <code class="literal">volume.is_partition</code> (bool)
- </td><td> </td><td>Yes</td><td>
- If the volume stems from a partition on e.g. a hard
- disk, this property is set to <code class="literal">TRUE</code>.
- </td></tr><tr><td>
- <code class="literal">volume.partition.number</code> (int)
- </td><td> </td><td>
- If, and only if, <code class="literal">volume.is_partition</code>
- is set to <code class="literal">TRUE</code>.
- </td><td>
- The number of the partition.
- </td></tr><tr><td>
- <code class="literal">volume.partition.x86_type</code> (int)
- </td><td>examples: 0x83, 0xfd, 0x8e</td><td>
- No
- </td><td>
- If available, this is the partition type if the disk for which
+ the capability <TT
+CLASS="literal"
+>volume.disc</TT
+>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.block_size</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The block size of the volume
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.num_blocks</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Number of blocks on the volume
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.size</TT
+> (uint64)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Size of the volume in bytes
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.is_partition</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; If the volume stems from a partition on e.g. a hard
+ disk, this property is set to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.partition.number</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; If, and only if, <TT
+CLASS="literal"
+>volume.is_partition</TT
+>
+ is set to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>&#13; The number of the partition.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.partition.x86_type</TT
+> (int)
+ </TD
+><TD
+>examples: 0x83, 0xfd, 0x8e</TD
+><TD
+>&#13; No
+ </TD
+><TD
+>&#13; If available, this is the partition type if the disk for which
this volume stems from is using an MS-DOS-style partition table.
- </td></tr></tbody></table></div><p>
- Device objects with this capability may emit the following
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; Device objects with this capability may emit the following
device conditions
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Condition Name</th><th>Parameters</th><th>Example</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">VolumeMount</code>
- </td><td>
- <code class="literal">block.device</code> (string),
- <code class="literal">volume.mount_point</code> (string)
- </td><td>
- <code class="literal">/dev/sda1</code>,
- <code class="literal">/media/compact_flash</code>
- </td><td>Emitted when a volume is mounted</td></tr><tr><td>
- <code class="literal">VolumeUnmount</code>
- </td><td>
- <code class="literal">block.device</code> (string),
- <code class="literal">volume.mount_point</code> (string)
- </td><td>
- <code class="literal">/dev/sda1</code>,
- <code class="literal">/media/compact_flash</code>
- </td><td>Emitted when a volume is unmounted</td></tr><tr><td>
- <code class="literal">VolumeUnmountForced</code>
- </td><td>
- <code class="literal">block.device</code> (string),
- <code class="literal">volume.mount_point</code> (string)
- </td><td>
- <code class="literal">/dev/sda1</code>,
- <code class="literal">/media/compact_flash</code>
- </td><td>
- Emitted when a volume is forcibly unmounted because
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1707"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Condition Name</TH
+><TH
+>Parameters</TH
+><TH
+>Example</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>VolumeMount</TT
+>
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.device</TT
+> (string),
+ <TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>/dev/sda1</TT
+>,
+ <TT
+CLASS="literal"
+>/media/compact_flash</TT
+>
+ </TD
+><TD
+>Emitted when a volume is mounted</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>VolumeUnmount</TT
+>
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.device</TT
+> (string),
+ <TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>/dev/sda1</TT
+>,
+ <TT
+CLASS="literal"
+>/media/compact_flash</TT
+>
+ </TD
+><TD
+>Emitted when a volume is unmounted</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>VolumeUnmountForced</TT
+>
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.device</TT
+> (string),
+ <TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>/dev/sda1</TT
+>,
+ <TT
+CLASS="literal"
+>/media/compact_flash</TT
+>
+ </TD
+><TD
+>&#13; Emitted when a volume is forcibly unmounted because
the media backing the volume was removed.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-kernel"></a>
- <code class="literal">system</code> namespace
- </h3></div></div></div><p>
- This namespace is found on the toplevel "Computer" device,
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-kernel"
+>2.3.2. <TT
+CLASS="literal"
+>system</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is found on the toplevel "Computer" device,
and represents information about the system and the currently
running kernel.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">system.kernel.name</code> (string)
- </td><td>example: Linux</td><td>No</td><td>
- The name of the kernel, usually the equivalent of
- <code class="literal">uname -s</code>.
- </td></tr><tr><td>
- <code class="literal">system.kernel.version</code> (string)
- </td><td>example: 2.6.5-7.104-default</td><td>No</td><td>
- The version of the currently running kernel. Usually
- the equivalent of <code class="literal">uname -r</code>.
- </td></tr><tr><td>
- <code class="literal">system.kernel.machine</code> (string)
- </td><td>example: i686</td><td>No</td><td>
- The "machine hardware name" of the currently running kernel.
- Usually the equivalent of <code class="literal">uname -m</code>.
- </td></tr><tr><td>
- <code class="literal">system.formfactor</code> (string)
- </td><td>example: laptop, desktop, server, unknown</td><td>Yes</td><td>
- The formfactor of the system. Usually the equivalent of
- <code class="literal">smbios.chassis.type</code> or set from information
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1750"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>system.kernel.name</TT
+> (string)
+ </TD
+><TD
+>example: Linux</TD
+><TD
+>No</TD
+><TD
+>&#13; The name of the kernel, usually the equivalent of
+ <TT
+CLASS="literal"
+>uname -s</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>system.kernel.version</TT
+> (string)
+ </TD
+><TD
+>example: 2.6.5-7.104-default</TD
+><TD
+>No</TD
+><TD
+>&#13; The version of the currently running kernel. Usually
+ the equivalent of <TT
+CLASS="literal"
+>uname -r</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>system.kernel.machine</TT
+> (string)
+ </TD
+><TD
+>example: i686</TD
+><TD
+>No</TD
+><TD
+>&#13; The "machine hardware name" of the currently running kernel.
+ Usually the equivalent of <TT
+CLASS="literal"
+>uname -m</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>system.formfactor</TT
+> (string)
+ </TD
+><TD
+>example: laptop, desktop, server, unknown</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The formfactor of the system. Usually the equivalent of
+ <TT
+CLASS="literal"
+>smbios.chassis.type</TT
+> or set from information
about ACPI/APM/PMU properties.
- </td></tr><tr><td>
- <code class="literal">system.vendor</code> (string)
- </td><td> </td><td>No</td><td>
- The name of the manufacturer of the machine. Usually the equivalent of
- <code class="literal">smbios.system.manufacturer</code>.
- </td></tr><tr><td>
- <code class="literal">system.product</code> (string)
- </td><td> </td><td>No</td><td>
- The product name of the machine. Usually the equivalent of
- <code class="literal">smbios.system.product</code> and
- <code class="literal">smbios.system.version</code>.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-volume-disc"></a>
- <code class="literal">volume.disc</code> namespace
- </h3></div></div></div><p>
- This namespace is for device objects that represent optical
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>system.vendor</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The name of the manufacturer of the machine. Usually the equivalent of
+ <TT
+CLASS="literal"
+>smbios.system.manufacturer</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>system.product</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The product name of the machine. Usually the equivalent of
+ <TT
+CLASS="literal"
+>smbios.system.product</TT
+> and
+ <TT
+CLASS="literal"
+>smbios.system.version</TT
+>.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-volume-disc"
+>2.3.3. <TT
+CLASS="literal"
+>volume.disc</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is for device objects that represent optical
discs, e.g. device objects with the capability
- <code class="literal">volume.disc</code>. Such device objects will
- also have the capability <code class="literal">volume</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">volume.disc.has_audio</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if the disc contains audio</td></tr><tr><td>
- <code class="literal">volume.disc.has_data</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if the disc contains data</td></tr><tr><td>
- <code class="literal">volume.disc.is_vcd</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if the disc is a Video CD</td></tr><tr><td>
- <code class="literal">volume.disc.is_svcd</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if the disc is a Super Video CD</td></tr><tr><td>
- <code class="literal">volume.disc.is_videodvd</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if the disc is a Video DVD</td></tr><tr><td>
- <code class="literal">volume.disc.is_appendable</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if it's possible to write additional data</td></tr><tr><td>
- <code class="literal">volume.disc.is_blank</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if the disc is blank</td></tr><tr><td>
- <code class="literal">volume.disc.is_rewritable</code> (bool)
- </td><td> </td><td>Yes</td><td>Is true only if the disc is rewritable</td></tr><tr><td>
- <code class="literal">volume.disc.capacity</code> (uint64)
- </td><td> </td><td>No</td><td>Capacity of disc, in bytes</td></tr><tr><td>
- <code class="literal">volume.disc.type</code> (string)
- </td><td> </td><td>Yes</td><td>This property specifies the physical type of the disc</td></tr><tr><td> </td><td>cd_rom</td><td> </td><td>CD-ROM disc</td></tr><tr><td> </td><td>cd_r</td><td> </td><td>CD-R disc</td></tr><tr><td> </td><td>cd_rw</td><td> </td><td>CD-RW disc</td></tr><tr><td> </td><td>dvd_rom</td><td> </td><td>DVD-ROM disc</td></tr><tr><td> </td><td>dvd_ram</td><td> </td><td>DVD-RAM disc</td></tr><tr><td> </td><td>dvd_r</td><td> </td><td>DVD-R disc</td></tr><tr><td> </td><td>dvd_rw</td><td> </td><td>DVD-RW disc</td></tr><tr><td> </td><td>dvd_plus_r</td><td> </td><td>DVD+R disc</td></tr><tr><td> </td><td>dvd_plus_rw</td><td> </td><td>DVD+RW disc</td></tr><tr><td> </td><td>bd_rom</td><td> </td><td>BD-ROM disc</td></tr><tr><td> </td><td>bd_r</td><td> </td><td>BD-R disc</td></tr><tr><td> </td><td>bd_re</td><td> </td><td>BD-RE disc</td></tr><tr><td> </td><td>hddvd_rom</td><td> </td><td>HD DVD-ROM disc</td></tr><tr><td> </td><td>hddvd_r</td><td> </td><td>HD DVD-R disc</td></tr><tr><td> </td><td>hddvd_rw</td><td> </td><td>HD DVD-Rewritable disc</td></tr><tr><td> </td><td>unknown</td><td> </td><td>Unknown type or lack of support from drive to determine the type</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-storage"></a>
- <code class="literal">storage</code> namespace
- </h3></div></div></div><p>
- This namespace is used to describe physical storage devices
+ <TT
+CLASS="literal"
+>volume.disc</TT
+>. Such device objects will
+ also have the capability <TT
+CLASS="literal"
+>volume</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1808"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.has_audio</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc contains audio</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.has_data</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc contains data</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.is_vcd</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is a Video CD</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.is_svcd</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is a Super Video CD</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.is_videodvd</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is a Video DVD</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.is_appendable</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if it's possible to write additional data</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.is_blank</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is blank</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.is_rewritable</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is rewritable</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.capacity</TT
+> (uint64)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Capacity of disc, in bytes</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.disc.type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property specifies the physical type of the disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cd_rom</TD
+><TD
+>&nbsp;</TD
+><TD
+>CD-ROM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cd_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>CD-R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cd_rw</TD
+><TD
+>&nbsp;</TD
+><TD
+>CD-RW disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_rom</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-ROM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_ram</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-RAM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_rw</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-RW disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_plus_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD+R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_plus_rw</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD+RW disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>bd_rom</TD
+><TD
+>&nbsp;</TD
+><TD
+>BD-ROM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>bd_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>BD-R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>bd_re</TD
+><TD
+>&nbsp;</TD
+><TD
+>BD-RE disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>hddvd_rom</TD
+><TD
+>&nbsp;</TD
+><TD
+>HD DVD-ROM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>hddvd_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>HD DVD-R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>hddvd_rw</TD
+><TD
+>&nbsp;</TD
+><TD
+>HD DVD-Rewritable disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>unknown</TD
+><TD
+>&nbsp;</TD
+><TD
+>Unknown type or lack of support from drive to determine the type</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage"
+>2.3.4. <TT
+CLASS="literal"
+>storage</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is used to describe physical storage devices
and their capabilities. Such device objects will have the
- capability <code class="literal">storage</code> and
+ capability <TT
+CLASS="literal"
+>storage</TT
+> and
they will export the properties below. Note that device
- objects can only have the <code class="literal">storage</code> capability
- if they already got capability <code class="literal">block</code> and the
- property <code class="literal">block.is_volume</code> set to FALSE.
- One significant between the <code class="literal">storage</code> and
- <code class="literal">block</code> namespace is that the properties
- exported in the <code class="literal">storage</code> represents
+ objects can only have the <TT
+CLASS="literal"
+>storage</TT
+> capability
+ if they already got capability <TT
+CLASS="literal"
+>block</TT
+> and the
+ property <TT
+CLASS="literal"
+>block.is_volume</TT
+> set to FALSE.
+ One significant between the <TT
+CLASS="literal"
+>storage</TT
+> and
+ <TT
+CLASS="literal"
+>block</TT
+> namespace is that the properties
+ exported in the <TT
+CLASS="literal"
+>storage</TT
+> represents
constant vital product information, whereas the properties
- in the <code class="literal">block</code> namespace represent
+ in the <TT
+CLASS="literal"
+>block</TT
+> namespace represent
variable system-dependent information.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">storage.bus</code> (string)
- </td><td> </td><td>Yes</td><td>Physical interface the storage device is attached to</td></tr><tr><td> </td><td>ide</td><td> </td><td>IDE or ATA interface</td></tr><tr><td> </td><td>usb</td><td> </td><td>USB interface</td></tr><tr><td> </td><td>ieee1394</td><td> </td><td>IEEE 1394 interface</td></tr><tr><td> </td><td>scsi</td><td> </td><td>SCSI interface</td></tr><tr><td> </td><td>sata</td><td> </td><td>SATA interface</td></tr><tr><td> </td><td>platform</td><td> </td><td>Legacy device that is part of the platform</td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr><tr><td>
- <code class="literal">storage.drive_type</code> (string)
- </td><td> </td><td>Yes</td><td>
- The type of the drive. Note that it may not be
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1969"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.bus</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Physical interface the storage device is attached to</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>ide</TD
+><TD
+>&nbsp;</TD
+><TD
+>IDE or ATA interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>usb</TD
+><TD
+>&nbsp;</TD
+><TD
+>USB interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>ieee1394</TD
+><TD
+>&nbsp;</TD
+><TD
+>IEEE 1394 interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>scsi</TD
+><TD
+>&nbsp;</TD
+><TD
+>SCSI interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>sata</TD
+><TD
+>&nbsp;</TD
+><TD
+>SATA interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>platform</TD
+><TD
+>&nbsp;</TD
+><TD
+>Legacy device that is part of the platform</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.drive_type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The type of the drive. Note that it may not be
possible to probe for some of these properties so in
some cases memory card readers may appear as
harddisks. Device information files can be used to
override this value.
- </td></tr><tr><td> </td><td>disk</td><td> </td><td>The device is a harddisk</td></tr><tr><td> </td><td>cdrom</td><td> </td><td>
- The device is an optical drive. The device object will also have the capability <code class="literal">storage.cdrom</code> in this case.
- </td></tr><tr><td> </td><td>floppy</td><td> </td><td>The device is a floppy disk drive</td></tr><tr><td> </td><td>tape</td><td> </td><td>The device is a tape drive</td></tr><tr><td> </td><td>compact_flash</td><td> </td><td>The device is a card reader for Compact Flash memory cards</td></tr><tr><td> </td><td>memory_stick</td><td> </td><td>The device is a card reader for MemoryStick memory cards</td></tr><tr><td> </td><td>smart_media</td><td> </td><td>The device is a card reader for SmartMedia memory cards</td></tr><tr><td> </td><td>sd_mmc</td><td> </td><td>The device is a card reader for SecureDigital/MultiMediaCard memory cards</td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr><tr><td>
- <code class="literal">storage.removable</code> (bool)
- </td><td> </td><td>Yes</td><td>Media can be removed from the storage device</td></tr><tr><td>
- <code class="literal">storage.requires_eject</code> (bool)
- </td><td> </td><td>Yes</td><td>The eject ioctl is required to properly eject the media</td></tr><tr><td>
- <code class="literal">storage.hotpluggable</code> (bool)
- </td><td> </td><td>Yes</td><td>The storage device can be removed while the system is running</td></tr><tr><td>
- <code class="literal">storage.media_check_enabled</code> (bool)
- </td><td> </td><td>Yes</td><td>If this property is set to FALSE then HAL will not continuosly poll for media changes. </td></tr><tr><td>
- <code class="literal">storage.automount_enabled_hint</code> (bool)
- </td><td> </td><td>Yes</td><td>This property is a hint to desktop file managers that they shouldn't automount volumes of the storage device when they appear.</td></tr><tr><td>
- <code class="literal">storage.no_partitions_hint</code> (bool)
- </td><td> </td><td>Yes</td><td>
- This property is a hint to programs that maintain the
- <code class="literal">/etc/fstab</code> file to signal, when
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>disk</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a harddisk</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cdrom</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is an optical drive. The device object will also have the capability <TT
+CLASS="literal"
+>storage.cdrom</TT
+> in this case.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>floppy</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a floppy disk drive</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>tape</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a tape drive</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>compact_flash</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for Compact Flash memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>memory_stick</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for MemoryStick memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>smart_media</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for SmartMedia memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>sd_mmc</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for SecureDigital/MultiMediaCard memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.removable</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Media can be removed from the storage device</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.requires_eject</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The eject ioctl is required to properly eject the media</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.hotpluggable</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The storage device can be removed while the system is running</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.media_check_enabled</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>If this property is set to FALSE then HAL will not continuosly poll for media changes. </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.automount_enabled_hint</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property is a hint to desktop file managers that they shouldn't automount volumes of the storage device when they appear.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This property is a hint to programs that maintain the
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file to signal, when
TRUE, that the storage drive (such as floppy or
optical drives) is used for media with no partition
table so an entry can be added ahead of media
@@ -1423,205 +6624,1126 @@
formatted with a PC style partition table and a single
FAT partition. However, it may be formatted with just
a single FAT partition and no partition table).
- </td></tr><tr><td>
- <code class="literal">storage.physical_device</code> (string)
- </td><td> </td><td>Yes</td><td>
- This contains the UDI of the device object
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.physical_device</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This contains the UDI of the device object
representing the physical device or blank if
there is no such device (which is TRUE for legacy
devices such as x86 floppy drives). Additionally, a
number of properties are merged from that device
object. Specifically, all properties prefixed
- with <code class="literal">storage</code> and, if the physical
+ with <TT
+CLASS="literal"
+>storage</TT
+> and, if the physical
device has several storage ports,
- <code class="literal">storage_lunX</code> (where X is number of
+ <TT
+CLASS="literal"
+>storage_lunX</TT
+> (where X is number of
the port starting from zero) are merged and will have
- the prefix <code class="literal">storage</code>.
- See <a href="#fdi-example-6in1" title="Example: Card Reader">the section called &#8220;Example: Card Reader&#8221;</a> for an example.
- </td></tr><tr><td>
- <code class="literal">storage.model</code> (string)
- </td><td> </td><td>Yes</td><td>The name of the drive</td></tr><tr><td>
- <code class="literal">storage.vendor</code> (string)
- </td><td> </td><td>Yes</td><td>The vendor of the drive</td></tr><tr><td>
- <code class="literal">storage.serial</code> (string)
- </td><td> </td><td>No</td><td>The serial number of the drive</td></tr><tr><td>
- <code class="literal">storage.firmware_revision</code> (string)
- </td><td> </td><td>No</td><td>The revision of the firmware of the drive</td></tr><tr><td>
- <code class="literal">storage.icon.drive</code> (string)
- </td><td> </td><td>No</td><td>
- Name of icon to use for displaying the drive. The name
+ the prefix <TT
+CLASS="literal"
+>storage</TT
+>.
+ See <A
+HREF="#fdi-example-6in1"
+>Section 3.1.3</A
+> for an example.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.model</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The name of the drive</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.vendor</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The vendor of the drive</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.serial</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>The serial number of the drive</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.firmware_revision</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>The revision of the firmware of the drive</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.icon.drive</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Name of icon to use for displaying the drive. The name
must comply with freedesktop.org icon-theme specification
and must not be an absolute path.
This property exists such that e.g. OEM's can install
- icons in <code class="literal">/usr/share/icons/hicolor</code>
+ icons in <TT
+CLASS="literal"
+>/usr/share/icons/hicolor</TT
+>
a device information file matching their device.
- </td></tr><tr><td>
- <code class="literal">storage.icon.volume</code> (string)
- </td><td> </td><td>No</td><td>
- Name of icon to use for displaying volumes from the drive.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.icon.volume</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Name of icon to use for displaying volumes from the drive.
The name must comply with freedesktop.org icon-theme
specification and must not be an absolute path.
This property exists such that e.g. OEM's can install
- icons in <code class="literal">/usr/share/icons/hicolor</code>
+ icons in <TT
+CLASS="literal"
+>/usr/share/icons/hicolor</TT
+>
a device information file matching their device.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-storage-cdrom"></a>
- <code class="literal">storage.cdrom</code> namespace
- </h3></div></div></div><p>
- This namespace is used to describe optical storage drives
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage-cdrom"
+>2.3.5. <TT
+CLASS="literal"
+>storage.cdrom</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is used to describe optical storage drives
and their capabilities.Such device objects will have the
- capability <code class="literal">storage.cdrom</code> and
+ capability <TT
+CLASS="literal"
+>storage.cdrom</TT
+> and
they will export the properties below. Note that device
- objects can only have the <code class="literal">storage.cdrom</code> capability
- if they already got the capability <code class="literal">storage</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">storage.cdrom.cdr</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write CD-R discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.cdrw</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can blank and write to CD-RW discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvd</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can read DVD-ROM discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvdr</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to DVD-R discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvdrw</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can blank and write to DVD-RW discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvdram</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to DVD-RAM discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvdplusr</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to DVD+R discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvdplusrw</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can blank and write to DVD+RW discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvdplusrwdl</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can blank and write to DVD+RW Dual-Layer discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.dvdplusrdl</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to DVD+R Dual-Layer discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.bd</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can read Blu-ray ROM discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.bdr</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to Blu-ray Recordable discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.bdre</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to Blu-ray Rewritable discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.hddvd</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can read Read-only HD DVD discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.hddvdr</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to Write-once HD DVD discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.hddvdrw</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE when the optical drive can write to Rewritable HD DVD discs</td></tr><tr><td>
- <code class="literal">storage.cdrom.support_media_changed</code> (bool)
- </td><td> </td><td>Yes</td><td>TRUE if the drive can generate media changed events</td></tr><tr><td>
- <code class="literal">storage.cdrom.read_speed</code> (int)
- </td><td> </td><td>Yes</td><td>The maximum reading speed, in kb/s</td></tr><tr><td>
- <code class="literal">storage.cdrom.write_speed</code> (int)
- </td><td> </td><td>Yes</td><td>The maximum writing speed, in kb/s</td></tr><tr><td>
- <code class="literal">storage.cdrom.write_speeds</code> (strlist)
- </td><td> </td><td>No</td><td>By the device supported write speeds in kb/s</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-net"></a>
- <code class="literal">net</code> namespace
- </h3></div></div></div><p>
- This namespace is used to describe networking devices and
+ objects can only have the <TT
+CLASS="literal"
+>storage.cdrom</TT
+> capability
+ if they already got the capability <TT
+CLASS="literal"
+>storage</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2163"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.cdr</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write CD-R discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.cdrw</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can blank and write to CD-RW discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvd</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can read DVD-ROM discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvdr</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD-R discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvdrw</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can blank and write to DVD-RW discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvdram</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD-RAM discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvdplusr</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD+R discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvdplusrw</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can blank and write to DVD+RW discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvdplusrwdl</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can blank and write to DVD+RW Dual-Layer discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.dvdplusrdl</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD+R Dual-Layer discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.bd</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can read Blu-ray ROM discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.bdr</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to Blu-ray Recordable discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.bdre</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to Blu-ray Rewritable discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.hddvd</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can read Read-only HD DVD discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.hddvdr</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to Write-once HD DVD discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.hddvdrw</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to Rewritable HD DVD discs</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.support_media_changed</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE if the drive can generate media changed events</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.read_speed</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The maximum reading speed, in kb/s</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.write_speed</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The maximum writing speed, in kb/s</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.cdrom.write_speeds</TT
+> (strlist)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>By the device supported write speeds in kb/s</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-net"
+>2.3.6. <TT
+CLASS="literal"
+>net</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is used to describe networking devices and
their capabilities.Such device objects will have the
- capability <code class="literal">net</code> and they will export the
+ capability <TT
+CLASS="literal"
+>net</TT
+> and they will export the
properties below. This namespace only describe the generic
aspect of networking devices; specific networking technologies
such as IEEE 802.3 and IEEE 802.11 have separate namespaces.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">net.address</code> (string)
- </td><td> </td><td>Yes</td><td>Hardware address as a string. Is hardware dependant</td></tr><tr><td>
- <code class="literal">net.arp_proto_hw_id</code> (string)
- </td><td> </td><td>Yes</td><td>ARP protocol hardware identifier</td></tr><tr><td>
- <code class="literal">net.interface</code> (string)
- </td><td> </td><td>Yes</td><td>Name of the interface; may change if an interface is
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2297"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.address</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Hardware address as a string. Is hardware dependant</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.arp_proto_hw_id</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>ARP protocol hardware identifier</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.interface</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Name of the interface; may change if an interface is
renamed
- </td></tr><tr><td>
- <code class="literal">net.interface_up</code> (bool)
- </td><td> </td><td>No</td><td>Whether the interface is up</td></tr><tr><td>
- <code class="literal">net.linux.ifindex</code> (string)
- </td><td> </td><td>Yes (only on Linux)</td><td>Index of the interface</td></tr><tr><td>
- <code class="literal">net.physical_device</code> (string)
- </td><td> </td><td>Yes</td><td>UDI of the physical device the network device is bound to.</td></tr><tr><td>
- <code class="literal">net.media</code> (string)
- </td><td>example: Ethernet</td><td>Yes</td><td>Textual description of the networking media</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-net-80203"></a>
- <code class="literal">net.80203</code> namespace
- </h3></div></div></div><p>
- Ethernet networking devices is described in this namespace
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.interface_up</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Whether the interface is up</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.linux.ifindex</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Index of the interface</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.physical_device</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>UDI of the physical device the network device is bound to.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.media</TT
+> (string)
+ </TD
+><TD
+>example: Ethernet</TD
+><TD
+>Yes</TD
+><TD
+>Textual description of the networking media</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-net-80203"
+>2.3.7. <TT
+CLASS="literal"
+>net.80203</TT
+> namespace</A
+></H3
+><P
+>&#13; Ethernet networking devices is described in this namespace
for device objects with the capability
- <code class="literal">net.80203</code>.
+ <TT
+CLASS="literal"
+>net.80203</TT
+>.
Note that device
- objects can only have the <code class="literal">net.80203</code> capability
- if they already have the capability <code class="literal">net</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">net.80203.link</code> (bool)
- </td><td> </td><td>
- Only if the <code class="literal">net.80203</code> capability is set
- and <code class="literal">net.interface_up</code> is
- <code class="literal">TRUE</code>.
- </td><td>True if the ethernet adaptor is connected to a
+ objects can only have the <TT
+CLASS="literal"
+>net.80203</TT
+> capability
+ if they already have the capability <TT
+CLASS="literal"
+>net</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2355"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.80203.link</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Only if the <TT
+CLASS="literal"
+>net.80203</TT
+> capability is set
+ and <TT
+CLASS="literal"
+>net.interface_up</TT
+> is
+ <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>True if the ethernet adaptor is connected to a
another transceiver. NOTE: property not implemented yet.
- </td></tr><tr><td>
- <code class="literal">net.80203.rate</code> (uint64)
- </td><td>example: 100000000</td><td>
- Only if the <code class="literal">net.80203</code> capability is set
- and <code class="literal">net.80203.link</code> is
- <code class="literal">TRUE</code>.
- </td><td>Bandwidth of connection, in bits/s. NOTE: property not
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.80203.rate</TT
+> (uint64)
+ </TD
+><TD
+>example: 100000000</TD
+><TD
+>&#13; Only if the <TT
+CLASS="literal"
+>net.80203</TT
+> capability is set
+ and <TT
+CLASS="literal"
+>net.80203.link</TT
+> is
+ <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>Bandwidth of connection, in bits/s. NOTE: property not
implemented yet.
- </td></tr><tr><td>
- <code class="literal">net.80203.mac_address</code> (uint64)
- </td><td>example: 0x0010605d8ef4</td><td>
- Only if the <code class="literal">net.80203</code> is set
- </td><td>48-bit address</td></tr></tbody></table></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-net-80211"></a>
- <code class="literal">net.80211</code> namespace
- </h3></div></div></div><p>
- Wireless ethernet networking devices is described in this namespace
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.80203.mac_address</TT
+> (uint64)
+ </TD
+><TD
+>example: 0x0010605d8ef4</TD
+><TD
+>&#13; Only if the <TT
+CLASS="literal"
+>net.80203</TT
+> is set
+ </TD
+><TD
+>48-bit address</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-net-80211"
+>2.3.8. <TT
+CLASS="literal"
+>net.80211</TT
+> namespace</A
+></H3
+><P
+>&#13; Wireless ethernet networking devices is described in this namespace
for device objects with the capability
- <code class="literal">net.80211</code>.
+ <TT
+CLASS="literal"
+>net.80211</TT
+>.
Note that device
- objects can only have the <code class="literal">net.80211</code> capability
- if they already have the capability <code class="literal">net</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">net.80211.mac_address</code> (uint64)
- </td><td>example: 0x0010605d8ef4</td><td>
- Only if the <code class="literal">net.80211</code> capability is set
- </td><td>48-bit address</td></tr></tbody></table></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-input"></a>
- <code class="literal">input</code> namespace
- </h3></div></div></div><p>
- This namespace is concerned with human input devices such as
+ objects can only have the <TT
+CLASS="literal"
+>net.80211</TT
+> capability
+ if they already have the capability <TT
+CLASS="literal"
+>net</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2397"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>net.80211.mac_address</TT
+> (uint64)
+ </TD
+><TD
+>example: 0x0010605d8ef4</TD
+><TD
+>&#13; Only if the <TT
+CLASS="literal"
+>net.80211</TT
+> capability is set
+ </TD
+><TD
+>48-bit address</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-input"
+>2.3.9. <TT
+CLASS="literal"
+>input</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is concerned with human input devices such as
keyboards, mice, pointing devices and game controllers. If a
- device object has the capability <code class="literal">input</code> then
+ device object has the capability <TT
+CLASS="literal"
+>input</TT
+> then
the following properties are available
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">input.device</code> (string)
- </td><td> </td><td>Yes</td><td>Special device file for recieving input events</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-pcmcia_socket"></a>
- <code class="literal">pcmcia_socket namespace</code>
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">pcmcia_socket</code>
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2419"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>input.device</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Special device file for recieving input events</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-pcmcia_socket"
+>2.3.10. <TT
+CLASS="literal"
+>pcmcia_socket namespace</TT
+></A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>pcmcia_socket</TT
+>
represent bridge devices (the actual bus of the device may differ)
that PCMCIA cards can be attached to. The following properties are
available.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">pcmcia_socket.number</code> (int)
- </td><td> </td><td>Yes</td><td>PCMCIA socket number, starting from zero</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-printer"></a>
- <code class="literal">printer</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">printer</code>
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2439"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>pcmcia_socket.number</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>PCMCIA socket number, starting from zero</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-printer"
+>2.3.11. <TT
+CLASS="literal"
+>printer</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>printer</TT
+>
represent printers. The following properties are available.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">printer.device</code> (string)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">printer.vendor</code> (string)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">printer.product</code> (string)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">printer.serial</code> (string)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">printer.description</code> (string)
- </td><td> </td><td>Yes</td><td>TODO</td></tr><tr><td>
- <code class="literal">printer.commandset</code> (strlist)
- </td><td> </td><td>No</td><td>List of supported commands / printer languages.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-portable_audio_player"></a>
- <code class="literal">portable_audio_player</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability
- <code class="literal">portable_audio_player</code> represent portable
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2459"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>printer.device</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>printer.vendor</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>printer.product</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>printer.serial</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>printer.description</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>printer.commandset</TT
+> (strlist)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>List of supported commands / printer languages.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-portable_audio_player"
+>2.3.12. <TT
+CLASS="literal"
+>portable_audio_player</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability
+ <TT
+CLASS="literal"
+>portable_audio_player</TT
+> represent portable
audio players that can be attached to a computer to exchange
files. They can also playback audio. Sometimes they can also
record audio. This capability can't, in general, be reliably
@@ -1632,42 +7754,151 @@
is the portable music player; for USB devices this would be
the device object representing the appropriate USB
interface. The following properties are available:
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">portable_audio_player.access_method</code> (string)
- </td><td> </td><td>Yes</td><td>This property defines how the device is accessed </td></tr><tr><td> </td><td>storage</td><td> </td><td>
- The device is accessed as a Mass Storage device
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2509"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>portable_audio_player.access_method</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property defines how the device is accessed </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>storage</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed as a Mass Storage device
through a kernel driver. Application Developers
should descent down the device object tree to find the
device object of capability
- <code class="literal">storage</code> in order to access the
+ <TT
+CLASS="literal"
+>storage</TT
+> in order to access the
device.
- </td></tr><tr><td> </td><td>user</td><td> </td><td>
- The device is accessed from userspace through
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>user</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed from userspace through
a userspace driver.
- </td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr><tr><td>
- <code class="literal">portable_audio_player.output_formats</code> (strlist)
- </td><td>example: audio/mpeg audio/x-ms-wma</td><td>Yes</td><td>
- A string list of MIME-types representing the kind of audio
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>portable_audio_player.output_formats</TT
+> (strlist)
+ </TD
+><TD
+>example: audio/mpeg audio/x-ms-wma</TD
+><TD
+>Yes</TD
+><TD
+>&#13; A string list of MIME-types representing the kind of audio
formats that the device can play back
- </td></tr><tr><td>
- <code class="literal">portable_audio_player.input_formats</code> (strlist)
- </td><td>example: audio/x-wav</td><td>Yes</td><td>
- A string list of MIME-types representing the kind of audio
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>portable_audio_player.input_formats</TT
+> (strlist)
+ </TD
+><TD
+>example: audio/x-wav</TD
+><TD
+>Yes</TD
+><TD
+>&#13; A string list of MIME-types representing the kind of audio
formats that the device can record. If empty, it means that
the device is not capable of recording.
- </td></tr><tr><td>
- <code class="literal">portable_audio_player.folder_depth </code> (int)
- </td><td>example: 1 (If the device only supports one sub-folder)</td><td>No</td><td>
- If portable_audio_player.access_method = "storage",
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>portable_audio_player.folder_depth </TT
+> (int)
+ </TD
+><TD
+>example: 1 (If the device only supports one sub-folder)</TD
+><TD
+>No</TD
+><TD
+>&#13; If portable_audio_player.access_method = "storage",
this tells applications how deep of directory hierarchies
files can be placed in. If all files are put in a
sub-folder (with the audio_folders property), that folder
should not be included in the folder_depth. If the device
does not have a limit, do not set this property.
- </td></tr><tr><td>
- <code class="literal">portable_audio_player.audio_folders</code> (strlist)
- </td><td>example: music/ voice/ linein/</td><td>No</td><td>
- If portable_audio_player.access_method = "storage",
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>portable_audio_player.audio_folders</TT
+> (strlist)
+ </TD
+><TD
+>example: music/ voice/ linein/</TD
+><TD
+>No</TD
+><TD
+>&#13; If portable_audio_player.access_method = "storage",
this may contain a string list of folders in which music
can be found. Paths are relative to the mount point of the
device. If there is one or more entry in this property, the
@@ -1675,149 +7906,565 @@
Do not enter a folder and a parent of that folder.
If the device places files in its root directory, then do not
set this property.
- </td></tr><tr><td>
- <code class="literal">portable_audio_player.playlist_format</code> (strlist)
- </td><td>example: audio/x-mpegurl audio/x-somethingelse</td><td>No</td><td>
- A string list of the MIME-type of the playlist formats accepted by
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>portable_audio_player.playlist_format</TT
+> (strlist)
+ </TD
+><TD
+>example: audio/x-mpegurl audio/x-somethingelse</TD
+><TD
+>No</TD
+><TD
+>&#13; A string list of the MIME-type of the playlist formats accepted by
this device. Leave blank if none.
- </td></tr><tr><td>
- <code class="literal">portable_audio_player.playlist_path</code> (string)
- </td><td>examples: playlists/%File or Playlist.m3u</td><td>No</td><td>
- Set to the path to which playlists should be written. Leave
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>portable_audio_player.playlist_path</TT
+> (string)
+ </TD
+><TD
+>examples: playlists/%File or Playlist.m3u</TD
+><TD
+>No</TD
+><TD
+>&#13; Set to the path to which playlists should be written. Leave
blank if playlist files are not supported. If the device supports a single playlist with a specific name/path,
set this to the path relative to the mount point that it should be saved to. If it supports multiple
playlists, use the %File variable as needed. Applications are responsible for substituting %File with the
desired playlist file name, noting that it's use in this string is optional.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-alsa"></a>
- <code class="literal">alsa</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">alsa</code>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-alsa"
+>2.3.13. <TT
+CLASS="literal"
+>alsa</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>alsa</TT
+>
represent all the streams available through ALSA on a soundcard.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">alsa.card</code> (int)
- </td><td> </td><td>Yes</td><td>
- Card number in system as registered by ALSA.
- </td></tr><tr><td>
- <code class="literal">alsa.card_id</code> (string)
- </td><td>
- Examples: <code class="literal">I82801DBICH4</code>, <code class="literal">MP3</code>
- </td><td>No</td><td>
- Textual description of the card.
- </td></tr><tr><td>
- <code class="literal">alsa.device</code> (int)
- </td><td> </td><td>Yes</td><td>
- Device number assigned by ALSA for a current card.
- </td></tr><tr><td>
- <code class="literal">alsa.device_file</code> (string)
- </td><td> </td><td>Yes</td><td>
- The device node to access the ALSA device.
- </td></tr><tr><td>
- <code class="literal">alsa.device_id</code> (string)
- </td><td>
- Examples: <code class="literal">Intel 82801DB-ICH4 MIC2 ADC</code>
- </td><td>No</td><td>
- Textual description of the specific device for a card
- </td></tr><tr><td>
- <code class="literal">alsa.physical_device</code> (string)
- </td><td> </td><td>Yes</td><td>
- UDI of the physical device the ALSA device is bound to.
- </td></tr><tr><td>
- <code class="literal">alsa.type</code> (string)
- </td><td> </td><td>Yes</td><td>
- The type of the stream.
- </td></tr><tr><td> </td><td>
- <code class="literal">control</code>
- </td><td> </td><td>
- Stream is control device.
- </td></tr><tr><td> </td><td>
- <code class="literal">capture</code>
- </td><td> </td><td>
- Stream is capture device.
- </td></tr><tr><td> </td><td>
- <code class="literal">playback</code>
- </td><td> </td><td>
- Stream is playback device.
- </td></tr><tr><td> </td><td>
- <code class="literal">timer</code>
- </td><td> </td><td>
- Stream is the global ALSA timer device.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2581"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>alsa.card</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Card number in system as registered by ALSA.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>alsa.card_id</TT
+> (string)
+ </TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>I82801DBICH4</TT
+>, <TT
+CLASS="literal"
+>MP3</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the card.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>alsa.device</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Device number assigned by ALSA for a current card.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>alsa.device_file</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The device node to access the ALSA device.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>alsa.device_id</TT
+> (string)
+ </TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>Intel 82801DB-ICH4 MIC2 ADC</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the specific device for a card
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>alsa.physical_device</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; UDI of the physical device the ALSA device is bound to.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>alsa.type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The type of the stream.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>control</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is control device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>capture</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is capture device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>playback</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is playback device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>timer</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is the global ALSA timer device.
This means, the device is for all ALSA devices/cards.
- </td></tr><tr><td> </td><td>
- <code class="literal">sequencer</code>
- </td><td> </td><td>
- Stream is the global ALSA sequencer device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>sequencer</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is the global ALSA sequencer device.
This means, the device is for all ALSA devices/cards.
- </td></tr><tr><td> </td><td>
- <code class="literal">unknown</code>
- </td><td> </td><td>
- Stream is unknown device.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-oss"></a>
- <code class="literal">oss</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">oss</code>
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>unknown</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is unknown device.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-oss"
+>2.3.14. <TT
+CLASS="literal"
+>oss</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>oss</TT
+>
represent all the streams available through OSS on a soundcard.
OSS devices could be emulated by ALSA.
- </p><p>
- Note: All OSS devices, except the global devices, are only added if the
+ </P
+><P
+>&#13; Note: All OSS devices, except the global devices, are only added if the
kernel supports links from oss device to physical device in sysfs. For a patch
see: http://thread.gmane.org/gmane.comp.freedesktop.hal/2862.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">oss.card</code> (int)
- </td><td> </td><td>Yes</td><td>
- Card number in system as registered by OSS (and/or ALSA).
- </td></tr><tr><td>
- <code class="literal">oss.card_id</code> (string)
- </td><td>
- Examples: <code class="literal">I82801DBICH4</code>, <code class="literal">MP3</code>
- </td><td>No</td><td>
- Textual description of the card.
- </td></tr><tr><td>
- <code class="literal">oss.device</code> (int)
- </td><td> </td><td>Yes</td><td>
- Device number assigned by OSS/ALSA for a current card.
- </td></tr><tr><td>
- <code class="literal">oss.device_file</code> (string)
- </td><td> </td><td>Yes</td><td>
- The device node to access the OSS device.
- </td></tr><tr><td>
- <code class="literal">oss.device_id</code> (string)
- </td><td>
- Examples: <code class="literal">Intel 82801DB-ICH4 MIC2 ADC</code>
- </td><td>No</td><td>
- Textual description of the specific device for a card
- </td></tr><tr><td>
- <code class="literal">oss.physical_device</code> (string)
- </td><td> </td><td>Yes</td><td>
- UDI of the physical device the OSS device is bound to.
- </td></tr><tr><td>
- <code class="literal">oss.type</code> (string)
- </td><td> </td><td>Yes</td><td>
- The type of the stream.
- </td></tr><tr><td> </td><td>
- <code class="literal">mixer</code>
- </td><td> </td><td>
- Stream is control/mixer device.
- </td></tr><tr><td> </td><td>
- <code class="literal">pcm</code>
- </td><td> </td><td>
- Stream is PCM device.
- </td></tr><tr><td> </td><td>
- <code class="literal">midi</code>
- </td><td> </td><td>
- Stream is MIDI device.
- </td></tr><tr><td> </td><td>
- <code class="literal">sequencer</code>
- </td><td> </td><td>
- Stream is a global OSS sequencer device.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2677"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>oss.card</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Card number in system as registered by OSS (and/or ALSA).
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>oss.card_id</TT
+> (string)
+ </TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>I82801DBICH4</TT
+>, <TT
+CLASS="literal"
+>MP3</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the card.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>oss.device</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Device number assigned by OSS/ALSA for a current card.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>oss.device_file</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The device node to access the OSS device.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>oss.device_id</TT
+> (string)
+ </TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>Intel 82801DB-ICH4 MIC2 ADC</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the specific device for a card
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>oss.physical_device</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; UDI of the physical device the OSS device is bound to.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>oss.type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The type of the stream.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>mixer</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is control/mixer device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>pcm</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is PCM device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>midi</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is MIDI device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>sequencer</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is a global OSS sequencer device.
This means, the device is for all OSS devices/cards.
- </td></tr><tr><td> </td><td>
- <code class="literal">unknown</code>
- </td><td> </td><td>
- Stream is unknown device.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-camera"></a>
- <code class="literal">camera</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">camera</code>
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>unknown</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is unknown device.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-camera"
+>2.3.15. <TT
+CLASS="literal"
+>camera</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>camera</TT
+>
represent digital still cameras that can be attached to a
computer to exchange files. This does not include card readers
for memory cards used for cameras. This capability can't, in
@@ -1829,903 +8476,3661 @@
camera; for USB devices this would be the device object
representing the appropriate USB interface. The following
properties are available:
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">camera.access_method</code> (string)
- </td><td> </td><td>Yes</td><td>This property defines how the device is accessed </td></tr><tr><td> </td><td>storage</td><td> </td><td>
- The device is accessed as a Mass Storage device
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2766"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>camera.access_method</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property defines how the device is accessed </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>storage</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed as a Mass Storage device
through a kernel driver. Application Developers
should descent down the device object tree to find the
device object of capability
- <code class="literal">storage</code> in order to access the
+ <TT
+CLASS="literal"
+>storage</TT
+> in order to access the
device.
- </td></tr><tr><td> </td><td>user</td><td> </td><td>
- The device is accessed from userspace through
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>user</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed from userspace through
a userspace driver.
- </td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr><tr><td>
- <code class="literal">camera.libgphoto2.support</code> (bool)
- </td><td> </td><td>No</td><td>
- If true, the device is supported by a userspace driver
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>camera.libgphoto2.support</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If true, the device is supported by a userspace driver
from the libgphoto2 project.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-laptop-panel"></a>
- <code class="literal">laptop_panel</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">laptop_panel</code>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-laptop-panel"
+>2.3.16. <TT
+CLASS="literal"
+>laptop_panel</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>laptop_panel</TT
+>
represent devices capable of changing the brightness of the display.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">laptop_panel.num_levels</code> (int)
- </td><td> </td><td>Yes</td><td>
- The brightness levels supported by the adaptor.
- </td></tr><tr><td>
- <code class="literal">laptop_panel.access_method</code> (string)
- </td><td> </td><td>Yes</td><td>
- The access method to use in scripts, e.g. pmu, toshiba, ibm, sony.
- </td></tr><tr><td>
- <code class="literal">laptop_panel.brightness_in_hardware</code> (bool)
- </td><td> </td><td>No</td><td>
- On some laptops, the brightness control is all done in hardware
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2808"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>laptop_panel.num_levels</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The brightness levels supported by the adaptor.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>laptop_panel.access_method</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The access method to use in scripts, e.g. pmu, toshiba, ibm, sony.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>laptop_panel.brightness_in_hardware</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; On some laptops, the brightness control is all done in hardware
but the hardware also synthesizes keypresses when the
brightness is changed.
If this key is set true, then any power manager software should
not attempt to set any new values on brightness keypress, as it
may cause the panel to flash uncontrollably.
- </td></tr></tbody></table></div><p>
- The following methods exist on the interface
- <code class="literal">org.freedesktop.Hal.Device.LaptopPanel</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Method (parameter types)</th><th>Parameters</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">SetBrightness</code> (integer)
- </td><td>
- The hardware brightness state, which should be between 0 and
- <code class="literal">laptop_panel.num_levels</code> - 1.
- </td><td>No</td><td>
- This method adjusts the brightness on an laptop screen.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following methods exist on the interface
+ <TT
+CLASS="literal"
+>org.freedesktop.Hal.Device.LaptopPanel</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2837"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Method (parameter types)</TH
+><TH
+>Parameters</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>SetBrightness</TT
+> (integer)
+ </TD
+><TD
+>&#13; The hardware brightness state, which should be between 0 and
+ <TT
+CLASS="literal"
+>laptop_panel.num_levels</TT
+> - 1.
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; This method adjusts the brightness on an laptop screen.
The values are returned as hardware values rather than
percentages as we cannot easily to floating point rounding in
shell code and therefore use the raw values to prevent integer
rounding errors.
- </td></tr><tr><td>
- integer <code class="literal">GetBrightness</code> (void)
- </td><td>
- Returns the hardware brightness state, which should be
- between 0 and <code class="literal">laptop_panel.num_levels</code> - 1.
- </td><td>No</td><td>
- This method gets the hardware brightness of the laptop screen,
+ </TD
+></TR
+><TR
+><TD
+>&#13; integer <TT
+CLASS="literal"
+>GetBrightness</TT
+> (void)
+ </TD
+><TD
+>&#13; Returns the hardware brightness state, which should be
+ between 0 and <TT
+CLASS="literal"
+>laptop_panel.num_levels</TT
+> - 1.
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; This method gets the hardware brightness of the laptop screen,
which we may need to do fairly regually on hardware that
changes the values in hardware without a software event.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-video_adapter_pm"></a>
- <code class="literal">video_adapter_pm</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">video_adapter_pm</code>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-video_adapter_pm"
+>2.3.17. <TT
+CLASS="literal"
+>video_adapter_pm</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>video_adapter_pm</TT
+>
represent video adapters that need to be suspended or resumed in device
specific ways.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">video_adapter_pm.s3_bios</code> (bool)
- </td><td> </td><td>No</td><td>Use the S3_BIOS kernel command for suspend.</td></tr><tr><td>
- <code class="literal">video_adapter_pm.s3_mode</code> (bool)
- </td><td> </td><td>No</td><td>Use the S3_MODE kernel command for suspend.</td></tr><tr><td>
- <code class="literal">video_adapter_pm.dpms_suspend</code> (bool)
- </td><td> </td><td>No</td><td>Suspend the video card via DPMS.</td></tr><tr><td>
- <code class="literal">video_adapter_pm.vga_mode_3</code> (bool)
- </td><td> </td><td>No</td><td>Reset the VGA text mode to mode 3 on resume.</td></tr><tr><td>
- <code class="literal">video_adapter_pm.dpms_on</code> (bool)
- </td><td> </td><td>No</td><td>Reactivate the screen with DPMS on resume.</td></tr><tr><td>
- <code class="literal">video_adapter_pm.vbe_post</code> (bool)
- </td><td> </td><td>No</td><td>Run the VGA BIOS Power On Self Test (POST) on resume.</td></tr><tr><td>
- <code class="literal">video_adapter_pm.vbestate_restore</code> (bool)
- </td><td> </td><td>No</td><td>Save the VGA BIOS state before suspend, and restore it on resume.</td></tr><tr><td>
- <code class="literal">video_adapter_pm.vbemode_restore</code> (bool)
- </td><td> </td><td>No</td><td>Save the VGA BIOS mode before suspend, and restore it on resume.</td></tr></tbody></table></div><p>
- The following methods exist on the interface
- <code class="literal">org.freedesktop.Hal.Device.VideoAdapterPM</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Method (parameter types)</th><th>Parameters</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- void <code class="literal">SuspendVideo</code> (void)
- </td><td>None</td><td>No</td><td>
- Suspends the video adapter using the quirks specified.
- </td></tr><tr><td>
- void <code class="literal">ResumeVideo</code> (void)
- </td><td>None</td><td>No</td><td>
- Resumes the video adapter using the quirks specified.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-ac_adaptor"></a>
- <code class="literal">ac_adaptor</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">ac_adaptor</code>
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2865"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.s3_bios</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Use the S3_BIOS kernel command for suspend.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.s3_mode</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Use the S3_MODE kernel command for suspend.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.dpms_suspend</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Suspend the video card via DPMS.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.vga_mode_3</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Reset the VGA text mode to mode 3 on resume.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.dpms_on</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Reactivate the screen with DPMS on resume.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.vbe_post</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Run the VGA BIOS Power On Self Test (POST) on resume.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.vbestate_restore</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Save the VGA BIOS state before suspend, and restore it on resume.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>video_adapter_pm.vbemode_restore</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Save the VGA BIOS mode before suspend, and restore it on resume.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following methods exist on the interface
+ <TT
+CLASS="literal"
+>org.freedesktop.Hal.Device.VideoAdapterPM</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2924"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Method (parameter types)</TH
+><TH
+>Parameters</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; void <TT
+CLASS="literal"
+>SuspendVideo</TT
+> (void)
+ </TD
+><TD
+>None</TD
+><TD
+>No</TD
+><TD
+>&#13; Suspends the video adapter using the quirks specified.
+ </TD
+></TR
+><TR
+><TD
+>&#13; void <TT
+CLASS="literal"
+>ResumeVideo</TT
+> (void)
+ </TD
+><TD
+>None</TD
+><TD
+>No</TD
+><TD
+>&#13; Resumes the video adapter using the quirks specified.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ac_adaptor"
+>2.3.18. <TT
+CLASS="literal"
+>ac_adaptor</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>ac_adaptor</TT
+>
represent all the devices capable of powering the system from AC power
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ac_adaptor.present</code> (bool)
- </td><td> </td><td>Yes</td><td>
- The state of the adaptor, i.e. whether it is providing power to
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2950"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ac_adaptor.present</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The state of the adaptor, i.e. whether it is providing power to
the unit from mains power.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-battery"></a>
- <code class="literal">battery</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">battery</code>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-battery"
+>2.3.19. <TT
+CLASS="literal"
+>battery</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>battery</TT
+>
represent all the devices having some battery (in many cases -
rechargeable) inside.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">battery.present</code> (bool)
- </td><td> </td><td>Yes</td><td>
- This is present as some smart batteries can have acpi/pmu
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2970"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.present</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This is present as some smart batteries can have acpi/pmu
entries, and be physically missing.
- </td></tr><tr><td>
- <code class="literal">battery.type</code> (string)
- </td><td> </td><td>Yes</td><td>
- This property defines the type of the device holding the
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This property defines the type of the device holding the
battery. This property is defined for the development
simplicity - battery indicators can use it to find the
proper iconic representation.
- </td></tr><tr><td> </td><td>
- <code class="literal">pda</code>
- </td><td> </td><td>
- The device containing the battery is a personal digital
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>pda</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a personal digital
assistant, e.g. a device that looks like a handheld computer
to do specific tasks such as keeping notes or containing
a personal database
- </td></tr><tr><td> </td><td>
- <code class="literal">ups</code>
- </td><td> </td><td>
- A battery powered power supply that is
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>ups</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; A battery powered power supply that is
guaranteed to provide power to a computer in the event of
interruptions in the incoming electrical power. Most of the
time this is an external device.
- </td></tr><tr><td> </td><td>
- <code class="literal">primary</code>
- </td><td> </td><td>
- The battery is a primary power source for the system - an
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>primary</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The battery is a primary power source for the system - an
example are laptop batteries.
- </td></tr><tr><td> </td><td>
- <code class="literal">mouse</code>
- </td><td> </td><td>
- The device containing the battery is a mouse.
- </td></tr><tr><td> </td><td>
- <code class="literal">keyboard</code>
- </td><td> </td><td>
- The device containing the battery is a keyboard.
- </td></tr><tr><td> </td><td>
- <code class="literal">keyboard_mouse</code>
- </td><td> </td><td>
- The device containing the battery is a combined mouse and keyboard.
- </td></tr><tr><td> </td><td>
- <code class="literal">camera</code>
- </td><td> </td><td>
- The device containing the battery is a camera.
- </td></tr><tr><td> </td><td>
- <code class="literal">unknown</code>
- </td><td> </td><td>
- The device containing the battery is not covered by other types.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.unit</code> (string)
- </td><td>Examples:
- <code class="literal">mWh</code>,
- <code class="literal">percent</code>
- </td><td>No</td><td>
- The physical unit used by the charge level properties
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>mouse</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a mouse.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>keyboard</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a keyboard.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>keyboard_mouse</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a combined mouse and keyboard.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>camera</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a camera.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>unknown</TT
+>
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is not covered by other types.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.unit</TT
+> (string)
+ </TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>mWh</TT
+>,
+ <TT
+CLASS="literal"
+>percent</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The physical unit used by the charge level properties
(maximum and current). In many cases, this property is
omitted - which indicates that the charge properties
are measured in some unknown units.
The units should never be mAh as this is not a measurement
of charge.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.design</code> (int)
- </td><td> </td><td>Yes</td><td>
- The maximum level of charge the device was designed for.
- Measured in <code class="literal">"battery.charge_level.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.design</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The maximum level of charge the device was designed for.
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.last_full</code> (int)
- </td><td> </td><td>Yes</td><td>
- The maximum level of charge the device could hold the last
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.last_full</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The maximum level of charge the device could hold the last
time it was full.
- Measured in <code class="literal">"battery.charge_level.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.current</code> (int)
- </td><td> </td><td>Yes</td><td>
- The current level of charge which the device can is holding.
- Measured in <code class="literal">"battery.charge_level.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.current</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The current level of charge which the device can is holding.
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.rate</code> (int)
- </td><td> </td><td>No</td><td>
- The discharge/charge rate measured
- in <code class="literal">"battery.charge_level.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.rate</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The discharge/charge rate measured
+ in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units per second.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.warning</code> (int)
- </td><td> </td><td>No</td><td>
- Once the charge level of the battery drops below this value its
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.warning</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the charge level of the battery drops below this value its
state changes to 'warning'.
- Measured in <code class="literal">"battery.charge_level.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.low</code> (int)
- </td><td> </td><td>No</td><td>
- Once the charge level of the battery drops below this value its
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.low</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the charge level of the battery drops below this value its
state changes to 'low'.
- Measured in <code class="literal">"battery.charge_level.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.granularity_1</code> (int)
- </td><td> </td><td>No</td><td>
- Granularity value one of the battery measured
- in <code class="literal">"battery.charge_level.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.granularity_1</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Granularity value one of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units .
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.granularity_2</code> (int)
- </td><td> </td><td>No</td><td>
- Granularity value two of the battery measured
- in <code class="literal">"battery.charge_level.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.granularity_2</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Granularity value two of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.unit</code> (string)
- </td><td>Examples:
- <code class="literal">mWh</code>,
- <code class="literal">mAh</code>,
- <code class="literal">percent</code>
- </td><td>No</td><td>
- The physical unit used by the charge level properties
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.unit</TT
+> (string)
+ </TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>mWh</TT
+>,
+ <TT
+CLASS="literal"
+>mAh</TT
+>,
+ <TT
+CLASS="literal"
+>percent</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The physical unit used by the charge level properties
(maximum and current) as reported by the hardware.
In many cases, this property is omitted - which indicates
that the charge properties are measured in some unknown units.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.design</code> (int)
- </td><td> </td><td>Yes</td><td>
- The maximum level of charge the device was designed for,
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.design</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The maximum level of charge the device was designed for,
as reported by the hardware.
- Measured in <code class="literal">"battery.reporting.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.last_full</code> (int)
- </td><td> </td><td>No</td><td>
- The maximum level of charge the device could hold the last
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.last_full</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The maximum level of charge the device could hold the last
time it was full, as reported by the hardware.
- Measured in <code class="literal">"battery.reporting.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.current</code> (int)
- </td><td> </td><td>No</td><td>
- The current level of charge which the device is holding,
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.current</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The current level of charge which the device is holding,
as reported by the hardware.
- Measured in <code class="literal">"battery.reporting.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.rate</code> (int)
- </td><td> </td><td>No</td><td>
- The discharge/charge rate as reported by the hardware measured
- in <code class="literal">"battery.reporting.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.rate</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The discharge/charge rate as reported by the hardware measured
+ in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units per second.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.warning</code> (int)
- </td><td> </td><td>No</td><td>
- Once the hardware charge level of the battery drops below
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.warning</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the hardware charge level of the battery drops below
this value its state changes to 'warning'.
- Measured in <code class="literal">"battery.reporting.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.low</code> (int)
- </td><td> </td><td>No</td><td>
- Once the hardware charge level of the battery drops below
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.low</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the hardware charge level of the battery drops below
this value its state changes to 'low'.
- Measured in <code class="literal">"battery.reporting.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.reporting.granularity_1</code> (int)
- </td><td> </td><td>No</td><td>
- Hardware granularity value one of the battery measured
- in <code class="literal">"battery.reporting.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.granularity_1</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Hardware granularity value one of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units .
- </td></tr><tr><td>
- <code class="literal">battery.reporting.granularity_2</code> (int)
- </td><td> </td><td>No</td><td>
- Hardware granularity value two of the battery measured
- in <code class="literal">"battery.reporting.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.reporting.granularity_2</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Hardware granularity value two of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.capacity_state</code> (string)
- </td><td>
- Examples: <code class="literal">ok</code>, <code class="literal">critical</code>
- </td><td>No</td><td>
- The capacity state of the battery.
- </td></tr><tr><td>
- <code class="literal">battery.voltage.unit</code> (string)
- </td><td>
- Examples: <code class="literal">mV</code>
- </td><td>No</td><td>
- The physical measurement unit used by the voltage properties
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.capacity_state</TT
+> (string)
+ </TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>ok</TT
+>, <TT
+CLASS="literal"
+>critical</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The capacity state of the battery.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.voltage.unit</TT
+> (string)
+ </TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>mV</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The physical measurement unit used by the voltage properties
(design and current).
- </td></tr><tr><td>
- <code class="literal">battery.voltage.design</code> (int)
- </td><td> </td><td>Yes</td><td>
- The voltage level for which the battery is designed for.
- Measured in <code class="literal">"battery.voltage.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.voltage.design</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The voltage level for which the battery is designed for.
+ Measured in <TT
+CLASS="literal"
+>"battery.voltage.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.voltage.current</code> (int)
- </td><td> </td><td>Yes</td><td>
- The voltage level currently emitted by the battery.
- Measured in <code class="literal">"battery.voltage.unit"</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.voltage.current</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The voltage level currently emitted by the battery.
+ Measured in <TT
+CLASS="literal"
+>"battery.voltage.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.alarm.unit</code> (string)
- </td><td>
- Examples: <code class="literal">mWh</code>, <code class="literal">mAh</code>
- </td><td>No</td><td>
- The physical measurement unit used by the alarm property.
- </td></tr><tr><td>
- <code class="literal">battery.alarm.design</code> (int)
- </td><td> </td><td>No</td><td>
- Once the charge level of the battery drops below this value
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.alarm.unit</TT
+> (string)
+ </TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>mWh</TT
+>, <TT
+CLASS="literal"
+>mAh</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The physical measurement unit used by the alarm property.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.alarm.design</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the charge level of the battery drops below this value
its state changes to 'alarm'.
- Measured in <code class="literal">"battery.alarm.unit"</code>
+ Measured in <TT
+CLASS="literal"
+>"battery.alarm.unit"</TT
+>
units.
- </td></tr><tr><td>
- <code class="literal">battery.remaining_time</code> (int)
- </td><td> </td><td>No</td><td>
- Remaining time, in seconds, that the battery can provide
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.remaining_time</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Remaining time, in seconds, that the battery can provide
power (if discharging) or the time until charged (if charging).
This is an estimate and may be imprecise.
This key is not present for invalid data.
- </td></tr><tr><td>
- <code class="literal">battery.remaining_time.calculate_per_time</code> (bool)
- </td><td> </td><td>No</td><td>
- If this property is <code class="literal">true</code> the
- <code class="literal">battery.remaining_time</code> becomes guessed from
- <code class="literal">battery.charge_level.current</code> and time.
- </td></tr><tr><td>
- <code class="literal">battery.charge_level.percentage</code> (int)
- </td><td> </td><td>No</td><td>
- Charge, normalised to percent. This is useful if an application
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.remaining_time.calculate_per_time</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If this property is <TT
+CLASS="literal"
+>true</TT
+> the
+ <TT
+CLASS="literal"
+>battery.remaining_time</TT
+> becomes guessed from
+ <TT
+CLASS="literal"
+>battery.charge_level.current</TT
+> and time.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.charge_level.percentage</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Charge, normalised to percent. This is useful if an application
does not want to process the raw values and do all the extra
checks on the result. This key is not present for invalid data.
- </td></tr><tr><td>
- <code class="literal">battery.is_rechargeable</code> (bool)
- </td><td> </td><td>No</td><td>
- True if the battery unit is rechargeable, false if its is
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.is_rechargeable</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; True if the battery unit is rechargeable, false if its is
one-time (disposable after one usage).
- </td></tr><tr><td>
- <code class="literal">battery.rechargeable.is_charging</code> (bool)
- </td><td> </td><td>
- Only if <code class="literal">battery.is_rechargeable</code> is TRUE
- </td><td>
- TRUE if, and only if, the battery is charging.
- </td></tr><tr><td>
- <code class="literal">battery.rechargeable.is_discharging</code> (bool)
- </td><td> </td><td>
- Only if <code class="literal">battery.is_rechargeable</code> is TRUE
- </td><td>
- TRUE if, and only if, the battery is discharging.
- </td></tr><tr><td>
- <code class="literal">battery.command_interface</code> (string)
- </td><td> </td><td>No</td><td>
- The abstract name allowing daemons and/or user-level apps
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.rechargeable.is_charging</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Only if <TT
+CLASS="literal"
+>battery.is_rechargeable</TT
+> is TRUE
+ </TD
+><TD
+>&#13; TRUE if, and only if, the battery is charging.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.rechargeable.is_discharging</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Only if <TT
+CLASS="literal"
+>battery.is_rechargeable</TT
+> is TRUE
+ </TD
+><TD
+>&#13; TRUE if, and only if, the battery is discharging.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.command_interface</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The abstract name allowing daemons and/or user-level apps
to distinguish some groups of devices having similar
programming interface. Introduced mostly for the daemons'
coding simplicity.
- </td></tr><tr><td>
- <code class="literal">battery.vendor</code> (string)
- </td><td> </td><td>No</td><td>
- Vendor of the battery.
- </td></tr><tr><td>
- <code class="literal">battery.model</code> (string)
- </td><td> </td><td>No</td><td>
- Make of the battery.
- </td></tr><tr><td>
- <code class="literal">battery.technology</code> (string)
- </td><td>example: LION</td><td>No</td><td>
- The technology of the battery.
- </td></tr><tr><td>
- <code class="literal">battery.serial</code> (string)
- </td><td> </td><td>No</td><td>
- A string uniquely identifying the instance of the battery;
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.vendor</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Vendor of the battery.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.model</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Make of the battery.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.technology</TT
+> (string)
+ </TD
+><TD
+>example: LION</TD
+><TD
+>No</TD
+><TD
+>&#13; The technology of the battery.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>battery.serial</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string uniquely identifying the instance of the battery;
it will be different for two (otherwise) identical batteries.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-button"></a>
- <code class="literal">button</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">button</code>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-button"
+>2.3.20. <TT
+CLASS="literal"
+>button</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>button</TT
+>
represent the devices capable of providing a state to the system.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">button.type</code> (string)
- </td><td> </td><td>No</td><td>The type of button</td></tr><tr><td> </td><td>lid</td><td> </td><td>
- The switch on a laptop that senses whether the lid is
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3288"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>button.type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>The type of button</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>lid</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The switch on a laptop that senses whether the lid is
open or closed
- </td></tr><tr><td> </td><td>power</td><td> </td><td>The main power button on the computer.</td></tr><tr><td> </td><td>sleep</td><td> </td><td>
- The sleep button on a computer capable of putting the computer
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>power</TD
+><TD
+>&nbsp;</TD
+><TD
+>The main power button on the computer.</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>sleep</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The sleep button on a computer capable of putting the computer
into a suspend state
- </td></tr><tr><td>
- <code class="literal">button.has_state</code> (bool)
- </td><td> </td><td>no</td><td>True if the button maintains state, e.g. can toggled on/off</td></tr><tr><td>
- <code class="literal">button.state.value</code> (bool)
- </td><td> </td><td>
- Only when <code class="literal">button.has_state</code> is
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>button.has_state</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>no</TD
+><TD
+>True if the button maintains state, e.g. can toggled on/off</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>button.state.value</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Only when <TT
+CLASS="literal"
+>button.has_state</TT
+> is
TRUE
- </td><td>State of the button, TRUE if it is enabled</td></tr></tbody></table></div><p>
- Device objects with this capability may emit the following events.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Condition Name</th><th>Parameters</th><th>Example</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">ButtonPressed</code>
- </td><td>
- <code class="literal">button.type (string)</code>
- </td><td>sleep</td><td>Emitted when a button is pressed</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-processor"></a>
- <code class="literal">processor</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">processor</code>
+ </TD
+><TD
+>State of the button, TRUE if it is enabled</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; Device objects with this capability may emit the following events.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3332"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Condition Name</TH
+><TH
+>Parameters</TH
+><TH
+>Example</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>ButtonPressed</TT
+>
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>button.type (string)</TT
+>
+ </TD
+><TD
+>sleep</TD
+><TD
+>Emitted when a button is pressed</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-processor"
+>2.3.21. <TT
+CLASS="literal"
+>processor</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>processor</TT
+>
represent CPU's in the system.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">processor.number</code> (int)
- </td><td> </td><td>Yes</td><td>
- The internal processor number in the system, starting from zero
- </td></tr><tr><td>
- <code class="literal">processor.can_throttle</code> (bool)
- </td><td> </td><td>No</td><td>
- Whether the processor supports throttling to decrease it's
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3353"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>processor.number</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The internal processor number in the system, starting from zero
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>processor.can_throttle</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Whether the processor supports throttling to decrease it's
own clock speed
- </td></tr><tr><td>
- <code class="literal">processor.maximum_speed</code> (long)
- </td><td>example: 2200</td><td>No</td><td>The maximum speed of the processor in units of MHz</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-display_device"></a>
- <code class="literal">display_device</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">display_device</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>processor.maximum_speed</TT
+> (long)
+ </TD
+><TD
+>example: 2200</TD
+><TD
+>No</TD
+><TD
+>The maximum speed of the processor in units of MHz</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-display_device"
+>2.3.22. <TT
+CLASS="literal"
+>display_device</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>display_device</TT
+>
represent display devices attached to the system.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">display_device.type</code> (string)
- </td><td> </td><td>Yes</td><td>The type of display device</td></tr><tr><td> </td><td>lcd</td><td> </td><td>LCD panel</td></tr><tr><td> </td><td>crt</td><td> </td><td>CRT tube</td></tr><tr><td> </td><td>tv_out</td><td> </td><td>TV Out</td></tr><tr><td>
- <code class="literal">display_device.lcd.brightness</code> (int)
- </td><td> </td><td>
- Only if <code class="literal">display_device.type</code> is lcd
- </td><td>Brightness level in percent</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-sensor"></a>
- <code class="literal">sensor</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">sensor</code>
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3385"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>display_device.type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The type of display device</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>lcd</TD
+><TD
+>&nbsp;</TD
+><TD
+>LCD panel</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>crt</TD
+><TD
+>&nbsp;</TD
+><TD
+>CRT tube</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>tv_out</TD
+><TD
+>&nbsp;</TD
+><TD
+>TV Out</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>display_device.lcd.brightness</TT
+> (int)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Only if <TT
+CLASS="literal"
+>display_device.type</TT
+> is lcd
+ </TD
+><TD
+>Brightness level in percent</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-sensor"
+>2.3.23. <TT
+CLASS="literal"
+>sensor</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>sensor</TT
+>
represent light or temperature sensors in the system.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">sensor.type</code> (string)
- </td><td> </td><td>Yes</td><td>The type of sensor device</td></tr><tr><td> </td><td>light</td><td> </td><td>Light sensor</td></tr><tr><td> </td><td>temperature</td><td> </td><td>Temperature sensor</td></tr><tr><td>
- <code class="literal">sensor.location</code> (string)
- </td><td> </td><td>Yes</td><td>The location of the sensor device</td></tr><tr><td> </td><td>gpu</td><td> </td><td>Measures GPU source</td></tr><tr><td> </td><td>cpu</td><td> </td><td>Measures CPU source</td></tr><tr><td> </td><td>external</td><td> </td><td>Measures external source</td></tr><tr><td> </td><td>unknown</td><td> </td><td>Measuring other source</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-power-management"></a>
- <code class="literal">power_management</code> namespace
- </h3></div></div></div><p>
- Keys with the prefix <code class="literal">power_management</code>
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3427"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>sensor.type</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The type of sensor device</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>light</TD
+><TD
+>&nbsp;</TD
+><TD
+>Light sensor</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>temperature</TD
+><TD
+>&nbsp;</TD
+><TD
+>Temperature sensor</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>sensor.location</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The location of the sensor device</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>gpu</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measures GPU source</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cpu</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measures CPU source</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>external</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measures external source</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>unknown</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measuring other source</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-power-management"
+>2.3.24. <TT
+CLASS="literal"
+>power_management</TT
+> namespace</A
+></H3
+><P
+>&#13; Keys with the prefix <TT
+CLASS="literal"
+>power_management</TT
+>
provide information about power management supported by
your computer.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">power_management.type</code> (string)
- </td><td>Examples:
- <code class="literal">apm</code>,
- <code class="literal">acpi</code>,
- <code class="literal">pmu</code>
- </td><td>Yes</td><td>
- The power management subsystem used on the computer.
- </td></tr><tr><td>
- <code class="literal">power_management.can_suspend</code> (bool)
- </td><td> </td><td>Yes</td><td>
- If suspend support is compiled into the kernel.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3483"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>power_management.type</TT
+> (string)
+ </TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>apm</TT
+>,
+ <TT
+CLASS="literal"
+>acpi</TT
+>,
+ <TT
+CLASS="literal"
+>pmu</TT
+>
+ </TD
+><TD
+>Yes</TD
+><TD
+>&#13; The power management subsystem used on the computer.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>power_management.can_suspend</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; If suspend support is compiled into the kernel.
NB. This may not mean the machine is able to suspend
successfully.
- </td></tr><tr><td>
- <code class="literal">power_management.can_hibernate</code> (bool)
- </td><td> </td><td>Yes</td><td>
- If hibernation support is compiled into the kernel.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>power_management.can_hibernate</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; If hibernation support is compiled into the kernel.
NB. This may not mean the machine is able to hibernate
successfully.
- </td></tr><tr><td>
- <code class="literal">power_management.can_suspend_to_ram</code> (bool)
- </td><td> </td><td>No</td><td>
- If suspend support is compiled into the kernel.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>power_management.can_suspend_to_ram</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If suspend support is compiled into the kernel.
NB. This may not mean the machine is able to suspend
successfully.
WARNING: This key is depreciated and power_management.can_suspend
should be used in its place. This key will be removed, but not before May 1st 2007.
- </td></tr><tr><td>
- <code class="literal">power_management.can_suspend_to_disk</code> (bool)
- </td><td> </td><td>No</td><td>
- If hibernation support is compiled into the kernel.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>power_management.can_suspend_to_disk</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If hibernation support is compiled into the kernel.
NB. This may not mean the machine is able to hibernate
successfully.
WARNING: This key is depreciated and power_management.can_hibernate
should be used in its place. This key will be removed, but not before May 1st 2007.
- </td></tr></tbody></table></div><p>
- The following methods exist on the interface
- <code class="literal">org.freedesktop.Hal.Device.SystemPowerManagement</code>.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Method (parameter types)</th><th>Parameters</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">Suspend</code> (integer)
- </td><td>
- The number of seconds until we resume automatically, or zero if
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; The following methods exist on the interface
+ <TT
+CLASS="literal"
+>org.freedesktop.Hal.Device.SystemPowerManagement</TT
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3527"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Method (parameter types)</TH
+><TH
+>Parameters</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>Suspend</TT
+> (integer)
+ </TD
+><TD
+>&#13; The number of seconds until we resume automatically, or zero if
we should not auto-resume.
- </td><td>No</td><td>
- This method puts the system in a state where little power is consumed.
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; This method puts the system in a state where little power is consumed.
The system is not operational while in this state.
Latency for the system to return to an operational state is in
the order of magnitude of 5 seconds.
- </td></tr><tr><td>
- <code class="literal">Hibernate</code> (void)
- </td><td> </td><td>No</td><td>
- This method puts the system in a state where no power is consumed.
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>Hibernate</TT
+> (void)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; This method puts the system in a state where no power is consumed.
The system is not operational while in this state.
Latency for the system to return to an operational state is in
the order of magnitude of one minute.
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-tape"></a>
- <code class="literal">tape</code> namespace
- </h3></div></div></div><p>
- Device objects with the capability <code class="literal">tape</code>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-tape"
+>2.3.25. <TT
+CLASS="literal"
+>tape</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>tape</TT
+>
represent tape devices.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">tape.major</code> (int)
- </td><td>example: 254</td><td>Yes</td><td>The device's major number</td></tr><tr><td>
- <code class="literal">tape.minor</code> (int)
- </td><td>example: 0</td><td>Yes</td><td>The device's minor number</td></tr></tbody></table></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="properties-policy"></a>Policy Properties</h2></div></div></div><p>
- The properties on a hal device object can be used to express
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3553"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>tape.major</TT
+> (int)
+ </TD
+><TD
+>example: 254</TD
+><TD
+>Yes</TD
+><TD
+>The device's major number</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>tape.minor</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>The device's minor number</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-policy"
+>2.4. Policy Properties</A
+></H2
+><P
+>&#13; The properties on a hal device object can be used to express
certain policies about how the device is to be used. This
information can be used by either programs querying hal
directly or by hal callouts. Default policy (e.g. always
mount a file system with the option 'exec') can also be
merged on the root computer device object.
- </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-storage-policy-default"></a>
- <code class="literal">storage.policy.default</code> namespace
- </h3></div></div></div><p>
- This namespace specifies the default policy for storage
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage-policy-default"
+>2.4.1. <TT
+CLASS="literal"
+>storage.policy.default</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace specifies the default policy for storage
devices - these properties should be merged on the root computer
device object.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">storage.policy.default.use_managed_keyword</code> (string)
- </td><td> </td><td>No</td><td>
- Whether to use a <span class="emphasis"><em>managed no
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3581"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.default.use_managed_keyword</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Whether to use a <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>managed no
operation
- </em></span>
+ </I
+></SPAN
+>
keyword when adding entries to
- the File Systems file (<code class="literal">/etc/fstab</code>) -
+ the File Systems file (<TT
+CLASS="literal"
+>/etc/fstab</TT
+>) -
this is used to identify entries added by a program
that modifies this file.
- </td></tr><tr><td>
- <code class="literal">storage.policy.default.managed_keyword.primary</code> (string)
- </td><td>Example: 'managed'</td><td>No</td><td>No-op keyword to use when adding entries to the file systems file</td></tr><tr><td>
- <code class="literal">storage.policy.default.managed_keyword.secondary</code> (string)
- </td><td>Example: 'kudzu'</td><td>No</td><td>
- Secondary no-op keyword that identifies entries added
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.default.managed_keyword.primary</TT
+> (string)
+ </TD
+><TD
+>Example: 'managed'</TD
+><TD
+>No</TD
+><TD
+>No-op keyword to use when adding entries to the file systems file</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.default.managed_keyword.secondary</TT
+> (string)
+ </TD
+><TD
+>Example: 'kudzu'</TD
+><TD
+>No</TD
+><TD
+>&#13; Secondary no-op keyword that identifies entries added
to the file systems file. The secondary keyword is never
written; only read. This is useful when making a transition
from one managed keyword to another.
- </td></tr><tr><td>
- <code class="literal">storage.policy.default.mount_option.*</code> (bool)
- </td><td>Examples:
- <code class="literal">.noauto</code>,
- <code class="literal">.exec</code>,
- <code class="literal">.console</code>,
- <code class="literal">.fscontext=system_u:object_r:removable_t</code>
- </td><td>No</td><td>
- This is actually an entire namespace that specifies
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.default.mount_option.*</TT
+> (bool)
+ </TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>.noauto</TT
+>,
+ <TT
+CLASS="literal"
+>.exec</TT
+>,
+ <TT
+CLASS="literal"
+>.console</TT
+>,
+ <TT
+CLASS="literal"
+>.fscontext=system_u:object_r:removable_t</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; This is actually an entire namespace that specifies
what options a storage device should be mounted with,
- e.g. the example <code class="literal">.exec</code> should be read as
- <code class="literal">storage.policy.default.mount_option.exec</code>
- </td></tr><tr><td>
- <code class="literal">storage.policy.default.mount_root</code> (string)
- </td><td>
- Example: <code class="literal">/media</code>
- </td><td>No</td><td>
- The default mount root to use when computing what
+ e.g. the example <TT
+CLASS="literal"
+>.exec</TT
+> should be read as
+ <TT
+CLASS="literal"
+>storage.policy.default.mount_option.exec</TT
+>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.default.mount_root</TT
+> (string)
+ </TD
+><TD
+>&#13; Example: <TT
+CLASS="literal"
+>/media</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The default mount root to use when computing what
mount point to use for a storage device
- </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-storage-policy"></a>
- <code class="literal">storage.policy</code> namespace
- </h3></div></div></div><p>
- This namespace contains properties that can be merged on
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage-policy"
+>2.4.2. <TT
+CLASS="literal"
+>storage.policy</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace contains properties that can be merged on
individual storage devices to specify how and if the storage
device should be mounted.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">storage.policy.should_mount</code> (bool)
- </td><td> </td><td>No</td><td>Whether any volumes from this storage device
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3633"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.should_mount</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Whether any volumes from this storage device
should be mounted
- </td></tr><tr><td>
- <code class="literal">storage.policy.desired_mount_point</code> (string)
- </td><td> </td><td>
- No (only applicable if the
- property <code class="literal">storage.no_partitions_hint</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.desired_mount_point</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; No (only applicable if the
+ property <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+>
is set to TRUE)
- </td><td>
- The desired mount point for this storage device. The
+ </TD
+><TD
+>&#13; The desired mount point for this storage device. The
path must not be fully qualified and there is no
guarantee that and storage policy agents, such as
policy mount wrappers or programs modifying the file
systems file will use this mount point.
- </td></tr><tr><td>
- <code class="literal">storage.policy.mount_option.*</code> (bool)
- </td><td> </td><td>
- No (only applicable if the
- property <code class="literal">storage.no_partitions_hint</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.mount_option.*</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; No (only applicable if the
+ property <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+>
is set to TRUE)
- </td><td>
- Mount options to use, see property
- <code class="literal">storage.policy.default.mount_option.*</code>
+ </TD
+><TD
+>&#13; Mount options to use, see property
+ <TT
+CLASS="literal"
+>storage.policy.default.mount_option.*</TT
+>
for details.
- </td></tr><tr><td>
- <code class="literal">storage.policy.mount_filesystem</code> (string)
- </td><td> </td><td>
- No (only applicable if the
- property <code class="literal">storage.no_partitions_hint</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>storage.policy.mount_filesystem</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; No (only applicable if the
+ property <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+>
is set to TRUE)
- </td><td>File system to use when mounting the storage device.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="device-properties-volume-policy"></a>
- <code class="literal">volume.policy</code> namespace
- </h3></div></div></div><p>
- This namespace contains properties that can be merged on
+ </TD
+><TD
+>File system to use when mounting the storage device.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-volume-policy"
+>2.4.3. <TT
+CLASS="literal"
+>volume.policy</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace contains properties that can be merged on
individual volumes to specify how and if the volume
should be mounted.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">volume.policy.should_mount</code> (bool)
- </td><td> </td><td>No</td><td>Whether this volume should be mounted at all</td></tr><tr><td>
- <code class="literal">volume.policy.mount_filesystem</code> (string)
- </td><td> </td><td>No</td><td>File system to use when mounting the volume.</td></tr><tr><td>
- <code class="literal">volume.policy.desired_mount_point</code> (string)
- </td><td> </td><td>No</td><td>
- The desired mount point for this volume. The
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3674"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.policy.should_mount</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Whether this volume should be mounted at all</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.policy.mount_filesystem</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>File system to use when mounting the volume.</TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.policy.desired_mount_point</TT
+> (string)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The desired mount point for this volume. The
path must not be fully qualified and there is no
guarantee that and storage policy agents, such as
policy mount wrappers or programs modifying the file
systems file will use this mount point.
- </td></tr><tr><td>
- <code class="literal">volume.policy.mount_option.*</code> (bool)
- </td><td> </td><td>No</td><td>
- Mount options to use, see property
- <code class="literal">storage.policy.default.mount_option.*</code>
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>volume.policy.mount_option.*</TT
+> (bool)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Mount options to use, see property
+ <TT
+CLASS="literal"
+>storage.policy.default.mount_option.*</TT
+>
for details.
- </td></tr></tbody></table></div></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="spec-device-info"></a>Chapter 3. Device Information Files</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#fdi-facts">Facts about devices</a></span></dt><dd><dl><dt><span class="sect2"><a href="#fdi-example-mp3player">Example: MP3 player</a></span></dt><dt><span class="sect2"><a href="#fdi-example-camera">Example: Digital Still Camera</a></span></dt><dt><span class="sect2"><a href="#fdi-example-6in1">Example: Card Reader</a></span></dt></dl></dd><dt><span class="sect1"><a href="#fdi-policy">Policy settings for devices</a></span></dt><dd><dl><dt><span class="sect2"><a href="#fdi-example-mountsetting">Storage Devices</a></span></dt></dl></dd></dl></div><p>
- Device information files (<code class="literal">.fdi</code> files is a
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="spec-device-info"
+></A
+>Chapter 3. Device Information Files</H1
+><P
+>&#13; Device information files (<TT
+CLASS="literal"
+>.fdi</TT
+> files is a
shorthand) are used to merge arbitrary properties onto device
objects. The way device information files works is that once all
physical properties are merged onto a device object it is tried
against the set of installed device information files. Device
information files are used for both merging facts and policy
settings about devices.
- </p><p>
- Each device information file got a number of
- <code class="literal">&lt;match key="some_property"
- [string|int|bool|..]="required_value" &gt;
- </code>
+ </P
+><P
+>&#13; Each device information file got a number of
+ <TT
+CLASS="literal"
+>&#60;match key="some_property"
+ [string|int|bool|..]="required_value" &#62;
+ </TT
+>
directives
that is tested against the properties of the device object. If
all the match directives passes then the device information can
- include <code class="literal">&lt;[merge|append|prepend] key="some_property"
- type="[string|int|bool|..]"&gt;
- </code>
+ include <TT
+CLASS="literal"
+>&#60;[merge|append|prepend] key="some_property"
+ type="[string|int|bool|..]"&#62;
+ </TT
+>
directives to
respectively merge new properties or append to existing
properties on the device object. It's important to emphasize
that any previously property stemming from device detection can
be overridden by a device information file.
- </p><p>
- The <code class="literal">&lt;match&gt;</code>,
- <code class="literal">&lt;merge&gt;</code>, <code class="literal">&lt;append&gt;</code>
- and <code class="literal">&lt;prepend&gt;</code> directives always requires
- the <code class="literal">key</code> attribute which must be either a
+ </P
+><P
+>&#13; The <TT
+CLASS="literal"
+>&#60;match&#62;</TT
+>,
+ <TT
+CLASS="literal"
+>&#60;merge&#62;</TT
+>, <TT
+CLASS="literal"
+>&#60;append&#62;</TT
+>
+ and <TT
+CLASS="literal"
+>&#60;prepend&#62;</TT
+> directives always requires
+ the <TT
+CLASS="literal"
+>key</TT
+> attribute which must be either a
property name on the device object in question or a path to a
property on another device object. The latter case is expressed
either through direct specification of the UDI, such as
- <code class="literal">/org/freedesktop/Hal/devices/computer:foo.bar</code>
+ <TT
+CLASS="literal"
+>/org/freedesktop/Hal/devices/computer:foo.bar</TT
+>
or indirect references such as
- <code class="literal">@info.parent:baz</code> where the latter means that
+ <TT
+CLASS="literal"
+>@info.parent:baz</TT
+> where the latter means that
the device object specified by the UDI in the string property
- <code class="literal">info.parent</code> should be used to query the
- property <code class="literal">baz</code>. It is also possible to use
+ <TT
+CLASS="literal"
+>info.parent</TT
+> should be used to query the
+ property <TT
+CLASS="literal"
+>baz</TT
+>. It is also possible to use
multiple indirections, e.g. for a volume on a USB memory stick
- the indirection <code class="literal">@block.storage_device:@storage.physical_device:usb.vendor_id</code>
- will reference the <code class="literal">usb.vendor_id</code> property
+ the indirection <TT
+CLASS="literal"
+>@block.storage_device:@storage.physical_device:usb.vendor_id</TT
+>
+ will reference the <TT
+CLASS="literal"
+>usb.vendor_id</TT
+> property
on the device object representing the USB interface.
- </p><p>
- When the property to match have been determined a number of
- attributes can be used within the <code class="literal">&lt;match&gt;</code>
+ </P
+><P
+>&#13; When the property to match have been determined a number of
+ attributes can be used within the <TT
+CLASS="literal"
+>&#60;match&#62;</TT
+>
tag:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- <code class="literal">string</code> - match a string property; for example
- <code class="literal">&lt;match key="foo.bar" string="baz"&gt;</code>
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>string</TT
+> - match a string property; for example
+ <TT
+CLASS="literal"
+>&#60;match key="foo.bar" string="baz"&#62;</TT
+>
will match only if 'foo.bar' is a string property assuming the value 'baz'.
- </p></li><li><p>
- <code class="literal">int</code> - match an integer property
- </p></li><li><p>
- <code class="literal">uint64</code> - match property with the 64-bit unsigned type
- </p></li><li><p>
- <code class="literal">bool</code> - match a boolean property
- </p></li><li><p>
- <code class="literal">double</code> - match a property of type double
- </p></li><li><p>
- <code class="literal">exists</code> - used as
- <code class="literal">&lt;match key="foo.bar" exists="true"&gt;</code>. Can be used with
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>int</TT
+> - match an integer property
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>uint64</TT
+> - match property with the 64-bit unsigned type
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>bool</TT
+> - match a boolean property
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>double</TT
+> - match a property of type double
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>exists</TT
+> - used as
+ <TT
+CLASS="literal"
+>&#60;match key="foo.bar" exists="true"&#62;</TT
+>. Can be used with
'true' and 'false' respectively to match when a property exists and it doesn't.
- </p></li><li><p>
- <code class="literal">empty</code> - can only be used on string properties
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>empty</TT
+> - can only be used on string properties
with 'true' and 'false'.
The semantics for 'true' is to match only when the string is non-empty.
- </p></li><li><p>
- <code class="literal">is_absolute_path</code> - matches only when a string
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>is_absolute_path</TT
+> - matches only when a string
property represents an absolute path (the path doesn't have to exist).
Can be used with 'true' or 'false'.
- </p></li><li><p>
- <code class="literal">is_ascii</code> - matches only when a string property
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>is_ascii</TT
+> - matches only when a string property
contain only ASCII characters. Can be used with 'true' or 'false'.
- </p></li><li><p>
- <code class="literal">compare_lt</code> - can be used on int, uint64, double
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_lt</TT
+> - can be used on int, uint64, double
and string properties to compare with a constant.
Matches when the given property is less than the given constant
using the default ordering.
- </p></li><li><p>
- <code class="literal">compare_le</code> - like <code class="literal">compare_lt</code>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_le</TT
+> - like <TT
+CLASS="literal"
+>compare_lt</TT
+>
but matches when less than or equal.
- </p></li><li><p>
- <code class="literal">compare_gt</code> - like <code class="literal">compare_lt</code>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_gt</TT
+> - like <TT
+CLASS="literal"
+>compare_lt</TT
+>
but matches when greater than.
- </p></li><li><p>
- <code class="literal">compare_ge</code> - like <code class="literal">compare_lt</code>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_ge</TT
+> - like <TT
+CLASS="literal"
+>compare_lt</TT
+>
but matches when greater than or equal.
- </p></li><li><p>
- <code class="literal">contains</code> - can only be used with string and
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>contains</TT
+> - can only be used with string and
strlist (string list).
For a string key this matches when the property contains the given
(sub-)string. For a string list this match if the given string match
a item of the list.
- </p></li><li><p>
- <code class="literal">contains_ncase</code> - like <code class="literal">contains</code>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>contains_ncase</TT
+> - like <TT
+CLASS="literal"
+>contains</TT
+>
but the property and the given key are converted to lowercase before check.
- </p></li></ul></div><p>
- The <code class="literal">&lt;merge&gt;</code>, <code class="literal">&lt;append&gt;</code>
- and <code class="literal">&lt;prepend&gt;</code> directives all require
- the <code class="literal">type</code> attribute which specifies what to
+ </P
+></LI
+></UL
+>
+ The <TT
+CLASS="literal"
+>&#60;merge&#62;</TT
+>, <TT
+CLASS="literal"
+>&#60;append&#62;</TT
+>
+ and <TT
+CLASS="literal"
+>&#60;prepend&#62;</TT
+> directives all require
+ the <TT
+CLASS="literal"
+>type</TT
+> attribute which specifies what to
merge. The following values are supported
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- <code class="literal">string</code> - The value is copied to the property. For example
- <code class="literal">&lt;merge key="foo.bar" type="string"&gt;baz&lt;/merge&gt;</code>
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>string</TT
+> - The value is copied to the property. For example
+ <TT
+CLASS="literal"
+>&#60;merge key="foo.bar" type="string"&#62;baz&#60;/merge&#62;</TT
+>
will merge the value 'baz' into the property 'foo.bar'.
- </p></li><li><p>
- <code class="literal">strlist</code> - For <code class="literal">&lt;merge&gt;</code> the value is
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>strlist</TT
+> - For <TT
+CLASS="literal"
+>&#60;merge&#62;</TT
+> the value is
copied to the property and the current property will be overwritten. For
- <code class="literal">&lt;append&gt;</code> and <code class="literal">&lt;prepend&gt;</code> the
+ <TT
+CLASS="literal"
+>&#60;append&#62;</TT
+> and <TT
+CLASS="literal"
+>&#60;prepend&#62;</TT
+> the
value is append or prepend to the list as new item.
- </p></li><li><p>
- <code class="literal">bool</code> - Can merge the values 'true' or 'false'
- </p></li><li><p>
- <code class="literal">int</code> - Merges an integer
- </p></li><li><p>
- <code class="literal">uint64</code> - Merges an unsigned 64-bit integer
- </p></li><li><p>
- <code class="literal">double</code> - Merges a double precision floating point number
- </p></li><li><p>
- <code class="literal">copy_property</code> - Copies the value of a given
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>bool</TT
+> - Can merge the values 'true' or 'false'
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>int</TT
+> - Merges an integer
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>uint64</TT
+> - Merges an unsigned 64-bit integer
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>double</TT
+> - Merges a double precision floating point number
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>copy_property</TT
+> - Copies the value of a given
property - supports paths with direct and indirect UDI's. For example
- <code class="literal">&lt;merge key="foo.bar" type="copy_property"&gt;@info.parent:baz.bat&lt;/merge&gt;</code>
- will merge the value of the property <code class="literal">baz.bat</code> on the device object with the UDI from
- the property <code class="literal">info.parent</code> into the property <code class="literal">foo.bar</code> on
+ <TT
+CLASS="literal"
+>&#60;merge key="foo.bar" type="copy_property"&#62;@info.parent:baz.bat&#60;/merge&#62;</TT
+>
+ will merge the value of the property <TT
+CLASS="literal"
+>baz.bat</TT
+> on the device object with the UDI from
+ the property <TT
+CLASS="literal"
+>info.parent</TT
+> into the property <TT
+CLASS="literal"
+>foo.bar</TT
+> on
the device object being processed.
- </p></li></ul></div><p>
- The <code class="literal">&lt;remove&gt;</code>, directive require only a key and can be used with all keys.
- For <code class="literal">strlist</code> there is additionally a special syntax to remove a item from the
+ </P
+></LI
+></UL
+>
+ The <TT
+CLASS="literal"
+>&#60;remove&#62;</TT
+>, directive require only a key and can be used with all keys.
+ For <TT
+CLASS="literal"
+>strlist</TT
+> there is additionally a special syntax to remove a item from the
string list. For example to remove item 'bla' from property 'foo.bar':
- <code class="literal">&lt;remove key="foo.bar" type="strlist"&gt;bla&lt;/merge&gt;</code>
- </p><p>
- Device Information files are stored in the following standard hierachy with the following default
- top level directories <code class="literal">information</code>, <code class="literal">policy</code> and
- <code class="literal">preprobe</code>:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- <code class="literal">information</code> - device information files to merge device information
- </p><div class="itemizedlist"><ul type="circle"><li><p>
- <code class="literal">10freedesktop</code> - device information files included with
+ <TT
+CLASS="literal"
+>&#60;remove key="foo.bar" type="strlist"&#62;bla&#60;/merge&#62;</TT
+>
+ </P
+><P
+>&#13; Device Information files are stored in the following standard hierachy with the following default
+ top level directories <TT
+CLASS="literal"
+>information</TT
+>, <TT
+CLASS="literal"
+>policy</TT
+> and
+ <TT
+CLASS="literal"
+>preprobe</TT
+>:
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>information</TT
+> - device information files to merge device information
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>10freedesktop</TT
+> - device information files included with
the hal tarball
- </p></li><li><p>
- <code class="literal">20thirdparty</code> - device information files from the device
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>20thirdparty</TT
+> - device information files from the device
manufacturer and installed from media accompanying the hardware
- </p></li><li><p>
- <code class="literal">30user</code> - device information for specific devices
- </p></li></ul></div><p>
- </p></li><li><p>
- <code class="literal">policy</code> - device information files to merge policy propertys
- </p><div class="itemizedlist"><ul type="circle"><li><p>
- <code class="literal">10osvendor</code> - device information files included with the
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>30user</TT
+> - device information for specific devices
+ </P
+></LI
+></UL
+>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>policy</TT
+> - device information files to merge policy propertys
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>10osvendor</TT
+> - device information files included with the
hal tarball and supplied by the operating system vendor for policy rules
- </p></li><li><p>
- <code class="literal">20thirdparty</code> - Policy rules from the device
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>20thirdparty</TT
+> - Policy rules from the device
manufacturer and installed from media accompanying the hardware
- </p></li><li><p>
- <code class="literal">30user</code> - Policy rules for specific devices
- </p></li></ul></div><p>
- </p></li><li><p>
- <code class="literal">preprobe</code> - device information files to information before probe devices
- </p><div class="itemizedlist"><ul type="circle"><li><p>
- <code class="literal">10osvendor</code> - device information files included with the
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>30user</TT
+> - Policy rules for specific devices
+ </P
+></LI
+></UL
+>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>preprobe</TT
+> - device information files to information before probe devices
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>10osvendor</TT
+> - device information files included with the
hal tarball and supplied by the operating system vendor
- </p></li><li><p>
- <code class="literal">20thirdparty</code> - device information files from the device
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>20thirdparty</TT
+> - device information files from the device
manufacturer and installed from media accompanying the hardware
- </p></li><li><p>
- <code class="literal">30user</code> - device information for specific devices
- </p></li></ul></div><p>
- </p></li></ul></div><p>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>30user</TT
+> - device information for specific devices
+ </P
+></LI
+></UL
+>
+ </P
+></LI
+></UL
+>
All device information files are matched for every hal device object.
- </p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="fdi-facts"></a>Facts about devices</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="fdi-example-mp3player"></a>Example: MP3 player</h3></div></div></div><pre class="programlisting">
- <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" href="../conf/match-USB-mp3-player.fdi"></a>
- </pre><p>
- The final set of properties look like this:
- </p><p>
- <img src="hal-fdi-example2.png">
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="fdi-example-camera"></a>Example: Digital Still Camera</h3></div></div></div><pre class="programlisting">
- <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" href="../conf/match-USB-camera.fdi"></a>
- </pre><p>
- The final set of properties look like this:
- </p><p>
- <img src="hal-fdi-example1.png">
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="fdi-example-6in1"></a>Example: Card Reader</h3></div></div></div><pre class="programlisting">
- <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" href="../conf/match-cardreader.fdi"></a>
- </pre><p>
- As described in the documentation for the
- <code class="literal">storage.physical_device</code> property in
- <a href="#device-properties-storage" title="
- storage namespace
- ">the section called &#8220;
- <code class="literal">storage</code> namespace
- &#8221;</a> this device information
+ </P
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="fdi-facts"
+>3.1. Facts about devices</A
+></H2
+><DIV
+CLASS="sect2"
+><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-mp3player"
+>3.1.1. Example: MP3 player</A
+></H3
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;!-- Example: This device information file matches an USB Mass Storage based MP3 player
+ by the matching on the USB vendor and product identifiers. --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+ &#60;device&#62;
+ &#60;match key="info.bus" string="usb"&#62;
+ &#60;match key="usb.vendor_id" int="0x066f"&#62;
+ &#60;match key="usb.product_id" int="0x8000"&#62;
+ &#60;merge key="info.category" type="string"&#62;portable_audio_player&#60;/merge&#62;
+ &#60;merge key="info.capabilities" type="string"&#62;portable_audio_player&#60;/merge&#62;
+ &#60;merge key="portable_audio_player.access_method" type="string"&#62;storage&#60;/merge&#62;
+ &#60;merge key="portable_audio_player.output_formats" type="string"&#62;audio/mpeg audio/x-ms-wma&#60;/merge&#62;
+ &#60;merge key="portable_audio_player.input_formats" type="string"&#62;audio/x-wav&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+&#60;/deviceinfo&#62;
+ </PRE
+><P
+>&#13; The final set of properties look like this:
+ </P
+><P
+>&#13; <IMG
+SRC="hal-fdi-example2.png">
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-camera"
+>3.1.2. Example: Digital Still Camera</A
+></H3
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;!-- Example: This device information file matches a Sony digital still
+ camera by matching on the USB vendor and product identifers. --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+ &#60;device&#62;
+ &#60;match key="info.bus" string="usb"&#62;
+ &#60;match key="usb.vendor_id" int="0x054c"&#62;
+ &#60;match key="usb.product_id" int="0x0010"&#62;
+ &#60;merge key="info.category" type="string"&#62;camera&#60;/merge&#62;
+ &#60;merge key="info.capabilities" type="string"&#62;camera&#60;/merge&#62;
+ &#60;merge key="camera.access_method" type="string"&#62;storage&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+&#60;/deviceinfo&#62;
+ </PRE
+><P
+>&#13; The final set of properties look like this:
+ </P
+><P
+>&#13; <IMG
+SRC="hal-fdi-example1.png">
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-6in1"
+>3.1.3. Example: Card Reader</A
+></H3
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;!-- Example: This device information file matches a memory card reader with
+ multiple storage ports that can be active at the same time. --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+ &#60;device&#62;
+ &#60;match key="storage.bus" string="usb"&#62;
+ &#60;match key="@storage.physical_device:usb.vendor_id" int="0x0424"&#62;
+ &#60;match key="@storage.physical_device:usb.product_id" int="0x20fc"&#62;
+ &#60;match key="storage.lun" int="0"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;compact_flash&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;match key="storage.lun" int="1"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;memory_stick&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;match key="storage.lun" int="2"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;smart_media&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;match key="storage.lun" int="3"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;sd_mmc&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+&#60;/deviceinfo&#62;
+ </PRE
+><P
+>&#13; As described in the documentation for the
+ <TT
+CLASS="literal"
+>storage.physical_device</TT
+> property in
+ <A
+HREF="#device-properties-storage"
+>Section 2.3.4</A
+> this device information
file export information about each storage port through the
- property <code class="literal">storage.drive_type</code>. Thus, one
- of the four <code class="literal">storage</code> devices has the
+ property <TT
+CLASS="literal"
+>storage.drive_type</TT
+>. Thus, one
+ of the four <TT
+CLASS="literal"
+>storage</TT
+> devices has the
following properties that are merged from the device object
that the device information file targets:
- </p><p>
- <img src="hal-fdi-example3.png">
- </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="fdi-policy"></a>Policy settings for devices</h2></div></div></div><p>
- Policy settings specifies system specific settings that a
+ </P
+><P
+>&#13; <IMG
+SRC="hal-fdi-example3.png">
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="fdi-policy"
+>3.2. Policy settings for devices</A
+></H2
+><P
+>&#13; Policy settings specifies system specific settings that a
system administrator associates with a device instance. In the
context of hal, this can be expressed in terms of device
properties merged on the device object in question. Default
policy can also be merged on the root computer device object.
- </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="fdi-example-mountsetting"></a>Storage Devices</h3></div></div></div><p>
- Policy for storage devices is expressed in the
- <code class="literal">storage.policy.default</code>,
- <code class="literal">storage.policy</code> and
- <code class="literal">volume.policy</code> namespaces, see
- <a href="#properties-policy" title="Policy Properties">the section called &#8220;Policy Properties&#8221;</a>
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-mountsetting"
+>3.2.1. Storage Devices</A
+></H3
+><P
+>&#13; Policy for storage devices is expressed in the
+ <TT
+CLASS="literal"
+>storage.policy.default</TT
+>,
+ <TT
+CLASS="literal"
+>storage.policy</TT
+> and
+ <TT
+CLASS="literal"
+>volume.policy</TT
+> namespaces, see
+ <A
+HREF="#properties-policy"
+>Section 2.4</A
+>
for details.
- </p><pre class="programlisting">
- <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" href="../conf/storage-policy-examples.fdi"></a>
- </pre></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="examples"></a>Chapter 4. Examples and other stuff</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#callouts">Callouts</a></span></dt><dt><span class="sect1"><a href="#dbus-api">D-BUS Network API</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2942932">Interface org.freedesktop.Hal.Manager</a></span></dt><dt><span class="sect2"><a href="#id2968014">Interface org.freedesktop.Hal.Device</a></span></dt></dl></dd><dt><span class="sect1"><a href="#enforcing-policy">Enforcing Policy</a></span></dt><dd><dl><dt><span class="sect2"><a href="#enforcing-stor-vol">Storage Devices</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="callouts"></a>Callouts</h2></div></div></div><p>
- Callouts are programs invoked when the device object list is
+ </P
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+
+ &#60;!-- Example: Match volumes from an external USB harddisk enclosure by
+ matching on vendor and model. Use mount points
+
+ my_usbdisk_part_&#60;partition-number&#62;
+
+ NB: some drives (ieee1394 based IIRC) even export the
+ property storage.serial, the unique serial number of the
+ disk which is a better match --&#62;
+ &#60;device&#62;
+ &#60;match key="block.is_volume" bool="true"&#62;
+ &#60;match key="volume.fsusage" string="filesystem"&#62;
+ &#60;match key="@block.storage_device:storage.vendor" string="ST360021"&#62;
+ &#60;match key="@block.storage_device:storage.model" string="A"&#62;
+ &#60;merge key="volume.policy.desired_mount_point" type="string"&#62;my_usbdisk_partition_&#60;/merge&#62;
+ &#60;append key="volume.policy.desired_mount_point" type="copy_property"&#62;volume.partition.number&#60;/append&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+
+ &#60;!-- Example: Match a volume from an USB Storage Based mp3 player
+ by the file system UUID and assign a mount point.
+
+ NB: When reformatting the volume a new UUID will be
+ used and this rule will have to be altered --&#62;
+ &#60;device&#62;
+ &#60;match key="block.is_volume" bool="true"&#62;
+ &#60;match key="volume.fsusage" string="filesystem"&#62;
+ &#60;match key="volume.uuid" string="4150-3F34"&#62;
+ &#60;merge key="volume.policy.desired_mount_point" type="string"&#62;my_mp3_player&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+
+&#60;/deviceinfo&#62;
+ </PRE
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="examples"
+></A
+>Chapter 4. Examples and other stuff</H1
+><DIV
+CLASS="sect1"
+><H2
+CLASS="sect1"
+><A
+NAME="callouts"
+>4.1. Callouts</A
+></H2
+><P
+>&#13; Callouts are programs invoked when the device object list is
modified. As such, callouts can be used to maintain system-wide
policy (that may be specific to the particular OS) such as
changing permissions on device nodes, updating the systemwide
- <code class="literal">/etc/fstab</code> file or configuring the networking
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file or configuring the networking
subsystem.
- </p><p>
- There are three different classes of callouts. A callout
+ </P
+><P
+>&#13; There are three different classes of callouts. A callout
involves sequentially invoking all executable programs in the
string list in listed order.
- </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Key (type)</th><th>Values</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>
- <code class="literal">info.callouts.add</code> (string list)
- </td><td> </td><td>No</td><td>
- A string list with all programmes/callouts which should be
- executed (with <code class="literal">HALD_ACTION=add</code>) when the device
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3908"
+></A
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL><COL><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.callouts.add</TT
+> (string list)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string list with all programmes/callouts which should be
+ executed (with <TT
+CLASS="literal"
+>HALD_ACTION=add</TT
+>) when the device
is added to the GDL (global device list) but just before it is
announced through the D-BUS network API.
- </td></tr><tr><td>
- <code class="literal">info.callouts.remove</code> (string list)
- </td><td> </td><td>No</td><td>
- A string list with all programmes/callouts which should be
- executed (with <code class="literal">HALD_ACTION=remove</code>) when the
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.callouts.remove</TT
+> (string list)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string list with all programmes/callouts which should be
+ executed (with <TT
+CLASS="literal"
+>HALD_ACTION=remove</TT
+>) when the
device is removed from the GDL (global device list). The device
isn't removed before the last callout has finished.
- </td></tr><tr><td>
- <code class="literal">info.callouts.preprobe</code> (string list)
- </td><td> </td><td>No</td><td>
- A string list with all programmes/callouts which should be
- executed (with <code class="literal">HALD_ACTION=preprobe</code>) before
+ </TD
+></TR
+><TR
+><TD
+>&#13; <TT
+CLASS="literal"
+>info.callouts.preprobe</TT
+> (string list)
+ </TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string list with all programmes/callouts which should be
+ executed (with <TT
+CLASS="literal"
+>HALD_ACTION=preprobe</TT
+>) before
the device is added to the GDL (global device list) and before
- the callouts from <code class="literal">info.callouts.add</code> are executed.
- </td></tr></tbody></table></div><p>
- All callouts execute in the same environment as which the HAL
+ the callouts from <TT
+CLASS="literal"
+>info.callouts.add</TT
+> are executed.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; All callouts execute in the same environment as which the HAL
daemon was started. In addition, the UDI of the device object is
- exported in the environment variable <code class="literal">UDI</code>. All
+ exported in the environment variable <TT
+CLASS="literal"
+>UDI</TT
+>. All
properties of the device object are exported in the environment
- prefixed with <code class="literal">HAL_</code>. If a device is added or
- removed is exported in the environment variable <code class="literal">HALD_ACTION
- </code>
- ,if HAL is in shutdown mode the variable <code class="literal">
- HALD_SHUTDOWN
- </code>
+ prefixed with <TT
+CLASS="literal"
+>HAL_</TT
+>. If a device is added or
+ removed is exported in the environment variable <TT
+CLASS="literal"
+>HALD_ACTION
+ </TT
+>
+ ,if HAL is in shutdown mode the variable <TT
+CLASS="literal"
+>&#13; HALD_SHUTDOWN
+ </TT
+>
is set to environment.
- </p><p>
- The HAL daemon isn't suspended while callouts are executing. Thus,
+ </P
+><P
+>&#13; The HAL daemon isn't suspended while callouts are executing. Thus,
callouts can communicate with the HAL daemon using the D-BUS network
API. Hence, one application of callouts is to merge or modify
properties on a device object.
- </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="dbus-api"></a>D-BUS Network API</h2></div></div></div><p>
- The HAL daemon is a system-wide process that keeps track of a
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="dbus-api"
+>4.2. D-BUS Network API</A
+></H2
+><P
+>&#13; The HAL daemon is a system-wide process that keeps track of a
number of device objects. It communicates with the operating
system and intercepts hotplug events as devices are plugged in
and removed. The daemon is also responsible for providing
@@ -2733,25 +12138,49 @@
perform generic operations on them such as obtaining exclusive
access. Non-generic operations, such as obtaining pictures from
a camera device, is outside the scope of the HAL daemon; see
- <a href="#using-devices" title="Using devices">the section called &#8220;Using devices&#8221;</a>
+ <A
+HREF="#using-devices"
+>Section 1.7</A
+>
for more information.
- </p><p>
- HAL has the concept of device stores. When a device is detected
+ </P
+><P
+>&#13; HAL has the concept of device stores. When a device is detected
it is placed in the TDL (temporary device list) and then properties
are merged from several sources including device information files
and possibly callouts. Eventually, the device transitions to the
GDL (global device list) and first then it becomes ''visible'' for
desktop applications.
- </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2942932"></a>Interface org.freedesktop.Hal.Manager</h3></div></div></div><p>
- Using D-BUS terminology, the HAL daemon provides the D-BUS
- service <code class="literal">org.freedesktop.Hal</code>. This service
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="AEN3950"
+>4.2.1. Interface org.freedesktop.Hal.Manager</A
+></H3
+><P
+>&#13; Using D-BUS terminology, the HAL daemon provides the D-BUS
+ service <TT
+CLASS="literal"
+>org.freedesktop.Hal</TT
+>. This service
offers a D-BUS object at a well-known
- location <code class="literal">/org/freedesktop/Hal/Manager</code>. This
+ location <TT
+CLASS="literal"
+>/org/freedesktop/Hal/Manager</TT
+>. This
object offers a D-BUS
- interface, <code class="literal">org.freedesktop.Hal.Manager</code>, for
+ interface, <TT
+CLASS="literal"
+>org.freedesktop.Hal.Manager</TT
+>, for
querying device objects with the following methods:
- </p><pre class="programlisting">
-# Return a list of all devices in the GDL
+ </P
+><PRE
+CLASS="programlisting"
+>&#13;# Return a list of all devices in the GDL
#
# @return List of UDI's
#
@@ -2776,13 +12205,22 @@ array{string} FindDeviceStringMatch(string key, string value)
# @return Array of UDI's, may be empty
#
array{string} FindDeviceByCapability(string capability)
- </pre><p>
- This object also emits the following signals on the
- <code class="literal">/org/freedesktop/Hal/Manager</code> object on the
- <code class="literal">org.freedesktop.Hal.Manager</code> interface that
+ </PRE
+><P
+>&#13; This object also emits the following signals on the
+ <TT
+CLASS="literal"
+>/org/freedesktop/Hal/Manager</TT
+> object on the
+ <TT
+CLASS="literal"
+>org.freedesktop.Hal.Manager</TT
+> interface that
applications can subscribe to using D-BUS:
- </p><pre class="programlisting">
-# Notification that a new device have been added to the GDL
+ </P
+><PRE
+CLASS="programlisting"
+>&#13;# Notification that a new device have been added to the GDL
#
# @param udi Unique Device Id
#
@@ -2799,14 +12237,61 @@ void DeviceRemoved(string udi)
# @param udi Unique Device Id
#
void NewCapability(string udi, string capability)
- </pre><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2967973"></a>Example</h4></div></div></div><p>
- The following brief Python program demonstrates some of the API
- </p><pre class="programlisting">
- <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" href="example-manager.py"></a>
- </pre><p>
- which gives the following output
- </p><pre class="programlisting">
-Found device /org/freedesktop/Hal/devices/block_TORiSAN DVD-ROM DRD-U624-00000000000000000001-disc
+ </PRE
+><DIV
+CLASS="sect3"
+><HR><H4
+CLASS="sect3"
+><A
+NAME="AEN3961"
+>4.2.1.1. Example</A
+></H4
+><P
+>&#13; The following brief Python program demonstrates some of the API
+ </P
+><PRE
+CLASS="programlisting"
+>&#13; #!/usr/bin/python
+
+import gtk
+import dbus
+
+def device_added(interface, signal_name, service, path, message):
+ [udi] = message.get_args_list ()
+ print 'Device %s was added'%udi
+
+def device_removed(interface, signal_name, service, path, message):
+ [udi] = message.get_args_list ()
+ print 'Device %s was removed'%udi
+
+
+bus = dbus.Bus (dbus.Bus.TYPE_SYSTEM)
+hal_service = bus.get_service ('org.freedesktop.Hal')
+hal_manager = hal_service.get_object ('/org/freedesktop/Hal/Manager',
+ 'org.freedesktop.Hal.Manager')
+
+devices = hal_manager.GetAllDevices ()
+for d in devices:
+ print 'Found device %s'%d
+
+bus.add_signal_receiver (device_added,
+ 'DeviceAdded',
+ 'org.freedesktop.Hal.Manager',
+ 'org.freedesktop.Hal',
+ '/org/freedesktop/Hal/Manager')
+bus.add_signal_receiver (device_removed,
+ 'DeviceRemoved',
+ 'org.freedesktop.Hal.Manager',
+ 'org.freedesktop.Hal',
+ '/org/freedesktop/Hal/Manager')
+gtk.main()
+ </PRE
+><P
+>&#13; which gives the following output
+ </P
+><PRE
+CLASS="programlisting"
+>&#13;Found device /org/freedesktop/Hal/devices/block_TORiSAN DVD-ROM DRD-U624-00000000000000000001-disc
Found device /org/freedesktop/Hal/devices/block_TORiSAN DVD-ROM DRD-U624-00000000000000000001
Found device /org/freedesktop/Hal/devices/block_37332a77-105e-4e76-8e99-27d3746e0531
Found device /org/freedesktop/Hal/devices/block_3_2
@@ -2839,18 +12324,38 @@ Device /org/freedesktop/Hal/devices/usbif_usb_46d_c001_410_-1_noserial_0 was add
(remove USB mouse)
Device /org/freedesktop/Hal/devices/usb_46d_c001_410_-1_noserial was removed
Device /org/freedesktop/Hal/devices/usbif_usb_46d_c001_410_-1_noserial_0 was removed
- </pre><p>
- </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2968014"></a>Interface org.freedesktop.Hal.Device</h3></div></div></div><p>
- Applications use
- the <code class="literal">org.freedesktop.Hal.Manager</code> interface to
+ </PRE
+><P
+>&#13; </P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="AEN3969"
+>4.2.2. Interface org.freedesktop.Hal.Device</A
+></H3
+><P
+>&#13; Applications use
+ the <TT
+CLASS="literal"
+>org.freedesktop.Hal.Manager</TT
+> interface to
locate the device objects they are interested in. When a device
object (which is really a D-BUS object, note that the UDI is the
objects object_path) is obtained, the HAL daemon provides the
- <code class="literal">org.freedesktop.Hal.Device</code> interface on the
+ <TT
+CLASS="literal"
+>org.freedesktop.Hal.Device</TT
+> interface on the
object denoted by the UDI. This interface has the following
methods
- </p><pre class="programlisting">
-# Set property
+ </P
+><PRE
+CLASS="programlisting"
+>&#13;# Set property
#
# @param key Property to set
# @param value Value to set
@@ -2928,12 +12433,15 @@ void Lock(string reason)
# org.freedesktop.Hal.PermissionDenied
#
void Unlock()
- </pre><p>
- The device objects also emits the following signals on the
+ </PRE
+><P
+>&#13; The device objects also emits the following signals on the
org.freedesktop.Hal interface that applications can subscribe to
using D-BUS
- </p><pre class="programlisting">
-# Notification that property have been modified
+ </P
+><PRE
+CLASS="programlisting"
+>&#13;# Notification that property have been modified
#
# @param key Property
# @param added True iff the property have been added
@@ -2948,43 +12456,137 @@ void PropertyModified(string key, bool added, bool removed)
# @param condition Name of condition
# @param ... Dependent on the condition name
void Condition(string condition, ...)
- </pre><p>
- Note that D-BUS supports that applications can opt to receive
+ </PRE
+><P
+>&#13; Note that D-BUS supports that applications can opt to receive
signals for only a subset of the devices available.
- </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="enforcing-policy"></a>Enforcing Policy</h2></div></div></div><p>
- Notwithstanding the fact that HAL avoids to enforce any policy,
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="enforcing-policy"
+>4.3. Enforcing Policy</A
+></H2
+><P
+>&#13; Notwithstanding the fact that HAL avoids to enforce any policy,
it is useful to have a minimal set of guidelines such that
applications using HAL written for one operating system can
easily run on another. This section contains recommendations
about how to enforce policy to achieve that goal.
- </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="enforcing-stor-vol"></a>Storage Devices</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="stor-vol-policy"></a>Policy for Volumes and Storage devices</h4></div></div></div><p>
- The properties in the <code class="literal">storage.policy</code>,
- <code class="literal">volume.policy</code> and
- <code class="literal">storage.policy.default</code> namespaces should
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="enforcing-stor-vol"
+>4.3.1. Storage Devices</A
+></H3
+><DIV
+CLASS="sect3"
+><H4
+CLASS="sect3"
+><A
+NAME="stor-vol-policy"
+>4.3.1.1. Policy for Volumes and Storage devices</A
+></H4
+><P
+>&#13; The properties in the <TT
+CLASS="literal"
+>storage.policy</TT
+>,
+ <TT
+CLASS="literal"
+>volume.policy</TT
+> and
+ <TT
+CLASS="literal"
+>storage.policy.default</TT
+> namespaces should
be the preferred way to determine how and if a filesystem
- can be mounted. See <a href="#properties-policy" title="Policy Properties">the section called &#8220;Policy Properties&#8221;</a>
+ can be mounted. See <A
+HREF="#properties-policy"
+>Section 2.4</A
+>
for details.
- </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="enforcing-storage-fstab"></a>File systems file</h4></div></div></div><p>
- An operating system vendor should maintain the
- <code class="literal">/etc/fstab</code> file through the HAL callout
+ </P
+></DIV
+><DIV
+CLASS="sect3"
+><HR><H4
+CLASS="sect3"
+><A
+NAME="enforcing-storage-fstab"
+>4.3.1.2. File systems file</A
+></H4
+><P
+>&#13; An operating system vendor should maintain the
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file through the HAL callout
mechanism such that device objects of capability
- <code class="literal">volume</code> and <code class="literal">storage</code> has
+ <TT
+CLASS="literal"
+>volume</TT
+> and <TT
+CLASS="literal"
+>storage</TT
+> has
a corresponding entry if applicable cf.
- <a href="#stor-vol-policy" title="Policy for Volumes and Storage devices">the section called &#8220;Policy for Volumes and Storage devices&#8221;</a>
+ <A
+HREF="#stor-vol-policy"
+>Section 4.3.1.1</A
+>
.
- </p><p>
- The reasoning behind this is, among other things, to
- maintain the invariant that <code class="literal">/etc/fstab</code>
+ </P
+><P
+>&#13; The reasoning behind this is, among other things, to
+ maintain the invariant that <TT
+CLASS="literal"
+>/etc/fstab</TT
+>
list all available filesystems. In addition
- the <code class="literal">mount(1)</code> program should enable users
+ the <TT
+CLASS="literal"
+>mount(1)</TT
+> program should enable users
without superuser privileges to mount filesystems mentioned
- in the <code class="literal">/etc/fstab</code> file as long as they
- have the <code class="literal">user</code> option set.
- </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="enforcing-storage-locking"></a>Disabling policy agents</h4></div></div></div><p>
- Policy agents like volume mounters should ignore when media
+ in the <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file as long as they
+ have the <TT
+CLASS="literal"
+>user</TT
+> option set.
+ </P
+></DIV
+><DIV
+CLASS="sect3"
+><HR><H4
+CLASS="sect3"
+><A
+NAME="enforcing-storage-locking"
+>4.3.1.3. Disabling policy agents</A
+></H4
+><P
+>&#13; Policy agents like volume mounters should ignore when media
is inserted into a drive that is locked by another
application. Thus, CD burning applications should lock the
device to disable auto mounting or automatic start of the
users preferred CD burning application when respectively
non-blank rewritable or blank media is inserted.
- </p></div></div></div></div></div></body></html>
+ </P
+></DIV
+></DIV
+></DIV
+></DIV
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file