从拥有文档,一组编程接口的意义上讲,C或C ++中用于IoT的常用或常用API(或库)是什么? (例如POSIX用于操作系统,Qt用于GUI等。)。

此简短页面激发了我的问题(我有兴趣开发用于IoT的静态源代码分析工具) 。我不仅在寻找法律标准,还在寻找各种工业领域中常用的API或库-C或C ++,并具有现有的标头文件。我对Web API(定义一些HTTP请求的约定)或对没有任何API或库实现它们的网络协议不感兴趣。

(所以我对开发自己的IoT应用程序不感兴趣,但是我对想要开发工作并分析源代码以帮助IoT软件开发人员的软件工程工具)

我甚至可能对特定于行业的IoT API或库感兴趣,例如在医疗保健,物流,运输,智能电网,智能建筑等领域;只要它是C或C ++ API或库即可。


我在一个研究静态源代码的研究小组中,我们希望开发分析C或C ++的工具源代码,以帮助IoT软件开发人员。

但是,在进行此工作之前,我需要先找到一种资助的方法。

我们建议为开发人员和工程师开发专门的工具(最好是在现有技术之上的开源),以针对物联网平台编写源代码(如果需要,可以使用C,C ++和Ada ...)。该工具将集成到目标软件开发套件中。该工具可以通过针对这些软件框架的编码规则,不变式和良好实践来分析和检查源代码的有效性,从而协助IoT软件开发人员。主要目的是提高软件质量并加快产品上市时间。如果相关,该工具可以执行特定的源代码优化以增强软件性能和/或减小代码大小。


NB。这个IoT Eclipse网页列出了几个标准。如果有必要为它们开发源代码分析器,那么我对实现它们的API和库(以及任何其他IoT事实领域特定标准)感兴趣。

评论

@Basile这是商业性的还是FOSS?无论如何,我们有什么方法可以追踪您的进度。我意识到这可能需要几个月甚至几年的时间,因此非常欢迎观看UTL或查看邮件列表

十二年来,我主要从事自由软件的开发,所以我希望它是自由开源软件。但是,我需要加入一个财团(或获得一些R&D赠款或任何其他资金)才能开始对此进行研究。

你是说像CMSIS这样的东西吗? keil.com/pack/doc/CMSIS/General/html/index.html

在物联网方面,MQTT和Mosquitto非常受欢迎。也许Libmosquitto API是您的代码分析器的理想目标?

您对物联网特别感兴趣吗?正如Bence Kaulics所建议的那样,存在通信方面(MQTT,CoAP,6LoWPAN等),或者存在整个物联网平台,例如Android Things或Ubuntu IoT。您要处理哪一部分?

#1 楼

Basile,我认为我们在这里缺少很好的区别。

当您谈到类似于IoT的Posix标准时,我认为您是在说包装协议的库。

作为一个在(咳嗽)数十年中一直从事电话和卫星通信协议栈工作的人,我可以说(正如您可能知道的那样),这些协议已经根据需要进行了严格定义。例如,Zigbee受https://en.wikipedia.org/wiki/IEEE_802.15.4

约束,这些标准规定了要传输的消息,并定义字节0表示此,字节1到字节。 4表示等等,以便来自不同制造商的设备可以相互通信(无论如何,这是理论;我可以告诉您一些恐怖的故事;-)

我说过,对于任何给定的协议,可能有太多的产品。对于任何给定的制造商来说,都可能有多个软件库,这是您的问题。

,只要有多个APIS来封装每个协议,您的任务就太困难了。

可悲的是,只有当一家公司成为主导者时,才会有类似Posix的API。如果一个主要政府向它投入很多钱,这种可能性很小,但是我看不到这种情况发生。开源社区给我提供类似Linux的努力的唯一机会。


顺便说一句,我认为您没有清楚地表明自己将不仅仅是另一个静态代码。分析器,它不是用于通用代码,而是用于某些特定的API。您确实说过,但还不够明确。当您精确地定义它时,您将知道您的项目真正是什么。如果您已经知道,您似乎并没有强调它(但也许我读得不够好,两次会议之间匆匆忙忙)。

POSIX API的语法由编译器管理,您学习的所有API的语法也一样。因此,我想您正在寻找潜在的危险代码,例如使用统一化的资源,不释放分配的资源等–是正确的吗?

这听起来像是一个很棒的项目,但是我有给这个问题加注星标。




评论


我对API的语义(不仅是语法语法,还是大部分语法)更感兴趣。是的,我想使用该API对您提到的内容(以及更多内容)进行分析。目前,这只是一个粗略的想法(我将使其适应需求),并且我仍在尝试寻找方法(特别是协作研发项目)来为其筹集资金。

–Basile Starynkevitch
17年2月22日在10:13

顺便说一句,Qt示例显示即使没有法律标准,API(和库)也可能变得很重要,甚至可能成为主导。

–Basile Starynkevitch
17年2月22日在10:15

#2 楼

各种网络协议的标准已经很好地定义了。听起来您希望找到的是一种实现IoT设备固有的标准行为的API。类似于Light()函数的功能,可以打开,关闭或将灯光调暗至其亮度的一小部分。可以布防或撤防,或者可以注册有关开门或关门事件的警报的DoorSensor();诸如此类的事情。但是,我不知道任何不是特定于应用程序的API库。

如果有人拥有一个,您可能会在Domoticz中找到某些东西。这是用C ++编写的开源家庭自动化控制器。

#3 楼

作为快速响应,我不认为IoT有一种特殊的库,我想说IoT基本上是“新的嵌入式系统”,他们只是更改了名称并添加了与云的连接。

因此,回答我用于C ++编程的内容时,我的参考页是http://www.cplusplus.com/

对于IoT而言,无论什么情况,您都需要通信库您使用的协议(USB,TCP / IP,UDP,ZigBee等)

此外,如果您进行通信,则需要安全性/加密。

并且其余的取决于您要控制或测量的硬件部分。您将需要用于此类硬件的库(API /固件)。

当然,我在这里缺少很多东西……让我们看看其他答案

评论


因此,基本上,您确认我的直觉是,IoT只是嵌入式计算(可能是嵌入式Linux系统)的新流行语?

–Basile Starynkevitch
17-2-22在8:19

@BasileStarynkevitch取决于设备类。健身追踪器(与手表式电话分机相对)不运行Linux。自供电节点不运行Linux。执行分布式请求的集线器节点可能确实运行Linux。因此,我谈到从边缘扩展到云的堆栈。

– Sean Houlihane
17年2月22日在8:59

那没问题。那么这些设备上常用的API或库是什么。

–Basile Starynkevitch
17-2-22在9:03

由于ZigBee看起来像网络协议,因此不在范围内。但是,使用C或C ++实现ZigBee的通用API会很有趣

–Basile Starynkevitch
17年2月22日在9:10

#4 楼

嵌入式,安全通信,配置(设备管理)以及OTA更新。这是一个很大的软件包,并且正在发展成为一种新型的开发平台。

有几个提供云解决方案的提供商,他们通常会有自己的客户端API和选定的端点操作系统。

据我所知,各种无线协议并不能真正决定任何特定的软件堆栈,因此您的选择需要从全局出发,而不是由客户端API决定。一个决定性因素可能是开源对您的应用程序中的堆栈是否重要。

评论


我不在开发IoT应用程序,但我想开发静态源代码分析工具以使IoT软件开发人员受益。

–Basile Starynkevitch
17-2-22在8:19

好的,所以有(猜测)4或5个不同的堆栈是相关的,如果要跟踪几年中有两个或三个成为主导的堆栈,则需要考虑所有这些堆栈。

– Sean Houlihane
17-2-22在8:56

您在考虑什么精确的API或库(使用C或C ++)?请在您的答案中给它们命名!

–Basile Starynkevitch
17-2-22在9:04



如果您碰巧知道有一些使用此类API的团队,请向他们提出我的问题并指向他们gcc-melt.org/IoT-03-interest-Starynkevitch.html

–Basile Starynkevitch
17年2月22日在9:15

#5 楼

我认为您的目标与BOOST有点相似:

Boost C ++库

它们旨在建立“现有实践”并提供参考实现,以便Boost库适合最终标准化。

也许Boost可能是IoT的主要参与者:它肯定对C ++进行了一些重大改进。

评论


评论不作进一步讨论;此对话已移至聊天。

–anonymous2♦
17-2-27在12:55

#6 楼

IoTivity是OCF规范的参考实现。您可以在其GitHub存储库中找到文档和源代码。

从其功能列表中:



用C语言编写的用于部署到的核心功能受约束的设备
C和C ++提供了大多数功能



其框架API允许发现,数据传输,数据管理(收集,存储和分析)和设备管理(例如,配置,诊断)通过各种协议(例如蓝牙,Wi-Fi,ZigBee和Z-Wave)进行。