wakaama的源代码分析之一

wakaama的源代码分析之一

一、LWM2M

​ 下图为lwm2m基础点:
在这里插入图片描述

1.1 LWM2M协议

​ LwM2M的全称是Lightweight Machine-To-Machine, LwM2M协议原则上是一种设备管理协议,但不限于设备管理,应该能够传输服务/应用程序数据,是适用于资源有限的终端设备管理的轻量级物联网协议。这个协议基于COAP协议,COAP协议基于UDP协议。它的名称里面包含了这么两个重要含义:

1)这个协议是轻量级的;
2)这个协议适用于物联网设备。

​ 概括地说:LwM2M是适用于资源有限的终端设备管理的轻量级物联网协议。
​ LwM2M协议栈:
img

1.2 LWM2M协议功能
  • 基于资源模型的简单对象
  • 资源操作:创建/检索/更新/删除/属性配置
  • 资源的观察/通知
  • 支持的数据格式:TLV/JSON/Plain Text/Opaque
  • 传输层协议:UDP/SMS
  • 安全协议:DTLS
  • NAT/防火墙应对方案: Queue模式
  • 支持多LwM2M Server
  • 基本的M2M功能:LwM2MServer,访问控制,设备,网络连接监测,固件更新,位置和定位服务,统计
1.3 通信接口定义

​ LWM2M引擎主要有两个组件:LwM2M服务器和LwM2M客户端。LwM2M标准为两个组件之间的交互设计了4种主要的接口,LwM2M的4种接口被分为上行操作和下行操作。

上行操作:LwM2M Client -> LwM2M Server
下行操作:LwM2M Server -> LwM2M Client

​ 接口模型如下:
img

1.4 协议实现

LwM2M协议的主要开源实现有以下几个:

OMA LwM2M DevKit:提供可视化界面与LwM2M服务器交互。
OMA LwM2M DevKit:提供可视化界面与LwM2M服务器交互。
Eclipse Wakaama:基于C,提供了LwM2M服务器与LwM2M客户端的实现。
AVSystem Anjay:基于C,提供了LwM2M客户端的实现。

二、wakaama的源代码分析

wakaama的开源网址

https://github.com/eclipse/wakaama

2.1 wakaama的client分析

​ client的入口函数在lwm2mclient.c 中的main函数,其处理流程和server端的流程基本类似,都是建立一个socket,然后在一个死循环中监听socket通信,处理package有一点不同是在client的main函数中注册了很多object的处理函数。

​ 下面主要叙述lwm2m客户端程序的创建流程、工作方式和基本操作,具体的实现可以参照wakaama的lightclient示例程序。注意,wakaama本身并不参与具体的底层通信的实现,也就是说,你需要自己去实现UDP通信或者其他通信。

​ **如何创建客户端程序:
在这里插入图片描述

img
2.2 添加一个object流程

应用lwm2m协议完成你个人的需求,实际就是添加一个object,实际就是完善read/write/execute/create/delete/discover回调函数

添加object_objectname.c文件,根据源码风格
添加objectname_data_t结构体到.c
添加prv_res2tlv函数.c
添加prv_objectname_read/write/execute/create/delete/discover函数到.c,供server回调使用(根据个人需求)
添加display_object_objectname函数,供打印使用
添加get_object_objectname函数,供userData初始化
设置一个LWM2M_objectname_OBJECT_ID宏,每个object唯一的ID(REST架构思想)
添加free_object_objectname函数,供userData释放
添加objArray[LWM2M_objectname_OBJECT_ID]到main函数
添加free_object_objectname函数到main函数
添加display_object_objectname函数到prv_display_objects函数
添加函数声明到lwm2mclient.h中
添加object_objectname.c到CMakeLists SOURCES变量中

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落淼喵_G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值