собственная реализация hotplug на с++ |
Здравствуйте, гость ( Вход | Регистрация )
собственная реализация hotplug на с++ |
igor_bogomolov |
16.7.2009, 18:43
Сообщение
#1
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Приветствую всех.
На новой работе поставили задачу. Реализавать программу "горячего" обнаружения устройств в системе (hotplug). Задача чисто абстрактная, не привязанная, пока, ни к каким конкретным устройствам и интерфейсам. Т.е. нужно реализовать некий абстрактный интерфейс и набор классов, используя которые в дальнейшем можно будет описать реальные устройства с различными интерфейсами, которые можно подключать/отключать во время работы прораммы, которая в свою очередь все это коректно отслеживала. Помогите с идейками. Не знаю с какого конца браться. |
|
|
Litkevich Yuriy |
16.7.2009, 18:49
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
наводящий вопрос:
А зачем? Ведь современные ОС - MS Windows, Mac OS, предоставляют такую функциональность. Да и в линухах automount есть. |
|
|
ViGOur |
16.7.2009, 18:50
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Какой уровень тебя интересует, на уровне драйверов или простой ввод вывод и опрос системы?
|
|
|
igor_bogomolov |
16.7.2009, 19:04
Сообщение
#4
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
А зачем? Ведь современные ОС - MS Windows, Mac OS, предоставляют такую функциональность. Да и в линухах automount есть. Есть набор оборудования (плат) собственного производства. Все они посредством неких интерфейсов (I2C, MPI, еще какие-то, ) объеденены в одну систему которая управляеся (или на которую установлена) Linux. Все эти платы могут выниматься, и подключаться во время работы системы. Вот и нужно реализавать свою систему Plug and Play, а точнее HotPlug. На данный момент нужно понимание как все это организовать. Нужен чисто абстрактный интерфейс, не привязанный к конкретное реализации оборудований, который в дальнейшем можно будет легко расширять конкретное реализаций оборудования.Рад буду любым идеям, как реализовать подобный интерфейс. Сам пока не знаю с чего начать ((( |
|
|
BRE |
16.7.2009, 19:07
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Litkevich Yuriy |
16.7.2009, 19:17
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Ну тогда появляется кое-какая конкретика:
ОС - Линух. Стало быть нужно почитать про automount в нём, который сравнительно молодой. (родил его некий чувак, который делал то-ли диплом то-ли магистерскую) |
|
|
igor_bogomolov |
16.7.2009, 19:19
Сообщение
#7
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Какой уровень тебя интересует, на уровне драйверов или простой ввод вывод и опрос системы? На уровне драйверов, это, если я правильно понимаю, уже описание и работа с каким-то конкретным устройством. Это пока для меня рано. Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю) Цитата(BRE) Посмотри на HAL, вроде все уже укра... сделано до нас. Спасибо за наводку. Только как я понял это уроветь ядра. Мне нужно на уровне обычного приложения (программки на с++).
|
|
|
Litkevich Yuriy |
16.7.2009, 19:41
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
igor_bogomolov |
16.7.2009, 19:59
Сообщение
#9
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
т.е. устройство работает по одному из стандартных физических интерфейсов типа: последовательный порт, USB. Т.е. выводимых наружу компьютера? Компьютер там - это встраиваемая процессорная плата. Иснтерфейсы I2C, MPI (из тех что запомнил). Но это на самом деле не важно. Задача в том и стоит, что нужно абстрогироваться от конкренной реализации оборудования и интерфейсов. Надо построить некую абстрактную архетиктуру, которую дальше можно будет расширять уже конкретной реализацией. На данный момент конкретика не итнересует. Мне как раз и нужно продумать уровень этой абстракции. Но я не знаю с чего начать, нет опыта. Кокую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования??? |
|
|
Litkevich Yuriy |
16.7.2009, 20:42
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
я думаю тут нужно пройтись по стандартным шаблонам проектирования. Я в них ещё слабо ориентируюсь и названий толком не помню.
Но идея такая: Есть описатели интерфейсов, есть описатели устройств, которые сидят на данных интерфейсах. Для описания интерфейсов использовать абстактные фабрики (abstract fabrics), которые регламентируют интерфейс фабрик. Для описания устройств тоже самое. Т.е. это из области порождающих шаблонов проектирования |
|
|
Текстовая версия | Сейчас: 27.12.2024, 16:41 |