当前位置: 首页 > news >正文

AT指令解析:TencentOS Tiny AT指令解析源码分析2-数据类型定义

文章目录

  • 简介
  • AT指令解析状态与AT指令状态
    • AT指令解析状态
    • AT指令状态
    • AT指令解析状态与AT指令状态的关系
  • AT指令的数据结构
  • 总结

简介

在TencentOS Tiny AT指令解析源码解析的过程中,为了更好地理解代码的实现,需要对其定义的数据类型有所了解,本篇主要是对TencentOS Tiny AT指令解析源码中的数据类型定义进行讲解,便于后续对源码逻辑进行讲解。

AT指令解析状态与AT指令状态

AT指令解析状态

AT指令解析状态主要AT指令在解析时使用的,用于标记当前解析结果,解析状态的枚举定义如下:

typedef enum at_parse_status_en {AT_PARSE_STATUS_NONE,AT_PARSE_STATUS_NEWLINE,AT_PARSE_STATUS_EVENT,AT_PARSE_STATUS_EXPECT,AT_PARSE_STATUS_OVERFLOW,AT_PARSE_STATUS_OK,AT_PARSE_STATUS_FAIL,AT_PARSE_STATUS_ERROR
} at_parse_status_t;

AT_PARSE_STATUS_NONE:初识状态,程序开始执行时的状态
AT_PARSE_STATUS_NEWLINE:空行,不需要进行处理
AT_PARSE_STATUS_EVENT:事件,代表收到模组主动发送的数据
AT_PARSE_STATUS_EXPECT:期望值,表示收到的模组应答符合预期
AT_PARSE_STATUS_OVERFLOW:缓存区溢出
AT_PARSE_STATUS_OK:收到应答"OK"
AT_PARSE_STATUS_FAIL:收到应答"FAIL"
AT_PARSE_STATUS_ERROR:收到应答"ERROR"

AT指令状态

AT指令状态用于表示当前AT指令的执行状态,在AT指令接收处理中,对AT指令状态进行赋值,用于告知AT指令的执行结果。

typedef enum at_echo_status_en {AT_ECHO_STATUS_NONE,AT_ECHO_STATUS_OK,AT_ECHO_STATUS_FAIL,AT_ECHO_STATUS_ERROR,AT_ECHO_STATUS_EXPECT,
} at_echo_status_t;

AT_ECHO_STATUS_NONE:初始值
AT_ECHO_STATUS_OK:指令执行成功
AT_ECHO_STATUS_FAIL:指令执行失败
AT_ECHO_STATUS_ERROR:指令执行发生错误
AT_ECHO_STATUS_EXPECT:指令执行应答符合预期

AT指令解析状态与AT指令状态的关系

在AT指令应答的解析时,首先AT指令解析模块会对接收的数据进行解析,并输出AT指令解析结果,然后根据AT指令解析结果得到AT指令的执行结果,后续采用信号量的方式将AT指令的执行结果,通知AT指令执行任务。
在这里插入图片描述

AT指令的数据结构

AT指令的数据结构中,涉及了应答数据缓存、预期数据缓存、信号量等内容。
数据结构定义如下:

typedef struct at_echo_st {char               *buffer;size_t              buffer_size;char               *echo_expect;int                 line_num;at_echo_status_t    status;size_t              __w_idx;int                 __is_expecting;k_sem_t             __expect_notify;k_sem_t             __status_set_notify;int                 __is_fuzzy_match;
} at_echo_t;

buffer:在需要获取应答数据时,用于存储应答数据;不需要获取应答数据时,设置为NULL。
buffer_size:buffer的大小,buffer为NULL时,设置为0。
echo_expect:期望应答,不需要对比期望应答时,设置为NULL。
line_num:应答数据的中数据行数。
status:AT指令的状态。
__w_idx:记录当前应答缓存区中的数据长度。
__is_expecting:是否判断期望数据。
__expect_notify:收到期望数据时用于同步的信号量。
__status_set_notify:收到应答结果(OK、FAIL、ERROR)时用于同步的信号量。
__is_fuzzy_match:是否开启期望数据模糊匹配,开启时只要应答中包含期望数据即任务收到期望数据;不开启时,应答数据需要与期望完全一致才认为收到期望数据。

总结

以上内容,就是在分析TencentOS Tiny AT指令解析源码时需要了解的数据结构,了解这个数据定义后,能够更好地理解源码的实现。下一篇内容,我们将对正式开始对源码进行分析。

http://www.dtcms.com/a/474256.html

相关文章:

  • 网站做三个月收录100管理系统中计算机应用
  • 【深度长文】AI+游戏方向调研报告
  • 百度网址大全网站手机网站改版了
  • wordpress外链包装中国临沂网站优化
  • 静态类型系统在前后端联调中的价值验证
  • 网站备案 怎么建站注册高级工程师
  • Linux:应用层协议HTTP
  • .Net Core上传组件7.2
  • 网站建设公司哪家好 在线磐石网络什么网站做学校设计
  • 模电基础:放大电路的频率响应(2)
  • 【力扣】hot100系列(三)贪心(多解法+时间复杂度分析)
  • 科讯网站模版网如何把自己的网站推广出去
  • 阿里云存储服务OSS对象存储的简单使用
  • P5522 yLOI2019 棠梨煎雪
  • 建站专家wordpress 获取当前路径
  • 天津网站推广如何做一款app需要多少钱
  • 服务器放网站吗高端保姆
  • H7-TOOL RTOS Trace功能的RTX5检测增加最大任务栈使用情况检测,不需要目标板额外做任何代码实时监测
  • android usb摄像头无法缩放问题
  • 高安版_中兴B860AV3.2M_晶晨S905L3B_安卓9_兼容uwe5621ds无线-线刷固件包
  • 北京手机网站开发费用用系统建购物网站
  • linux中tee解析
  • 媒体的分类层次
  • Get请求和Post请求区别
  • 搭建网站商城医院网站推广渠道
  • 从零复现论文(2)——:基于启发式优化的无线传感器网络WSN功率分配策略
  • 【Swift】LeetCode 283. 移动零
  • 【Java数据结构】冒泡排序编码关键细节与避坑指南
  • DPDK中的BitMap测试
  • 网站制作合作2023企业税收标准