成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenHarmony中AT模塊的代碼理解之一

系統 OpenHarmony
現在的RTOS操作系統中也都包含了這部分的內容,比如RTT等,通用性更強,代碼的邏輯性也值得我們去分析和學習。

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://ost.51cto.com??

1、背景

最早接觸AT命令是在使用通信模塊的時候,那時的AT命令的打包和解析都是自己寫的函數實現,代碼邏輯和框架也都不成熟,通用性也不強。現在的RTOS操作系統中也都包含了這部分的內容,比如RTT等,通用性更強,代碼的邏輯性也值得我們去分析和學習。接觸openharmony,發現系統代碼中也包含了AT相關的業務。今天,嘗試整理一下這部分代碼的思路。

2、提要

(1)代碼路徑

device\hisilicon\hispark_pegasus\sdk_liteos\components\at\src\

(2)關閉AT服務

有時候自己需要使用串口做一些私有業務,不想使用原生的AT命令,比如,移植micropython,就需要關閉AT服務。關閉的方法如下:

打開device\hisilicon\hispark_pegasus\sdk_liteos\build\config\usr_config.mk。

將其中的#CONFIG_AT_SUPPORT=y刪除。或者使用menuconfig操作該文件關閉。

關閉宏之后,config.mk中,會判斷該宏的值。

ifeq ($(CONFIG_AT_SUPPORT), y)
DEFINES += -DCONFIG_AT_COMMAND
endif

會使得AT的初始化,注冊相關函數無效。

3、框架

簡單的描述一下程序框架,核心內容分為接收任務和處理任務,兩個任務之間通過Event事件同步。cmd_register函數用來注冊我們需要解析的AT命令。

4、代碼

(1) 數據的接收

在hi_u32 hi_at_init(hi_void)中創建了數據接收的任務。

attr.stack_size  = g_at_uart_task_size;
attr.task_prio = AT_UART_TASK_PRIO;
attr.task_name = (hi_char*)"at_uart";
ret = hi_task_create(&at_uart_task, &attr, at_uart_task_body, 0);
if (ret != HI_ERR_SUCCESS) {
hi_at_printf("AT_UART_TSK init fail\r\n");
return ret;
}

(2) 數據的處理

attr.stack_size  = 1024*6;
attr.task_prio = AT_PROC_TASK_PRIO;
attr.task_name = (hi_char*)"at_proc";
ret = hi_task_create(&at_proc_task, &attr, at_proc_task_body, 0);
if (ret != HI_ERR_SUCCESS) {
hi_at_printf("AT_PROC_TSK init fail\r\n");
return ret;
}

兩個任務之間通過g_at_event傳遞數據。buf = at_get_buf();獲取數據之后,進行解析和處理。處理函數如下。

hi_void at_cmd_execute(hi_char *buf)
{
hi_u32 ret;
if (memcmp(buf, AT_CMD_HEADER, strlen(AT_CMD_HEADER)) == EOK) {
hi_char *at_buf = buf + strlen(AT_CMD_HEADER);

ret = at_cmd_process(at_buf);
if ((ret != HI_ERR_SUCCESS) && (ret != HI_ERR_RECVING)) {
g_at_ctrl.at_state = AT_IDLE;
}
} else {
AT_ENTER;
AT_RESPONSE_ERROR;
g_at_ctrl.at_state = AT_IDLE;
}
}

處理函數會從注冊的AT命令中對比關鍵詞,然后解析,處理,執行。

5、總結

這篇文章先整理到這里,后續會有更詳細的對AT命令邏輯的分析。

后續的計劃:

(1)繼續分析openharmony的AT命令的代碼思路和關鍵函數的使用。

(2)對比RT-Thread等其他RTOS的AT部分實現。

(3)精簡openharmony部分代碼,移植出一套可以在其他平臺使用的AT框架。

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-03-22 11:33:13

AT模塊Harmony鴻蒙

2022-02-28 14:54:48

openHarmon鴻蒙操作系統

2022-04-18 10:47:55

UI框架鴻蒙操作系統

2022-05-16 11:50:45

HDF驅動框架

2023-06-27 15:12:46

C++三方庫移植

2020-05-21 10:24:59

語音技能智能

2021-07-20 08:02:41

Linux進程睡眠

2018-12-10 14:59:20

代碼卷積模塊架構

2013-05-30 17:43:49

WooYun京東商城代碼執行

2021-06-22 14:15:03

人工智能AI

2022-05-26 15:28:03

網絡管理Socket 模塊

2013-07-19 09:50:10

Java8API

2023-04-26 15:29:35

NAPI模塊鴻蒙

2022-01-12 14:45:26

鴻蒙HarmonyOS應用

2022-04-01 16:04:33

Harmonytabs容器鴻蒙

2011-04-25 11:18:39

Ajax

2021-02-04 15:08:37

Vue漸進式框架

2014-09-17 10:30:25

代碼

2024-06-21 10:27:21

Service生成工具鴻蒙

2011-02-28 15:46:22

SQLSQL ServerSQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美一区二区三区在线看 | 久久精品超碰 | 99精品福利视频 | 日韩欧美在线视频 | 极品久久 | 91视频在线观看免费 | 成人一区av | 久久国产一区二区 | 亚洲人人| 伊人中文字幕 | 日韩久久久一区二区 | 颜色网站在线观看 | 久久99这里只有精品 | 天天爽天天干 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 久久久亚洲成人 | 午夜影院在线观看视频 | 国产精品亚洲成在人线 | 久久久一区二区三区四区 | 色婷婷综合成人av | 完全免费在线视频 | 中文字幕av亚洲精品一部二部 | 特黄特色大片免费视频观看 | 精品欧美色视频网站在线观看 | 91视频88av| 91精品一区二区 | 精品一区二区三区在线观看国产 | 久久精品小短片 | 欧美性大战xxxxx久久久 | 日韩欧美中文字幕在线视频 | 91精品国产综合久久国产大片 | 亚洲啪啪| www.操com| 成人久草 | 欧美日韩国产精品一区 | 国产99久久精品一区二区300 | 中文字幕高清av | 91精品久久久久久久久久 | 欧美一区二区三区的 | 国产精品成人一区二区 | 国产成人a亚洲精品 |