继续开新坑,等后面再慢慢填。。。
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创建和执行的真正异步。
以上都是初印象,不一定全对,仅供大家讨论,抛砖引玉。。。