Russian Qt Forum
Ноябрь 24, 2024, 00:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: собственная реализация hotplug на с++  (Прочитано 7275 раз)
igor_bogomolov
Гость
« : Июль 16, 2009, 20:13 »

Приветствую всех.
Как реализавать собственную программу "горячего" обнаружения устройств в системе (hotplug).

Задача чисто абстрактная, не привязанная, пока, ни к каким конкретным устройствам и интерфейсам.
Т.е. нужно реализовать некий абстрактный интерфейс и набор классов, используя которые в дальнейшем можно будет описать реальные устройства с различными интерфейсами, которые можно подключать/отключать во время работы прораммы, которая в свою очередь все это коректно отслеживала.

Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю)

Мне  нужно продумать уровень абстракции. Но я не знаю с чего начать, нет опыта. Какую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования???

Помогите с идейками. Не знаю с какого конца браться.
Записан
Rcus
Гость
« Ответ #1 : Июль 16, 2009, 20:19 »

Ну для начала посмотреть как это работает в существующих решениях, например kdelibs/Solid
Записан
igor_bogomolov
Гость
« Ответ #2 : Июль 16, 2009, 21:25 »

Огромное спасибо за ссылку, то что надо. Буду разбираться.
P.S. Если есть еще какие мысли, буду очень признателен.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Июль 16, 2009, 21:48 »

В linux есть Hardware Abstraction Layer - HAL
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Июль 16, 2009, 22:10 »

>>В linux есть Hardware Abstraction Layer - HAL
это сильно низкий уровень, Игорю нужен прикладной, для работы некой софтины с промоборудованием.
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Июль 16, 2009, 22:26 »

>>В linux есть Hardware Abstraction Layer - HAL
это сильно низкий уровень, Игорю нужен прикладной, для работы некой софтины с промоборудованием.

это как раз довольно высокий уровень. Получить список оборудования и делать обнаружение новых устройств он может, следовательно на его основе можно написать что-то своё. На нём сделано автообнаружение устройств в KDE3, когда выскакивает диалог с выбором действий в зависимости от вставленного устройства. По-мойму как раз оно.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Июль 16, 2009, 23:57 »

AX, вполне возможно, я про него (HAL) лишь читал.
Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #7 : Июль 17, 2009, 07:49 »

1. вот тут есть альтернатива HAL : http://broadcast.oreilly.com/2009/02/vl-hot-a-non-polling-alternati.html
2. можно использовать udev

Это что касаемо Linux

Что касаемо винды - может из реестра брать инфу? Не?

Ешё по HAL есть примеры на ЛОР

Цитировать
Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю)

а зачем что-то придумывать - если это уже все есть?  все поддерживается самими ОС ! Зачем писать новое приложение? Я не понял шот! Улыбающийся

и тут нужно еще писать свой драйвер ...
« Последнее редактирование: Июль 17, 2009, 07:58 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Июль 17, 2009, 08:15 »

udev более низкий уровень по сравнению с HAL'ом.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #9 : Июль 17, 2009, 08:25 »

а ему только линух и надо.
Записан

Юра.
igor_bogomolov
Гость
« Ответ #10 : Июль 17, 2009, 17:59 »

а зачем что-то придумывать - если это уже все есть?  все поддерживается самими ОС ! Зачем писать новое приложение? Я не понял шот! Улыбающийся
Есть набор оборудования (плат) собственного производства. Они объединяются в некую единую систему. В эту систему входит также встраеваемая процессорная плата, на которой установлена ос Linux. Посредством некоторых интерфейсов (I2C, MPI(это даже и не знаю пока что за интерфейс) и еще может какие будут), мы можем получать доступ к нашему оборудованию. Сам Linux про это оборудование ничего не знает и определить их не может. Вот и стоит задача написания некой собственной реализации hotplug.   

На данный момент нужно абстрогироваться от конкренной реализации оборудования и интерфейсов. Надо построить некую абстрактную архетиктуру, которую дальше можно будет расширять уже конкретной реализацией.

Цитата: igor_bogomolov
Мне  нужно продумать уровень абстракции. Но я не знаю с чего начать, нет опыта. Какую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования ? ? ?
Буду рад любой помощи.
Записан
Rcus
Гость
« Ответ #11 : Июль 17, 2009, 18:13 »

oh... а я наивно полагал что вопрос касается юзерленда
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #12 : Июль 17, 2009, 20:26 »

Цитировать
Сам Linux про это оборудование ничего не знает и определить их не может.
Так для этого нужно написать драйвер, создайте правила , и все должно получится Улыбающийся

К примеру FM тюнеры через I2C вроде управляются. Может есть смысл в этом направлении посмотреть (т.е как реализовано там)?
Цитировать
(I2C, MPI(это даже и не знаю пока что за интерфейс) и еще может какие будут),
так может все на PCI будет висеть

Попахивает системным программированием ИМХО Улыбающийся
« Последнее редактирование: Июль 17, 2009, 20:31 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.