成人免费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

代碼卷積模塊架構

2021-06-22 14:15:03

人工智能AI

2013-05-30 17:43:49

WooYun京東商城代碼執行

2022-05-26 15:28:03

網絡管理Socket 模塊

2013-07-19 09:50:10

Java8API

2021-02-04 15:08:37

Vue漸進式框架

2011-04-25 11:18:39

Ajax

2023-04-26 15:29:35

NAPI模塊鴻蒙

2014-09-17 10:30:25

代碼

2011-02-28 15:46:22

SQLSQL ServerSQL Server

2022-04-01 16:04:33

Harmonytabs容器鴻蒙

2024-02-07 01:47:47

atexit模塊程序

2022-01-12 14:45:26

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 2023亚洲天堂| 一区二区三区四区国产精品 | 999国产视频 | 亚洲在线 | 亚洲国产精品久久久久秋霞不卡 | 91观看 | 欧美成人一区二区 | 在线观看国产精品视频 | 国产精品美女www爽爽爽 | 国产一区二区三区高清 | 午夜影院在线观看 | 久久精品二区亚洲w码 | 久久久久久国产免费视网址 | 亚洲成人精 | 精品日韩一区二区 | 东京久久| 欧美精品一区二区三区在线播放 | 在线精品一区 | 免费观看a级毛片在线播放 黄网站免费入口 | 91欧美| 欧美久久精品一级黑人c片 91免费在线视频 | 亚洲成人www | 亚洲a网 | 国产精品成人免费 | 欧美操操操 | 久久精品国产一区二区电影 | 国产精品久久久久久一区二区三区 | 欧美色欧美亚洲另类七区 | 久久国产精品网 | 老司机深夜福利网站 | 国产日韩欧美在线观看 | 天堂中文在线观看 | 男女网站免费观看 | 手机三级电影 | 欧美美女爱爱视频 | 91精品国产综合久久久久蜜臀 | www.久久| 国产欧美日韩精品一区 | 国产在线一区二区三区 | 久久9热 | 一级欧美 |