[RDA8910 CSDK系列]vAT之初印象

继续开新坑,等后面再慢慢填。。。

8910 csdk 中的vat是什么东西,了解的朋友应该会会心一笑:真是个好东西,至少思路和理念是不错的。

在之前我们自己的mcu+模组的AT架构中,我们也有一套类似vat的数据结构和架构,AT命令数组包含各种回调和rsp特征识别,各种阶段延时配置等字段,所以一看到vat,就感觉很熟悉的套路,虽然不是一个东西,但编程思想和架构差不多了,所以今天简单聊下对vat的理解,只是初印象。

目前的vat是一个二维变长的fifo环形队列。

一些简单的梳理:
1.创建一个fun list时,是在last后面开始继续funfirst 和funlast的。
2.Queue _append 失败时,会tail_out进行回退。
3.Fun_append作用是增加一组at,这里就包含了 fun_set, queue_append, tail_out等操作。
4.Fun_out后,current指向funLast的下一个节点

一些初步的印象:
1. 因为有current和last 以及funfirst funlast, 两套边界。 而且  fun_set 和queue append 是分开执行的,感觉目前不是很必要,而且部分边界判断逻辑感觉也不是很严谨,比如 init 和head_out 部分代码的边界判断

2. 单条完成后有head_out, 为什么最后还有fun_out,是不是部分效果重叠了?

3. Queue里面Fun list的增加和current的执行从设计上是可以异步的,但是目前整体的实际效果还是单fun list架构,不支持多task并行多 fun list操作,因为 current 和last 是跟随最近的funfirst和funlast的。所以说目前不支持真正的多fun list并发,也没有互斥操作。

上面第3点的优化思路,就是再增加一层 fun list block 数据,异步增加block,执行时按照block推进。从而实现list创建和执行的真正异步。

以上都是初印象,不一定全对,仅供大家讨论,抛砖引玉。。。

上次更新 2021-01-28