Название: собственная реализация hotplug на с++ Отправлено: igor_bogomolov от Июль 16, 2009, 20:13 Приветствую всех.
Как реализавать собственную программу "горячего" обнаружения устройств в системе (hotplug). Задача чисто абстрактная, не привязанная, пока, ни к каким конкретным устройствам и интерфейсам. Т.е. нужно реализовать некий абстрактный интерфейс и набор классов, используя которые в дальнейшем можно будет описать реальные устройства с различными интерфейсами, которые можно подключать/отключать во время работы прораммы, которая в свою очередь все это коректно отслеживала. Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю) Мне нужно продумать уровень абстракции. Но я не знаю с чего начать, нет опыта. Какую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования??? Помогите с идейками. Не знаю с какого конца браться. Название: Re: собственная реализация hotplug на с++ Отправлено: Rcus от Июль 16, 2009, 20:19 Ну для начала посмотреть как это работает в существующих решениях, например kdelibs/Solid
Название: Re: собственная реализация hotplug на с++ Отправлено: igor_bogomolov от Июль 16, 2009, 21:25 Огромное спасибо за ссылку, то что надо. Буду разбираться.
P.S. Если есть еще какие мысли, буду очень признателен. Название: Re: собственная реализация hotplug на с++ Отправлено: Alex Custov от Июль 16, 2009, 21:48 В linux есть Hardware Abstraction Layer - HAL (http://www.linux.org.ru/wiki/en/HAL)
Название: Re: собственная реализация hotplug на с++ Отправлено: lit-uriy от Июль 16, 2009, 22:10 >>В linux есть Hardware Abstraction Layer - HAL
это сильно низкий уровень, Игорю нужен прикладной, для работы некой софтины с промоборудованием. Название: Re: собственная реализация hotplug на с++ Отправлено: Alex Custov от Июль 16, 2009, 22:26 >>В linux есть Hardware Abstraction Layer - HAL это сильно низкий уровень, Игорю нужен прикладной, для работы некой софтины с промоборудованием. это как раз довольно высокий уровень. Получить список оборудования и делать обнаружение новых устройств он может, следовательно на его основе можно написать что-то своё. На нём сделано автообнаружение устройств в KDE3, когда выскакивает диалог с выбором действий в зависимости от вставленного устройства. По-мойму как раз оно. Название: Re: собственная реализация hotplug на с++ Отправлено: lit-uriy от Июль 16, 2009, 23:57 AX, вполне возможно, я про него (HAL) лишь читал.
Название: Re: собственная реализация hotplug на с++ Отправлено: kuzulis от Июль 17, 2009, 07:49 1. вот тут есть альтернатива HAL : http://broadcast.oreilly.com/2009/02/vl-hot-a-non-polling-alternati.html
2. можно использовать udev Это что касаемо Linux Что касаемо винды - может из реестра брать инфу? Не? Ешё по HAL есть примеры на ЛОР Цитировать Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю) а зачем что-то придумывать - если это уже все есть? все поддерживается самими ОС ! Зачем писать новое приложение? Я не понял шот! :) и тут нужно еще писать свой драйвер ... Название: Re: собственная реализация hotplug на с++ Отправлено: Авварон от Июль 17, 2009, 08:15 udev более низкий уровень по сравнению с HAL'ом.
Название: Re: собственная реализация hotplug на с++ Отправлено: lit-uriy от Июль 17, 2009, 08:25 а ему только линух и надо.
Название: Re: собственная реализация hotplug на с++ Отправлено: igor_bogomolov от Июль 17, 2009, 17:59 а зачем что-то придумывать - если это уже все есть? все поддерживается самими ОС ! Зачем писать новое приложение? Я не понял шот! :) Есть набор оборудования (плат) собственного производства. Они объединяются в некую единую систему. В эту систему входит также встраеваемая процессорная плата, на которой установлена ос Linux. Посредством некоторых интерфейсов (I2C, MPI(это даже и не знаю пока что за интерфейс) и еще может какие будут), мы можем получать доступ к нашему оборудованию. Сам Linux про это оборудование ничего не знает и определить их не может. Вот и стоит задача написания некой собственной реализации hotplug. На данный момент нужно абстрогироваться от конкренной реализации оборудования и интерфейсов. Надо построить некую абстрактную архетиктуру, которую дальше можно будет расширять уже конкретной реализацией. Цитата: igor_bogomolov Мне нужно продумать уровень абстракции. Но я не знаю с чего начать, нет опыта. Какую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования ? ? ? Буду рад любой помощи.Название: Re: собственная реализация hotplug на с++ Отправлено: Rcus от Июль 17, 2009, 18:13 oh... а я наивно полагал что вопрос касается юзерленда
Название: Re: собственная реализация hotplug на с++ Отправлено: kuzulis от Июль 17, 2009, 20:26 Цитировать Сам Linux про это оборудование ничего не знает и определить их не может. Так для этого нужно написать драйвер, создайте правила , и все должно получится :)К примеру FM тюнеры через I2C вроде управляются. Может есть смысл в этом направлении посмотреть (т.е как реализовано там)? Цитировать (I2C, MPI(это даже и не знаю пока что за интерфейс) и еще может какие будут), так может все на PCI будет висетьПопахивает системным программированием ИМХО :) |