【DWM1000】 code 解密10 一 TAG 发送最后一个消息
更上面ANCHOR发送信息时的RTLS_DEMO_MSG_ANCH_RESP, 我们很快就可以找到如下代码
|
case RTLS_DEMO_MSG_ANCH_RESP: { |
这里面一部分是设置重要变量,一部分是保存ANCHOR发送来的TOF,准备显示出来了,先看这个部分
|
inst->canprintinfo = 2; inst->tof = 0; memcpy(&inst->tof, &(messageData[TOFR]), 5); inst->newrangeancaddress = srcAddr[0] + ((uint16) srcAddr[1] << 8); inst->newrangetagaddress = inst->eui64[0] + ((uint16) inst->eui64[1] << 8); |
具体显示我们先不关注,看看重要变量,毕竟上面这个保存的数据是上次定位结果(其实我们分析的才是第一次,没有所谓的上次,那么目前上面的结果应该都是没有意义的)
|
inst->anchorRespRxTime = dw_event->timeStamp ; //Response's Rx time inst->testAppState = TA_TXFINAL_WAIT_SEND ; // send our response / the final |
其中anchorRespRxTime 保存了接收到ANCHOR 这个信号的时间, 后面又是那个非常重要的变量,break后,我们直接找吧。
|
case TA_TXFINAL_WAIT_SEND : //TAG:sent final message { memcpy(&(inst->msg.messageData[RRXT]), (uint8 *)&inst->anchorRespRxTime, 5); setupmacframedata(inst, RTLS_DEMO_MSG_TAG_FINAL); |
后面是我们比较熟悉的发送数据代码
|
dwt_writetxdata(inst->psduLength, (uint8 *) &inst->msg, 0) ; // write the frame data instancesendpacket(inst->psduLength, DWT_START_TX_DELAYED, inst->delayedReplyTime) |
之前分析过DWM1000 的逻辑问题
|
#define DWT_SUCCESS (0) #define DWT_ERROR (-1) |
所以,我们假定它发送成功,那么后面的变量设定应该是
|
inst->testAppState = TA_TX_WAIT_CONF; inst->previousState = TA_TXFINAL_WAIT_SEND; inst->done = INST_DONE_WAIT_FOR_NEXT_EVENT; //will use RX FWTO to time out (set below) inst->timeofTx = portGetTickCnt(); inst->monitor = 1; |
变量timeofTX是我们第一次遇到,先记录,看后面怎么用。 根据其它三个重要变量,我们再找代码, case TA_TX_WAIT_CONF; 分析过很多次了,前面等待发送完成的部分就部分析了,直接找后的if。
|
if(inst->previousState == TA_TXFINAL_WAIT_SEND) { inst->testAppState = TA_TXE_WAIT ; inst->nextState = TA_TXPOLL_WAIT_SEND ; break; } |
前面还有个重要变量
|
inst->done = INST_NOT_DONE_YET; |
我们先分析if 里面的代码,将testAppState 设置为TA_TXE_WAIT 下一步就是等数据,也就意味着TAG分析又告一段落,看似去找ANCHOR了。
但是发现nextState是TA_TXPOLL_WAIT_SEND,我们这个state 好早之前就遇到过了,是的,没错, 这里是轮回,TAG发完这个数据又重新开始,但又不至于需要重新发blink找ANCHOR,所以回到了TAG收到blink response 后的状态了。 定位分析到这里对TAG代码来说已经完事了。Oyeah!
【DWM1000】 code 解密10 一 TAG 发送最后一个消息的更多相关文章
- 【DWM1000】 code 解密8一 TAG接收blink response 信号
在分析这个部分前,目前我看到DWM1000 的资料,data可以分为blink和一般无线数据,后面有内容我们再扩充, 上面我们已经看到接收到blink触发的事件为 case SIG_RX_BLINK ...
- 【DWM1000】 code 解密6一TAG 状态机第一步
我们前面分析过,不论ANCHOR 还是TAG,前面变量的初始化基本都是一样的,只是状态机必须明确区分不同的设备类型.我们从开始看TAG.由于初始化TAG的 testAppState一样初始化为TA_I ...
- 【DWM1000】 code 解密7一ANCHOR接收到BLINK
接着之前ANCHOR的代码分析,但接收到无线数据,应该执行如下代码 case TA_RX_WAIT_DATA : //already recive a message ...
- 【DWM1000】 code 解密9一 ANCHOR response poll message
根据上面TAG发送的代码,我直接找到如下代码 case RTLS_DEMO_MSG_TAG_POLL: { if(inst->mode == LISTENER) ...
- 【DWM1000】 code 解密5一ACHOR 第一次回家Main 函数
instance_run(); if((instance_data[0].monitor == 1) && ((portGetTickCnt() - instance_data[0]. ...
- APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- 使用Python发送、订阅消息
使用Python发送.订阅消息 使用插件 paho-mqtt 官方文档:http://shaocheng.li/post/blog/2017-05-23 Paho 是一个开源的 MQTT 客户端项目, ...
- 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案
第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...
随机推荐
- Android Studio 打开activity_main.xml不能正常显示
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 解决方法:http://www.jcodecraeer.com/a/anzhuokaifa/Android_S ...
- JMeter 中对于Json数据的处理方法
JMeter中对于Json数据的处理方法 http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/ J ...
- 洛谷 P1217
题目链接如下https://www.luogu.org/problemnew/show/P1217 找出a到b 是回文数并且是素数的数. 这还不简单 前两天刚学的线性筛素数.卡卡卡卡一顿猛敲.最后一个 ...
- dubbo负载均衡策略和集群容错策略都有哪些
dubbo负载均衡策略 random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权 ...
- docker挂载点泄露问题
本来以为我不会遇到. 结果还是遇到了. 现象为k8s delete pod时,系统一直显示Terminatiing,无论多久都不能正常. 以下两个帖子大概说明了是怎么回事. https://blog. ...
- axios简单使用
介绍 我在使用vue的时候使用到了axios,vue 1.0的版本作者推荐使用vue-resource,到了vue 2.0作者建议使用axios,此篇文章只是我在使用axios时候做的笔记,我遇到的一 ...
- UIImageView的常用方法
//初始化 init(image: UIImage!) @availability(iOS, introduced=3.0)//初始化,highlightedImage 高亮图片 init(image ...
- You have new mail in /var/spool/mail/root消除提示的方法
有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root 你觉得烦人---解决方法: 修改系统配置文件/etc/profile,告诉系统不要去检查 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-3项目架构说明
本文目录1. 摘要2. 框架介绍 3. 权限管理之多一点说明4. 总结 1. 摘要 NCMVC角色权限管理框架是由最近练习Net Core时抽时间整理的系统,后续能不能发展成一个cms还要看朋友们是 ...
- Codeforces 316G3 Good Substrings 字符串 SAM
原文链接http://www.cnblogs.com/zhouzhendong/p/9010851.html 题目传送门 - Codeforces 316G3 题意 给定一个母串$s$,问母串$s$有 ...