OpenHarmony中AT模块的代码理解(2) 原创 精华
再见南丫岛
发布于 2022-3-17 21:56
浏览
2收藏
开启AT模块的第二篇帖子的整理。第一篇帖子链接如下:OpenHarmony中AT模块的代码理解(1)。
1、at_uart_task_body
该函数的为一个任务,是一个循环函数。除去睡眠的逻辑外,注意的代码功能是通过串口获取一个字节数据。然后使用at_parse_uart_char(ch)函数进行处理。g_at_input_func函数的功能为模拟接收数据,主要用于测试,可以先不考虑。
2、at_parse_uart_char
函数主要是有5个状态机的切换。
在AT_IDLE状态下,at_cmd_line_parse(ch);继续处理接收到的字符。是我们主业务逻辑的函数。
在AT_CMD_PROCESS状态下,输入的字符会被扔掉,且如果数据的指令行数超过次,则会触发软重启操作。这样操作的好处,还不清楚。
在AT_DATA_RECVING和AT_DATA_SENDING状态,处理的典型场景是AT+IPSEND发送TCP/UDP数据的时候。
协议中注明了\0作为发送结束符,如果要发送\0,需转义成\0。这样,就比较好理解hi_void at_get_send_data(hi_char c)的处理模式了。
3、at_cmd_line_parse
该函数主要是几个if的条件判断。
当字符串没有到截止符(\R\N)的时候,将接受到的字符通过at_cmd_print_back存储在g_at_buf中。
当if (ch == ‘\r’) 和if (ch == ‘\n’)两个判断的结合,即结尾是\r\n且字符串不为空的时候,将g_at_ctrl.at_state = AT_CMD_PROCESS切换模式,并且发送at_notify(),来通知数据处理的任务,进行AT命令的数据处理。
本篇文章就先介绍到这里。
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-3-17 21:56:46修改
赞
4
收藏 2
回复
4
1
2
相关推荐
关键函数终于来喽