Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: собственная реализация hotplug на с++
Форум на CrossPlatform.RU > Разработка > С\С++
igor_bogomolov
Приветствую всех.
На новой работе поставили задачу. Реализавать программу "горячего" обнаружения устройств в системе (hotplug).
Задача чисто абстрактная, не привязанная, пока, ни к каким конкретным устройствам и интерфейсам.
Т.е. нужно реализовать некий абстрактный интерфейс и набор классов, используя которые в дальнейшем можно будет описать реальные устройства с различными интерфейсами, которые можно подключать/отключать во время работы прораммы, которая в свою очередь все это коректно отслеживала.

Помогите с идейками. Не знаю с какого конца браться. :unsure:
Litkevich Yuriy
наводящий вопрос:
А зачем? Ведь современные ОС - MS Windows, Mac OS, предоставляют такую функциональность. Да и в линухах automount есть.
ViGOur
Какой уровень тебя интересует, на уровне драйверов или простой ввод вывод и опрос системы?
igor_bogomolov
Цитата(Litkevich Yuriy @ 16.7.2009, 19:49) *
А зачем? Ведь современные ОС - MS Windows, Mac OS, предоставляют такую функциональность. Да и в линухах automount есть.
Есть набор оборудования (плат) собственного производства. Все они посредством неких интерфейсов (I2C, MPI, еще какие-то, ) объеденены в одну систему которая управляеся (или на которую установлена) Linux. Все эти платы могут выниматься, и подключаться во время работы системы. Вот и нужно реализавать свою систему Plug and Play, а точнее HotPlug. На данный момент нужно понимание как все это организовать. Нужен чисто абстрактный интерфейс, не привязанный к конкретное реализации оборудований, который в дальнейшем можно будет легко расширять конкретное реализаций оборудования.

Рад буду любым идеям, как реализовать подобный интерфейс. Сам пока не знаю с чего начать (((
BRE
Цитата(igor_bogomolov @ 16.7.2009, 20:04) *
Рад буду любым идеям, как реализовать подобный интерфейс. Сам пока не знаю с чего начать (((

Посмотри на HAL, вроде все уже укра... сделано до нас.
:)
Litkevich Yuriy
Ну тогда появляется кое-какая конкретика:
ОС - Линух.

Стало быть нужно почитать про automount в нём, который сравнительно молодой. (родил его некий чувак, который делал то-ли диплом то-ли магистерскую)
igor_bogomolov
Цитата(ViGOur @ 16.7.2009, 19:50) *
Какой уровень тебя интересует, на уровне драйверов или простой ввод вывод и опрос системы?
На уровне драйверов, это, если я правильно понимаю, уже описание и работа с каким-то конкретным устройством. Это пока для меня рано.
Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю)
Цитата(BRE)
Посмотри на HAL, вроде все уже укра... сделано до нас.
Спасибо за наводку. Только как я понял это уроветь ядра. Мне нужно на уровне обычного приложения (программки на с++).
Litkevich Yuriy
Цитата(igor_bogomolov @ 16.7.2009, 23:19) *
Мне нужно на уровне обычного приложения (программки на с++).
т.е. устройство работает по одному из стандартных физических интерфейсов типа: последовательный порт, USB. Т.е. выводимых наружу компьютера?
igor_bogomolov
Цитата(Litkevich Yuriy @ 16.7.2009, 20:41) *
т.е. устройство работает по одному из стандартных физических интерфейсов типа: последовательный порт, USB. Т.е. выводимых наружу компьютера?
Компьютер там - это встраиваемая процессорная плата. Иснтерфейсы I2C, MPI (из тех что запомнил). Но это на самом деле не важно. Задача в том и стоит, что нужно абстрогироваться от конкренной реализации оборудования и интерфейсов. Надо построить некую абстрактную архетиктуру, которую дальше можно будет расширять уже конкретной реализацией. На данный момент конкретика не итнересует.
Мне как раз и нужно продумать уровень этой абстракции. Но я не знаю с чего начать, нет опыта. Кокую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования???
Litkevich Yuriy
я думаю тут нужно пройтись по стандартным шаблонам проектирования. Я в них ещё слабо ориентируюсь и названий толком не помню.
Но идея такая:
Есть описатели интерфейсов, есть описатели устройств, которые сидят на данных интерфейсах.
Для описания интерфейсов использовать абстактные фабрики (abstract fabrics), которые регламентируют интерфейс фабрик.
Для описания устройств тоже самое.

Т.е. это из области порождающих шаблонов проектирования
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.