Нет. Ну вот была у меня видеокамера. Что она умеет делать? Снимать фото, снимать видео. Имеет тьму настроек вроде разрешения, выдержки, фокусного расстояния и так далее. Всё эти параметры и действия связанные с их изменением указываются при генерации кода для TANGO-сервера, потом пишется жутко банальные вставки в сгенерированный код навроде (исходников под рукой нет):
int getSnapShot() {
__camera_get_snapshot();
return 0;
}
Если у вас система гетерогенная, то только «велосипед»!
Ещё раз обращаю внимание на то, что решения точно есть. Могу попробовать обрисовать, что предлагает известная мне TANGO.
1. Есть база данных и удобный интерфейс доступа к ней, в которой содержатся информация обо всех устройсвах, представленных в системе. То есть что за устройство, где находится, какие к нему возможны вызовы, какого его внутреннее состояние и так далее.
2. Есть генератор кода для TANGO-серверов. То есть на указываешь как будет называться устройство, какие у него внутренние переменные и какие к нему могут быть вызовы и оно генерит каркас TANGO-сервера. Пример: говоришь, что это «Выключатель» с состояниями ON и OFF. Прописываешь в коде как понять ON она или OFF и всё, к ней уже можно обращаться через TANGO client. То же самое с другими устройствами любой сложности.
3. Не надо думать где запущены какие TANGO-сервера они все доступны с tango-client, запущенного также где угодно. У меня в частности несколько штук были под Linux, а один под Windows, потому что не было драйверов на соответствующую камеру под 'nix.
Как-то так. То есть совсем немного кода надо написать, чтобы был унифицированный протокол доступа к любому устройству.
На данный момент у меня есть IO Board PIO D144, который умеет подавать напряжение/считывать состояние с каждого из своих каналов, к которому прикручены выключатели по всему дому и через управляющие транзисторы — освещение. Никакого специального протокола для управления всей этой бедой нет, всё что есть — это драйвер платы. Но не факт, что я не захочу присоединить какие-то иные устройства к системе, так что нужно что-то модульное и расширяемое.
int getSnapShot() {
__camera_get_snapshot();
return 0;
}