[sisyphus] HAL как настроить?

Alexey Morozov =?iso-8859-1?q?alex-altlinux_=CE=C1_idisys=2Eiae=2Ensk=2Esu?=
Вт Фев 22 12:33:48 MSK 2005


On Sat, Feb 19, 2005 at 01:36:29AM +0300, Yura Zotov wrote:
> Подскажите, пожалуйста, как настраивается HAL? И где вообще к
> нему документация?
Feel the power Luke, trust your schwartz!

Документация по нему - в его конфигурационных файлах
(они XML'ки). Лежат в /usr/share/hal/fdi.

Я немного тормозил, прежде чем понял, как с уровня, скажем,
"тома" (volume) обратиться к свойствам железки,
полчаса медитирования над исходниками дали мне в итоге
такое решение (/usr/share/hal/fdi/95userpolicy/4in1-card-reader.fdi):
------------------8<--->8---------------
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
  <device>
    <match key="info.bus" string="usb">
      <match key="usb.vendor_id" int="0x05e3">
        <match key="usb.product_id" int="0x0760">
          <merge key="storage_lun0.drive_type" type="string">compact_flash</merge>
          <merge key="storage_lun1.drive_type" type="string">memory_stick</merge>
          <merge key="storage_lun2.drive_type" type="string">sd_mmc</merge>
          <merge key="storage_lun3.drive_type" type="string">smart_media</merge>
        </match>
      </match>
    </match>
    <match key="@info.parent:@info.parent:@info.parent:@info.parent:usb.vendor_id" int="0x05e3">
      <match key="@info.parent:@info.parent:@info.parent:@info.parent:usb.product_id" int="0x0760">
        <merge key="volume.policy.desired_mount_point" type="copy_property">@info.parent:storage.drive_type</merge>
      </match>
    </match>
  </device>
</deviceinfo>
------------------8<--->8---------------
То есть, в первой части мы даем "названия типов" различным типам слотов
(это, в силу некоторой "магической логики" HAL можно сделать прямо с
"уровня устройства".

Во второй части мы, находясь на уровне volume (самом нижнем),
проверяем есть ли у нашего "пра-пра-дедушки в дереве устройств"
свойство usb.vendor_id равное 0x05e3 итп, и, если все хорошо,
то копируем родительское свойство drive_type себе в свойство
volume.policy.desired_mount_point (относительно /media, тоже
конфигурируется где-то в недрах /usr/share/hal/fdi).

Возможно, есть более короткие пути решения поставленной задачи, но я
своей цели достиг, и у меня есть игры поинтереснее FDI-гольфа :-).
Вообще, думается, что поколение XSLT счастливо иметь в качестве конфигов
такую игрушку :-)

Дерево устройств можно глядеть в hal-device-manager, kdevicemanager
(kvm), ну, и верятно, другими способами, там все более-менее просто
устроено в части API.

С уважением, Алексей Морозов.

P.S. Disclaimer: я не уверен в том, что в моем устройств первый слот
соответствует memory stick, а 3-ий - smart media, проверять не на чем.
CF'ки и SD-шки - точно на месте :-).

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20050222/2ccf3c26/attachment-0003.bin>


Подробная информация о списке рассылки Sisyphus