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


     

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

    ACHOR 返回到Main函数(其它设备代码一样)执行下面的判断,我们先看monitor,看看之前有没有初始化,我们前面分析代码没有设置monitor所以只能找初始化了。---没有找到,我们认为它是0,所以不满足条件。

    if(instancenewrange())
    {
    

    进去看看

    int instancenewrange(void)
    {
        if(instance_data[0].newrange)
        {
            instance_data[0].newrange = 0;
            return 1;
        }
        return 0;
    }
    

    同理,变量newrange,我们也没有找到初始化,所以认为它是0,所以最终也不满足if,接着往后。

    发现后面在我们开始删减Main 函数,都删空了,没有内容。 感觉ANCHOR 第一次返回来什么实际东西都没有做。

    由于while(1)循环,所以又会进入instance_run了

    while(1)
    {
       instance_run();
    

    instance_run

    int done = INST_NOT_DONE_YET;
    int message = instance_peekevent(); //get any of the received events from ISR
    while(done == INST_NOT_DONE_YET)
    {
        //int state = instance_data[instance].testAppState;
        done = instance_localdata[instance].testapprun_fn(&instance_data[instance], message) ;     
    // run the communications application //we've processed message message = 0; }

    与之前一样,我们假定peekevent 还是没有任何事件发生,message等于0。

    由代码可以看出,每次必然会执行testapprun_s。

    再次进入testapprun_s,回想一下,与前面AHCOR二进宫类似,inst->testAppState = TA_RXE_WAIT ; 进去执行一样的动作,打开接收器。然后退出,然后回到Main。然后在…… 感觉一直往复循环,是的,ANCHOR在这里等待TAG发送数据量,因为接收器打开了。 那何时能退出这个无限循环呢,但接收到无线信号,产生一个事件,message不为0. 回头再看一下之前的代码。

    if(message == 0) break;
    

     假如我们接到无线数据,ANCHOR由于inst->testAppState 没有改变,所以依然执行case TA_RXE_WAIT 部分代码,但是最后没有break了,会把下面的一个case也执行,我们看看代码执行了啥

    // end case TA_RXE_WAIT, don't break, but fall through into the TA_RX_WAIT_DATA state to process it immediately.
     if(message == 0) break;
    }
    case TA_RX_WAIT_DATA :   //already recive a message
    // Wait RX data
    //printf("TA_RX_WAIT_DATA %d", message) ;
    switch (message)
    

    会执行“already receive a message”,我们就不要无线循环ANCHOR了,我们该去看看TAG了

    博客讨论一些室内定位(DWM1000/CC2431/CC2530) 以及一些随性的技术。博文可以转载,但需要注明出处!
  • 相关阅读:
    6-1
    5-9
    5-8
    5-7
    5-6
    实验4-1:掌握Android应用调试方法、添加新界面
    实验3:理解Activity 的生命周期
    R.java常见问题解决方案
    配置Android模拟器
    第02周实验: 变量、算术运算和数据类型
  • 原文地址:https://www.cnblogs.com/tuzhuke/p/7719406.html
Copyright © 2020-2023  润新知