Jakie są typowe lub zwykłe interfejsy API (lub biblioteki) w C lub C ++ dla Internetu Rzeczy, w sensie posiadania dokumentacji, zestawu interfejsów programistycznych? (Podobnie jak np. POSIX jest dla systemów operacyjnych, Qt dla GUI itp.).
Ta krótka strona motywuje moje pytanie (jestem zainteresowany opracowaniem narzędzi do analizy statycznego kodu źródłowego na potrzeby Internetu Rzeczy). Szukam nie tylko standardów prawnych, ale także powszechnie używanych interfejsów API lub bibliotek - w C lub C ++, z istniejącymi plikami nagłówkowymi - w różnych domenach przemysłowych. Nie interesują mnie interfejsy API sieci Web (konwencje definiujące niektóre żądania HTTP) ani tylko protokoły sieciowe bez interfejsu API lub biblioteki je wdrażających.
(więc nie jestem zainteresowany tworzeniem aplikacji IoT, ale chcę opracować narzędzia inżynierii oprogramowania działające i analizujące kod źródłowy, aby pomóc programistom oprogramowania IoT)
Mogłyby mnie nawet zainteresować specyficzne dla branży interfejsy API lub biblioteki IoT, np. W służbie zdrowia, logistyce, transporcie, inteligentnych sieciach, inteligentnych budynkach itp .; pod warunkiem, że jest to interfejs API lub biblioteka C lub C ++.
Należę do grupy badawczej zajmującej się statyczną analizą kodu źródłowego i chcielibyśmy opracować narzędzia analizujące kod źródłowy C lub C ++, aby pomóc twórcy oprogramowania IoT.
Muszę jednak znaleźć sposób na sfinansowanie, zanim zacznę nad tym pracować.
Sugerujemy opracowanie specjalistycznego narzędzia (najlepiej open source, powyżej istniejących technologii), dla programistów i inżynierów piszących kod źródłowy (w C, C ++ i Adzie, jeśli to konieczne ...) ukierunkowanych na platformy IoT. To narzędzie zostanie zintegrowane z docelowym zestawem programistycznym. To narzędzie może pomóc twórcom oprogramowania IoT w analizie i sprawdzeniu poprawności kodu źródłowego względem reguł kodowania, niezmienników i dobrych praktyk specyficznych dla tych platform oprogramowania. Głównym celem jest poprawa jakości oprogramowania i przyspieszenie czasu wprowadzania na rynek. W razie potrzeby narzędzie może przeprowadzić optymalizację kodu źródłowego w celu zwiększenia wydajności oprogramowania i / lub zmniejszenia rozmiaru kodu.
NB Ta strona IoT Eclipse wymienia kilka standardów. Interesują mnie interfejsy API i biblioteki implementujące je (i każdy inny de facto standard specyficzny dla domeny IoT), jeśli warto opracować dla nich analizatory kodu źródłowego.
źródło
Odpowiedzi:
Basile, myślę, że brakuje nam tutaj dobrego rozróżnienia.
Kiedy mówisz o Posix jak standard IoT, myślę, że mówisz o bibliotekach, które zawierają protokół.
Jako osoba zatrudniona od dziesięcioleci ( kaszel ) wdrażających stosy protokołów do telefonii i komunikacji satelitarnej, mogę powiedzieć (jak zapewne wiesz), że protokoły te są, w razie potrzeby, ściśle określone. Na przykład Zigbee jest zarządzany przez https://en.wikipedia.org/wiki/IEEE_802.15.4
Normy te określają komunikaty, które mają być przesyłane, i określają, że bajt 0 oznacza to, bajty od 1 do 4 oznaczają, że itd., Dzięki czemu urządzenia różnych producentów mogą się ze sobą komunikować (w każdym razie taka jest teoria; mógłbym powiedzieć trochę przerażenia historie ;-)
Jak powiedziałem, dla każdego protokołu może istnieć mnóstwo producentów. I dla każdego producenta może istnieć wiele bibliotek oprogramowania, co jest twoim problemem.
Twoje zadanie jest zbyt trudne, dopóki dostępnych jest wiele APIS, które owijają każdy protokół.
Niestety interfejs API podobny do Posix będzie istniał tylko wtedy, gdy jedna firma stanie się dominująca. Może istnieć niewielka możliwość, jeśli duży rząd rzuci na to dużo pieniędzy, ale nie widzę, żeby tak się działo. Jedyna inna szansa, że jako wysiłek podobny do Linuksa przez społeczność Open Source.
Przy okazji, nie sądzę, żebyś wyjaśnił wystarczająco jasno, że nie będzie to tylko kolejny analizator kodu statycznego, że nie jest on przeznaczony do ogólnego kodu, ale do niektórych konkretnych interfejsów API. Mówisz to w pewnym sensie, ale nie wystarczająco wyraźnie, przez IMO. Kiedy dokładnie to zdefiniujesz, będziesz wiedział, jaki naprawdę jest twój projekt. Jeśli już wiesz, nie wydajesz się tego podkreślać (ale może nie czytam wystarczająco dobrze, pospiesznie między dwoma spotkaniami).
Składnia interfejsów API POSIX jest kontrolowana przez kompilator, podobnie jak składnia wszystkich interfejsów API, które badasz. Sądzę więc, że szukasz potencjalnie niebezpiecznego kodu, takiego jak użycie ujednoliconych zasobów, nie zwolnienie przydzielonych zasobów itp. - Czy to prawda?
Brzmi to jednak jak świetny projekt, a ja wybrałem to pytanie.
źródło
Standardy różnych protokołów sieciowych są już dobrze zdefiniowane. Wygląda na to, że chcesz znaleźć interfejs API implementujący standardowe zachowania związane z urządzeniami IoT. Coś jak funkcja Light (), która może włączać, wyłączać lub przyciemniać światła do ułamka ich jasności; DoorSensor (), które można uzbroić lub rozbroić, lub zarejestrować się w celu powiadomienia o zdarzeniach otwierania drzwi lub zamykania drzwi; coś w tym rodzaju. Nie znam jednak żadnej biblioteki API, która nie jest specyficzna dla aplikacji.
Jeśli ktoś go ma, możesz znaleźć coś w Domoticzu . Jest to kontroler automatyki domowej typu open source napisany w C ++.
źródło
Jako szybką odpowiedź nie sądzę, że dla IoT istnieje specjalny typ biblioteki, powiedziałbym, że IoT to w zasadzie „ nowe systemy wbudowane ”, po prostu zmienili nazwę i dodali połączenie z chmurą.
Odpowiadając na to, czego używam do programowania w C ++, moja strona referencyjna to http://www.cplusplus.com/
Zasadniczo do IoT potrzebujesz bibliotek komunikacyjnych , niezależnie od używanego protokołu (USB, TCP / IP, UDP, ZigBee itp.)
Ponadto, jeśli masz komunikację, potrzebujesz bezpieczeństwa / szyfrowania .
Reszta zależeć będzie od tego, jaką część sprzętu kontrolujesz lub mierzysz. Będziesz potrzebował bibliotek (API / Firmware) dla takiego sprzętu .
Z pewnością brakuje mi wielu rzeczy ... zobaczmy odpowiedzi innych
źródło
Wbudowana, bezpieczna komunikacja, obsługa administracyjna (zarządzanie urządzeniami) oraz aktualizacje OTA. Jest to duży pakiet oprogramowania, który pojawia się również jako nowy rodzaj platformy do rozwoju.
Istnieje kilku dostawców rozwiązań chmurowych, zwykle będą mieli własne interfejsy API klienta i wybrane systemy operacyjne punktów końcowych.
O ile mi wiadomo, różne protokoły bezprzewodowe tak naprawdę nie dyktują żadnego konkretnego stosu oprogramowania, więc twój wybór musi opierać się na dużym obrazie, a nie interfejsach API klienta. Jednym z czynników decydujących może być to, czy open-source jest ważny dla stosu w twojej aplikacji.
źródło
Myślę, że twój cel jest nieco podobny do BOOST:
Zwiększ biblioteki C ++
Ich celem jest ustanowienie „istniejącej praktyki” i zapewnienie referencyjnych implementacji, dzięki czemu biblioteki Boost będą odpowiednie do ostatecznej standaryzacji.
Być może Boost mógłby być ważnym graczem w IoT: z pewnością wprowadził kilka świetnych ulepszeń do C ++.
źródło
IoTivity to referencyjna implementacja specyfikacji OCF . Dokumentację i kod źródłowy można znaleźć w ich repozytorium GitHub .
Z ich listy funkcji :
Ich interfejsy API Framework umożliwiają wykrywanie, przesyłanie danych, zarządzanie danymi (gromadzenie, przechowywanie i analizę) oraz zarządzanie urządzeniami (np. Dostarczanie, diagnostyka) za pomocą różnych protokołów, takich jak Bluetooth, Wi-Fi, ZigBee i Z-Wave.
źródło