IoT를위한 C 또는 C ++의 공통 API


9

IoT를위한 C 또는 C ++의 공통 또는 일반적인 API (또는 라이브러리)는 문서화, 프로그래밍 인터페이스 세트라는 의미에서 무엇입니까? (예를 들어 POSIX는 운영 체제, Qt는 GUI 등입니다.).

짧은 페이지는 내 질문에 동기를 부여합니다 (IoT 용 정적 소스 코드 분석 도구 개발에 관심이 있습니다). 나는 법적 표준뿐만 아니라 다양한 산업 분야에서 기존 헤더 파일 과 함께 C 또는 C ++에서 일반적으로 사용되는 API 또는 라이브러리를 찾고 있습니다. 웹 API (일부 HTTP 요청을 정의하는 규칙)에 관심이 없거나 API 또는 라이브러리가 구현되지 않은 네트워크 프로토콜에만 관심이 있습니다.

(IoT 응용 프로그램 개발에 관심이 없지만 IoT 소프트웨어 개발자를 돕기 위해 소스 코드 작업 및 분석 소프트웨어 엔지니어링 도구를 개발하고 싶습니다)

헬스 케어, 물류, 운송, 스마트 그리드, 스마트 빌딩 등과 같은 산업별 IoT API 또는 라이브러리에 관심이있을 수도 있습니다. C 또는 C ++ API 또는 라이브러리 인 한.


정적 소스 코드 분석을 연구하는 연구 그룹에 속해 있으며 IoT 소프트웨어 개발자를 돕기 위해 C 또는 C ++ 소스 코드를 분석하는 도구를 개발하고 싶습니다.

그러나이 작업을하기 전에 자금을 조달 할 방법을 찾아야합니다.

IoT 플랫폼을 대상으로하는 소스 코드 (필요한 경우 C, C ++ 및 Ada ...)를 작성하는 개발자 및 엔지니어를 위해 특수 도구 (기존 기술보다 공개 소스가 바람직 함)를 개발할 것을 제안합니다. 이 도구는 대상 소프트웨어 개발 키트에 통합됩니다. 이 도구는 소스 코드의 유효성을 분석하고 이러한 소프트웨어 프레임 워크에 특정한 코딩 규칙, 변형 및 모범 사례에 대해 분석하여 IoT 소프트웨어 개발자를 지원할 수 있습니다. 주요 목표는 소프트웨어 품질을 향상시키고 출시 시간을 단축하는 것입니다. 관련이있는 경우, 툴은 소프트웨어 성능을 향상 시키거나 코드 크기를 줄이기 위해 특정 소스 코드 최적화를 수행 할 수 있습니다.


NB. 이 IoT Eclipse 웹 페이지에는 여러 표준이 나와 있습니다. 소스 코드 분석기를 개발하는 것이 가치가 있다면 API 및 라이브러리 (및 다른 IoT 사실상의 도메인 특정 표준)를 구현하는 데 관심이 있습니다.


@Basile 상업적이거나 FOSS입니까? 어쨌든, 우리가 당신의 진보를 따를 수있는 방법이 있습니까? 나는 UTL 시청하거나 메일 링리스트가 될 수 있도록 매우 환영, 즉 달 또는 몇 년이 걸릴 수 있습니다 실현
Mawg는 분석 재개 모니카 말한다

저는 십여 년이 지난 지금 대부분 자유 소프트웨어 작업을하고 있으므로 FOSS가되기를 바랍니다. 그러나 이에 대한 작업을 시작하려면 일부 컨소시엄에 참여하거나 R & D 보조금 또는 기타 자금을 확보해야합니다.
Basile Starynkevitch

1
CMSIS와 같은 것을 의미합니까? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50

1
MQTT 와 모스키토는 IoT와 관련하여 매우 유명합니다. 아마 Libmosquitto API는 코드 분석기를위한 좋은 대상은?
Bence Kaulics

1
특히 관심있는 IoT의 측면이 있습니까? Bence Kaulics가 제안한 통신 측면 (MQTT, CoAP, 6LoWPAN 등)이 있거나 Android Things 또는 Ubuntu IoT 와 같은 전체 IoT 플랫폼이 있습니다 . 어느 부분을 다루고 싶습니까?
Aurora0001

답변:


8

바 실레, 나는 여기에 좋은 구별이 빠져 있다고 생각합니다.

IoT의 표준과 같은 Posix에 대해 이야기 할 때 프로토콜을 감싸는 라이브러리에 대해 이야기하고 있다고 생각합니다.

전화 통신 및 위성 통신을위한 프로토콜 스택을 구현하는 데 수십 년 동안 ( 기침 ) 근무한 사람으로서 필자는 이러한 프로토콜이 필요에 따라 이미 엄격하게 정의되어 있다고 말할 수 있습니다. 예를 들어, Zigbee는 https://en.wikipedia.org/wiki/IEEE_802.15.4의 적용을받습니다.

이 표준은 전송 될 메시지를 규정하고 바이트 0이이를 의미 함을 정의하고, 바이트 1부터 4까지는 이종 제조업체의 장치가 서로 통신 할 수 있도록하는 등의 의미를 정의합니다 (이론은 이론입니다. 이야기 ;-)

내가 말했듯이, 주어진 프로토콜에 대해 많은 제조가있을 수 있습니다. 특정 제조업체에 대해 여러 소프트웨어 라이브러리가있을 수 있으며 이는 문제입니다.

사용 가능한 여러 API가있어 각 프로토콜을 래핑하는 한 작업이 너무 어렵습니다.

안타깝게도 한 회사가 지배적 인 경우에만 Posix와 유사한 API가 있습니다. 주요 정부가 많은 돈을 버는 경우에는 가능성이 희박하지만, 그런 일이 일어나지 않습니다. 오픈 소스 커뮤니티에서 Linux와 같은 노력을 할 수있는 유일한 기회입니다.


Btw, 나는 당신이 당신의 또 다른 정적 코드 분석기가 아니라 일반 코드를위한 것이 아니라 특정 API를위한 것임을 분명히 밝히지 않는다고 생각합니다. 당신은 IMO의 일종이지만 명시 적으로 충분하지 않다고 말합니다. 정확히 정의하면 프로젝트가 실제로 무엇인지 알 수 있습니다. 당신이 이미 알고 있다면, 당신은 그것을 강조하지 않는 것 같습니다 (그러나 아마도 충분히 읽지 못하고 두 회의 사이에 서두를 것입니다).

POSIX API의 구문은 공부하는 모든 API의 구문과 마찬가지로 컴파일러에 의해 결정됩니다. 따라서 단위 화 된 리소스 사용, 할당 된 리소스 해제 등의 잠재적으로 위험한 코드를 찾고 있다고 생각합니다. 맞습니까?

그러나 훌륭한 프로젝트처럼 들리며이 질문에 별표를 표시했습니다.


여기에 이미지 설명을 입력하십시오


1
API의 의미에 더 관심이 있습니다 ( 구문의 구문 뿐만 아니라 대부분 ). 그리고 네, 언급 한 것들 (그리고 훨씬 더)에 대해 API를 사용하여 코드를 분석하고 싶습니다. 이것은 현재 대략적인 아이디어이며 (필요에 맞게 조정할 것입니다), 나는 여전히 자금을 얻는 방법 (특히 공동 연구 개발 프로젝트)을 찾으려고 노력하고 있습니다.
Basile Starynkevitch

Qt 예제 인 BTW는 API (및 라이브러리)가 법적 표준이 아니더라도 중요하고 아마도 지배적이 될 수 있음을 보여줍니다.
Basile Starynkevitch

5

다양한 네트워킹 프로토콜에 대한 표준은 이미 잘 정의되어 있습니다. 찾고자하는 소리는 IoT 디바이스 고유의 표준 동작을 구현하는 API입니다. 조명을 켜거나 끄거나 밝게 할 수있는 Light () 함수와 같은 것; 무장 또는 해제 할 수 있거나 문 열림 또는 문 닫음 이벤트에 대한 경고를 등록 할 수있는 DoorSensor (); 그런 종류의. 그러나 응용 프로그램과 관련이없는 API 라이브러리는 알지 못합니다.

누구든지 가지고 있다면 Domoticz 에서 무언가를 찾을 수 있습니다 . C ++로 작성된 오픈 소스 홈 오토메이션 컨트롤러입니다.


5

빠른 응답으로 IoT에는 특별한 유형의 라이브러리가 있다고 생각하지 않습니다. IoT는 기본적으로 " 새로운 임베디드 시스템 " 이라고 말하고 이름을 변경하고 클라우드에 연결을 추가했습니다.

따라서 C ++ 프로그래밍에 사용하는 것에 대한 대답은 http://www.cplusplus.com/

기본적으로 IoT의 경우 사용하는 프로토콜 (USB, TCP / IP, UDP, ZigBee 등)에 관계없이 통신 라이브러리 가 필요합니다 .

또한 통신이있는 경우 보안 / 암호화 가 필요합니다 .

나머지는 제어하거나 측정하는 하드웨어 부분에 따라 다릅니다. 이러한 하드웨어에 대한 라이브러리 (API / 펌웨어) 가 필요합니다 .

분명히 내가 여기에 많은 것들이 있습니다 ... 다른 사람들의 대답을 보자


2
기본적으로, 당신은 IoT가 임베디드 컴퓨팅, 아마도 임베디드 리눅스 시스템의 새로운 유행어라는 것을 직감적으로 확인하고 있습니까?
Basile Starynkevitch

@BasileStarynkevitch 디바이스 클래스에 따라 다릅니다. 탑재 된 전화 내선 번호를 보는 것과 달리 피트니스 추적기는 Linux를 실행하지 않습니다. 자체 전원 공급 노드는 Linux를 실행하지 않습니다. 분산 sompute를 수행하는 허브 노드)는 아마도 Linux를 실행합니다. 따라서 가장자리에서 클라우드로 확장되는 스택에 대해 이야기했습니다.
Sean Houlihane 2012

1
괜찮습니다. 따라서 이러한 장치 에서 일반적으로 사용되는 API 또는 라이브러리 는 무엇입니까 ?
Basile Starynkevitch

1
ZigBee는 네트워크 프로토콜처럼 보이므로 범위를 벗어납니다. 그러나 ZigBee를 구현하는 C 또는 C ++에서 일반적으로 사용 가능한 API는 흥미로울 것입니다
Basile Starynkevitch

4

내장, 보안 통신, 프로비저닝 (장치 관리) 및 OTA 업데이트 이것은 큰 소프트웨어 패키지이며 개발을위한 새로운 유형의 플랫폼으로 부상하고 있습니다.

클라우드 솔루션을 제공하는 여러 제공 업체가 있으며 일반적으로 자체 클라이언트 API와 선택한 엔드 포인트 운영 체제를 갖습니다.

내가 알 수있는 한, 다양한 무선 프로토콜은 실제로 특정 소프트웨어 스택을 지시하지 않으므로 클라이언트 API가 아닌 큰 그림으로 선택해야합니다. 애플리케이션에서 스택에 오픈 소스가 중요한 경우 결정 요인이 될 수 있습니다.


1
IoT 응용 프로그램을 개발하고 있지 않지만 IoT 소프트웨어 개발자의 이익을 위해 정적 소스 코드 분석 도구를 개발하고 싶습니다.
Basile Starynkevitch

1
좋아, 따라서 4 또는 5 개의 서로 다른 스택이 있고 (추측) 몇 년 동안 지배적 인 두세 가지를 따르고 싶다면 모든 것을 고려해야합니다.
Sean Houlihane

1
어떤 정확한 API 또는 라이브러리 (C 또는 C ++)를 생각하십니까? 당신의 대답에 그들을 이름을 지정하십시오!
Basile Starynkevitch

1
이러한 API를 사용하는 팀을 알고 있다면 내 질문을 전달하고 gcc-melt.org/IoT-03-interest-Starynkevitch.html
Basile Starynkevitch

3

나는 당신의 목표가 BOOST와 다소 비슷하다고 생각합니다.

C ++ 라이브러리 향상

이들은 "기존의 실습"을 확립하고 참조 구현을 제공하여 Boost 라이브러리가 최종 표준화에 적합하도록합니다.

Boost는 아마도 IoT의 주요 플레이어 일 수 있습니다. 확실히 C ++에서 크게 개선되었습니다.


1
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
anonymous2

2

IoTivity는 OCF 사양 의 참조 구현입니다 . GitHub 리포지토리 에서 설명서와 소스 코드를 찾을 수 있습니다 .

기능 목록에서 :

  • 제한된 장치에 배포하기 위해 C로 작성된 핵심 기능
  • C 및 C ++에서 사용 가능한 대부분의 기능

이들의 프레임 워크 API 는 Bluetooth, Wi-Fi, ZigBee 및 Z-Wave와 같은 다양한 프로토콜을 통한 검색, 데이터 전송, 데이터 관리 (수집, 저장 및 분석) 및 장치 관리 (예 : 프로비저닝, 진단)를 허용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.