28 февр. 2009 г.

Qt4. Работа с usb flash drive с помощью dbus и hal.

Недавно попалась мне подработка часика на 3: реализовать класс на Qt4, который позволил бы отслеживать факты запихивания пользователем флешки в юсб-разъём, подмонтирования оной, а также её отмонтирования и выдёргивания.
Реализовать это всё требовалось с использованием hal.

Соответственно, при подключении девайса получаем информацию о:
  • его udi
  • файле устройства
  • метке тома
  • точке монтирования (если есть)
  • типе носителя (Flash)
  • факте примонтированности
  • readonly?
При отключении устройства, поднимается сигнал, содержащий такую же информацию на момент отключения.
При изменении свойств устройства (иначе говоря, при монтировании), сигнал сообщает параметры устройства до и после изменения.

Погуглив на тему, я обнаружил, что решений столь простой задачи в поле зрения нет.
Но удалось найти небольшую статейку:
http://software.intel.com/en-us/articles/creating-power-aware-applications-on-linux-using-qt4/

В принципе
, прочтения этой статьи + полчасика втыкания/вытыкания флешек с запущенным dbus-monitor достаточно для решения задачи.
Готовый проектик я захостил здесь:
http://code.google.com/p/qusbhal/
Пользуйтесь, люди добрые!)

P.S. Документацию писать к столь небольшому проекту я не стал: разобраться можно минут за 5 с помощью комментариев.