事情是这样的
BLE网关收集NODE的数据上报到WIFI
在数据中都是NODE传感器的数据
而有一个需要上报的数据是信号强度 这个数据不能通过NODE采集
因为它是网关发现该NODE时BLE协议栈监测的数据
所以设计的一个 生产者-消费者模型 来处理这个数据
生产者---在BLE连接的时候 保存下来
就是这里 把MAC-信号强度保存下来
生产者--当准备数据打包TX给WIFI发时候就去读出来 根据MAC找到它的信号强度
下面 看一下这2个函数
消费函数 read_rssi_buffer 看上去没有问题 找得到就返回比如-35这样真实数据
如果找不到 就返回0 也没有关系 数据可以发出去的
生产函数 insert_rssi_buffer 看上去有天大的问题 它本质是一个数组 每次往里面放东西
它的id一直在++ 从没有控制过!!!
增加LOG
果然 到死机的时候 就是上限的时候
现象是 网关没有复位 就是跑到后面几个LOG 没有动静了 好像悬空一样
另外一个疑惑的问题是 这个问题很明显 为什么之前一对一连接的时候 不会这样呢?