更上面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 发送最后一个消息的更多相关文章

  1. 【DWM1000】 code 解密8一 TAG接收blink response 信号

    在分析这个部分前,目前我看到DWM1000 的资料,data可以分为blink和一般无线数据,后面有内容我们再扩充, 上面我们已经看到接收到blink触发的事件为 case SIG_RX_BLINK ...

  2. 【DWM1000】 code 解密6一TAG 状态机第一步

    我们前面分析过,不论ANCHOR 还是TAG,前面变量的初始化基本都是一样的,只是状态机必须明确区分不同的设备类型.我们从开始看TAG.由于初始化TAG的 testAppState一样初始化为TA_I ...

  3. 【DWM1000】 code 解密7一ANCHOR接收到BLINK

    接着之前ANCHOR的代码分析,但接收到无线数据,应该执行如下代码 case TA_RX_WAIT_DATA :   //already recive a message                ...

  4. 【DWM1000】 code 解密9一 ANCHOR response poll message

    根据上面TAG发送的代码,我直接找到如下代码 case RTLS_DEMO_MSG_TAG_POLL: { if(inst->mode == LISTENER)                  ...

  5. 【DWM1000】 code 解密5一ACHOR 第一次回家Main 函数

    instance_run(); if((instance_data[0].monitor == 1) && ((portGetTickCnt() - instance_data[0]. ...

  6. APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

    转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...

  7. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  8. 使用Python发送、订阅消息

    使用Python发送.订阅消息 使用插件 paho-mqtt 官方文档:http://shaocheng.li/post/blog/2017-05-23 Paho 是一个开源的 MQTT 客户端项目, ...

  9. 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

    第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...

随机推荐

  1. NPOI操作Excel(一)--NPOI基础

    用C#读取Excel的方法有很多中,由于近期工作需要,需要解析的Excel含有合并单元格以及背景色等特殊要求,故在网上查了一些关于读Excel的方法的优缺点,觉得NPOI能满足我的需要,所以搜索了一些 ...

  2. 反序列化json的坑

    json格式没有错误,内容没有什么异常 反序列化一直显示第一行有异常符号, 在https://jsonlint.com/上面检测了一下,发现了这个 解决办法: UTF-8格式编码 改成 UTF-8无B ...

  3. I: Carryon的字符串排序(字典树/map映射)

    2297: Carryon的字符串 Time Limit: C/C++ 1 s      Java/Python 3 s      Memory Limit: 128 MB      Accepted ...

  4. 指定的参数已超出有效值的范围。参数名:sit ,先仔细看看错误和我的一样不一样

    控制面板>程序>

  5. Visual Studio 2012 Update 3

    不知道是不是都关注Win8.1和Visual Studio 2013 preview去了… 貌似没大有人发现2012的update3在update2后2月就出了… ms明显加快了开发速度额… KB a ...

  6. [WC2014]紫荆花之恋

    题解: 首先考虑点分治 dis(i,u)+dis(i,v)<=value[u]+value[v] 移项就很容易发现用平衡树可以很简单的维护这个东西 但是有重复,需要在下一层的每个平衡树内减去这个 ...

  7. ORM框架之------Dapper,Net下无敌的ORM

    一,介绍:Dapper是一款轻量级ORM工具.如果你在小的项目中,使用Entity Framework.NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀.你又觉得ORM省时省力,这 ...

  8. mysql配置为半同步复制

    mysql 半同步插件是由谷歌提供,具体位置/usr/local/mysql/lib/plugin/下,一个是 master用的 semisync_master.so,一个是 slave 用的 sem ...

  9. gitlab之三: gitlab邮件通知的配置

    参考 :  https://www.cnblogs.com/lovelinux199075/p/9072265.html gitlab 添加新用户后,会自动发送邮件到填写的邮箱. 实验版本:  11. ...

  10. Codeforces 980D Perfect Groups 计数

    原文链接https://www.cnblogs.com/zhouzhendong/p/9074164.html 题目传送门 - Codeforces 980D 题意 $\rm Codeforces$ ...