zoukankan      html  css  js  c++  java
  • 【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/CC2431/CC2530) 以及一些随性的技术。博文可以转载,但需要注明出处!
  • 相关阅读:
    PointToPointNetDevice doesn't support TapBridgeHelper
    NS3系列—10———NS3 NodeContainer
    NS3系列—9———NS3 IP首部校验和
    NS3系列—8———NS3编译运行
    【习题 7-6 UVA
    【Good Bye 2017 C】 New Year and Curling
    【Good Bye 2017 B】 New Year and Buggy Bot
    【Good Bye 2017 A】New Year and Counting Cards
    【Educational Codeforces Round 35 D】Inversion Counting
    【Educational Codeforces Round 35 C】Two Cakes
  • 原文地址:https://www.cnblogs.com/tuzhuke/p/7739475.html
Copyright © 2011-2022 走看看