【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】 code 解密5一ACHOR 第一次回家Main 函数的更多相关文章
- 【DWM1000】 code 解密1一 去掉Main 函数多余内容
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 室内定位兴起,DWM1000 作为超宽带UWB的代表,在国内用的越来越多,但是可见资料非常少. 一方面 ...
- 【DWM1000】 code 解密6一TAG 状态机第一步
我们前面分析过,不论ANCHOR 还是TAG,前面变量的初始化基本都是一样的,只是状态机必须明确区分不同的设备类型.我们从开始看TAG.由于初始化TAG的 testAppState一样初始化为TA_I ...
- 【DWM1000】 code 解密10 一 TAG 发送最后一个消息
更上面ANCHOR发送信息时的RTLS_DEMO_MSG_ANCH_RESP, 我们很快就可以找到如下代码 case RTLS_DEMO_MSG_ANCH_RESP: { 这里面一部分是设置重要变量, ...
- 【DWM1000】 code 解密7一ANCHOR接收到BLINK
接着之前ANCHOR的代码分析,但接收到无线数据,应该执行如下代码 case TA_RX_WAIT_DATA : //already recive a message ...
- 【DWM1000】 code 解密4一 ANCHOR 二进宫testapprun_s
上面我们的代码分析到ANCHOR 调用了一次testapprun_s,但是后面退出后发现还是满足while 条件,逼不得已还得再次调用testapprun_s.testapprun_s 也就是这样一点 ...
- 【DWM1000】 code 解密3一ANCHOR RUN起来
int done = INST_NOT_DONE_YET; #define INST_DONE_WAIT_FOR_NEXT_EVENT 1 //this signifies that the curr ...
- 【DWM1000】 code 解密2一 工程初始化代码分析
instance_init 函数追下去,绝大多数的代码都在初始化如下结构体 typedef struct { INST_MODE mode; instance_init -ANCHOR //insta ...
- 【DWM1000】 code 解密9一 ANCHOR response poll message
根据上面TAG发送的代码,我直接找到如下代码 case RTLS_DEMO_MSG_TAG_POLL: { if(inst->mode == LISTENER) ...
- 【DWM1000】 code 解密8一 TAG接收blink response 信号
在分析这个部分前,目前我看到DWM1000 的资料,data可以分为blink和一般无线数据,后面有内容我们再扩充, 上面我们已经看到接收到blink触发的事件为 case SIG_RX_BLINK ...
随机推荐
- python接收邮件
# -*- coding: utf-8 -*- import poplib import email from email.parser import Parser from email.header ...
- mysql 5.7 ERROR 1820 (HY000):
在首次登录Mysql 5.7 后,mysql数据库做出了很多的调整.执行大部分操作会提示这个错误 : ERROR 1820 (HY000): You must reset your password ...
- js两种写法执行速度比较
记录 function test1(){ this.say = function(){} } function test2(){ this.say = function(){} return this ...
- K8s-Pod
一:Pod-资源对象概述 Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展P ...
- Navicat Premium 12.1.8.0安装与激活
本文介绍Navicat Premium 12.1.8.0的安装.激活与基本使用. 博主所提供的激活文件理论支持Navicat Premium 12.0.x系列和Navicat Premium 12.1 ...
- node.js(一)
安装官网: https://nodejs.org/en/ 运行代码: var http=require('http') http.createServer(function(req,res){ res ...
- git报错处理
今天又遇到了这个问题,记录一下. 报错 原因及解决办法: 本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http ...
- rimraf node_modules 快速删除
npm install -g rimraf // 先进行全局安装 rimraf node_modules // 进行删除 -------------------------------- ...
- centos6.5上安装redis3.2.1遇见的坑
解决方法: 安装gcc即可解决 解决方法: make MALLOC=libc 原因分析: 说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redi ...
- 远程连接mongodb服务器