crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> собственная реализация hotplug на с++
igor_bogomolov
  опции профиля:
сообщение 16.7.2009, 18:43
Сообщение #1


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 232 раз(а)




Репутация:   29  


Приветствую всех.
На новой работе поставили задачу. Реализавать программу "горячего" обнаружения устройств в системе (hotplug).
Задача чисто абстрактная, не привязанная, пока, ни к каким конкретным устройствам и интерфейсам.
Т.е. нужно реализовать некий абстрактный интерфейс и набор классов, используя которые в дальнейшем можно будет описать реальные устройства с различными интерфейсами, которые можно подключать/отключать во время работы прораммы, которая в свою очередь все это коректно отслеживала.

Помогите с идейками. Не знаю с какого конца браться. :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.7.2009, 18:49
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9631
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


наводящий вопрос:
А зачем? Ведь современные ОС - MS Windows, Mac OS, предоставляют такую функциональность. Да и в линухах automount есть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 16.7.2009, 18:50
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3274
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 220 раз(а)




Репутация:   40  


Какой уровень тебя интересует, на уровне драйверов или простой ввод вывод и опрос системы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 16.7.2009, 19:04
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 232 раз(а)




Репутация:   29  


Цитата(Litkevich Yuriy @ 16.7.2009, 19:49) *
А зачем? Ведь современные ОС - 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  


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

Посмотри на HAL, вроде все уже укра... сделано до нас.
:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.7.2009, 19:17
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9631
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


Ну тогда появляется кое-какая конкретика:
ОС - Линух.

Стало быть нужно почитать про automount в нём, который сравнительно молодой. (родил его некий чувак, который делал то-ли диплом то-ли магистерскую)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 16.7.2009, 19:19
Сообщение #7


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 232 раз(а)




Репутация:   29  


Цитата(ViGOur @ 16.7.2009, 19:50) *
Какой уровень тебя интересует, на уровне драйверов или простой ввод вывод и опрос системы?
На уровне драйверов, это, если я правильно понимаю, уже описание и работа с каким-то конкретным устройством. Это пока для меня рано.
Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю)
Цитата(BRE)
Посмотри на HAL, вроде все уже укра... сделано до нас.
Спасибо за наводку. Только как я понял это уроветь ядра. Мне нужно на уровне обычного приложения (программки на с++).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.7.2009, 19:41
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9631
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


Цитата(igor_bogomolov @ 16.7.2009, 23:19) *
Мне нужно на уровне обычного приложения (программки на с++).
т.е. устройство работает по одному из стандартных физических интерфейсов типа: последовательный порт, USB. Т.е. выводимых наружу компьютера?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 16.7.2009, 19:59
Сообщение #9


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 232 раз(а)




Репутация:   29  


Цитата(Litkevich Yuriy @ 16.7.2009, 20:41) *
т.е. устройство работает по одному из стандартных физических интерфейсов типа: последовательный порт, USB. Т.е. выводимых наружу компьютера?
Компьютер там - это встраиваемая процессорная плата. Иснтерфейсы I2C, MPI (из тех что запомнил). Но это на самом деле не важно. Задача в том и стоит, что нужно абстрогироваться от конкренной реализации оборудования и интерфейсов. Надо построить некую абстрактную архетиктуру, которую дальше можно будет расширять уже конкретной реализацией. На данный момент конкретика не итнересует.
Мне как раз и нужно продумать уровень этой абстракции. Но я не знаю с чего начать, нет опыта. Кокую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.7.2009, 20:42
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9631
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


я думаю тут нужно пройтись по стандартным шаблонам проектирования. Я в них ещё слабо ориентируюсь и названий толком не помню.
Но идея такая:
Есть описатели интерфейсов, есть описатели устройств, которые сидят на данных интерфейсах.
Для описания интерфейсов использовать абстактные фабрики (abstract fabrics), которые регламентируют интерфейс фабрик.
Для описания устройств тоже самое.

Т.е. это из области порождающих шаблонов проектирования
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.9.2017, 11:03