5.3 报告类数据模型接口

本文介绍了在嵌入式应用中报告类数据模型的设计,采用环形缓冲区数据结构,并讨论了如何构建抽象接口层。接口设计包括申请控制句柄、查询报告、读取报告、确认传输和遍历报告等操作,以满足不同应用需求。同时,文章提出了句柄的概念,作为访问指针的抽象,以隐藏内部同步互斥机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在继保的各种数据模型中,有一类数据模型其组织方式非常类似,包含遥信变位、动作报告、操作事项、遥测越限等,都是多条条目的方式组织。我们团队习惯将这类数据模型称之为报告类数据模型。

在嵌入式应用领域,这类信息一般存储在flash或eeprom等非易失性存储芯片中,各条目信息组织结构一致,并在产品构建初期就约定好存储条数、空间和位置等信息。

报告类数据模型,一般采取环形缓冲区数据结构,如果缓冲区满且有新报告时,会覆盖最旧的条目。环形缓冲区是最基本的数据结构,有两个指针用于读写,并通过浪费一个存储空间来区分缓冲区满和空。

针对报告类数据模型,如何构建抽象接口层呢?

在这里插入图片描述
类同AI,为了提炼报告类模型接口,需要先分析汇总各类应用需求。报告数据模型接口抽象的关键是访问接口,需求汇总如下:

  1. 远传类规约,需要检测是否有新报告,如有新报告时读取并远传,并执行确认操作以防止重复读取。
  2. 远传类规约,设备重启后需从最旧的报告开始上传。
  3. 远传类规约,在长期未运行且报告被覆盖后,设备恢复运行时从最旧有效报告开始上传。
  4. 液晶界面或维护软件类应用,需要查询目前有多少条报告,并支持正序或逆序逐条读取报告。
  5. 各应用任务运行独立,隐藏互斥信号量等内部数据结构。

为了实现这些繁杂的报告访问功能,最常见的策略是为每个应用任务构建一个单独的访问指针,如下图示意:

在这里插入图片描述
但这种接口模式存在诸多问题:

  1. 访问指针是位于应用任务空间呢,还是位于报告数据模型空间?如位于应用任务空间,当缓冲区覆盖后报告模块如何去调整访问指针呢(需求4)。如位于报告模型空间,
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值