3.2 Hi3861 AT指令源码分析,如何添加一条自己的AT指令
2398 浏览 14 点赞 20 收藏
3.2 Hi3861 AT指令源码分析,如何添加一条自己的AT指令
这节主要讲下 hi3861 的AT指令相关。先看下AT指令在源码中的位置。上一节已经说到,hi3861 内核启动后的第一个入口函数。
代码路径:
vendor\hisi\hi3861\hi3861\app\wifiiot_app\src\app_main.c
hi_void app_main(hi_void)
在app_main函数中,会调用 hi_at_init 进行AT指令的相关初始化。如果初始化成功,则开始注册各类AT指令,代码如下:

初始化部分暂时先不看,主要是底层相关的。我们重点看下 hi_at_sys_cmd_register 注册AT指令的函数。
hi_void hi_at_sys_cmd_register(hi_void)
{
printf("____>>>>> %s %d \r\n", __FILE__, __LINE__);
hi_at_general_cmd_register();
#ifndef CONFIG_FACTORY_TEST_MODE
hi_at_sta_cmd_register();
hi_at_softap_cmd_register();
#endif
hi_at_hipriv_cmd_register();
#ifndef CONFIG_FACTORY_TEST_MODE
#ifdef LOSCFG_APP_MESH
hi_at_mesh_cmd_register();
#endif
hi_at_lowpower_cmd_register();
#endif
hi_at_general_factory_test_cmd_register();
hi_at_sta_factory_test_cmd_register();
hi_at_hipriv_factory_test_cmd_register();
hi_at_io_cmd_register();
}
复制其中,hi_at_general_cmd_register 是注册通用指令。代码如下:

其实就是把 g_at_general_func_tbl 数组的AT指令都注册进来。我们可以看到这个数组的内容:

g_at_general_func_tbl的结构体原型如下:
typedef struct {
//AT指令命。前面省略AT
hi_char *at_cmd_name;
//指令的长度
hi_s8 at_cmd_len;
//at测试时调用的回调函数
at_call_back_func at_test_cmd;
//at查询时调用的回调函数
at_call_back_func at_query_cmd;
//at设置时调用的回调函数
at_call_back_func at_setup_cmd;
//at运行时调用的回调函数
at_call_back_func at_exe_cmd;
} at_cmd_func;
复制
看到这个数组,聪明的朋友应该知道怎么增加第一条属于自己的指令了吧~~~~
(1)增加AT指令

(2)完善相关函数:
hi_u32 at_setup_mytest_cmd(hi_s32 argc, const hi_char *argv[])
{
hi_at_printf("at_setup_mytest_cmd \r\n");
return HI_ERR_SUCCESS;
}
hi_void at_exe_mytest_cmd(hi_s32 argc, const hi_char *argv[])
{
hi_at_printf("at_exe_mytest_cmd \r\n");
return HI_ERR_SUCCESS;
}
hi_u32 at_query_mytest_cmd(hi_s32 argc, const hi_char* argv[])
{
hi_at_printf("at_query_mytest_cmd \r\n");
return HI_ERR_SUCCESS;
}
hi_u32 at_test_mytest_cmd(hi_s32 argc, const hi_char* argv[])
{
hi_at_printf("at_test_mytest_cmd \r\n");
return HI_ERR_SUCCESS;
}
复制
编译后我们开始测试:
发送:AT+MYTEST
接收:at_exe_mytest_cmd
ERROR
发送:AT+MYTEST?
接收:at_query_mytest_cmd
发送:AT+MYTEST=1
接收:at_setup_mytest_cmd
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它
标签
3.2 Hi3861 AT指令源码
相关推荐
子组件的点击事件,如何正确让父组件进行响应?
鸿蒙小助手
3504
0怎么实现一个图片一直循环上下匀速移动的动画效果?
鸿蒙小助手
7847
0在 HarmonyOS 中,如果用户拒绝了应用的某个权限请求,应用中要如何处理?
鸿蒙小助手
7676
0元服务如何获取/设置屏幕亮度?
鸿蒙小助手
9098
0元服务如何播放rawfile中的音频文件?
鸿蒙小助手
8018
0宋你一朵小红花
我还没有写个人简介......
881
帖子
0
提问
1
粉丝
最新发布
华为鸿蒙 HarmonyOS 6.0.0.108 SP2 Developer 版本新增 9 套桌面图标
2025-10-20 23:17:16 发布注意!华为开启鸿蒙6.0系统推送,稳定性提升
2025-10-14 15:10:36 发布热门推荐