Поширені API в C або C ++ для IoT


9

Які загальні або звичайні API (або бібліотеки) в C або C ++ для IoT, в сенсі наявності документації, набору інтерфейсів програмування? (Як, наприклад, POSIX призначений для операційних систем, Qt - для графічного інтерфейсу тощо).

Ця коротка сторінка мотивує моє запитання (мені цікаво розробити статичний інструмент аналізу вихідного коду для IoT). Я шукаю не тільки юридичні стандарти, але й часто використовувані API-інтерфейси або бібліотеки - в C або C ++, з наявними для них файлами заголовків - у різних галузях промисловості. Мене не цікавлять веб-API (умовності, що визначають деякі HTTP-запити) або просто мережеві протоколи без жодного API чи бібліотеки, що їх реалізують.

(тому мені не цікаво розробляти додатки IoT, але я хочу розробити інструменти інженерії програмного забезпечення, які працюють та аналізують вихідний код, щоб допомогти розробникам програмного забезпечення IoT)

Мене навіть можуть зацікавити конкретні галузеві API-інтерфейси IoT або бібліотеки, наприклад, в галузі охорони здоров'я, логістики, транспорту, розумних мереж, розумних будівель тощо; до тих пір, поки це C або C ++ API або бібліотека.


Я в дослідницькій групі, яка працює над аналізом статичного вихідного коду, і ми хотіли б розробити інструменти, що аналізують C або C ++ вихідний код, щоб допомогти розробнику програмного забезпечення IoT.

Однак мені потрібно знайти спосіб фінансування, перш ніж працювати над цим.

Ми пропонуємо розробити спеціалізований інструмент (бажано, з відкритим кодом, вище існуючих технологій) для розробників та інженерів, які пишуть вихідний код (на C, C ++ та Ada, якщо потрібно ...), орієнтований на IoT-платформи. Цей інструмент буде інтегрований у набір цільових програм для розробки програмного забезпечення. Цей інструмент може допомогти розробнику програмного забезпечення IoT шляхом аналізу та перевірки дійсності вихідного коду щодо правил кодування, інваріантів та передового досвіду, характерних для цих програмних систем. Основна мета - підвищити якість програмного забезпечення та прискорити час виходу на ринок. Якщо це доречно, інструмент може виконувати конкретні оптимізації вихідного коду для підвищення продуктивності програмного забезпечення та / або зменшення розміру коду.


NB. Ця веб-сторінка IoT Eclipse містить декілька стандартів. Мене цікавлять API та бібліотеки, які їх реалізують (та будь-який інший стандарт, який стосується конкретного домену IoT), якщо розробляти аналізатори вихідного коду для них варто.


@Basile Це буде комерційним чи FOSS? У будь-якому випадку, чи є у нас спосіб наслідувати ваш прогрес. Я усвідомлюю, що це може зайняти місяці, а то й роки, тож UTL для перегляду або списку розсилки було б дуже вітається
Мауг каже, що відновити Моніку

Я здебільшого працюю над вільним програмним забезпеченням з десяток років, тож сподіваюся, це буде FOSS. Однак мені потрібно приєднатися до якогось консорціуму (або отримати певний грант на НДДКР чи будь-яке інше фінансування), щоб почати працювати над цим.
Василь Старинкевич

1
Ви маєте на увазі такі речі, як CMSIS? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50

1
MQTT і Mosquitto досить популярні, коли мова йде про IoT. Можливо, API Libmosquitto є хорошою ціллю для вашого аналізатора коду?
Бенс Каулікс

1
Чи є якийсь аспект IoT, зокрема, який вас цікавить? Є комунікаційна сторона, як запропонував Bence Kaulics (MQTT, CoAP, 6LoWPAN тощо) або є цілі платформи IoT, такі як Android Things або Ubuntu IoT . Яку частину ви хочете вирішити?
Aurora0001

Відповіді:


8

Базиле, я думаю, що ми тут не вистачаємо тонкої відзнаки.

Коли ви говорите про стандарт Posix, подібний до IoT, я думаю, що ви говорите про бібліотеки, які містять протокол.

Оскільки той, хто десятиліттями працював ( кашляючи ) впроваджуючи стеки протоколів для телефонії та супутникового зв'язку, я можу сказати (як ви, напевно, знаєте), що ці протоколи, за потребою, вже чітко визначені. Наприклад, Zigbee керується https://en.wikipedia.org/wiki/IEEE_802.15.4

Ці стандарти встановлюють повідомлення, що передаються, і визначають, що байт 0 означає це, байти 1 - 4 означають, що і т. Д., Щоб пристрої з різних виробників могли спілкуватися один з одним (це теорія, все одно; я можу сказати вам якийсь жах історії ;-)

Як я вже говорив, для будь-якого протоколу може бути безліч виробників. І для будь-якого виробника може бути декілька бібліотек програмного забезпечення, що є вашою проблемою.

Ваше завдання є надто складним, якщо існує декілька програм APIS, які обгортають кожен протокол.

На жаль, API, подібний до Posix, буде лише у тому випадку, якщо одна компанія стане домінуючою. Можливо, є велика ймовірність, якщо великий уряд кине на це багато грошей, але я не можу бачити, що це станеться. Єдиний інший шанс я, як Linux, як зусилля спільноти з відкритим кодом.


До речі, я не думаю, що ви досить чітко даєте зрозуміти, що ваш аналіз не буде ще одним аналізатором статичного коду, що він призначений не для загального коду, а для певних конкретних API. Ви це говорите, начебто, але недостатньо явно, ІМО. Коли ви точно визначитеся, ви дізнаєтесь, що насправді є вашим проектом. Якщо ви вже знаєте, ви, здається, не наголошуєте на цьому (але, можливо, я недостатньо добре читаю, кинувся між двома зустрічами).

Синтаксис POSIX API відстежується компілятором, як і синтаксис будь-яких API, які ви вивчаєте. Тож я гадаю, що ви шукаєте потенційно небезпечний код, наприклад, використання нетиматизованих ресурсів, не звільнення виділених ресурсів тощо - це правильно?

Хоча це здається чудовим проектом, і я зняв це питання.


введіть тут опис зображення


1
Мене більше цікавить семантика API (не лише або здебільшого їх синтаксису ). І так, я хотів би проаналізувати код за допомогою цього API для речей, які ви згадуєте (та багато іншого). Наразі це лише груба ідея (і я адаптую її до потреб), і я все ще намагаюся знайти шляхи (зокрема спільні проекти НДДКР), щоб її фінансувати.
Василь Старинкевич,

До речі, приклад Qt показує, що API (і бібліотека) можуть стати важливими і, можливо, домінуючими, навіть не будучи юридичним стандартом.
Василь Старинкевич,

5

Стандарти на різні протоколи мереж уже чітко визначені. Це здається, що ви сподіваєтесь знайти API, що реалізує стандартну поведінку, властиву пристроям IoT. Щось на зразок функції Light (), яка може вмикати, вимикати або затемнювати їх до частки їх яскравості; DoorSensor (), який може бути озброєний або обеззброєний, або може зареєструватися для оповіщення про події, що відкриваються або закриваються двері; така річ. Однак я не знаю жодної бібліотеки API, яка не стосується програми.

Якщо у когось є, ви можете знайти щось у Domoticz . Це контролер домашньої автоматизації з відкритим кодом, написаний на C ++.


5

Як швидка відповідь, я не думаю, що для IoT існує спеціальний тип бібліотеки, я б сказав, що IoT - це в основному " нові вбудовані системи ", вони просто змінили ім'я та додали з'єднання до хмари.

Отже, відповідаючи на те, що я використовую для програмування на C ++, моя довідкова сторінка - http://www.cplusplus.com/

В основному для IoT вам знадобляться бібліотеки зв'язку , незалежно від протоколу, який ви використовуєте (USB, TCP / IP, UDP, ZigBee тощо, тощо)

Крім того, якщо у вас є зв’язок, тоді вам потрібна безпека / шифрування .

А решта буде залежати від того, яку частину обладнання ви контролюєте або вимірюєте. Для такого обладнання вам знадобляться бібліотеки (API / прошивки) .

Звичайно, тут я пропускаю багато речей ... давайте подивимось відповіді інших


2
Отже, ви підтверджуєте мою грубу інтуїцію, що IoT - це лише нове слово для вбудованих обчислень, ймовірно, вбудованих систем Linux?
Базиль Старинкевич

@BasileStarynkevitch Це залежить від класу пристроїв. Фітнес-трекери (на відміну від перегляду розширень телефону, встановлених на телефоні) не працюють під управлінням Linux. Самозабезпечені вузли не працюють під управлінням Linux. Вузли концентраторів, які виконують розподілену сомпуту), ймовірно, запускають Linux. Звідси моя розмова про стек, що простягається від краю до хмари.
Шон Хуліхане

1
Це добре. Отже, які часто використовуються API або бібліотеки на цих пристроях.
Василь Старинкевич

1
Оскільки ZigBee виглядає як мережевий протокол, він виходить за межі сфери. Однак загальнодоступний API на C або C ++, що реалізує ZigBee, було б цікаво
Basile Starynkevitch

4

Вбудований плюс захищена комунікація, плюс забезпечення (управління пристроєм) плюс оновлення OTA. Це великий програмний пакет, а також з'являється як новий тип платформи для розвитку.

Є кілька провайдерів, які пропонують хмарні рішення, вони, як правило, мають власні клієнтські API та обрані операційні системи кінцевих точок.

Наскільки я можу сказати, різні протоколи бездротового зв’язку насправді не диктують конкретний стек програмного забезпечення, тому ваш вибір повинен визначатися великою картиною, а не клієнтськими API. Одним з вирішальних факторів може бути, якщо відкритий код важливий для стека у вашій програмі.


1
Я не розробляю програми IoT, але хочу розробити статичні засоби аналізу вихідного коду на користь розробників програмного забезпечення IoT.
Базиль Старинкевич

1
Гаразд, значить, є (вгадуючи) 4 чи 5 різних стеків, які є релевантними, і вам потрібно розглянути всі вони, якщо ви хочете, щоб наступні два або три стали домінуючими через кілька років.
Шон Хуліхане

1
Про які точні API чи бібліотеки (на C або C ++) ви думаєте? Будь ласка, назвіть їх у своїй відповіді!
Василь Старинкевич

1
якщо ви знаєте якусь команду, яка працює над такими API, будь ласка, надішліть їм моє запитання та вкажіть на них gcc-melt.org/IoT-03-interest-Starynkevitch.html
Василь Старинкевич

3

Я думаю, що ваша мета дещо схожа на BOOST:

Збільшити C ++ Бібліотеки

Вони мають на меті встановити "існуючу практику" та забезпечити реалізацію посилань, щоб бібліотеки Boost були придатними для можливої ​​стандартизації.

Можливо, Boost міг би стати головним гравцем в IoT: він, безумовно, вніс кілька великих вдосконалень у C ++.


1
Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
анонімний2

2

IoTivity - це посилання на реалізацію Специфікації OCF . Ви можете знайти документацію та вихідний код у їх сховищі GitHub .

З їх переліку особливостей :

  • Основна функціональність, написана на С для розгортання на обмежених пристроях
  • Більшість функціональних можливостей доступні на C і C ++

Їх API API дозволяють виявляти, передавати дані, керувати даними (збирання, зберігання та аналіз) та управління пристроями (наприклад, забезпечення, діагностика) через різні протоколи, такі як Bluetooth, Wi-Fi, ZigBee і Z-Wave.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.