得益于大佬的指导,PPP_DEVICE 的模块功能解耦做得很好;
对于新模块的支持,只需要修改 class 文件夹下的文件即可。
以添加 Air720 模块为例,从模块的添加到提交到 github 上,整体来说分为三个部分:
ps : 从 class 文件夹下选择任意一个文件重命名也行
在设置引导模块复位命令的时候,需要着重注意 +++ 命令,这里需要查看对应模块的 AT 命令手册;
手册中明确要求,+++ 命令在命令输入前 1 秒不能有数据输入,在发送 +++ 命令后有 0.5 秒不能有数据输入;
也就是说,我们需要设置这条命令为
{"+++", MODEM_CHAT_RESP_NOT_NEED, 30, 1, RT_TRUE},
如果 AT 手册没有明确要求这样的操作,可以写成
{"+++", MODEM_CHAT_RESP_NOT_NEED, 30, 1, RT_FLASE},
这两者的区别就是,在发送完成 +++ 命令后会不会发送 '\r' 结束符;
因为 AT 命令普遍要求结束符,但恰巧 +++ 命令较为特殊,所以需要特别注意。
ATTENTION:
MODEM_CHAT_RESP_NOT_NEED,表示发送该条命令需不需要回复,看个人需求选择需要等待回复的内容
现在回复内容的判断有以下支持:
MODEM_CHAT_RESP_OK, "OK"
MODEM_CHAT_RESP_READY, "READY"
MODEM_CHAT_RESP_CONNECT, "CONNECT"
MODEM_CHAT_RESP_BUSY, "BUSY"
MODEM_CHAT_RESP_NO_CARRIER, "NO CARRIER"
MODEM_CHAT_RESP_ERROR, "ERROR"
MODEM_CHAT_RESP_NOT_NEED
如果模块重启时间很短,在几秒时间左右,可以添加软重启支持(当然需要查看 AT 手册看看命令是什么)
{"AT+RESET", MODEM_CHAT_RESP_NOT_NEED, 30, 1, RT_FLASE},
因为 Air720 的模块重启时间比较长在 20s 左右,所以没有添加。
剩下的修改一下函数名称,宏定义设置什么的,新模块就已经支持了。
在合适位置添加
# Air720
if GetDepend(['PPP_DEVICE_USING_AIR720']):
src += Glob('class/ppp_device_air720.c')
命令格式尽量统一,提交 PR 时候也提升效率
这里主要是修改 Kconfig 文件,添加 env 对新模块的支持
文件路径
env\packages\iot\ppp_device\Kconfig
在合适的位置添加
config PPP_DEVICE_USING_AIR720
bool "Luat Air720"
如果命名格式统一的话,这里也不用太费脑筋
**ATTENTION:**修改 env 下的可能会导致更新出现问题,实验时候修改的数据最好做好备份及时还原;
- PR 需要有两个不同的仓库,建议 star 并且 frok
- 更多 PR 信息,可以在群里询问,提交前可以把自己仓库里在群里发一下,大家审阅一下提升代码质量。