zigbee and wifitricker

This commit is contained in:
LitterDryFish
2019-09-08 11:39:07 +08:00
parent 4673e872e7
commit b83f4cc72e
2584 changed files with 1410820 additions and 2751173 deletions

View File

@@ -1,51 +1,86 @@
## zigbee协议栈
## z-stack协议栈
#### 整体功能概述
#### 协议栈的文件包层次结构
* 每个老人一个手环,手环可以获取到老人的**地点、心率、步数**等信息
- App应用层目录这是用户创建各种不同工程的区域在这个目录中包含了应用层的内容和这个项目的主要内容在协议中一般是以操作系统的任务实现的。
* 每个老人的房间门上有一个**RFID**卡反正能扫描后获取ID的可以通过**扫描**这个卡,获取到老人的身体情况和当天运动情况
* 老人房间情况:**温度**、**湿度**、**有没有人**等,可以定时上传到服务器
- HAL硬件层目录包含有与硬件相关的配置和驱动及操作函数
* 子女有个app可以查看绑定了的老人的所有信息地图可视化、身体信息可视化
* 子女app还可以看老人房间的情况看是不是过于热或者过于潮湿如果有问题就可以联系管理人员进行帮助
* 子女可以为绑定的老人设置个人信息(比如病理啥的,一般是对环境有要求的),比如设置了风湿,那房间湿度过高就自动提醒子女和管理员
* 管理员(养老院方)有一个网站,可以查看到所有老人的情况
- MACMAC层目录包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件
#### 细节功能实现
- MT实现通过串口可控制各层并与各层进行直接交互
| 功能描述 | 实现 |
| :--------------: | :----------------------------------------------------------: |
| 老人身体情况获取 | **开源手环**通过**蓝牙**给老人随身携带的**app**发送数据然后app传到**服务器** |
| 老人房门数据获取 | **~~RFID~~二维码**获得老人的ID通过ID从**服务器**获取老人的资料(这里我不太懂,有问题请改正) |
| 子女App端 | 百度地图可视化老人轨迹、可视化老人运动量(步数)、可视化老人身体情况、联系老人、紧急联络管理人员、获取老人房间数据 |
| 管理员Web端 | 对老人进行管理,可以根据体检信息给老人更新老人的数据,可以点击相应老人查看老人的情况等、可以紧急联系子女 |
| 老人房间信息获取 | **温湿度传感器**等通过zigbee与服务器连接进行增删改 |
- NWK网络层目录包含网络层配置参数文件网络层库的函数接口文件及APS层库的函数接口
#### 软硬件需求
- OSAL协议栈的操作系统
- ProfileAFApplicationframework应用框架层目录
- Security安全层目录包含安全层处理函数比如加密函数等
- Services地址处理函数目录包括地址模式的定义及地址处理函数
- Tools 工程配置目录包括空间划分及Z-Stack相关配置信息
- ZDOZDO目录
- ZMacMAC层目录包括MAC层参数配置及MAC层LIB库函数回调处理函数
- ZMain主函数目录包括入口函数及硬件配置文件
- Output输出文件目录由IAR IDE自动生成
#### 硬件需求
| 类型 | 需求 |
| :---------------------: | :----------------------------------------------------------: |
| 硬件 | ①手环定位、老人身体信息、能通过蓝牙和app传信息 ②房间传感器:获取温湿度等,能与服务器交互 ③RFID能扫描后获得老人的信息 ④物联网开发实验箱|
| 前端app | ①绑定老人一个账号只能绑定1~4位老人也可取消绑定 ②地图可视化:可视化老人一天的移动轨迹 ③步数、身体信息可视化 ④老人病理填写 ⑤获取老人的身体信息(体检的,由管理员上传的) |
| 前端Web | ①可视化所有老人的行踪(不用放在一个地图上,每个老人一个地图,不好做的话留着最后来)②老人信息增删改 ③老人体质信息可视化:这个最好做成折线图,展示一个月来的情况 |
| 后台 | SSM、给前端提供相应 |
| 看情况我在加个管理员app | RFID采用二维码方式标记每个老人的房门管理员APP可以通过扫码获取相关老人的信息进行查看修改添加相关信息可是实现移动端的老人信息管理|
| 硬件 | ①手环定位、老人身体信息、能通过蓝牙和app传信息 ②房间传感器:获取温湿度,人体红外,继电器等,能与服务器交互 ③RFID能扫描后获得老人的信息 ④物联网开发实验箱|
#### z-stack协议栈详细解决方案
#### 实验环境详细要求
* 网络拓扑类型:网状拓扑
* zigbee网络拓扑类型:网状拓扑
* 网络类型zigbee网络无线局域网
* 协议栈版本Z-stack 3.0.2
* 传感器:温、湿度传感器两个,人体红外传感器两个,运动手环两个,执行器三
* 角色:终端,协调器,网关,后台主机
* 传感器节点:温、湿度传感器(tem&&Humm)两个,人体红外传感器(IRPers)两个,运动手环(Band)两个,执行器(Excuter)三个,USB无线热点适配器(wifi AP)一
* 角色:终端(EndDevice),协调器(Coordinator),路由器(Router),网关(Gateway),后台主机
* 协议zigbeeTCP/IPBLE 4.0
* wifitricker连通内外网
#### 手环功能
* 步数
* 心率
* <u>定位</u>
* 睡眠
#### 硬件模块功能实现
| 功能描述 | 实现 |
| :--------------: | :----------------------------------------------------------: |
| 老人身体情况获取 | **开源手环**通过**蓝牙**给老人随身携带的**app**发送数据,采集老人的**心率,步数,血氧,睡眠。运动轨迹**然后app传到**服务器** |
| 老人房门数据获取 | **~~RFID~~二维码**获得老人的ID通过ID从**服务器**获取老人的资料 |
| 老人房间信息获取 |通过实验箱模拟老人房间环境zigbee模块通过**温湿度传感器****人体红外传感器**采集老人房间状态值,并根据温度值控制**继电器(空调)**实现房间的温控A8网关通过系统提供的CGI接口请求协调器发送各节点的信息通过脚本解析过后发送给服务器。|
####硬件系统架构
![avatar](https://s2.ax1x.com/2019/09/07/nlzwhF.png)
####数据访问网络接口
获取zigbee节点数据[http://192.168.0.1/cgi-bin/node.cgi](http://192.168.0.1/cgi-bin/node.cgi)
发送继电器控制命令:[http://192.168.0.1/cgi-bin/send_node.cgi?type=11&id=3&data=8](http://192.168.0.1/cgi-bin/send_node.cgi?type=11&id=3&data=8)
zigbee拓扑访问接口[http://192.168.0.1/topo.html](http://192.168.0.1/topo.html)
####实验效果展示
烧写好各个zigbee节点后通过A8网关的zigbee 管理界面查看拓扑也可以通过zigbee调试助手和上面的zigbee拓扑访问接口访问效果如下
![avatar](https://s2.ax1x.com/2019/09/07/nljfhQ.jpg)
####拉取数据
![avatar](https://s2.ax1x.com/2019/09/07/nlxToT.md.jpg)
通过访问上面的zigbee节点数据接口可以看到数据拉取成功各个节点的数据都有啦
**备注**
* 由于硬件的数据访问是通过WiFi AP创建的局域网所以数无法部署到云服务器所以我们自己编写了一个脚本用来连接外网把数据post到云服务器
*
* 若要访问以上网络接口需要将设备连接到WiFi Ap创建的局域网内。

View File

@@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="gson-2.2.2">
<CLASSES>
<root url="jar://$PROJECT_DIR$/gson-2.2.2.jar!/" />
<root url="jar://$PROJECT_DIR$/okhttp-3.5.0.jar!/" />
<root url="jar://$PROJECT_DIR$/okio-1.11.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

6
zigbee/WifiTrick/.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_9" default="true" project-jdk-name="9" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
zigbee/WifiTrick/.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/WifiTrick.iml" filepath="$PROJECT_DIR$/WifiTrick.iml" />
</modules>
</component>
</project>

368
zigbee/WifiTrick/.idea/workspace.xml generated Normal file
View File

@@ -0,0 +1,368 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="8c31ac36-84a0-4506-a753-0487845d308e" name="Default" comment="" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="TimeUtils.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/TimeUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-8">
<caret line="11" column="21" selection-start-line="11" selection-start-column="21" selection-end-line="11" selection-end-column="21" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Main.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="28">
<caret line="117" column="63" lean-forward="true" selection-start-line="117" selection-start-column="63" selection-end-line="117" selection-end-column="63" />
<folding>
<element signature="e#3124#3125#0" expanded="true" />
<element signature="e#3230#3231#0" expanded="true" />
<element signature="e#4116#4117#0" expanded="true" />
<element signature="e#4180#4181#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Room.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Room.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-8">
<caret line="8" column="18" selection-start-line="8" selection-start-column="18" selection-end-line="8" selection-end-column="18" />
<folding>
<element signature="e#194#195#0" expanded="true" />
<element signature="e#223#224#0" expanded="true" />
<element signature="e#267#268#0" expanded="true" />
<element signature="e#303#304#0" expanded="true" />
<element signature="e#342#343#0" expanded="true" />
<element signature="e#377#378#0" expanded="true" />
<element signature="e#433#434#0" expanded="true" />
<element signature="e#481#482#0" expanded="true" />
<element signature="e#516#517#0" expanded="true" />
<element signature="e#547#548#0" expanded="true" />
<element signature="e#595#596#0" expanded="true" />
<element signature="e#635#636#0" expanded="true" />
<element signature="e#670#671#0" expanded="true" />
<element signature="e#701#702#0" expanded="true" />
<element signature="e#749#750#0" expanded="true" />
<element signature="e#789#790#0" expanded="true" />
<element signature="e#820#821#0" expanded="true" />
<element signature="e#847#848#0" expanded="true" />
<element signature="e#887#888#0" expanded="true" />
<element signature="e#919#920#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WebUtils.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/WebUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-8">
<caret line="66" column="22" selection-start-line="66" selection-start-column="22" selection-end-line="66" selection-end-column="22" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/WebUtils.java" />
<option value="$PROJECT_DIR$/src/Room.java" />
<option value="$PROJECT_DIR$/src/Main.java" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="952" />
<option name="width" value="977" />
<option name="height" value="1038" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="AndroidView" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="WifiTrick" type="b2602c69:ProjectViewProjectNode" />
<item name="WifiTrick" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="WifiTrick" type="b2602c69:ProjectViewProjectNode" />
<item name="WifiTrick" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="last_opened_file_path" value="$PROJECT_DIR$/okio-1.11.0.jar!/" />
<property name="project.structure.last.edited" value="Libraries" />
<property name="project.structure.proportion" value="0.0" />
<property name="project.structure.side.proportion" value="0.2" />
<property name="settings.editor.selected.configurable" value="editor.preferences.fonts.default" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\IDEA\WifiTrick" />
<recent name="D:\IDEA\WifiTrick\src" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager">
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="Main" />
<module name="WifiTrick" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<patterns />
</configuration>
<configuration name="&lt;template&gt;" type="TestNG" default="true" selected="false">
<option name="VM_PARAMETERS" value="-ea" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.Main" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="8c31ac36-84a0-4506-a753-0487845d308e" name="Default" comment="" />
<created>1567911265477</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1567911265477</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
<layout>
<window_info anchor="right" id="Palette" order="3" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="Messages" order="7" />
<window_info anchor="right" id="Palette&#9;" order="6" />
<window_info id="Image Layers" order="3" />
<window_info anchor="right" id="Capture Analysis" order="4" />
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
<window_info anchor="bottom" id="Version Control" order="8" show_stripe_button="false" />
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.7986207" />
<window_info anchor="bottom" id="Terminal" order="10" />
<window_info id="Capture Tool" order="4" />
<window_info id="Designer" order="2" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.24934895" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="UI Designer" order="5" />
<window_info anchor="right" id="Theme Preview" order="5" />
<window_info id="Favorites" order="6" side_tool="true" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Find" order="1" />
</layout>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/TimeUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-8">
<caret line="11" column="21" selection-start-line="11" selection-start-column="21" selection-end-line="11" selection-end-column="21" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/WebUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-8">
<caret line="66" column="22" selection-start-line="66" selection-start-column="22" selection-end-line="66" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Room.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-8">
<caret line="8" column="18" selection-start-line="8" selection-start-column="18" selection-end-line="8" selection-end-column="18" />
<folding>
<element signature="e#194#195#0" expanded="true" />
<element signature="e#223#224#0" expanded="true" />
<element signature="e#267#268#0" expanded="true" />
<element signature="e#303#304#0" expanded="true" />
<element signature="e#342#343#0" expanded="true" />
<element signature="e#377#378#0" expanded="true" />
<element signature="e#433#434#0" expanded="true" />
<element signature="e#481#482#0" expanded="true" />
<element signature="e#516#517#0" expanded="true" />
<element signature="e#547#548#0" expanded="true" />
<element signature="e#595#596#0" expanded="true" />
<element signature="e#635#636#0" expanded="true" />
<element signature="e#670#671#0" expanded="true" />
<element signature="e#701#702#0" expanded="true" />
<element signature="e#749#750#0" expanded="true" />
<element signature="e#789#790#0" expanded="true" />
<element signature="e#820#821#0" expanded="true" />
<element signature="e#847#848#0" expanded="true" />
<element signature="e#887#888#0" expanded="true" />
<element signature="e#919#920#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="28">
<caret line="117" column="63" lean-forward="true" selection-start-line="117" selection-start-column="63" selection-end-line="117" selection-end-column="63" />
<folding>
<element signature="e#3124#3125#0" expanded="true" />
<element signature="e#3230#3231#0" expanded="true" />
<element signature="e#4116#4117#0" expanded="true" />
<element signature="e#4180#4181#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ArtifactsStructureConfigurable.UI">
<settings>
<artifact-editor />
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="FacetStructureConfigurable.UI">
<settings>
<last-edited>No facets are configured</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="GlobalLibrariesConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="JdkListConfigurable.UI">
<settings>
<last-edited>9</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ModuleStructureConfigurable.UI">
<settings>
<last-edited>WifiTrick</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
<option value="0.6" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectLibrariesConfigurable.UI">
<settings>
<last-edited>gson-2.2.2</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="gson-2.2.2" level="project" />
</component>
</module>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,130 @@
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
import java.io.IOException;
public class Main {
private static String isin;
private static String temporature;
private static String humidity;
private static WebUtils webUtils;
private static float slice;
private static int control;
public static void main(String[] args) {
webUtils = WebUtils.getInstance();
System.out.println("开始转发任务");
getAndUpData();
compareTem("1", 23);
}
private static void fengshan() {
webUtils.fengshan(control, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
}
private static void getAndUpData() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
webUtils.getRoomData(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
JsonArray jsonElements = getJsonArray(response);
Gson gson = new Gson();
Node[] nodes = gson.fromJson(jsonElements, Node[].class);
for (Node node : nodes) {
System.out.println("接收到数据:" + node.toString());
funcList[] funcLists = node.getFuncList();
for (funcList funcList : funcLists) {
if (funcList.getType().equals("安防")) {
isin = String.valueOf((int) funcList.getData());
} else if (funcList.getType().equals("温度")) {
temporature = String.valueOf(funcList.getData());
compareTem("1", funcList.getData());
} else if (funcList.getType().equals("湿度")) {
humidity = String.valueOf(funcList.getData());
}
}
}
RoomData roomData = new RoomData(isin, temporature, humidity, TimeUtils.getTime(), "1");
System.out.println("解析出房间信息:" + roomData);
webUtils.upRoomState(roomData.getMap(), new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println("房间信息上传成功");
fengshan();
getAndUpData();
}
});
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
private static JsonArray getJsonArray(Response response) throws IOException {
String result = response.body().string();
JsonParser jsonParser = new JsonParser();
JsonArray jsonObject = (JsonArray) jsonParser.parse(result);
return jsonObject;
}
private static void compareTem(String roomId, float nowTem) {
webUtils.getRoomTemp(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
JsonArray jsonElements = getJsonArray(response);
Gson gson = new Gson();
Room[] rooms = gson.fromJson(jsonElements, Room[].class);
for (int i = 0; i < rooms.length; i++) {
if (rooms[i].getRoomId().equals(roomId)) {
System.out.println(rooms[i].toString());
if (Float.valueOf(rooms[i].getTemp()) < nowTem) {
control = 8;
} else {
control = 1;
}
System.out.println("control:" + control);
}
}
}
});
}
}

View File

@@ -0,0 +1,62 @@
/**
* Created by ScorpioMiku on 2019/9/3.
*/
public class Node {
private String nwkAddr;
private String parAddr;
private String macAddr;
private funcList[] funcList;
public funcList[] getFuncList() {
return funcList;
}
public void setFuncList(funcList[] funcList) {
this.funcList = funcList;
}
@Override
public String toString() {
return "Node{" +
"nwkAddr='" + nwkAddr + '\'' +
", parAddr='" + parAddr + '\'' +
", macAddr='" + macAddr + '\'' +
", funcList=" + funcListString() +
'}';
}
private String funcListString() {
String temp = "";
for (int i = 0; i < funcList.length; i++) {
temp += funcList[i].toString();
}
return temp;
}
public String getNwkAddr() {
return nwkAddr;
}
public void setNwkAddr(String nwkAddr) {
this.nwkAddr = nwkAddr;
}
public String getParAddr() {
return parAddr;
}
public void setParAddr(String parAddr) {
this.parAddr = parAddr;
}
public String getMacAddr() {
return macAddr;
}
public void setMacAddr(String macAddr) {
this.macAddr = macAddr;
}
}

View File

@@ -0,0 +1,58 @@
public class Room {
private String roomId;
private String roomLocation;
private String roomName;
private String parentId;
private String temp;
@Override
public String toString() {
return "Room{" +
"roomId='" + roomId + '\'' +
", roomLocation='" + roomLocation + '\'' +
", roomName='" + roomName + '\'' +
", parentId='" + parentId + '\'' +
", temp='" + temp + '\'' +
'}';
}
public String getRoomId() {
return roomId;
}
public void setRoomId(String roomId) {
this.roomId = roomId;
}
public String getRoomLocation() {
return roomLocation;
}
public void setRoomLocation(String roomLocation) {
this.roomLocation = roomLocation;
}
public String getRoomName() {
return roomName;
}
public void setRoomName(String roomName) {
this.roomName = roomName;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
}

View File

@@ -0,0 +1,82 @@
import java.util.HashMap;
/**
* Created by ScorpioMiku on 2019/9/3.
*/
public class RoomData {
private String isin;
private String temporature;
private String humidity;
private String time;
private String roomId;
public RoomData(String isin, String temporature, String humidity, String time, String roomId) {
this.isin = isin;
this.temporature = temporature;
this.humidity = humidity;
this.time = time;
this.roomId = roomId;
}
public HashMap<String, String> getMap() {
HashMap<String, String> mapData = new HashMap<>();
mapData.put("roomId", getRoomId());
mapData.put("time", TimeUtils.getTime());
mapData.put("temperature", getTemporature());
mapData.put("humidity", getHumidity());
mapData.put("isin", getIsin());
return mapData;
}
public String getIsin() {
return isin;
}
public void setIsin(String isin) {
this.isin = isin;
}
public String getTemporature() {
return temporature;
}
public void setTemporature(String temporature) {
this.temporature = temporature;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getRoomId() {
return roomId;
}
public void setRoomId(String roomId) {
this.roomId = roomId;
}
@Override
public String toString() {
return "RoomData{" +
"isin='" + isin + '\'' +
", temporature='" + temporature + '\'' +
", humidity='" + humidity + '\'' +
", time='" + time + '\'' +
", roomId='" + roomId + '\'' +
'}';
}
}

View File

@@ -0,0 +1,18 @@
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
* Created by ScorpioMiku on 2019/9/3.
*/
public class TimeUtils {
public static String getTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
//获取当前时间
Date date = new Date(System.currentTimeMillis());
return simpleDateFormat.format(date);
}
}

View File

@@ -0,0 +1,73 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Set;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* Created by ScorpioMiku on 2019/9/3.
*/
public class WebUtils {
private static final String TAG = "WebUtils";
private static WebUtils instance = new WebUtils();
private static OkHttpClient mClient = new OkHttpClient();
private static final String webHost = "http://39.105.65.209:8080";
private WebUtils() {
}
public static WebUtils getInstance() {
return instance;
}
public RequestBody getRequestBody(HashMap<String, String> data) {
String body = "";
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
Set<String> keys = data.keySet();
for (String key : keys) {
body += key + "=" + data.get(key) + "&";
}
body = body.substring(0, body.length() - 1);
RequestBody requestBody = RequestBody.create(mediaType, body);
return requestBody;
}
public void upRoomState(HashMap<String, String> hashMap, Callback callback) {
Request request = new Request.Builder().post(getRequestBody(hashMap))
.url(webHost + "/rstate/add/").build();
Call call = mClient.newCall(request);
call.enqueue(callback);
}
public void getRoomData(Callback callback) {
Request request = new Request.Builder()
.url("http://192.168.0.1/cgi-bin/node.cgi")
.build();
Call call = mClient.newCall(request);
call.enqueue(callback);
}
public void fengshan(int code, Callback callback) {
Request request = new Request.Builder()
.url("http://192.168.0.1/cgi-bin/send_node.cgi" + "?type=11&id=3&data=" + code).build();
Call call = mClient.newCall(request);
call.enqueue(callback);
}
public void getRoomTemp(Callback callback) {
Request request = new Request.Builder()
.url("http://39.105.65.209:8080/room/list").build();
Call call = mClient.newCall(request);
call.enqueue(callback);
}
}

View File

@@ -0,0 +1,55 @@
import java.util.HashMap;
/**
* Created by ScorpioMiku on 2019/9/3.
*/
public class funcList {
private String typeCode;
private String type;
private float cycle;
private float data;
@Override
public String toString() {
return "funcList{" +
"typeCode='" + typeCode + '\'' +
", type='" + type + '\'' +
", cycle=" + cycle +
", data=" + data +
'}';
}
public String getTypeCode() {
return typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public float getCycle() {
return cycle;
}
public void setCycle(float cycle) {
this.cycle = cycle;
}
public float getData() {
return data;
}
public void setData(float data) {
this.data = data;
}
}

View File

@@ -1,266 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:20
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\APP_Base.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW4C50.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\APP_Base.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\APP_Base.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\APP_Base.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\APP_Base.c
1 #include "APP_Base.h"
2
3 #if defined(SAPP_ZSTACK_DEMO)
4 #include "hal_led.h"
5 // 任务建立实验范例代码
6 // 任务处理函数
7 uint16 Hello_ProcessEvent(uint8 task_id, uint16 events);
8 uint16 Hello_ProcessEvent(uint8 task_id, uint16 events)
9 {
10 if(events & 0x0001)
11 {
12 // 控制LED闪烁
13 HalLedBlink(HAL_LED_1, 1, 50, 250);
14 // 启动定时器, 设置1秒钟后再次触发该任务
15 osal_start_timerEx(task_id, 0x0001, 1000);
16 }
17 // 清除定时器事件标志
18 return (events ^ 0x0001);
19 }
20 #endif
21
22 // 任务列表
\ In segment XDATA_ROM_C, align 1
23 const pTaskEventHandlerFn tasksArr[] = {
\ tasksArr:
\ 000000 .... DW `??macEventLoop::?relay`
\ 000002 .... DW `??nwk_event_loop::?relay`
\ 000004 .... DW `??Hal_ProcessEvent::?relay`
\ 000006 .... DW `??MT_ProcessEvent::?relay`
\ 000008 .... DW `??APS_event_loop::?relay`
\ 00000A .... DW `??APSF_ProcessEvent::?relay`
\ 00000C .... DW `??ZDApp_event_loop::?relay`
\ 00000E .... DW `??ZDNwkMgr_event_loop::?relay`
\ 000010 .... DW `??sapp_controlEpProcess::?relay`
\ 000012 .... DW `??sapp_functionEpProcess::?relay`
24 macEventLoop,
25 nwk_event_loop,
26 Hal_ProcessEvent,
27 #if defined( MT_TASK )
28 MT_ProcessEvent,
29 #endif
30 APS_event_loop,
31 #if defined ( ZIGBEE_FRAGMENTATION )
32 APSF_ProcessEvent,
33 #endif
34 ZDApp_event_loop,
35 #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
36 ZDNwkMgr_event_loop,
37 #endif
38 #if defined(SAPP_ZSTACK)
39 sapp_controlEpProcess,
40 sapp_functionEpProcess,
41 #endif
42 #if defined(SAPP_ZSTACK_DEMO)
43 // 任务建立实验范例代码
44 // 任务列表
45 Hello_ProcessEvent,
46 #endif
47 };
\ In segment XDATA_ROM_C, align 1
48 const uint8 tasksCnt = sizeof(tasksArr)/sizeof(tasksArr[0]);
\ tasksCnt:
\ 000000 0A DB 10
49
50 // 初始化任务
\ In segment BANKED_CODE, align 1, keep-with-next
51 void osalInitTasks( void )
\ osalInitTasks:
52 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
53 uint8 taskID = 0;
54
55 macTaskInit( taskID++ );
\ 000004 ; Setup parameters for call to function macTaskInit
\ 000004 7900 MOV R1,#0x0
\ 000006 12.... LCALL `??macTaskInit::?relay`; Banked call to: macTaskInit
56 nwk_init( taskID++ );
\ 000009 ; Setup parameters for call to function nwk_init
\ 000009 7901 MOV R1,#0x1
\ 00000B 12.... LCALL `??nwk_init::?relay`; Banked call to: nwk_init
57 Hal_Init( taskID++ );
\ 00000E ; Setup parameters for call to function Hal_Init
\ 00000E 7902 MOV R1,#0x2
\ 000010 12.... LCALL `??Hal_Init::?relay`; Banked call to: Hal_Init
58 #if defined( MT_TASK )
59 MT_TaskInit( taskID++ );
\ 000013 ; Setup parameters for call to function MT_TaskInit
\ 000013 7903 MOV R1,#0x3
\ 000015 12.... LCALL `??MT_TaskInit::?relay`; Banked call to: MT_TaskInit
60 #endif
61 APS_Init( taskID++ );
\ 000018 ; Setup parameters for call to function APS_Init
\ 000018 7904 MOV R1,#0x4
\ 00001A 12.... LCALL `??APS_Init::?relay`; Banked call to: APS_Init
62 #if defined ( ZIGBEE_FRAGMENTATION )
63 APSF_Init( taskID++ );
\ 00001D ; Setup parameters for call to function APSF_Init
\ 00001D 7905 MOV R1,#0x5
\ 00001F 12.... LCALL `??APSF_Init::?relay`; Banked call to: APSF_Init
64 #endif
65 ZDApp_Init( taskID++ );
\ 000022 ; Setup parameters for call to function ZDApp_Init
\ 000022 7906 MOV R1,#0x6
\ 000024 12.... LCALL `??ZDApp_Init::?relay`; Banked call to: ZDApp_Init
66 #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
67 ZDNwkMgr_Init( taskID++ );
\ 000027 ; Setup parameters for call to function ZDNwkMgr_Init
\ 000027 7907 MOV R1,#0x7
\ 000029 12.... LCALL `??ZDNwkMgr_Init::?relay`; Banked call to: ZDNwkMgr_Init
68 #endif
69 #if defined(SAPP_ZSTACK)
70 sapp_taskInitProcess();
\ 00002C ; Setup parameters for call to function sapp_taskInitProcess
\ 00002C 12.... LCALL `??sapp_taskInitProcess::?relay`; Banked call to: sapp_taskInitProcess
71 #endif
72 #if defined(SAPP_ZSTACK_DEMO)
73 // 任务建立实验范例代码
74 // 启动定时器
75 osal_start_timerEx(taskID, 0x0001, 1000);
76 #endif
77 }
\ 00002F D083 POP DPH
\ 000031 D082 POP DPL
\ 000033 02.... LJMP ?BRET
Maximum stack usage in bytes:
ISTACK Function
------ --------
2 osalInitTasks
2 -> APSF_Init
2 -> APS_Init
2 -> Hal_Init
2 -> MT_TaskInit
2 -> ZDApp_Init
2 -> ZDNwkMgr_Init
2 -> macTaskInit
2 -> nwk_init
2 -> sapp_taskInitProcess
Segment part sizes:
Bytes Function/Label
----- --------------
54 osalInitTasks
20 tasksArr
1 tasksCnt
6 -- Other
54 bytes in segment BANKED_CODE
6 bytes in segment BANK_RELAYS
21 bytes in segment XDATA_ROM_C
6 bytes of CODE memory
21 bytes of CONST memory
54 bytes of HUGECODE memory
Errors: none
Warnings: none

View File

@@ -1,615 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:20
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\APP_Base.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW4C50.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\APP_Base.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\APP_Base.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME APP_Base
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
EXTERN ?BDISPATCH
EXTERN ?BRET
PUBLIC `??osalInitTasks::?relay`
FUNCTION `??osalInitTasks::?relay`,0203H
PUBLIC osalInitTasks
FUNCTION osalInitTasks,021203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC tasksArr
PUBLIC tasksCnt
CFI Names cfiNames0
CFI StackFrame CFA_SP SP IDATA
CFI StackFrame CFA_PSP16 PSP16 XDATA
CFI StackFrame CFA_XSP16 XSP16 XDATA
CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
CFI VirtualResource ?RET:24
CFI Resource ?BRET_EXT:8
CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
CFI ResourceParts PSP16 PSPH, PSPL
CFI ResourceParts XSP16 XSPH, XSPL
CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-3
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B Undefined
CFI A Undefined
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT Frame(CFA_SP, 3)
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon0
APSF_Init SYMBOL "APSF_Init"
`??APSF_Init::?relay` SYMBOL "?relay", APSF_Init
`?<Name APSF_ProcessEvent 2>` SYMBOL "APSF_ProcessEvent"
`??APSF_ProcessEvent::?relay` SYMBOL "?relay", `?<Name APSF_ProcessEvent 2>`
APS_Init SYMBOL "APS_Init"
`??APS_Init::?relay` SYMBOL "?relay", APS_Init
`?<Name APS_event_loop 6>` SYMBOL "APS_event_loop"
`??APS_event_loop::?relay` SYMBOL "?relay", `?<Name APS_event_loop 6>`
Hal_Init SYMBOL "Hal_Init"
`??Hal_Init::?relay` SYMBOL "?relay", Hal_Init
`?<Name Hal_ProcessEvent 10>` SYMBOL "Hal_ProcessEvent"
`??Hal_ProcessEvent::?relay` SYMBOL "?relay", `?<Name Hal_ProcessEvent 10>`
`?<Name MT_ProcessEvent 12>` SYMBOL "MT_ProcessEvent"
`??MT_ProcessEvent::?relay` SYMBOL "?relay", `?<Name MT_ProcessEvent 12>`
MT_TaskInit SYMBOL "MT_TaskInit"
`??MT_TaskInit::?relay` SYMBOL "?relay", MT_TaskInit
ZDApp_Init SYMBOL "ZDApp_Init"
`??ZDApp_Init::?relay` SYMBOL "?relay", ZDApp_Init
`?<Name ZDApp_event_loop 18>` SYMBOL "ZDApp_event_loop"
`??ZDApp_event_loop::?relay` SYMBOL "?relay", `?<Name ZDApp_event_loop 18>`
ZDNwkMgr_Init SYMBOL "ZDNwkMgr_Init"
`??ZDNwkMgr_Init::?relay` SYMBOL "?relay", ZDNwkMgr_Init
`?<Name ZDNwkMgr_event_loop 22>` SYMBOL "ZDNwkMgr_event_loop"
`??ZDNwkMgr_event_loop::?relay` SYMBOL "?relay", `?<Name ZDNwkMgr_event_loop 22>`
`?<Name macEventLoop 24>` SYMBOL "macEventLoop"
`??macEventLoop::?relay` SYMBOL "?relay", `?<Name macEventLoop 24>`
macTaskInit SYMBOL "macTaskInit"
`??macTaskInit::?relay` SYMBOL "?relay", macTaskInit
`?<Name nwk_event_loop 28>` SYMBOL "nwk_event_loop"
`??nwk_event_loop::?relay` SYMBOL "?relay", `?<Name nwk_event_loop 28>`
nwk_init SYMBOL "nwk_init"
`??nwk_init::?relay` SYMBOL "?relay", nwk_init
`?<Name sapp_controlEpProces 32>` SYMBOL "sapp_controlEpProcess"
`??sapp_controlEpProcess::?relay` SYMBOL "?relay", `?<Name sapp_controlEpProces 32>`
`?<Name sapp_functionEpProce 34>` SYMBOL "sapp_functionEpProcess"
`??sapp_functionEpProcess::?relay` SYMBOL "?relay", `?<Name sapp_functionEpProce 34>`
sapp_taskInitProcess SYMBOL "sapp_taskInitProcess"
`??sapp_taskInitProcess::?relay` SYMBOL "?relay", sapp_taskInitProcess
osalInitTasks SYMBOL "osalInitTasks"
`??osalInitTasks::?relay` SYMBOL "?relay", osalInitTasks
EXTERN `??APSF_Init::?relay`
FUNCTION `??APSF_Init::?relay`,00H
EXTERN `??APSF_ProcessEvent::?relay`
FUNCTION `??APSF_ProcessEvent::?relay`,00H
EXTERN `??APS_Init::?relay`
FUNCTION `??APS_Init::?relay`,00H
EXTERN `??APS_event_loop::?relay`
FUNCTION `??APS_event_loop::?relay`,00H
EXTERN `??Hal_Init::?relay`
FUNCTION `??Hal_Init::?relay`,00H
EXTERN `??Hal_ProcessEvent::?relay`
FUNCTION `??Hal_ProcessEvent::?relay`,00H
EXTERN `??MT_ProcessEvent::?relay`
FUNCTION `??MT_ProcessEvent::?relay`,00H
EXTERN `??MT_TaskInit::?relay`
FUNCTION `??MT_TaskInit::?relay`,00H
EXTERN `??ZDApp_Init::?relay`
FUNCTION `??ZDApp_Init::?relay`,00H
EXTERN `??ZDApp_event_loop::?relay`
FUNCTION `??ZDApp_event_loop::?relay`,00H
EXTERN `??ZDNwkMgr_Init::?relay`
FUNCTION `??ZDNwkMgr_Init::?relay`,00H
EXTERN `??ZDNwkMgr_event_loop::?relay`
FUNCTION `??ZDNwkMgr_event_loop::?relay`,00H
EXTERN `??macEventLoop::?relay`
FUNCTION `??macEventLoop::?relay`,00H
EXTERN `??macTaskInit::?relay`
FUNCTION `??macTaskInit::?relay`,00H
EXTERN `??nwk_event_loop::?relay`
FUNCTION `??nwk_event_loop::?relay`,00H
EXTERN `??nwk_init::?relay`
FUNCTION `??nwk_init::?relay`,00H
EXTERN `??sapp_controlEpProcess::?relay`
FUNCTION `??sapp_controlEpProcess::?relay`,00H
EXTERN `??sapp_functionEpProcess::?relay`
FUNCTION `??sapp_functionEpProcess::?relay`,00H
EXTERN `??sapp_taskInitProcess::?relay`
FUNCTION `??sapp_taskInitProcess::?relay`,00H
EXTERN APSF_Init
FUNCTION APSF_Init,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN APS_Init
FUNCTION APS_Init,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN Hal_Init
FUNCTION Hal_Init,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN MT_TaskInit
FUNCTION MT_TaskInit,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN ZDApp_Init
FUNCTION ZDApp_Init,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN ZDNwkMgr_Init
FUNCTION ZDNwkMgr_Init,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN macTaskInit
FUNCTION macTaskInit,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN nwk_init
FUNCTION nwk_init,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN sapp_taskInitProcess
FUNCTION sapp_taskInitProcess,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\APP_Base.c
// 1 #include "APP_Base.h"
// 2
// 3 #if defined(SAPP_ZSTACK_DEMO)
// 4 #include "hal_led.h"
// 5 // 任务建立实验范例代码
// 6 // 任务处理函数
// 7 uint16 Hello_ProcessEvent(uint8 task_id, uint16 events);
// 8 uint16 Hello_ProcessEvent(uint8 task_id, uint16 events)
// 9 {
// 10 if(events & 0x0001)
// 11 {
// 12 // 控制LED闪烁
// 13 HalLedBlink(HAL_LED_1, 1, 50, 250);
// 14 // 启动定时器, 设置1秒钟后再次触发该任务
// 15 osal_start_timerEx(task_id, 0x0001, 1000);
// 16 }
// 17 // 清除定时器事件标志
// 18 return (events ^ 0x0001);
// 19 }
// 20 #endif
// 21
// 22 // 任务列表
RSEG XDATA_ROM_C:CONST:REORDER:NOROOT(0)
DATA8
// 23 const pTaskEventHandlerFn tasksArr[] = {
tasksArr:
DATA16
DW `??macEventLoop::?relay`
DW `??nwk_event_loop::?relay`
DW `??Hal_ProcessEvent::?relay`
DW `??MT_ProcessEvent::?relay`
DW `??APS_event_loop::?relay`
DW `??APSF_ProcessEvent::?relay`
DW `??ZDApp_event_loop::?relay`
DW `??ZDNwkMgr_event_loop::?relay`
DW `??sapp_controlEpProcess::?relay`
DW `??sapp_functionEpProcess::?relay`
// 24 macEventLoop,
// 25 nwk_event_loop,
// 26 Hal_ProcessEvent,
// 27 #if defined( MT_TASK )
// 28 MT_ProcessEvent,
// 29 #endif
// 30 APS_event_loop,
// 31 #if defined ( ZIGBEE_FRAGMENTATION )
// 32 APSF_ProcessEvent,
// 33 #endif
// 34 ZDApp_event_loop,
// 35 #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
// 36 ZDNwkMgr_event_loop,
// 37 #endif
// 38 #if defined(SAPP_ZSTACK)
// 39 sapp_controlEpProcess,
// 40 sapp_functionEpProcess,
// 41 #endif
// 42 #if defined(SAPP_ZSTACK_DEMO)
// 43 // 任务建立实验范例代码
// 44 // 任务列表
// 45 Hello_ProcessEvent,
// 46 #endif
// 47 };
RSEG XDATA_ROM_C:CONST:REORDER:NOROOT(0)
DATA8
// 48 const uint8 tasksCnt = sizeof(tasksArr)/sizeof(tasksArr[0]);
tasksCnt:
DB 10
// 49
// 50 // 初始化任务
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 51 void osalInitTasks( void )
osalInitTasks:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function osalInitTasks
CODE
// 52 {
FUNCALL osalInitTasks, macTaskInit
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, nwk_init
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, Hal_Init
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, MT_TaskInit
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, APS_Init
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, APSF_Init
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, ZDApp_Init
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, ZDNwkMgr_Init
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL osalInitTasks, sapp_taskInitProcess
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 53 uint8 taskID = 0;
// 54
// 55 macTaskInit( taskID++ );
; Setup parameters for call to function macTaskInit
MOV R1,#0x0
LCALL `??macTaskInit::?relay`; Banked call to: macTaskInit
// 56 nwk_init( taskID++ );
; Setup parameters for call to function nwk_init
MOV R1,#0x1
LCALL `??nwk_init::?relay`; Banked call to: nwk_init
// 57 Hal_Init( taskID++ );
; Setup parameters for call to function Hal_Init
MOV R1,#0x2
LCALL `??Hal_Init::?relay`; Banked call to: Hal_Init
// 58 #if defined( MT_TASK )
// 59 MT_TaskInit( taskID++ );
; Setup parameters for call to function MT_TaskInit
MOV R1,#0x3
LCALL `??MT_TaskInit::?relay`; Banked call to: MT_TaskInit
// 60 #endif
// 61 APS_Init( taskID++ );
; Setup parameters for call to function APS_Init
MOV R1,#0x4
LCALL `??APS_Init::?relay`; Banked call to: APS_Init
// 62 #if defined ( ZIGBEE_FRAGMENTATION )
// 63 APSF_Init( taskID++ );
; Setup parameters for call to function APSF_Init
MOV R1,#0x5
LCALL `??APSF_Init::?relay`; Banked call to: APSF_Init
// 64 #endif
// 65 ZDApp_Init( taskID++ );
; Setup parameters for call to function ZDApp_Init
MOV R1,#0x6
LCALL `??ZDApp_Init::?relay`; Banked call to: ZDApp_Init
// 66 #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
// 67 ZDNwkMgr_Init( taskID++ );
; Setup parameters for call to function ZDNwkMgr_Init
MOV R1,#0x7
LCALL `??ZDNwkMgr_Init::?relay`; Banked call to: ZDNwkMgr_Init
// 68 #endif
// 69 #if defined(SAPP_ZSTACK)
// 70 sapp_taskInitProcess();
; Setup parameters for call to function sapp_taskInitProcess
LCALL `??sapp_taskInitProcess::?relay`; Banked call to: sapp_taskInitProcess
// 71 #endif
// 72 #if defined(SAPP_ZSTACK_DEMO)
// 73 // 任务建立实验范例代码
// 74 // 启动定时器
// 75 osal_start_timerEx(taskID, 0x0001, 1000);
// 76 #endif
// 77 }
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-4
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-3
LJMP ?BRET
CFI EndBlock cfiBlock0
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??osalInitTasks::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 osalInitTasks
END
//
// 54 bytes in segment BANKED_CODE
// 6 bytes in segment BANK_RELAYS
// 21 bytes in segment XDATA_ROM_C
//
// 6 bytes of CODE memory
// 21 bytes of CONST memory
// 54 bytes of HUGECODE memory
//
//Errors: none
//Warnings: none

View File

@@ -1,536 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:20
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\DebugTrace.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW4C62.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\DebugTrace.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\DebugTrace.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\DebugTrace.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\DebugTrace.c
1 /**************************************************************************************************
2 Filename: DebugTrace.c
3 Revised: $Date: 2008-01-17 12:22:57 -0800 (Thu, 17 Jan 2008) $
4 Revision: $Revision: 16223 $
5
6
7 Description: This interface provides quick one-function-call functions to
8 Monitor and Test reporting mechanisms.
9
10
11 Copyright 2007 Texas Instruments Incorporated. All rights reserved.
12
13 IMPORTANT: Your use of this Software is limited to those specific rights
14 granted under the terms of a software license agreement between the user
15 who downloaded the software, his/her employer (which must be your employer)
16 and Texas Instruments Incorporated (the "License"). You may not use this
17 Software unless you agree to abide by the terms of the License. The License
18 limits your use, and you acknowledge, that the Software may not be modified,
19 copied or distributed unless embedded on a Texas Instruments microcontroller
20 or used solely and exclusively in conjunction with a Texas Instruments radio
21 frequency transceiver, which is integrated into your product. Other than for
22 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
23 works of, modify, distribute, perform, display or sell this Software and/or
24 its documentation for any purpose.
25
26 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
27 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
28 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
29 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
30 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
31 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
32 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
33 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
34 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
35 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
36 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
37
38 Should you have any questions regarding your right to use this Software,
39 contact Texas Instruments Incorporated at www.TI.com.
40
41 **************************************************************************************************/
42
43 #if defined( MT_TASK ) || defined( APP_DEBUG )
44
45 /*********************************************************************
46 * INCLUDES
47 */
48 #include "ZComDef.h"
49 #include "OSAL.h"
50 #include "MT.h"
51 #include "MT_TASK.h"
52 #include "MT_DEBUG.h"
53 #include "DebugTrace.h"
54
55 #if defined ( APP_DEBUG )
56 #include "DebugApp.h"
57 #endif
58
59 /*********************************************************************
60 * MACROS
61 */
62
63 /*********************************************************************
64 * CONSTANTS
65 */
66
67
68 /*********************************************************************
69 * TYPEDEFS
70 */
71
72 /*********************************************************************
73 * GLOBAL VARIABLES
74 */
75
76 /*********************************************************************
77 * EXTERNAL VARIABLES
78 */
79
80 /*********************************************************************
81 * EXTERNAL FUNCTIONS
82 */
83
84 /*********************************************************************
85 * LOCAL VARIABLES
86 */
87
88 /*********************************************************************
89 * LOCAL FUNCTIONS
90 */
91
92 /*********************************************************************
93 * @fn debug_msg
94 *
95 * @brief
96 *
97 * This feature allows modules to display debug information as
98 * applications execute in real-time. This feature will work similar
99 * to "printf()" but will output to the serial port for display in
100 * the Z-Test tool.
101 *
102 * This feature will most likely be compiled out in the production code
103 * to save code space.
104 *
105 * @param byte compID - Component ID
106 * @param byte severity - CRITICAL(0x01), ERROR(0x02), INFORMATION(0x03)
107 * or TRACE(0x04)
108 * @param byte numParams - number of parameter fields (param1-3)
109 * @param UINT16 param1 - user defined data
110 * @param UINT16 param2 - user defined data
111 * @param UINT16 param3 - user defined data
112 *
113 * @return void
114 */
\ In segment BANKED_CODE, align 1, keep-with-next
115 void debug_msg( byte compID, byte severity, byte numParams, UINT16 param1,
\ debug_msg:
116 UINT16 param2, UINT16 param3 )
117 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V2
\ 000000 REQUIRE ?V3
\ 000000 REQUIRE ?V4
\ 000000 REQUIRE ?V5
\ 000000 74F2 MOV A,#-0xe
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 14
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
\ 000007 EA MOV A,R2
\ 000008 FF MOV R7,A
\ 000009 8B.. MOV ?V0,R3
\ 00000B 8C.. MOV ?V4,R4
\ 00000D 8D.. MOV ?V5,R5
118
119 mtDebugMsg_t *mtDebugMsg;
120 UINT16 timestamp;
121
122 if ( debugThreshold == 0 || debugCompId != compID )
\ 00000F 90.... MOV DPTR,#debugThreshold
\ 000012 E0 MOVX A,@DPTR
\ 000013 6068 JZ ??debug_msg_0
\ 000015 90.... MOV DPTR,#debugCompId
\ 000018 E0 MOVX A,@DPTR
\ 000019 6E XRL A,R6
\ 00001A 6002 JZ ??debug_msg_1
123 return;
\ ??debug_msg_2:
\ 00001C 805F SJMP ??debug_msg_0
124
125 // Fill in the timestamp
126 timestamp = 0;
127
128 // Get a message buffer to build the debug message
129 mtDebugMsg = (mtDebugMsg_t *)osal_msg_allocate( sizeof( mtDebugMsg_t ) );
\ ??debug_msg_1:
\ 00001E ; Setup parameters for call to function osal_msg_allocate
\ 00001E 7A0D MOV R2,#0xd
\ 000020 7B00 MOV R3,#0x0
\ 000022 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
130 if ( mtDebugMsg )
\ 000025 EA MOV A,R2
\ 000026 4B ORL A,R3
\ 000027 6054 JZ ??debug_msg_0
131 {
132 mtDebugMsg->hdr.event = CMD_DEBUG_MSG;
\ 000029 8A82 MOV DPL,R2
\ 00002B 8B83 MOV DPH,R3
\ 00002D 7402 MOV A,#0x2
\ 00002F F0 MOVX @DPTR,A
133 mtDebugMsg->compID = compID;
\ 000030 EE MOV A,R6
\ 000031 A3 INC DPTR
\ 000032 A3 INC DPTR
\ 000033 F0 MOVX @DPTR,A
134 mtDebugMsg->severity = severity;
\ 000034 EF MOV A,R7
\ 000035 8A82 MOV DPL,R2
\ 000037 8B83 MOV DPH,R3
\ 000039 A3 INC DPTR
\ 00003A A3 INC DPTR
\ 00003B A3 INC DPTR
\ 00003C 12.... LCALL ?Subroutine2 & 0xFFFF
135 mtDebugMsg->numParams = numParams;
\ ??CrossCallReturnLabel_2:
\ 00003F E5.. MOV A,?V0
\ 000041 12.... LCALL ?Subroutine2 & 0xFFFF
136
137 mtDebugMsg->param1 = param1;
\ ??CrossCallReturnLabel_3:
\ 000044 A3 INC DPTR
\ 000045 E5.. MOV A,?V4
\ 000047 F0 MOVX @DPTR,A
\ 000048 A3 INC DPTR
\ 000049 E5.. MOV A,?V5
\ 00004B F0 MOVX @DPTR,A
138 mtDebugMsg->param2 = param2;
\ 00004C 740E MOV A,#0xe
\ 00004E 12.... LCALL ?XSTACK_DISP0_8
\ 000051 12.... LCALL ?Subroutine1 & 0xFFFF
\ ??CrossCallReturnLabel_0:
\ 000054 E8 MOV A,R0
\ 000055 F0 MOVX @DPTR,A
\ 000056 A3 INC DPTR
\ 000057 E9 MOV A,R1
\ 000058 F0 MOVX @DPTR,A
139 mtDebugMsg->param3 = param3;
\ 000059 7410 MOV A,#0x10
\ 00005B 12.... LCALL ?XSTACK_DISP0_8
\ 00005E 12.... LCALL ?Subroutine1 & 0xFFFF
\ ??CrossCallReturnLabel_1:
\ 000061 A3 INC DPTR
\ 000062 A3 INC DPTR
\ 000063 E8 MOV A,R0
\ 000064 F0 MOVX @DPTR,A
\ 000065 A3 INC DPTR
\ 000066 E9 MOV A,R1
\ 000067 F0 MOVX @DPTR,A
140 mtDebugMsg->timestamp = timestamp;
\ 000068 EA MOV A,R2
\ 000069 240B ADD A,#0xb
\ 00006B F582 MOV DPL,A
\ 00006D E4 CLR A
\ 00006E 3B ADDC A,R3
\ 00006F F583 MOV DPH,A
\ 000071 E4 CLR A
\ 000072 F0 MOVX @DPTR,A
\ 000073 A3 INC DPTR
\ 000074 F0 MOVX @DPTR,A
141
142 osal_msg_send( MT_TaskID, (uint8 *)mtDebugMsg );
\ 000075 ; Setup parameters for call to function osal_msg_send
\ 000075 90.... MOV DPTR,#MT_TaskID
\ 000078 E0 MOVX A,@DPTR
\ 000079 F9 MOV R1,A
\ 00007A 12.... LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
143 }
144
145 } /* debug_msg() */
\ ??debug_msg_0:
\ 00007D REQUIRE ?Subroutine0
\ 00007D ; // Fall through to label ?Subroutine0
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7F06 MOV R7,#0x6
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine2:
\ 000000 F0 MOVX @DPTR,A
\ 000001 8A82 MOV DPL,R2
\ 000003 8B83 MOV DPH,R3
\ 000005 A3 INC DPTR
\ 000006 A3 INC DPTR
\ 000007 A3 INC DPTR
\ 000008 A3 INC DPTR
\ 000009 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 E0 MOVX A,@DPTR
\ 000001 F8 MOV R0,A
\ 000002 A3 INC DPTR
\ 000003 E0 MOVX A,@DPTR
\ 000004 F9 MOV R1,A
\ 000005 8A82 MOV DPL,R2
\ 000007 8B83 MOV DPH,R3
\ 000009 A3 INC DPTR
\ 00000A A3 INC DPTR
\ 00000B A3 INC DPTR
\ 00000C A3 INC DPTR
\ 00000D A3 INC DPTR
\ 00000E A3 INC DPTR
\ 00000F A3 INC DPTR
\ 000010 22 RET
146
147 /*********************************************************************
148 * @fn debug_str
149 *
150 * @brief
151 *
152 * This feature allows modules to display a debug text string as
153 * applications execute in real-time. This feature will output to
154 * the serial port for display in the Z-Test tool.
155 *
156 * This feature will most likely be compiled out in the production
157 * code in order to save code space.
158 *
159 * @param byte *str_ptr - pointer to null-terminated string
160 *
161 * @return void
162 */
\ In segment BANKED_CODE, align 1, keep-with-next
163 void debug_str( byte *str_ptr )
\ debug_str:
164 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 REQUIRE ?V2
\ 000000 REQUIRE ?V3
\ 000000 REQUIRE ?V4
\ 000000 REQUIRE ?V5
\ 000000 74F2 MOV A,#-0xe
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 14
\ 000005 ; Auto size: 0
\ 000005 8A.. MOV ?V0,R2
\ 000007 8B.. MOV ?V1,R3
165 mtDebugStr_t *msg;
166 byte mln;
167 byte strLen;
168
169 // Text string length
170 strLen = (byte)osal_strlen( (void*)str_ptr );
\ 000009 ; Setup parameters for call to function osal_strlen
\ 000009 12.... LCALL `??osal_strlen::?relay`; Banked call to: osal_strlen
\ 00000C EA MOV A,R2
\ 00000D F5.. MOV ?V3,A
171
172 // Debug string message length
173 mln = sizeof ( mtDebugStr_t ) + strLen;
174
175 // Get a message buffer to build the debug message
176 msg = (mtDebugStr_t *)osal_msg_allocate( mln );
\ 00000F ; Setup parameters for call to function osal_msg_allocate
\ 00000F 7405 MOV A,#0x5
\ 000011 2A ADD A,R2
\ 000012 FA MOV R2,A
\ 000013 7B00 MOV R3,#0x0
\ 000015 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
\ 000018 8A.. MOV ?V4,R2
\ 00001A 8B.. MOV ?V5,R3
\ 00001C AE.. MOV R6,?V4
\ 00001E AF.. MOV R7,?V5
177 if ( msg )
\ 000020 EA MOV A,R2
\ 000021 4F ORL A,R7
\ 000022 603F JZ ??debug_str_0
178 {
179 // Message type, length
180 msg->hdr.event = CMD_DEBUG_STR;
\ 000024 8A82 MOV DPL,R2
\ 000026 8B83 MOV DPH,R3
\ 000028 7406 MOV A,#0x6
\ 00002A F0 MOVX @DPTR,A
181 msg->strLen = strLen;
\ 00002B A3 INC DPTR
\ 00002C A3 INC DPTR
\ 00002D E5.. MOV A,?V3
\ 00002F F0 MOVX @DPTR,A
182
183 // Append message, no terminator
184 msg->pString = (uint8 *)(msg+1);
\ 000030 EA MOV A,R2
\ 000031 2405 ADD A,#0x5
\ 000033 FA MOV R2,A
\ 000034 E4 CLR A
\ 000035 3F ADDC A,R7
\ 000036 FB MOV R3,A
\ 000037 8E82 MOV DPL,R6
\ 000039 8F83 MOV DPH,R7
\ 00003B A3 INC DPTR
\ 00003C A3 INC DPTR
\ 00003D A3 INC DPTR
\ 00003E EA MOV A,R2
\ 00003F F0 MOVX @DPTR,A
\ 000040 A3 INC DPTR
\ 000041 EB MOV A,R3
\ 000042 F0 MOVX @DPTR,A
185 osal_memcpy ( msg->pString, str_ptr, strLen );
\ 000043 ; Setup parameters for call to function osal_memcpy
\ 000043 75..00 MOV ?V2,#0x0
\ 000046 78.. MOV R0,#?V0
\ 000048 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 00004B AC.. MOV R4,?V3
\ 00004D 7D00 MOV R5,#0x0
\ 00004F 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
\ 000052 7403 MOV A,#0x3
\ 000054 12.... LCALL ?DEALLOC_XSTACK8
186
187 osal_msg_send( MT_TaskID, (uint8 *)msg );
\ 000057 ; Setup parameters for call to function osal_msg_send
\ 000057 EE MOV A,R6
\ 000058 FA MOV R2,A
\ 000059 EF MOV A,R7
\ 00005A FB MOV R3,A
\ 00005B 90.... MOV DPTR,#MT_TaskID
\ 00005E E0 MOVX A,@DPTR
\ 00005F F9 MOV R1,A
\ 000060 12.... LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
188 }
189 } // debug_str()
\ ??debug_str_0:
\ 000063 02.... LJMP ?Subroutine0 & 0xFFFF
190
191 /*********************************************************************
192 *********************************************************************/
193 #endif // MT_TASK
Maximum stack usage in bytes:
ISTACK XSTACK Function
------ ------ --------
1 18 debug_msg
0 14 -> osal_msg_allocate
0 14 -> osal_msg_send
1 17 debug_str
0 17 -> osal_memcpy
0 14 -> osal_msg_allocate
0 14 -> osal_msg_send
0 14 -> osal_strlen
Segment part sizes:
Bytes Function/Label
----- --------------
5 ?Subroutine0
17 ?Subroutine1
10 ?Subroutine2
125 debug_msg
102 debug_str
12 -- Other
259 bytes in segment BANKED_CODE
12 bytes in segment BANK_RELAYS
12 bytes of CODE memory
259 bytes of HUGECODE memory
Errors: none
Warnings: none

View File

@@ -1,978 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:20
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\DebugTrace.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW4C62.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\DebugTrace.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\DebugTrace.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME DebugTrace
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
EXTERN ?V0
EXTERN ?V2
EXTERN ?V3
EXTERN ?V4
EXTERN ?V5
EXTERN ?V1
EXTERN ?BANKED_ENTER_XDATA
EXTERN ?BANKED_LEAVE_XDATA
EXTERN ?BDISPATCH
EXTERN ?DEALLOC_XSTACK8
EXTERN ?PUSH_XSTACK_I_THREE
EXTERN ?XSTACK_DISP0_8
PUBLIC `??debug_msg::?relay`
FUNCTION `??debug_msg::?relay`,0203H
PUBLIC `??debug_str::?relay`
FUNCTION `??debug_str::?relay`,0203H
PUBLIC debug_msg
FUNCTION debug_msg,0a1203H
ARGFRAME XSTACK, 4, STACK
LOCFRAME ISTACK, 1, STACK
LOCFRAME XSTACK, 14, STACK
PUBLIC debug_str
FUNCTION debug_str,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 1, STACK
LOCFRAME XSTACK, 17, STACK
CFI Names cfiNames0
CFI StackFrame CFA_SP SP IDATA
CFI StackFrame CFA_PSP16 PSP16 XDATA
CFI StackFrame CFA_XSP16 XSP16 XDATA
CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
CFI VirtualResource ?RET:24
CFI Resource ?BRET_EXT:8
CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
CFI ResourceParts PSP16 PSPH, PSPL
CFI ResourceParts XSP16 XSPH, XSPL
CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-3
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B Undefined
CFI A Undefined
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT Frame(CFA_SP, 3)
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon0
CFI Common cfiCommon1 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-2
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B SameValue
CFI A SameValue
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 SameValue
CFI R1 SameValue
CFI R2 SameValue
CFI R3 SameValue
CFI R4 SameValue
CFI R5 SameValue
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT SameValue
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon1
osal_memcpy SYMBOL "osal_memcpy"
`??osal_memcpy::?relay` SYMBOL "?relay", osal_memcpy
osal_msg_allocate SYMBOL "osal_msg_allocate"
`??osal_msg_allocate::?relay` SYMBOL "?relay", osal_msg_allocate
osal_msg_send SYMBOL "osal_msg_send"
`??osal_msg_send::?relay` SYMBOL "?relay", osal_msg_send
osal_strlen SYMBOL "osal_strlen"
`??osal_strlen::?relay` SYMBOL "?relay", osal_strlen
debug_msg SYMBOL "debug_msg"
`??debug_msg::?relay` SYMBOL "?relay", debug_msg
debug_str SYMBOL "debug_str"
`??debug_str::?relay` SYMBOL "?relay", debug_str
EXTERN `??osal_memcpy::?relay`
FUNCTION `??osal_memcpy::?relay`,00H
EXTERN `??osal_msg_allocate::?relay`
FUNCTION `??osal_msg_allocate::?relay`,00H
EXTERN `??osal_msg_send::?relay`
FUNCTION `??osal_msg_send::?relay`,00H
EXTERN `??osal_strlen::?relay`
FUNCTION `??osal_strlen::?relay`,00H
EXTERN MT_TaskID
EXTERN debugCompId
EXTERN debugThreshold
EXTERN osal_memcpy
FUNCTION osal_memcpy,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 17, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_msg_allocate
FUNCTION osal_msg_allocate,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_msg_send
FUNCTION osal_msg_send,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_strlen
FUNCTION osal_strlen,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\DebugTrace.c
// 1 /**************************************************************************************************
// 2 Filename: DebugTrace.c
// 3 Revised: $Date: 2008-01-17 12:22:57 -0800 (Thu, 17 Jan 2008) $
// 4 Revision: $Revision: 16223 $
// 5
// 6
// 7 Description: This interface provides quick one-function-call functions to
// 8 Monitor and Test reporting mechanisms.
// 9
// 10
// 11 Copyright 2007 Texas Instruments Incorporated. All rights reserved.
// 12
// 13 IMPORTANT: Your use of this Software is limited to those specific rights
// 14 granted under the terms of a software license agreement between the user
// 15 who downloaded the software, his/her employer (which must be your employer)
// 16 and Texas Instruments Incorporated (the "License"). You may not use this
// 17 Software unless you agree to abide by the terms of the License. The License
// 18 limits your use, and you acknowledge, that the Software may not be modified,
// 19 copied or distributed unless embedded on a Texas Instruments microcontroller
// 20 or used solely and exclusively in conjunction with a Texas Instruments radio
// 21 frequency transceiver, which is integrated into your product. Other than for
// 22 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 23 works of, modify, distribute, perform, display or sell this Software and/or
// 24 its documentation for any purpose.
// 25
// 26 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 27 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 28 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 29 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 30 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 31 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 32 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 33 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 34 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 35 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 36 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 37
// 38 Should you have any questions regarding your right to use this Software,
// 39 contact Texas Instruments Incorporated at www.TI.com.
// 40
// 41 **************************************************************************************************/
// 42
// 43 #if defined( MT_TASK ) || defined( APP_DEBUG )
// 44
// 45 /*********************************************************************
// 46 * INCLUDES
// 47 */
// 48 #include "ZComDef.h"
// 49 #include "OSAL.h"
// 50 #include "MT.h"
// 51 #include "MT_TASK.h"
// 52 #include "MT_DEBUG.h"
// 53 #include "DebugTrace.h"
// 54
// 55 #if defined ( APP_DEBUG )
// 56 #include "DebugApp.h"
// 57 #endif
// 58
// 59 /*********************************************************************
// 60 * MACROS
// 61 */
// 62
// 63 /*********************************************************************
// 64 * CONSTANTS
// 65 */
// 66
// 67
// 68 /*********************************************************************
// 69 * TYPEDEFS
// 70 */
// 71
// 72 /*********************************************************************
// 73 * GLOBAL VARIABLES
// 74 */
// 75
// 76 /*********************************************************************
// 77 * EXTERNAL VARIABLES
// 78 */
// 79
// 80 /*********************************************************************
// 81 * EXTERNAL FUNCTIONS
// 82 */
// 83
// 84 /*********************************************************************
// 85 * LOCAL VARIABLES
// 86 */
// 87
// 88 /*********************************************************************
// 89 * LOCAL FUNCTIONS
// 90 */
// 91
// 92 /*********************************************************************
// 93 * @fn debug_msg
// 94 *
// 95 * @brief
// 96 *
// 97 * This feature allows modules to display debug information as
// 98 * applications execute in real-time. This feature will work similar
// 99 * to "printf()" but will output to the serial port for display in
// 100 * the Z-Test tool.
// 101 *
// 102 * This feature will most likely be compiled out in the production code
// 103 * to save code space.
// 104 *
// 105 * @param byte compID - Component ID
// 106 * @param byte severity - CRITICAL(0x01), ERROR(0x02), INFORMATION(0x03)
// 107 * or TRACE(0x04)
// 108 * @param byte numParams - number of parameter fields (param1-3)
// 109 * @param UINT16 param1 - user defined data
// 110 * @param UINT16 param2 - user defined data
// 111 * @param UINT16 param3 - user defined data
// 112 *
// 113 * @return void
// 114 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 115 void debug_msg( byte compID, byte severity, byte numParams, UINT16 param1,
debug_msg:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function debug_msg
CODE
// 116 UINT16 param2, UINT16 param3 )
// 117 {
FUNCALL debug_msg, osal_msg_allocate
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 14, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL debug_msg, osal_msg_send
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 14, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V2
REQUIRE ?V3
REQUIRE ?V4
REQUIRE ?V5
MOV A,#-0xe
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 0
MOV A,R1
MOV R6,A
MOV A,R2
MOV R7,A
MOV ?V0,R3
MOV ?V4,R4
MOV ?V5,R5
// 118
// 119 mtDebugMsg_t *mtDebugMsg;
// 120 UINT16 timestamp;
// 121
// 122 if ( debugThreshold == 0 || debugCompId != compID )
MOV DPTR,#debugThreshold
MOVX A,@DPTR
JZ ??debug_msg_0
MOV DPTR,#debugCompId
MOVX A,@DPTR
XRL A,R6
JZ ??debug_msg_1
// 123 return;
??debug_msg_2:
SJMP ??debug_msg_0
// 124
// 125 // Fill in the timestamp
// 126 timestamp = 0;
// 127
// 128 // Get a message buffer to build the debug message
// 129 mtDebugMsg = (mtDebugMsg_t *)osal_msg_allocate( sizeof( mtDebugMsg_t ) );
??debug_msg_1:
; Setup parameters for call to function osal_msg_allocate
MOV R2,#0xd
MOV R3,#0x0
LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
// 130 if ( mtDebugMsg )
MOV A,R2
ORL A,R3
JZ ??debug_msg_0
// 131 {
// 132 mtDebugMsg->hdr.event = CMD_DEBUG_MSG;
MOV DPL,R2
MOV DPH,R3
MOV A,#0x2
MOVX @DPTR,A
// 133 mtDebugMsg->compID = compID;
MOV A,R6
INC DPTR
INC DPTR
MOVX @DPTR,A
// 134 mtDebugMsg->severity = severity;
MOV A,R7
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
LCALL ?Subroutine2 & 0xFFFF
// 135 mtDebugMsg->numParams = numParams;
??CrossCallReturnLabel_2:
MOV A,?V0
LCALL ?Subroutine2 & 0xFFFF
// 136
// 137 mtDebugMsg->param1 = param1;
??CrossCallReturnLabel_3:
INC DPTR
MOV A,?V4
MOVX @DPTR,A
INC DPTR
MOV A,?V5
MOVX @DPTR,A
// 138 mtDebugMsg->param2 = param2;
MOV A,#0xe
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_0:
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
// 139 mtDebugMsg->param3 = param3;
MOV A,#0x10
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_1:
INC DPTR
INC DPTR
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
// 140 mtDebugMsg->timestamp = timestamp;
MOV A,R2
ADD A,#0xb
MOV DPL,A
CLR A
ADDC A,R3
MOV DPH,A
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 141
// 142 osal_msg_send( MT_TaskID, (uint8 *)mtDebugMsg );
; Setup parameters for call to function osal_msg_send
MOV DPTR,#MT_TaskID
MOVX A,@DPTR
MOV R1,A
LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
// 143 }
// 144
// 145 } /* debug_msg() */
??debug_msg_0:
CFI EndBlock cfiBlock0
REQUIRE ?Subroutine0
; // Fall through to label ?Subroutine0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock1
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine2:
CFI Block cfiCond2 Using cfiCommon0
CFI Function debug_msg
CFI Conditional ??CrossCallReturnLabel_2
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond3 Using cfiCommon0
CFI (cfiCond3) Function debug_msg
CFI (cfiCond3) Conditional ??CrossCallReturnLabel_3
CFI (cfiCond3) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond3) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond3) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond3) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond3) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond3) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond3) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond3) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond3) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond3) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond3) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond3) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond3) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond3) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond3) CFA_SP SP+-2
CFI (cfiCond3) CFA_XSP16 add(XSP16, 14)
CFI Block cfiPicker4 Using cfiCommon1
CFI (cfiPicker4) NoFunction
CFI (cfiPicker4) Picker
MOVX @DPTR,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
RET
CFI EndBlock cfiCond2
CFI EndBlock cfiCond3
CFI EndBlock cfiPicker4
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond5 Using cfiCommon0
CFI Function debug_msg
CFI Conditional ??CrossCallReturnLabel_0
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond6 Using cfiCommon0
CFI (cfiCond6) Function debug_msg
CFI (cfiCond6) Conditional ??CrossCallReturnLabel_1
CFI (cfiCond6) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond6) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond6) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond6) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond6) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond6) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond6) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond6) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond6) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond6) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond6) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond6) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond6) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond6) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond6) CFA_SP SP+-2
CFI (cfiCond6) CFA_XSP16 add(XSP16, 14)
CFI Block cfiPicker7 Using cfiCommon1
CFI (cfiPicker7) NoFunction
CFI (cfiPicker7) Picker
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
RET
CFI EndBlock cfiCond5
CFI EndBlock cfiCond6
CFI EndBlock cfiPicker7
// 146
// 147 /*********************************************************************
// 148 * @fn debug_str
// 149 *
// 150 * @brief
// 151 *
// 152 * This feature allows modules to display a debug text string as
// 153 * applications execute in real-time. This feature will output to
// 154 * the serial port for display in the Z-Test tool.
// 155 *
// 156 * This feature will most likely be compiled out in the production
// 157 * code in order to save code space.
// 158 *
// 159 * @param byte *str_ptr - pointer to null-terminated string
// 160 *
// 161 * @return void
// 162 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 163 void debug_str( byte *str_ptr )
debug_str:
CFI Block cfiBlock8 Using cfiCommon0
CFI Function debug_str
CODE
// 164 {
FUNCALL debug_str, osal_strlen
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 14, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL debug_str, osal_msg_allocate
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 14, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL debug_str, osal_memcpy
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 17, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 17, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL debug_str, osal_msg_send
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 14, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
REQUIRE ?V4
REQUIRE ?V5
MOV A,#-0xe
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 0
MOV ?V0,R2
MOV ?V1,R3
// 165 mtDebugStr_t *msg;
// 166 byte mln;
// 167 byte strLen;
// 168
// 169 // Text string length
// 170 strLen = (byte)osal_strlen( (void*)str_ptr );
; Setup parameters for call to function osal_strlen
LCALL `??osal_strlen::?relay`; Banked call to: osal_strlen
MOV A,R2
MOV ?V3,A
// 171
// 172 // Debug string message length
// 173 mln = sizeof ( mtDebugStr_t ) + strLen;
// 174
// 175 // Get a message buffer to build the debug message
// 176 msg = (mtDebugStr_t *)osal_msg_allocate( mln );
; Setup parameters for call to function osal_msg_allocate
MOV A,#0x5
ADD A,R2
MOV R2,A
MOV R3,#0x0
LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
MOV ?V4,R2
MOV ?V5,R3
MOV R6,?V4
MOV R7,?V5
// 177 if ( msg )
MOV A,R2
ORL A,R7
JZ ??debug_str_0
// 178 {
// 179 // Message type, length
// 180 msg->hdr.event = CMD_DEBUG_STR;
MOV DPL,R2
MOV DPH,R3
MOV A,#0x6
MOVX @DPTR,A
// 181 msg->strLen = strLen;
INC DPTR
INC DPTR
MOV A,?V3
MOVX @DPTR,A
// 182
// 183 // Append message, no terminator
// 184 msg->pString = (uint8 *)(msg+1);
MOV A,R2
ADD A,#0x5
MOV R2,A
CLR A
ADDC A,R7
MOV R3,A
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 185 osal_memcpy ( msg->pString, str_ptr, strLen );
; Setup parameters for call to function osal_memcpy
MOV ?V2,#0x0
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 17)
MOV R4,?V3
MOV R5,#0x0
LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 14)
// 186
// 187 osal_msg_send( MT_TaskID, (uint8 *)msg );
; Setup parameters for call to function osal_msg_send
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#MT_TaskID
MOVX A,@DPTR
MOV R1,A
LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
// 188 }
// 189 } // debug_str()
??debug_str_0:
LJMP ?Subroutine0 & 0xFFFF
CFI EndBlock cfiBlock8
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??debug_msg::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 debug_msg
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??debug_str::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 debug_str
END
// 190
// 191 /*********************************************************************
// 192 *********************************************************************/
// 193 #endif // MT_TASK
//
// 259 bytes in segment BANKED_CODE
// 12 bytes in segment BANK_RELAYS
//
// 12 bytes of CODE memory
// 259 bytes of HUGECODE memory
//
//Errors: none
//Warnings: none

View File

@@ -1,836 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:22
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\IR.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW5470.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\IR.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\IR.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\IR.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\IR.c
1 /***********************************************************
2 ** FileName: IR.c
3 ** Introductions: Sunplusapp CC2530 ZigBee Node IR Romoter Signal Send Functions
4 ** Last Modify time: 2013.05.21
5 ** Modify: 修改红外编码发送,优化时序,添加注释
6 ** Author: GuoZhenjiang <zhenjiang.guo@sunplusapp.com>
7 ***********************************************************/
8
9 #include "IR.h"
\ In segment SFR_AN, at 0x90
\ union <unnamed> volatile __sfr _A_P1
\ _A_P1:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa8
\ union <unnamed> volatile __sfr _A_IEN0
\ _A_IEN0:
\ 000000 DS 1
\ In segment SFR_AN, at 0xaf
\ unsigned char volatile __sfr T1STAT
\ T1STAT:
\ 000000 DS 1
\ In segment SFR_AN, at 0xb8
\ union <unnamed> volatile __sfr _A_IEN1
\ _A_IEN1:
\ 000000 DS 1
\ In segment SFR_AN, at 0xc0
\ union <unnamed> volatile __sfr _A_IRCON
\ _A_IRCON:
\ 000000 DS 1
\ In segment SFR_AN, at 0xcb
\ unsigned char volatile __sfr T3CTL
\ T3CTL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xcc
\ unsigned char volatile __sfr T3CCTL0
\ T3CCTL0:
\ 000000 DS 1
\ In segment SFR_AN, at 0xcd
\ unsigned char volatile __sfr T3CC0
\ T3CC0:
\ 000000 DS 1
\ In segment SFR_AN, at 0xd8
\ union <unnamed> volatile __sfr _A_TIMIF
\ _A_TIMIF:
\ 000000 DS 1
\ In segment SFR_AN, at 0xda
\ unsigned char volatile __sfr T1CC0L
\ T1CC0L:
\ 000000 DS 1
\ In segment SFR_AN, at 0xdb
\ unsigned char volatile __sfr T1CC0H
\ T1CC0H:
\ 000000 DS 1
\ In segment SFR_AN, at 0xe4
\ unsigned char volatile __sfr T1CTL
\ T1CTL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xe5
\ unsigned char volatile __sfr T1CCTL0
\ T1CCTL0:
\ 000000 DS 1
\ In segment SFR_AN, at 0xf4
\ unsigned char volatile __sfr P1SEL
\ P1SEL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xf5
\ unsigned char volatile __sfr P2SEL
\ P2SEL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xfe
\ unsigned char volatile __sfr P1DIR
\ P1DIR:
\ 000000 DS 1
10 #include "OSAL.h"
11
12 #if defined(HAL_IRENC) && (HAL_IRENC == TRUE)
13
14 // 定时器1中自增量,控制每一位编码的周期
\ In segment XDATA_Z, align 1, keep-with-next
15 volatile uint16 T1_80usCnt = 0;
\ T1_80usCnt:
\ 000000 DS 2
\ 000002 REQUIRE __INIT_XDATA_Z
16
17 // Timer1红外编码初始化
18 void IRSend_T1_Init(void);
19 // Timer3红外编码初始化
20 void IRSend_T3_Init(void);
21 // Timer1 & Timer3 中断处理函数声明
22 __near_func __interrupt void IRSend_T1IntHandle(void);
23 __near_func __interrupt void IRSend_T3IntHandle(void);
24
25 /***********************************************************
26 ** 函数名称: GenIR
27 ** 实现功能: 系统时钟设置
28 ** 入口参数: IRData: 红外编码数据首地址
29 ** Mode: 引导码分类:1 周期9ms 2:周期13.56ms
30 ** CodeLen: 编码位数(bit,不是Byte)
31 ** 返回结果: 0:发送失败 1:发送成功
32 ***********************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
33 int GenIR(uint8 *IRData , uint8 Mode , uint8 CodeLen )
\ GenIR:
34 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 REQUIRE ?V2
\ 000000 REQUIRE ?V3
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
35 uint16 GuideCodeLen=0;
\ 000009 75..00 MOV ?V0,#0x0
36 static IRSendSta_t IRSendSta = IRSta_Guide;
37 static uint8 cntByte=0, cntbit=0, bitNum;
38 bitNum = CodeLen; //保存位数
\ 00000C EC MOV A,R4
\ 00000D 90.... MOV DPTR,#??bitNum
\ 000010 F0 MOVX @DPTR,A
39
40 if(Mode == 1)
\ 000011 7401 MOV A,#0x1
\ 000013 69 XRL A,R1
\ 000014 7005 JNZ ??GenIR_0
41 GuideCodeLen = 56;//226; 引导码长度4.5ms、4.5ms
\ 000016 75..38 MOV ?V0,#0x38
\ 000019 8008 SJMP ??GenIR_1
42 else if(Mode == 2)
\ ??GenIR_0:
\ 00001B 7402 MOV A,#0x2
\ 00001D 69 XRL A,R1
\ 00001E 7003 JNZ ??GenIR_1
43 GuideCodeLen = 114; //引导码长度9ms、4.5ms
\ 000020 75..72 MOV ?V0,#0x72
44
45 IRSend_T1_Init();
\ ??GenIR_1:
\ 000023 ; Setup parameters for call to function IRSend_T1_Init
\ 000023 12.... LCALL `??IRSend_T1_Init::?relay`; Banked call to: IRSend_T1_Init
46 IRSend_T3_Init();
\ 000026 ; Setup parameters for call to function IRSend_T3_Init
\ 000026 12.... LCALL `??IRSend_T3_Init::?relay`; Banked call to: IRSend_T3_Init
47 IR_SEL_IOOUT;
\ 000029 12.... LCALL ?Subroutine2 & 0xFFFF
48 CLR_IOB_BIT;
49 IRSendSta = IRSta_Guide;
50 T1_80usCnt = 0;
\ ??CrossCallReturnLabel_4:
\ 00002C 90.... MOV DPTR,#T1_80usCnt
\ 00002F E4 CLR A
\ 000030 F0 MOVX @DPTR,A
\ 000031 A3 INC DPTR
\ 000032 F0 MOVX @DPTR,A
51 IR_SEL_T3PWM;
\ ??GenIR_2:
\ 000033 43F408 ORL 0xf4,#0x8
\ 000036 8003 SJMP ??CrossCallReturnLabel_5
52 while(1)
53 {
54 // 查询红外编码发送状态
55 switch(IRSendSta)
56 {
57 // 引导码阶段
58 case IRSta_Guide:
59 // 引导码4.5ms或9ms载波阶段
60 if(T1_80usCnt <= GuideCodeLen)
61 {
62 IRSendSta = IRSta_Guide;
63 IR_SEL_T3PWM;
64 }
65 // 引导码4.5ms低电平阶段
66 else if((T1_80usCnt > GuideCodeLen) && (T1_80usCnt <= GuideCodeLen+56))
67 {
68 IRSendSta = IRSta_Guide;
69 IR_SEL_IOOUT;
\ ??GenIR_3:
\ 000038 12.... LCALL ?Subroutine2 & 0xFFFF
70 CLR_IOB_BIT;
71 }
\ ??CrossCallReturnLabel_5:
\ 00003B 12.... LCALL ?Subroutine3 & 0xFFFF
\ ??CrossCallReturnLabel_7:
\ 00003E 50F3 JNC ??GenIR_2
\ 000040 12.... LCALL ?Subroutine3 & 0xFFFF
\ ??CrossCallReturnLabel_8:
\ 000043 5017 JNC ??GenIR_4
\ 000045 E5.. MOV A,?V0
\ 000047 2438 ADD A,#0x38
\ 000049 FA MOV R2,A
\ 00004A E4 CLR A
\ 00004B 3400 ADDC A,#0x0
\ 00004D FB MOV R3,A
\ 00004E 90.... MOV DPTR,#T1_80usCnt
\ 000051 E0 MOVX A,@DPTR
\ 000052 F8 MOV R0,A
\ 000053 A3 INC DPTR
\ 000054 E0 MOVX A,@DPTR
\ 000055 F9 MOV R1,A
\ 000056 EA MOV A,R2
\ 000057 98 SUBB A,R0
\ 000058 EB MOV A,R3
\ 000059 99 SUBB A,R1
\ 00005A 50DC JNC ??GenIR_3
72 // 引导码发送完毕,准备发送数据位
73 else
74 {
75 IRSendSta = IRSta_T3PWM;
76 IR_SEL_T3PWM;
\ ??GenIR_4:
\ 00005C 12.... LCALL ?Subroutine4 & 0xFFFF
77 T1_80usCnt = 0;
78 }
79 break;
80 // 数据位中的位0、位1的0.56ms的38kHz载波阶段
81 case IRSta_T3PWM:
82 if(T1_80usCnt >= 7) // 7 * 80us = 560us
\ ??CrossCallReturnLabel_9:
\ 00005F 90.... MOV DPTR,#T1_80usCnt
\ 000062 C3 CLR C
\ 000063 E0 MOVX A,@DPTR
\ 000064 9407 SUBB A,#0x7
\ 000066 A3 INC DPTR
\ 000067 E0 MOVX A,@DPTR
\ 000068 9400 SUBB A,#0x0
\ 00006A 40F3 JC ??CrossCallReturnLabel_9
83 {
84 IR_SEL_IOOUT;
\ 00006C 12.... LCALL ?Subroutine1 & 0xFFFF
85 CLR_IOB_BIT;
86 IRSendSta = IRSta_Data0;
87 }
88 break;
89 // 数据位中的位0、位1的低电平持续阶段
90 case IRSta_Data0:
91 //发送数据0,低电平持续 0.565ms。
92 if(!(IRData[cntByte] & (0x80 >> (cntbit % 8))))
\ ??CrossCallReturnLabel_2:
\ 00006F E0 MOVX A,@DPTR
\ 000070 5407 ANL A,#0x7
\ 000072 F8 MOV R0,A
\ 000073 7480 MOV A,#-0x80
\ 000075 B80002 CJNE R0,#0x0,??GenIR_5
\ 000078 8004 SJMP ??GenIR_6
\ ??GenIR_5:
\ 00007A C3 CLR C
\ 00007B 13 RRC A
\ 00007C D8FC DJNZ R0,??GenIR_5
\ ??GenIR_6:
\ 00007E FA MOV R2,A
\ 00007F 90.... MOV DPTR,#??cntByte
\ 000082 E0 MOVX A,@DPTR
\ 000083 F8 MOV R0,A
\ 000084 EE MOV A,R6
\ 000085 28 ADD A,R0
\ 000086 F582 MOV DPL,A
\ 000088 E4 CLR A
\ 000089 3F ADDC A,R7
\ 00008A F583 MOV DPH,A
\ 00008C E0 MOVX A,@DPTR
\ 00008D 5A ANL A,R2
\ 00008E 90.... MOV DPTR,#T1_80usCnt
\ 000091 C3 CLR C
\ 000092 7010 JNZ ??GenIR_7
93 {
94 if(T1_80usCnt >= 14)
\ 000094 E0 MOVX A,@DPTR
\ 000095 940E SUBB A,#0xe
\ 000097 A3 INC DPTR
\ 000098 E0 MOVX A,@DPTR
\ 000099 9400 SUBB A,#0x0
\ 00009B 401B JC ??GenIR_8
95 {
96 IR_SEL_T3PWM;
\ 00009D 12.... LCALL ?Subroutine0 & 0xFFFF
97 T1_80usCnt = 0;
98 cntbit++;
99 if(0 == (cntbit % 8))
100 cntByte++;
101 }
102 }
\ ??CrossCallReturnLabel_0:
\ 0000A0 7016 JNZ ??GenIR_8
\ 0000A2 800E SJMP ??GenIR_9
103 //发送数据1,低电平持续 1.685ms。
104 else if(IRData[cntByte] & (0x80 >> (cntbit % 8)))
105 {
106 if(T1_80usCnt >= 28)
\ ??GenIR_7:
\ 0000A4 E0 MOVX A,@DPTR
\ 0000A5 941C SUBB A,#0x1c
\ 0000A7 A3 INC DPTR
\ 0000A8 E0 MOVX A,@DPTR
\ 0000A9 9400 SUBB A,#0x0
\ 0000AB 400B JC ??GenIR_8
107 {
108 IR_SEL_T3PWM;
\ 0000AD 12.... LCALL ?Subroutine0 & 0xFFFF
109 T1_80usCnt = 0;
110 cntbit++;
111 if(0 == (cntbit % 8))
\ ??CrossCallReturnLabel_1:
\ 0000B0 7006 JNZ ??GenIR_8
112 cntByte++;
\ ??GenIR_9:
\ 0000B2 90.... MOV DPTR,#??cntByte
\ 0000B5 E0 MOVX A,@DPTR
\ 0000B6 04 INC A
\ 0000B7 F0 MOVX @DPTR,A
113 }
114 }
115 // 发送完毕?
116 if(cntbit >= bitNum)
\ ??GenIR_8:
\ 0000B8 90.... MOV DPTR,#??bitNum
\ 0000BB E0 MOVX A,@DPTR
\ 0000BC F8 MOV R0,A
\ 0000BD 90.... MOV DPTR,#??cntbit
\ 0000C0 E0 MOVX A,@DPTR
\ 0000C1 C3 CLR C
\ 0000C2 98 SUBB A,R0
\ 0000C3 409A JC ??CrossCallReturnLabel_9
117 IRSendSta = IRSta_Stop;
\ 0000C5 90.... MOV DPTR,#??IRSendSta
\ 0000C8 7403 MOV A,#0x3
\ 0000CA F0 MOVX @DPTR,A
118 // 继续发送?
119 else
120 IRSendSta = IRSta_T3PWM;
121 break;
122 // 红外编码数据部分发送完毕
123 case IRSta_Stop:
124 // 一组编码发送完毕 结束位是 0.56ms 的 38K 载波
125 while(T1_80usCnt < 7)
\ ??GenIR_10:
\ 0000CB 90.... MOV DPTR,#T1_80usCnt
\ 0000CE C3 CLR C
\ 0000CF E0 MOVX A,@DPTR
\ 0000D0 9407 SUBB A,#0x7
\ 0000D2 A3 INC DPTR
\ 0000D3 E0 MOVX A,@DPTR
\ 0000D4 9400 SUBB A,#0x0
\ 0000D6 40F3 JC ??GenIR_10
126 ;
127 STOP_T1_T3; // stop T1 & T3
\ 0000D8 75CB00 MOV 0xcb,#0x0
\ 0000DB 75E400 MOV 0xe4,#0x0
128 T1_80usCnt = 0;
\ 0000DE 90.... MOV DPTR,#T1_80usCnt
\ 0000E1 E4 CLR A
\ 0000E2 F0 MOVX @DPTR,A
\ 0000E3 A3 INC DPTR
\ 0000E4 F0 MOVX @DPTR,A
129 IR_SEL_IOOUT;
\ 0000E5 12.... LCALL ?Subroutine1 & 0xFFFF
130 CLR_IOB_BIT;
131 cntbit = 0;
\ ??CrossCallReturnLabel_3:
\ 0000E8 F0 MOVX @DPTR,A
132 cntByte = 0;
\ 0000E9 90.... MOV DPTR,#??cntByte
\ 0000EC F0 MOVX @DPTR,A
133 return 1;
\ 0000ED 7A01 MOV R2,#0x1
\ 0000EF FB MOV R3,A
\ 0000F0 7F04 MOV R7,#0x4
\ 0000F2 02.... LJMP ?BANKED_LEAVE_XDATA
\ 0000F5 REQUIRE P1SEL
\ 0000F5 REQUIRE P1DIR
\ 0000F5 REQUIRE _A_P1
\ 0000F5 REQUIRE T3CTL
\ 0000F5 REQUIRE T1CTL
134 break;
135 default:
136 return 0;
137 break;
138 }
139 }
140 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine3:
\ 000000 90.... MOV DPTR,#T1_80usCnt
\ 000003 E0 MOVX A,@DPTR
\ 000004 F8 MOV R0,A
\ 000005 A3 INC DPTR
\ 000006 E0 MOVX A,@DPTR
\ 000007 F9 MOV R1,A
\ 000008 C3 CLR C
\ 000009 E5.. MOV A,?V0
\ 00000B 98 SUBB A,R0
\ 00000C E4 CLR A
\ 00000D 99 SUBB A,R1
\ 00000E 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 12.... LCALL ?Subroutine5 & 0xFFFF
\ ??CrossCallReturnLabel_11:
\ 000003 90.... MOV DPTR,#??cntbit
\ 000006 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 12.... LCALL ?Subroutine4 & 0xFFFF
\ ??CrossCallReturnLabel_10:
\ 000003 90.... MOV DPTR,#??cntbit
\ 000006 E0 MOVX A,@DPTR
\ 000007 04 INC A
\ 000008 F0 MOVX @DPTR,A
\ 000009 5407 ANL A,#0x7
\ 00000B 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine4:
\ 000000 43F408 ORL 0xf4,#0x8
\ 000003 90.... MOV DPTR,#T1_80usCnt
\ 000006 E4 CLR A
\ 000007 F0 MOVX @DPTR,A
\ 000008 A3 INC DPTR
\ 000009 F0 MOVX @DPTR,A
\ 00000A 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine2:
\ 000000 12.... LCALL ?Subroutine5 & 0xFFFF
\ ??CrossCallReturnLabel_12:
\ 000003 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine5:
\ 000000 53F4F7 ANL 0xf4,#0xf7
\ 000003 43FE08 ORL 0xfe,#0x8
\ 000006 C293 CLR 0x90.3
\ 000008 22 RET
\ In segment XDATA_Z, align 1, keep-with-next
\ ??IRSendSta:
\ 000000 DS 1
\ 000001 REQUIRE __INIT_XDATA_Z
\ In segment XDATA_Z, align 1, keep-with-next
\ ??cntByte:
\ 000000 DS 1
\ 000001 REQUIRE __INIT_XDATA_Z
\ In segment XDATA_Z, align 1, keep-with-next
\ ??cntbit:
\ 000000 DS 1
\ 000001 REQUIRE __INIT_XDATA_Z
\ In segment XDATA_Z, align 1, keep-with-next
\ ??bitNum:
\ 000000 DS 1
\ 000001 REQUIRE __INIT_XDATA_Z
141
142 /***********************************************************
143 ** 函数名称: IRSend_T1_Init
144 ** 实现功能: 红外编码发送定时器1初始化
145 ** 入口参数: None
146 ** 返回结果: None
147 ***********************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
148 void IRSend_T1_Init(void)
\ IRSend_T1_Init:
149 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
150 T1CTL = 0x0E; // f = 32MHz / 128 = 250 000Hz, T = 4us;模模式,从0~T1CC0反复计数。
\ 000004 75E40E MOV 0xe4,#0xe
151 T1CCTL0 = 0x44; // Timer1通道0中断允许,比较匹配模式,比较比配时输出置位。
\ 000007 75E544 MOV 0xe5,#0x44
152 T1CC0L = 19; // 先写T1CC0L,再写T1CC0H,T1CNT=0时更新。 4us*20 = 80us;
\ 00000A 75DA13 MOV 0xda,#0x13
153 T1CC0H = 0;
\ 00000D 75DB00 MOV 0xdb,#0x0
154 TIMIF |= BIT_1(6); // TIMIF.T1OVFIM Timer1溢出中断允许
\ 000010 D2DE SETB 0xd8.6
155 IEN1 |= BIT_1(1); // IEN1.T1IE Timer1总中断允许
\ 000012 D2B9 SETB 0xb8.1
156 EA = 1; // 打开全局总中断
\ 000014 D2AF SETB 0xa8.7
157 T1_80usCnt = 0; // 80us溢出中断自增量清零
\ 000016 90.... MOV DPTR,#T1_80usCnt
\ 000019 E4 CLR A
\ 00001A F0 MOVX @DPTR,A
\ 00001B A3 INC DPTR
\ 00001C F0 MOVX @DPTR,A
158 }
\ 00001D D083 POP DPH
\ 00001F D082 POP DPL
\ 000021 02.... LJMP ?BRET
\ 000024 REQUIRE T1CTL
\ 000024 REQUIRE T1CCTL0
\ 000024 REQUIRE T1CC0L
\ 000024 REQUIRE T1CC0H
\ 000024 REQUIRE _A_TIMIF
\ 000024 REQUIRE _A_IEN1
\ 000024 REQUIRE _A_IEN0
159
160 /***********************************************************
161 ** 函数名称: IRSend_T3_Init
162 ** 实现功能: 红外编码发送定时器3初始化
163 ** 入口参数: None
164 ** 返回结果: None
165 ***********************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
166 void IRSend_T3_Init(void)
\ IRSend_T3_Init:
167 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
168 P1SEL |= BIT_1(3); // P1.3 us as T3 PWM Out Pin.
\ 000000 43F408 ORL 0xf4,#0x8
169 T3CTL = 0x02; // T3CTL.MODE[10] 模模式,从0~T3CC0反复计数
\ 000003 75CB02 MOV 0xcb,#0x2
170 T3CTL |= BIT_1(5); // T3CTL.MODE[001] f = 32MHz / 2 = 16MHz;
\ 000006 43CB20 ORL 0xcb,#0x20
171 T3CCTL0 |= BIT_1(2); // T3CCTL0.MODE 输出比较比配模式
\ 000009 43CC04 ORL 0xcc,#0x4
172 T3CCTL0 |= BIT_1(4); // T3CCTL0.CMP[010] 比较匹配时,输出取反
\ 00000C 43CC10 ORL 0xcc,#0x10
173
174 T3CC0 = 208; // Timer3通道0输出比较匹配上限值,16MHz / 208 = 76923.076923Hz; 76923 / 2 =38k(比较匹配时取反).
\ 00000F 75CDD0 MOV 0xcd,#-0x30
175 T3CTL |= BIT_1(4); // T3CTL.START 启动Timer3
\ 000012 43CB10 ORL 0xcb,#0x10
176 P2SEL |= BIT_1(5); // P2SEL.PRI2P1 当USART1和Timer3占用相同引脚,Timer3优先。
\ 000015 43F520 ORL 0xf5,#0x20
177 T3CCTL0 |= BIT_1(6); // T3CCTL0.IM Timer3通道0中断允许。
\ 000018 43CC40 ORL 0xcc,#0x40
178 IEN1 |= BIT_1(3); // IEN1.T3IE Timer3总中断允许。
\ 00001B D2BB SETB 0xb8.3
179 EA = 1; // 全局总中断允许。
\ 00001D D2AF SETB 0xa8.7
180 }
\ 00001F 02.... LJMP ?BRET
\ 000022 REQUIRE P1SEL
\ 000022 REQUIRE T3CTL
\ 000022 REQUIRE T3CCTL0
\ 000022 REQUIRE T3CC0
\ 000022 REQUIRE P2SEL
\ 000022 REQUIRE _A_IEN1
\ 000022 REQUIRE _A_IEN0
181
182 /***********************************************************
183 ** 函数名称: IRSendInit
184 ** 实现功能: 红外编码发送初始化
185 ** 入口参数: None
186 ** 返回结果: None
187 ***********************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
188 void IRSendInit(void)
\ IRSendInit:
189 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
190 IR_SEL_IOOUT;
\ 000000 12.... LCALL ?Subroutine2 & 0xFFFF
191 CLR_IOB_BIT;
192 }
\ ??CrossCallReturnLabel_6:
\ 000003 02.... LJMP ?BRET
\ 000006 REQUIRE P1SEL
\ 000006 REQUIRE P1DIR
\ 000006 REQUIRE _A_P1
193
194 /***********************************************************
195 ** 函数名称: IRSend_T1IntHandle
196 ** 实现功能: Timer1 红外编码发送中的中断处理函数
197 ** 入口参数: None
198 ** 返回结果: None
199 ***********************************************************/
200 #pragma vector = T1_VECTOR
\ In segment NEAR_CODE, align 1, keep-with-next
201 __interrupt void IRSend_T1IntHandle(void)
\ IRSend_T1IntHandle:
202 {
\ 000000 C0E0 PUSH A
\ 000002 C0D0 PUSH PSW
\ 000004 C082 PUSH DPL
\ 000006 C083 PUSH DPH
\ 000008 ; Saved register size: 4
\ 000008 ; Auto size: 0
203 T1STAT &= BIT_0(5); // T1STAT.OVFIF 清除Timer1溢出中断标志
\ 000008 53AFDF ANL 0xaf,#0xdf
204 T1STAT &= BIT_0(1); // T1STAT.CH0IF 清除Timer1通道0中断标志
\ 00000B 53AFFD ANL 0xaf,#0xfd
205 IRCON &= BIT_0(1); // IRCON.T1IF 清除Timer1总中断标志
\ 00000E C2C1 CLR 0xc0.1
206 T1_80usCnt++;
\ 000010 90.... MOV DPTR,#T1_80usCnt
\ 000013 E0 MOVX A,@DPTR
\ 000014 2401 ADD A,#0x1
\ 000016 F0 MOVX @DPTR,A
\ 000017 A3 INC DPTR
\ 000018 E0 MOVX A,@DPTR
\ 000019 3400 ADDC A,#0x0
\ 00001B F0 MOVX @DPTR,A
207 }
\ 00001C D083 POP DPH
\ 00001E D082 POP DPL
\ 000020 D0D0 POP PSW
\ 000022 D0E0 POP A
\ 000024 32 RETI
\ 000025 REQUIRE T1STAT
\ 000025 REQUIRE _A_IRCON
208
209 /***********************************************************
210 ** 函数名称: IRSend_T3IntHandle
211 ** 实现功能: Timer3 红外编码发送中的中断处理函数
212 ** 入口参数: None
213 ** 返回结果: None
214 ***********************************************************/
215 #pragma vector = T3_VECTOR
\ In segment NEAR_CODE, align 1, keep-with-next
216 __near_func __interrupt void IRSend_T3IntHandle(void)
\ IRSend_T3IntHandle:
217 {
\ 000000 ; Saved register size: 1
\ 000000 ; Auto size: 0
218 TIMIF &= BIT_0(1); // TIMIF.T3CH0IF
\ 000000 C2D9 CLR 0xd8.1
219 }
\ 000002 32 RETI
\ 000003 REQUIRE _A_TIMIF
\ In segment INTVEC, offset 0x4b, root
\ `??IRSend_T1IntHandle::??INTVEC 75`:
\ 00004B 02.... LJMP (IRSend_T1IntHandle)
\ In segment INTVEC, offset 0x5b, root
\ `??IRSend_T3IntHandle::??INTVEC 91`:
\ 00005B 02.... LJMP (IRSend_T3IntHandle)
220
221
222 #endif // defined(HAL_IRENC) && (HAL_IRENC == TRUE)
Maximum stack usage in bytes:
ISTACK XSTACK Function
------ ------ --------
1 12 GenIR
0 12 -> IRSend_T1_Init
0 12 -> IRSend_T3_Init
0 0 IRSendInit
4 0 IRSend_T1IntHandle
2 12 IRSend_T1_Init
1 0 IRSend_T3IntHandle
0 12 IRSend_T3_Init
Segment part sizes:
Bytes Function/Label
----- --------------
12 ?Subroutine0
7 ?Subroutine1
4 ?Subroutine2
15 ?Subroutine3
11 ?Subroutine4
9 ?Subroutine5
245 GenIR
6 IRSendInit
1 IRSendSta
37 IRSend_T1IntHandle
3 IRSend_T1IntHandle::??INTVEC 75
36 IRSend_T1_Init
3 IRSend_T3IntHandle
3 IRSend_T3IntHandle::??INTVEC 91
34 IRSend_T3_Init
1 P1DIR
1 P1SEL
1 P2SEL
1 T1CC0H
1 T1CC0L
1 T1CCTL0
1 T1CTL
1 T1STAT
2 T1_80usCnt
1 T3CC0
1 T3CCTL0
1 T3CTL
1 _A_IEN0
1 _A_IEN1
1 _A_IRCON
1 _A_P1
1 _A_TIMIF
1 bitNum
1 cntByte
1 cntbit
24 -- Other
379 bytes in segment BANKED_CODE
24 bytes in segment BANK_RELAYS
6 bytes in segment INTVEC
40 bytes in segment NEAR_CODE
16 bytes in segment SFR_AN
6 bytes in segment XDATA_Z
64 bytes of CODE memory (+ 6 bytes shared)
0 bytes of DATA memory (+ 16 bytes shared)
379 bytes of HUGECODE memory
6 bytes of XDATA memory
Errors: none
Warnings: none

View File

@@ -1,600 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:24
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_APP.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW5D1E.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_APP.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_APP.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\MT_APP.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_APP.c
1 /***************************************************************************************************
2 Filename: MT_APP.c
3 Revised: $Date: 2011-05-27 16:00:27 -0700 (Fri, 27 May 2011) $
4 Revision: $Revision: 26145 $
5
6 Description: MonitorTest processing for APP commands
7
8 Copyright 2007-2011 Texas Instruments Incorporated. All rights reserved.
9
10 IMPORTANT: Your use of this Software is limited to those specific rights
11 granted under the terms of a software license agreement between the user
12 who downloaded the software, his/her employer (which must be your employer)
13 and Texas Instruments Incorporated (the "License"). You may not use this
14 Software unless you agree to abide by the terms of the License. The License
15 limits your use, and you acknowledge, that the Software may not be modified,
16 copied or distributed unless embedded on a Texas Instruments microcontroller
17 or used solely and exclusively in conjunction with a Texas Instruments radio
18 frequency transceiver, which is integrated into your product. Other than for
19 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
20 works of, modify, distribute, perform, display or sell this Software and/or
21 its documentation for any purpose.
22
23 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
24 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
25 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
26 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
27 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
28 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
29 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
30 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
31 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
32 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
33 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
34
35 Should you have any questions regarding your right to use this Software,
36 contact Texas Instruments Incorporated at www.TI.com.
37
38 ***************************************************************************************************/
39
40 /***************************************************************************************************
41 * INCLUDES
42 ***************************************************************************************************/
43 #include "ZComDef.h"
44 #include "MT.h" /* This is here because all the SPI_CMD_XXX are defined in this header */
45 #include "MT_APP.h"
46 #include "MT_AF.h" /* This is here because this MT_APP makes some routine call to AF */
47 #include "MT_RPC.h"
48
49 #if defined( APP_TP )
50 #include "TestProfile.h"
51 #endif
52 #if defined( APP_TP2 )
53 #include "TestProfile2.h"
54 #include "nwk_util.h"
55 #endif
56
57 /***************************************************************************************************
58 * LOCAL FUNCTIONS
59 ***************************************************************************************************/
60 #if defined (MT_APP_FUNC)
61 void MT_AppMsg(uint8 *pBuf);
62 void MT_AppUserCmd(byte *pData);
63 #endif
64
65 #if defined (MT_APP_FUNC)
66 /***************************************************************************************************
67 * @fn MT_AppCommandProcessing
68 *
69 * @brief Process all the APP commands that are issued by test tool
70 *
71 * @param pBuf - pointer to the received buffer
72 *
73 * @return status
74 ***************************************************************************************************/
75 uint8 MT_AppCommandProcessing(uint8 *pBuf)
76 {
77 uint8 status = MT_RPC_SUCCESS;
78
79 switch (pBuf[MT_RPC_POS_CMD1])
80 {
81 case MT_APP_MSG:
82 MT_AppMsg(pBuf);
83 break;
84
85 case MT_APP_USER_TEST:
86 MT_AppUserCmd(pBuf);
87 break;
88
89 default:
90 status = MT_RPC_ERR_COMMAND_ID;
91 break;
92 }
93
94 return status;
95 }
96
97 /***************************************************************************************************
98 * @fn MT_AppMsg
99 *
100 * @brief Process APP_MSG command
101 *
102 * @param pBuf - pointer to the received buffer
103 *
104 * @return void
105 ***************************************************************************************************/
106 void MT_AppMsg(uint8 *pBuf)
107 {
108 uint8 retValue = ZFailure;
109 uint8 endpoint;
110 endPointDesc_t *epDesc;
111 mtSysAppMsg_t *msg;
112 uint8 cmdId, dataLen;
113
114 /* parse header */
115 dataLen = pBuf[MT_RPC_POS_LEN];
116 cmdId = pBuf[MT_RPC_POS_CMD1];
117 pBuf += MT_RPC_FRAME_HDR_SZ;
118
119 /* Get the endpoint and skip past it.*/
120 endpoint = *pBuf++;
121 dataLen--;
122
123 /* Look up the endpoint */
124 epDesc = afFindEndPointDesc( endpoint );
125
126 if (epDesc)
127 {
128 /* Build and send the message to the APP */
129 msg = (mtSysAppMsg_t *)osal_msg_allocate(sizeof(mtSysAppMsg_t) + (dataLen));
130 if ( msg )
131 {
132 /* Build and send message up the app */
133 msg->hdr.event = MT_SYS_APP_MSG;
134 msg->endpoint = endpoint;
135 msg->appDataLen = dataLen;
136 msg->appData = (uint8*)(msg+1);
137 osal_memcpy( msg->appData, pBuf, dataLen);
138 osal_msg_send( *(epDesc->task_id), (uint8 *)msg );
139
140 /* Info for response */
141 retValue = ZSuccess;
142 }
143 }
144
145 /* Build and send back the response */
146 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 1, &retValue);
147 }
148
149 /***************************************************************************************************
150 * @fn MT_AppMsg
151 *
152 * @brief Process APP_MSG command
153 *
154 * @param pBuf - pointer to the received buffer
155 *
156 * @return void
157 ***************************************************************************************************/
158 void MT_AppUserCmd(uint8 *pBuf)
159 {
160
161 uint8 retValue, cmdId;
162
163 #if defined (APP_TGEN) || defined (NWK_TEST) || defined (APP_TP) || defined (APP_TP2) || defined (OSAL_TOTAL_MEM) || defined (APP_DEBUG)
164 uint16 app_cmd;
165 uint8 srcEp;
166 uint16 param1;
167 uint16 param2;
168 #endif
169 #if defined (OSAL_TOTAL_MEM)
170 uint8 pData[2];
171 #endif
172
173 /* parse header */
174 cmdId = pBuf[MT_RPC_POS_CMD1];
175 pBuf += MT_RPC_FRAME_HDR_SZ;
176
177 retValue = INVALID_TASK; //should be changed later
178
179 #if defined (APP_TGEN) || defined (NWK_TEST) || defined (APP_TP) || defined (APP_TP2) || defined (OSAL_TOTAL_MEM) || defined (APP_DEBUG)
180
181 srcEp = *pBuf++;
182
183 app_cmd = BUILD_UINT16( pBuf[0] , pBuf[1] );
184 pBuf = pBuf + sizeof( uint16 );
185
186 param1 = BUILD_UINT16( pBuf[0] , pBuf[1] );
187 pBuf = pBuf + sizeof( uint16 );
188
189 param2 = BUILD_UINT16( pBuf[0] , pBuf[1] );
190
191 switch ( app_cmd )
192 {
193
194 #if defined (APP_TGEN)
195 case TGEN_START:
196 TrafficGenApp_SendCmdMSG( param1, param2, TRAFFICGENAPP_CMD_START );
197 retValue = ZSUCCESS;
198 break;
199
200 case TGEN_STOP:
201 TrafficGenApp_SendCmdMSG( param1, param2, TRAFFICGENAPP_CMD_STOP );
202 retValue = ZSUCCESS;
203 break;
204
205 case TGEN_COUNT:
206 retValue = TrafficGenApp_CountPkt( param1, param2 );
207 return;
208 break;
209 #endif
210
211 #if defined (NWK_TEST)
212 case HW_TEST:
213 HwApp_Start( HI_UINT16(param1), LO_UINT16(param1), HI_UINT16(param2),
214 1000, LO_UINT16(param2), 3, 0 );
215 break;
216
217 case HW_DISPLAY_RESULT:
218 HwApp_TestInfo();
219 break;
220
221 case HW_SEND_STATUS:
222 HwApp_SendStats();
223 break;
224 #endif
225
226 #if defined( APP_TP ) || defined ( APP_TP2 )
227 #if defined( APP_TP )
228 case TP_SEND_NODATA:
229 retValue = TestProfileApp_SendNoData( srcEp, (byte)param1 );
230 break;
231 #endif // APP_TP
232
233 case TP_SEND_BUFFERTEST:
234 retValue = TestProfileApp_SendBufferReq( srcEp, (byte)param1 );
235 break;
236
237 #if defined( APP_TP )
238 case TP_SEND_UINT8:
239 retValue = TestProfileApp_SendUint8( srcEp, (byte)param1 );
240 break;
241
242 case TP_SEND_INT8:
243 retValue = TestProfileApp_SendInt8( srcEp, (byte)param1 );
244 break;
245
246 case TP_SEND_UINT16:
247 retValue = TestProfileApp_SendUint16( srcEp, (byte)param1 );
248 break;
249
250 case TP_SEND_INT16:
251 retValue = TestProfileApp_SendInt16( srcEp, (byte)param1 );
252 break;
253
254 case TP_SEND_SEMIPREC:
255 retValue = TestProfileApp_SendSemiPrec( srcEp, (byte)param1 );
256 break;
257
258 case TP_SEND_FREEFORM:
259 retValue = TestProfileApp_SendFreeFormReq( srcEp, (byte)param1 );
260 break;
261
262 #else // APP_TP
263 case TP_SEND_FREEFORM:
264 retValue = TestProfileApp_SendFreeFormReq(srcEp, (byte)param1, (byte)param2);
265 break;
266 #endif
267
268 #if defined( APP_TP )
269 case TP_SEND_ABS_TIME:
270 retValue = TestProfileApp_SendAbsTime( srcEp, (byte)param1 );
271 break;
272
273 case TP_SEND_REL_TIME:
274 retValue = TestProfileApp_SendRelativeTime( srcEp, (byte)param1 );
275 break;
276
277 case TP_SEND_CHAR_STRING:
278 retValue = TestProfileApp_SendCharString( srcEp, (byte)param1 );
279 break;
280
281 case TP_SEND_OCTET_STRING:
282 retValue = TestProfileApp_SendOctetString( srcEp, (byte)param1 );
283 break;
284 #endif // APP_TP
285
286 case TP_SET_DSTADDRESS:
287 retValue = TestProfileApp_SetDestAddress(HI_UINT16(param1), LO_UINT16(param1), param2);
288 break;
289
290 #if defined( APP_TP2 )
291 case TP_SEND_BUFFER_GROUP:
292 retValue = TestProfileApp_SendBufferGroup( srcEp, (byte)param1 );
293 break;
294 #endif // APP_TP
295
296 case TP_SEND_BUFFER:
297 retValue = TestProfileApp_SendBuffer( srcEp, (byte)param1 );
298 break;
299
300 #if defined( APP_TP )
301 case TP_SEND_MULT_KVP_8BIT:
302 TestProfileApp_SendMultiKVP_8bit( srcEp, (byte)param1 );
303 retValue = ZSuccess;
304 break;
305
306 case TP_SEND_MULT_KVP_16BIT:
307 TestProfileApp_SendMultiKVP_16bit( srcEp, (byte)param1 );
308 retValue = ZSuccess;
309 break;
310
311 case TP_SEND_MULT_KVP_TIME:
312 TestProfileApp_SendMultiKVP_Time( srcEp, (byte)param1 );
313 retValue = ZSuccess;
314 break;
315
316 case TP_SEND_MULT_KVP_STRING:
317 TestProfileApp_SendMultiKVP_String( srcEp, (byte)param1 );
318 retValue = ZSuccess;
319 break;
320
321 case TP_SEND_MULTI_KVP_STR_TIME:
322 retValue = ZSuccess;
323 TestProfileApp_SendMultiKVP_String_Time( srcEp, (byte)param1 );
324 break;
325 #endif // APP_TP
326
327 case TP_SEND_COUNTED_PKTS:
328 TestProfileApp_SendCountedPktsReq(HI_UINT16(param1), LO_UINT16(param1), param2);
329 retValue = ZSuccess;
330 break;
331
332 case TP_SEND_RESET_COUNTER:
333 TestProfileApp_CountedPakts_ResetCounterReq( (byte)param1 );
334 retValue = ZSuccess;
335 break;
336
337 case TP_SEND_GET_COUNTER:
338 TestProfileApp_CountedPakts_GetCounterReq( srcEp, (byte)param1 );
339 retValue = ZSuccess;
340 break;
341
342 case TP_SET_PERMIT_JOIN:
343 if ( ZG_BUILD_RTR_TYPE && ZG_DEVICE_RTR_TYPE )
344 {
345 NLME_PermitJoiningRequest( (byte)param1 );
346 retValue = ZSuccess;
347 }
348 else
349 {
350 retValue = ZFailure;
351 }
352 break;
353
354 #if defined ( APP_TP2 )
355 case TP_ADD_GROUP:
356 retValue = TestProfileApp_SetGroup( srcEp, param1 );
357 break;
358
359 case TP_REMOVE_GROUP:
360 retValue = TestProfileApp_RemoveGroup( srcEp, param1 );
361 break;
362
363 case TP_SEND_UPDATE_KEY:
364 retValue = TestProfileApp_UpdateKey( srcEp, (uint8)param1, param2 );
365 break;
366
367 case TP_SEND_SWITCH_KEY:
368 retValue = TestProfileApp_SwitchKey( srcEp, (uint8)param1, param2 );
369 break;
370
371 case TP_SEND_BUFFERTEST_GROUP:
372 retValue = TestProfileApp_SendBufferGroupReq( srcEp, (byte)param1, (byte)param2 );
373 break;
374
375 case TP_SEND_ROUTE_DISC_REQ:
376 retValue = TestProfileApp_SendRouteDiscReq( srcEp, param1,
377 HI_UINT16( param2 ), LO_UINT16( param2 ) );
378 break;
379
380 case TP_SEND_ROUTE_DISCOVERY:
381 if ( ZG_BUILD_RTR_TYPE && ZG_DEVICE_RTR_TYPE )
382 {
383 retValue = TestProfileApp_SendRouteDiscovery( param1,
384 HI_UINT16( param2 ), LO_UINT16( param2 ) );
385 }
386 break;
387
388 case TP_SEND_NEW_ADDR:
389 retValue = TestProfileApp_ChangeShortAddr( param1, LO_UINT16(param2) );
390 break;
391
392 case TP_SEND_NWK_UPDATE:
393 /* Send out a Network Update command. */
394 retValue = NLME_SendNetworkUpdate( NWK_BROADCAST_SHORTADDR, NWKUPDATE_PANID_UPDATE,
395 _NIB.extendedPANID, _NIB.nwkUpdateId+1, param1 );
396 break;
397
398 case TP_NWK_ADDR_CONFLICT:
399 retValue = NLME_SendNetworkStatus( NWK_BROADCAST_SHORTADDR_DEVZCZR, param1,
400 NWKSTAT_ADDRESS_CONFLICT, FALSE );
401 break;
402
403 #if (ZG_BUILD_JOINING_TYPE)
404 case TP_AK_SETUP_PARTNER:
405 retValue = TestProfileApp_AppKeySetupPartner( srcEp, param1, param2 );
406 break;
407
408 case TP_AK_REQ_KEY:
409 retValue = TestProfileApp_AppKeyRequest( srcEp, param1, param2 );
410 break;
411
412 case TP_AK_PARTNER_NWKADDR:
413 retValue = TestProfileApp_SetPartnerNwkAddr( srcEp, param1, param2 );
414 break;
415
416 case TP_AK_PARTNER_EXTADDR7654:
417 retValue = TestProfileApp_SetPartnerExtAddr7654( srcEp, param1, param2 );
418 break;
419
420 case TP_AK_PARTNER_EXTADDR3210:
421 retValue = TestProfileApp_SetPartnerExtAddr3210( srcEp, param1, param2 );
422 break;
423
424 case TP_AK_PARTNER_SET:
425 retValue = TestProfileApp_SetPartner( srcEp, param1, param2 );
426 break;
427 #endif /* ZG_BUILD_JOINING_TYPE */
428
429 #if (ZG_BUILD_COORDINATOR_TYPE)
430 case TP_AK_TYPE_SET:
431 retValue = TestProfileApp_AppKeyTypeSet( srcEp, param1, param2 );
432 break;
433 #endif /* ZG_BUILD_COORDINATOR_TYPE */
434
435 #if defined ( ZIGBEE_FRAGMENTATION )
436 case TP_FRAG_SKIP_BLOCK:
437 retValue = TestProfileApp_FragSkipBlock( (uint8)param1 );
438 break;
439 #endif
440
441 case TP_APS_REMOVE:
442 retValue = TestProfileApp_APSRemove( param1, param2 );
443 break;
444 #endif // APP_TP2
445
446 #endif // APP_TP || APP_TP2
447
448 #if defined ( OSAL_TOTAL_MEM )
449 case OSAL_MEM_STACK_HIGH_WATER:
450 case OSAL_MEM_HEAP_HIGH_WATER:
451 if ( app_cmd == OSAL_MEM_STACK_HIGH_WATER)
452 {
453 param1 = osal_stack_used();
454 }
455 else
456 {
457 param1 = osal_heap_high_water();
458 }
459
460 pData[0] = LO_UINT16( param1 );
461 pData[1] = HI_UINT16( param1 );
462
463 MT_BuildAndSendZToolResponse((MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 2, pData);
464 return;
465 #endif
466
467 #if defined ( APP_DEBUG )
468 case DEBUG_GET:
469 DebugApp_SendQuery( param1 );
470 retValue = ZSUCCESS;
471 break;
472 #endif
473
474 #if defined ( APP_TP2 )
475 case TP_SEND_BCAST_RSP:
476 retValue = TestProfileApp_SendBcastRsp( srcEp, (byte)param1 );
477 break;
478 #endif
479
480 default:
481 break;
482 }
483 #endif // (APP_TGEN) || (NWK_TEST) || (APP_TP) || (APP_TP2) || (OSAL_TOTAL_MEM) || (APP_DEBUG)
484
485 /* Build and send back the response */
486 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 1, &retValue);
487 }
488
489 #endif /* MT_APP_FUNC */
490
491 /***************************************************************************************************
492 ***************************************************************************************************/
Errors: none
Warnings: none

View File

@@ -1,618 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:24
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_APP.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW5D1E.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_APP.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_APP.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME MT_APP
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
END
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_APP.c
// 1 /***************************************************************************************************
// 2 Filename: MT_APP.c
// 3 Revised: $Date: 2011-05-27 16:00:27 -0700 (Fri, 27 May 2011) $
// 4 Revision: $Revision: 26145 $
// 5
// 6 Description: MonitorTest processing for APP commands
// 7
// 8 Copyright 2007-2011 Texas Instruments Incorporated. All rights reserved.
// 9
// 10 IMPORTANT: Your use of this Software is limited to those specific rights
// 11 granted under the terms of a software license agreement between the user
// 12 who downloaded the software, his/her employer (which must be your employer)
// 13 and Texas Instruments Incorporated (the "License"). You may not use this
// 14 Software unless you agree to abide by the terms of the License. The License
// 15 limits your use, and you acknowledge, that the Software may not be modified,
// 16 copied or distributed unless embedded on a Texas Instruments microcontroller
// 17 or used solely and exclusively in conjunction with a Texas Instruments radio
// 18 frequency transceiver, which is integrated into your product. Other than for
// 19 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 20 works of, modify, distribute, perform, display or sell this Software and/or
// 21 its documentation for any purpose.
// 22
// 23 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 24 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 25 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 26 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 27 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 28 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 29 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 30 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 31 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 32 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 33 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 34
// 35 Should you have any questions regarding your right to use this Software,
// 36 contact Texas Instruments Incorporated at www.TI.com.
// 37
// 38 ***************************************************************************************************/
// 39
// 40 /***************************************************************************************************
// 41 * INCLUDES
// 42 ***************************************************************************************************/
// 43 #include "ZComDef.h"
// 44 #include "MT.h" /* This is here because all the SPI_CMD_XXX are defined in this header */
// 45 #include "MT_APP.h"
// 46 #include "MT_AF.h" /* This is here because this MT_APP makes some routine call to AF */
// 47 #include "MT_RPC.h"
// 48
// 49 #if defined( APP_TP )
// 50 #include "TestProfile.h"
// 51 #endif
// 52 #if defined( APP_TP2 )
// 53 #include "TestProfile2.h"
// 54 #include "nwk_util.h"
// 55 #endif
// 56
// 57 /***************************************************************************************************
// 58 * LOCAL FUNCTIONS
// 59 ***************************************************************************************************/
// 60 #if defined (MT_APP_FUNC)
// 61 void MT_AppMsg(uint8 *pBuf);
// 62 void MT_AppUserCmd(byte *pData);
// 63 #endif
// 64
// 65 #if defined (MT_APP_FUNC)
// 66 /***************************************************************************************************
// 67 * @fn MT_AppCommandProcessing
// 68 *
// 69 * @brief Process all the APP commands that are issued by test tool
// 70 *
// 71 * @param pBuf - pointer to the received buffer
// 72 *
// 73 * @return status
// 74 ***************************************************************************************************/
// 75 uint8 MT_AppCommandProcessing(uint8 *pBuf)
// 76 {
// 77 uint8 status = MT_RPC_SUCCESS;
// 78
// 79 switch (pBuf[MT_RPC_POS_CMD1])
// 80 {
// 81 case MT_APP_MSG:
// 82 MT_AppMsg(pBuf);
// 83 break;
// 84
// 85 case MT_APP_USER_TEST:
// 86 MT_AppUserCmd(pBuf);
// 87 break;
// 88
// 89 default:
// 90 status = MT_RPC_ERR_COMMAND_ID;
// 91 break;
// 92 }
// 93
// 94 return status;
// 95 }
// 96
// 97 /***************************************************************************************************
// 98 * @fn MT_AppMsg
// 99 *
// 100 * @brief Process APP_MSG command
// 101 *
// 102 * @param pBuf - pointer to the received buffer
// 103 *
// 104 * @return void
// 105 ***************************************************************************************************/
// 106 void MT_AppMsg(uint8 *pBuf)
// 107 {
// 108 uint8 retValue = ZFailure;
// 109 uint8 endpoint;
// 110 endPointDesc_t *epDesc;
// 111 mtSysAppMsg_t *msg;
// 112 uint8 cmdId, dataLen;
// 113
// 114 /* parse header */
// 115 dataLen = pBuf[MT_RPC_POS_LEN];
// 116 cmdId = pBuf[MT_RPC_POS_CMD1];
// 117 pBuf += MT_RPC_FRAME_HDR_SZ;
// 118
// 119 /* Get the endpoint and skip past it.*/
// 120 endpoint = *pBuf++;
// 121 dataLen--;
// 122
// 123 /* Look up the endpoint */
// 124 epDesc = afFindEndPointDesc( endpoint );
// 125
// 126 if (epDesc)
// 127 {
// 128 /* Build and send the message to the APP */
// 129 msg = (mtSysAppMsg_t *)osal_msg_allocate(sizeof(mtSysAppMsg_t) + (dataLen));
// 130 if ( msg )
// 131 {
// 132 /* Build and send message up the app */
// 133 msg->hdr.event = MT_SYS_APP_MSG;
// 134 msg->endpoint = endpoint;
// 135 msg->appDataLen = dataLen;
// 136 msg->appData = (uint8*)(msg+1);
// 137 osal_memcpy( msg->appData, pBuf, dataLen);
// 138 osal_msg_send( *(epDesc->task_id), (uint8 *)msg );
// 139
// 140 /* Info for response */
// 141 retValue = ZSuccess;
// 142 }
// 143 }
// 144
// 145 /* Build and send back the response */
// 146 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 1, &retValue);
// 147 }
// 148
// 149 /***************************************************************************************************
// 150 * @fn MT_AppMsg
// 151 *
// 152 * @brief Process APP_MSG command
// 153 *
// 154 * @param pBuf - pointer to the received buffer
// 155 *
// 156 * @return void
// 157 ***************************************************************************************************/
// 158 void MT_AppUserCmd(uint8 *pBuf)
// 159 {
// 160
// 161 uint8 retValue, cmdId;
// 162
// 163 #if defined (APP_TGEN) || defined (NWK_TEST) || defined (APP_TP) || defined (APP_TP2) || defined (OSAL_TOTAL_MEM) || defined (APP_DEBUG)
// 164 uint16 app_cmd;
// 165 uint8 srcEp;
// 166 uint16 param1;
// 167 uint16 param2;
// 168 #endif
// 169 #if defined (OSAL_TOTAL_MEM)
// 170 uint8 pData[2];
// 171 #endif
// 172
// 173 /* parse header */
// 174 cmdId = pBuf[MT_RPC_POS_CMD1];
// 175 pBuf += MT_RPC_FRAME_HDR_SZ;
// 176
// 177 retValue = INVALID_TASK; //should be changed later
// 178
// 179 #if defined (APP_TGEN) || defined (NWK_TEST) || defined (APP_TP) || defined (APP_TP2) || defined (OSAL_TOTAL_MEM) || defined (APP_DEBUG)
// 180
// 181 srcEp = *pBuf++;
// 182
// 183 app_cmd = BUILD_UINT16( pBuf[0] , pBuf[1] );
// 184 pBuf = pBuf + sizeof( uint16 );
// 185
// 186 param1 = BUILD_UINT16( pBuf[0] , pBuf[1] );
// 187 pBuf = pBuf + sizeof( uint16 );
// 188
// 189 param2 = BUILD_UINT16( pBuf[0] , pBuf[1] );
// 190
// 191 switch ( app_cmd )
// 192 {
// 193
// 194 #if defined (APP_TGEN)
// 195 case TGEN_START:
// 196 TrafficGenApp_SendCmdMSG( param1, param2, TRAFFICGENAPP_CMD_START );
// 197 retValue = ZSUCCESS;
// 198 break;
// 199
// 200 case TGEN_STOP:
// 201 TrafficGenApp_SendCmdMSG( param1, param2, TRAFFICGENAPP_CMD_STOP );
// 202 retValue = ZSUCCESS;
// 203 break;
// 204
// 205 case TGEN_COUNT:
// 206 retValue = TrafficGenApp_CountPkt( param1, param2 );
// 207 return;
// 208 break;
// 209 #endif
// 210
// 211 #if defined (NWK_TEST)
// 212 case HW_TEST:
// 213 HwApp_Start( HI_UINT16(param1), LO_UINT16(param1), HI_UINT16(param2),
// 214 1000, LO_UINT16(param2), 3, 0 );
// 215 break;
// 216
// 217 case HW_DISPLAY_RESULT:
// 218 HwApp_TestInfo();
// 219 break;
// 220
// 221 case HW_SEND_STATUS:
// 222 HwApp_SendStats();
// 223 break;
// 224 #endif
// 225
// 226 #if defined( APP_TP ) || defined ( APP_TP2 )
// 227 #if defined( APP_TP )
// 228 case TP_SEND_NODATA:
// 229 retValue = TestProfileApp_SendNoData( srcEp, (byte)param1 );
// 230 break;
// 231 #endif // APP_TP
// 232
// 233 case TP_SEND_BUFFERTEST:
// 234 retValue = TestProfileApp_SendBufferReq( srcEp, (byte)param1 );
// 235 break;
// 236
// 237 #if defined( APP_TP )
// 238 case TP_SEND_UINT8:
// 239 retValue = TestProfileApp_SendUint8( srcEp, (byte)param1 );
// 240 break;
// 241
// 242 case TP_SEND_INT8:
// 243 retValue = TestProfileApp_SendInt8( srcEp, (byte)param1 );
// 244 break;
// 245
// 246 case TP_SEND_UINT16:
// 247 retValue = TestProfileApp_SendUint16( srcEp, (byte)param1 );
// 248 break;
// 249
// 250 case TP_SEND_INT16:
// 251 retValue = TestProfileApp_SendInt16( srcEp, (byte)param1 );
// 252 break;
// 253
// 254 case TP_SEND_SEMIPREC:
// 255 retValue = TestProfileApp_SendSemiPrec( srcEp, (byte)param1 );
// 256 break;
// 257
// 258 case TP_SEND_FREEFORM:
// 259 retValue = TestProfileApp_SendFreeFormReq( srcEp, (byte)param1 );
// 260 break;
// 261
// 262 #else // APP_TP
// 263 case TP_SEND_FREEFORM:
// 264 retValue = TestProfileApp_SendFreeFormReq(srcEp, (byte)param1, (byte)param2);
// 265 break;
// 266 #endif
// 267
// 268 #if defined( APP_TP )
// 269 case TP_SEND_ABS_TIME:
// 270 retValue = TestProfileApp_SendAbsTime( srcEp, (byte)param1 );
// 271 break;
// 272
// 273 case TP_SEND_REL_TIME:
// 274 retValue = TestProfileApp_SendRelativeTime( srcEp, (byte)param1 );
// 275 break;
// 276
// 277 case TP_SEND_CHAR_STRING:
// 278 retValue = TestProfileApp_SendCharString( srcEp, (byte)param1 );
// 279 break;
// 280
// 281 case TP_SEND_OCTET_STRING:
// 282 retValue = TestProfileApp_SendOctetString( srcEp, (byte)param1 );
// 283 break;
// 284 #endif // APP_TP
// 285
// 286 case TP_SET_DSTADDRESS:
// 287 retValue = TestProfileApp_SetDestAddress(HI_UINT16(param1), LO_UINT16(param1), param2);
// 288 break;
// 289
// 290 #if defined( APP_TP2 )
// 291 case TP_SEND_BUFFER_GROUP:
// 292 retValue = TestProfileApp_SendBufferGroup( srcEp, (byte)param1 );
// 293 break;
// 294 #endif // APP_TP
// 295
// 296 case TP_SEND_BUFFER:
// 297 retValue = TestProfileApp_SendBuffer( srcEp, (byte)param1 );
// 298 break;
// 299
// 300 #if defined( APP_TP )
// 301 case TP_SEND_MULT_KVP_8BIT:
// 302 TestProfileApp_SendMultiKVP_8bit( srcEp, (byte)param1 );
// 303 retValue = ZSuccess;
// 304 break;
// 305
// 306 case TP_SEND_MULT_KVP_16BIT:
// 307 TestProfileApp_SendMultiKVP_16bit( srcEp, (byte)param1 );
// 308 retValue = ZSuccess;
// 309 break;
// 310
// 311 case TP_SEND_MULT_KVP_TIME:
// 312 TestProfileApp_SendMultiKVP_Time( srcEp, (byte)param1 );
// 313 retValue = ZSuccess;
// 314 break;
// 315
// 316 case TP_SEND_MULT_KVP_STRING:
// 317 TestProfileApp_SendMultiKVP_String( srcEp, (byte)param1 );
// 318 retValue = ZSuccess;
// 319 break;
// 320
// 321 case TP_SEND_MULTI_KVP_STR_TIME:
// 322 retValue = ZSuccess;
// 323 TestProfileApp_SendMultiKVP_String_Time( srcEp, (byte)param1 );
// 324 break;
// 325 #endif // APP_TP
// 326
// 327 case TP_SEND_COUNTED_PKTS:
// 328 TestProfileApp_SendCountedPktsReq(HI_UINT16(param1), LO_UINT16(param1), param2);
// 329 retValue = ZSuccess;
// 330 break;
// 331
// 332 case TP_SEND_RESET_COUNTER:
// 333 TestProfileApp_CountedPakts_ResetCounterReq( (byte)param1 );
// 334 retValue = ZSuccess;
// 335 break;
// 336
// 337 case TP_SEND_GET_COUNTER:
// 338 TestProfileApp_CountedPakts_GetCounterReq( srcEp, (byte)param1 );
// 339 retValue = ZSuccess;
// 340 break;
// 341
// 342 case TP_SET_PERMIT_JOIN:
// 343 if ( ZG_BUILD_RTR_TYPE && ZG_DEVICE_RTR_TYPE )
// 344 {
// 345 NLME_PermitJoiningRequest( (byte)param1 );
// 346 retValue = ZSuccess;
// 347 }
// 348 else
// 349 {
// 350 retValue = ZFailure;
// 351 }
// 352 break;
// 353
// 354 #if defined ( APP_TP2 )
// 355 case TP_ADD_GROUP:
// 356 retValue = TestProfileApp_SetGroup( srcEp, param1 );
// 357 break;
// 358
// 359 case TP_REMOVE_GROUP:
// 360 retValue = TestProfileApp_RemoveGroup( srcEp, param1 );
// 361 break;
// 362
// 363 case TP_SEND_UPDATE_KEY:
// 364 retValue = TestProfileApp_UpdateKey( srcEp, (uint8)param1, param2 );
// 365 break;
// 366
// 367 case TP_SEND_SWITCH_KEY:
// 368 retValue = TestProfileApp_SwitchKey( srcEp, (uint8)param1, param2 );
// 369 break;
// 370
// 371 case TP_SEND_BUFFERTEST_GROUP:
// 372 retValue = TestProfileApp_SendBufferGroupReq( srcEp, (byte)param1, (byte)param2 );
// 373 break;
// 374
// 375 case TP_SEND_ROUTE_DISC_REQ:
// 376 retValue = TestProfileApp_SendRouteDiscReq( srcEp, param1,
// 377 HI_UINT16( param2 ), LO_UINT16( param2 ) );
// 378 break;
// 379
// 380 case TP_SEND_ROUTE_DISCOVERY:
// 381 if ( ZG_BUILD_RTR_TYPE && ZG_DEVICE_RTR_TYPE )
// 382 {
// 383 retValue = TestProfileApp_SendRouteDiscovery( param1,
// 384 HI_UINT16( param2 ), LO_UINT16( param2 ) );
// 385 }
// 386 break;
// 387
// 388 case TP_SEND_NEW_ADDR:
// 389 retValue = TestProfileApp_ChangeShortAddr( param1, LO_UINT16(param2) );
// 390 break;
// 391
// 392 case TP_SEND_NWK_UPDATE:
// 393 /* Send out a Network Update command. */
// 394 retValue = NLME_SendNetworkUpdate( NWK_BROADCAST_SHORTADDR, NWKUPDATE_PANID_UPDATE,
// 395 _NIB.extendedPANID, _NIB.nwkUpdateId+1, param1 );
// 396 break;
// 397
// 398 case TP_NWK_ADDR_CONFLICT:
// 399 retValue = NLME_SendNetworkStatus( NWK_BROADCAST_SHORTADDR_DEVZCZR, param1,
// 400 NWKSTAT_ADDRESS_CONFLICT, FALSE );
// 401 break;
// 402
// 403 #if (ZG_BUILD_JOINING_TYPE)
// 404 case TP_AK_SETUP_PARTNER:
// 405 retValue = TestProfileApp_AppKeySetupPartner( srcEp, param1, param2 );
// 406 break;
// 407
// 408 case TP_AK_REQ_KEY:
// 409 retValue = TestProfileApp_AppKeyRequest( srcEp, param1, param2 );
// 410 break;
// 411
// 412 case TP_AK_PARTNER_NWKADDR:
// 413 retValue = TestProfileApp_SetPartnerNwkAddr( srcEp, param1, param2 );
// 414 break;
// 415
// 416 case TP_AK_PARTNER_EXTADDR7654:
// 417 retValue = TestProfileApp_SetPartnerExtAddr7654( srcEp, param1, param2 );
// 418 break;
// 419
// 420 case TP_AK_PARTNER_EXTADDR3210:
// 421 retValue = TestProfileApp_SetPartnerExtAddr3210( srcEp, param1, param2 );
// 422 break;
// 423
// 424 case TP_AK_PARTNER_SET:
// 425 retValue = TestProfileApp_SetPartner( srcEp, param1, param2 );
// 426 break;
// 427 #endif /* ZG_BUILD_JOINING_TYPE */
// 428
// 429 #if (ZG_BUILD_COORDINATOR_TYPE)
// 430 case TP_AK_TYPE_SET:
// 431 retValue = TestProfileApp_AppKeyTypeSet( srcEp, param1, param2 );
// 432 break;
// 433 #endif /* ZG_BUILD_COORDINATOR_TYPE */
// 434
// 435 #if defined ( ZIGBEE_FRAGMENTATION )
// 436 case TP_FRAG_SKIP_BLOCK:
// 437 retValue = TestProfileApp_FragSkipBlock( (uint8)param1 );
// 438 break;
// 439 #endif
// 440
// 441 case TP_APS_REMOVE:
// 442 retValue = TestProfileApp_APSRemove( param1, param2 );
// 443 break;
// 444 #endif // APP_TP2
// 445
// 446 #endif // APP_TP || APP_TP2
// 447
// 448 #if defined ( OSAL_TOTAL_MEM )
// 449 case OSAL_MEM_STACK_HIGH_WATER:
// 450 case OSAL_MEM_HEAP_HIGH_WATER:
// 451 if ( app_cmd == OSAL_MEM_STACK_HIGH_WATER)
// 452 {
// 453 param1 = osal_stack_used();
// 454 }
// 455 else
// 456 {
// 457 param1 = osal_heap_high_water();
// 458 }
// 459
// 460 pData[0] = LO_UINT16( param1 );
// 461 pData[1] = HI_UINT16( param1 );
// 462
// 463 MT_BuildAndSendZToolResponse((MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 2, pData);
// 464 return;
// 465 #endif
// 466
// 467 #if defined ( APP_DEBUG )
// 468 case DEBUG_GET:
// 469 DebugApp_SendQuery( param1 );
// 470 retValue = ZSUCCESS;
// 471 break;
// 472 #endif
// 473
// 474 #if defined ( APP_TP2 )
// 475 case TP_SEND_BCAST_RSP:
// 476 retValue = TestProfileApp_SendBcastRsp( srcEp, (byte)param1 );
// 477 break;
// 478 #endif
// 479
// 480 default:
// 481 break;
// 482 }
// 483 #endif // (APP_TGEN) || (NWK_TEST) || (APP_TP) || (APP_TP2) || (OSAL_TOTAL_MEM) || (APP_DEBUG)
// 484
// 485 /* Build and send back the response */
// 486 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 1, &retValue);
// 487 }
// 488
// 489 #endif /* MT_APP_FUNC */
// 490
// 491 /***************************************************************************************************
// 492 ***************************************************************************************************/
//
//
//
//
//
//Errors: none
//Warnings: none

View File

@@ -1,655 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:24
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_DEBUG.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW5D9C.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_DEBUG.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_DEBUG.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\MT_DEBUG.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_DEBUG.c
1 /***************************************************************************************************
2 Filename: MT.c
3 Revised: $Date: 2011-06-07 14:34:55 -0700 (Tue, 07 Jun 2011) $
4 Revision: $Revision: 26241 $
5
6 Description:
7
8 Copyright 2007-2011 Texas Instruments Incorporated. All rights reserved.
9
10 IMPORTANT: Your use of this Software is limited to those specific rights
11 granted under the terms of a software license agreement between the user
12 who downloaded the software, his/her employer (which must be your employer)
13 and Texas Instruments Incorporated (the "License"). You may not use this
14 Software unless you agree to abide by the terms of the License. The License
15 limits your use, and you acknowledge, that the Software may not be modified,
16 copied or distributed unless embedded on a Texas Instruments microcontroller
17 or used solely and exclusively in conjunction with a Texas Instruments radio
18 frequency transceiver, which is integrated into your product. Other than for
19 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
20 works of, modify, distribute, perform, display or sell this Software and/or
21 its documentation for any purpose.
22
23 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
24 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
25 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
26 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
27 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
28 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
29 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
30 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
31 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
32 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
33 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
34
35 Should you have any questions regarding your right to use this Software,
36 contact Texas Instruments Incorporated at www.TI.com.
37
38 ***************************************************************************************************/
39
40 /***************************************************************************************************
41 * INCLUDES
42 ***************************************************************************************************/
43
44 #include "ZComDef.h"
45 #include "MT.h"
46 #include "MT_DEBUG.h"
47 #include "MT_UART.h"
48 #include "mac_main.h"
49 #include "mac_data.h"
50 #include "mac_rx.h"
51 #include "mac_tx.h"
52 #include "nwk_globals.h"
53
54 /***************************************************************************************************
55 * LOCAL FUNCTIONs
56 ***************************************************************************************************/
57
58 #if defined (MT_DEBUG_FUNC)
59 static void MT_DebugSetThreshold(uint8 *pBuf);
60 static void MT_DebugMacDataDump(void);
61 #endif
62
63 #if defined (MT_DEBUG_FUNC)
64 /***************************************************************************************************
65 * @fn MT_DebugProcessing
66 *
67 * @brief Process all the DEBUG commands that are issued by test tool
68 *
69 * @param pBuf - pointer to received buffer
70 *
71 * @return status
72 ***************************************************************************************************/
73 uint8 MT_DebugCommandProcessing(uint8 *pBuf)
74 {
75 uint8 status = MT_RPC_SUCCESS;
76
77 switch (pBuf[MT_RPC_POS_CMD1])
78 {
79 case MT_DEBUG_SET_THRESHOLD:
80 MT_DebugSetThreshold(pBuf);
81 break;
82
83 case MT_DEBUG_MAC_DATA_DUMP:
84 MT_DebugMacDataDump();
85 break;
86
87 default:
88 status = MT_RPC_ERR_COMMAND_ID;
89 break;
90 }
91
92 return status;
93 }
94
95 /***************************************************************************************************
96 * @fn MT_DebugSetThreshold
97 *
98 * @brief Process Debug Set Threshold
99 *
100 * @param pBuf - pointer to received buffer
101 *
102 * @return void
103 ***************************************************************************************************/
104 static void MT_DebugSetThreshold(uint8 *pBuf)
105 {
106 uint8 retValue = ZSuccess;
107 uint8 cmdId;
108
109 /* parse header */
110 cmdId = pBuf[MT_RPC_POS_CMD1];
111 pBuf += MT_RPC_FRAME_HDR_SZ;
112
113 /* Populate info */
114 debugCompId = *pBuf++;
115 debugThreshold = *pBuf++;
116
117 /* Build and send back the response */
118 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_DBG), cmdId, 1, &retValue);
119 }
120
121 /***************************************************************************************************
122 * @fn MT_DebugMacDataDump
123 *
124 * @brief Process the debug MAC Data Dump request.
125 *
126 * @param pBuf - pointer to received buffer
127 *
128 * @return void
129 ***************************************************************************************************/
130 static void MT_DebugMacDataDump(void)
131 {
132 uint8 buf[sizeof(mtDebugMacDataDump_t)];
133 uint8 *pBuf = buf;
134
135 #ifdef PACKET_FILTER_STATS
136 *pBuf++ = BREAK_UINT32(nwkInvalidPackets, 0);
137 *pBuf++ = BREAK_UINT32(nwkInvalidPackets, 1);
138 *pBuf++ = BREAK_UINT32(nwkInvalidPackets, 2);
139 *pBuf++ = BREAK_UINT32(nwkInvalidPackets, 3);
140 *pBuf++ = BREAK_UINT32(rxCrcFailure, 0);
141 *pBuf++ = BREAK_UINT32(rxCrcFailure, 1);
142 *pBuf++ = BREAK_UINT32(rxCrcFailure, 2);
143 *pBuf++ = BREAK_UINT32(rxCrcFailure, 3);
144 *pBuf++ = BREAK_UINT32(rxCrcSuccess, 0);
145 *pBuf++ = BREAK_UINT32(rxCrcSuccess, 1);
146 *pBuf++ = BREAK_UINT32(rxCrcSuccess, 2);
147 *pBuf++ = BREAK_UINT32(rxCrcSuccess, 3);
148 #endif
149 #if defined HAL_MCU_CC2530
150 *pBuf++ = FSMSTAT0;
151 *pBuf++ = FSMSTAT1;
152 #else
153 *pBuf++ = macSpiReadReg(FSMSTAT0);
154 *pBuf++ = macSpiReadReg(FSMSTAT1);
155 #endif
156 *pBuf++ = macData.rxCount;
157 *pBuf++ = macData.directCount;
158 *pBuf++ = macMain.state;
159 *pBuf++ = macRxActive;
160 *pBuf = macTxActive;
161
162 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_DBG),
163 MT_DEBUG_MAC_DATA_DUMP, sizeof(buf), buf);
164 }
165 #endif
166
167 /***************************************************************************************************
168 * @fn MT_ProcessDebugMsg
169 *
170 * @brief Build and send a debug message.
171 *
172 * @param byte *data - pointer to the data portion of the debug message
173 *
174 * @return void
175 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
176 void MT_ProcessDebugMsg( mtDebugMsg_t *msg )
\ MT_ProcessDebugMsg:
177 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 REQUIRE ?V2
\ 000000 REQUIRE ?V4
\ 000000 REQUIRE ?V5
\ 000000 74F2 MOV A,#-0xe
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 14
\ 000005 ; Auto size: 11
\ 000005 74F5 MOV A,#-0xb
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A EA MOV A,R2
\ 00000B FE MOV R6,A
\ 00000C EB MOV A,R3
\ 00000D FF MOV R7,A
178 byte *msg_ptr;
179 byte dataLen;
180 uint8 buf[11];
181 uint8 *pBuf;
182
183 /* Calculate the data length based */
184 dataLen = 5 + (msg->numParams * sizeof ( uint16 ));
\ 00000E 8A82 MOV DPL,R2
\ 000010 F583 MOV DPH,A
\ 000012 A3 INC DPTR
\ 000013 A3 INC DPTR
\ 000014 A3 INC DPTR
\ 000015 A3 INC DPTR
\ 000016 E0 MOVX A,@DPTR
\ 000017 C3 CLR C
\ 000018 33 RLC A
\ 000019 2405 ADD A,#0x5
\ 00001B F5.. MOV ?V2,A
185
186 /* Get a message buffer to build the debug message */
187 msg_ptr = osal_msg_allocate( (byte)(SPI_0DATA_MSG_LEN + dataLen + 1) );
\ 00001D ; Setup parameters for call to function osal_msg_allocate
\ 00001D 7406 MOV A,#0x6
\ 00001F 25.. ADD A,?V2
\ 000021 FA MOV R2,A
\ 000022 7B00 MOV R3,#0x0
\ 000024 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
\ 000027 8A.. MOV ?V0,R2
\ 000029 8B.. MOV ?V1,R3
188 if ( msg_ptr )
\ 00002B EA MOV A,R2
\ 00002C 4B ORL A,R3
\ 00002D 7003 JNZ $+5
\ 00002F 02.... LJMP ??MT_ProcessDebugMsg_0 & 0xFFFF
189 {
190 /* Build the message */
191 pBuf = buf;
192 *pBuf++ = msg->compID;
\ 000032 8E82 MOV DPL,R6
\ 000034 8F83 MOV DPH,R7
\ 000036 A3 INC DPTR
\ 000037 A3 INC DPTR
\ 000038 E0 MOVX A,@DPTR
\ 000039 85..82 MOV DPL,?XSP + 0
\ 00003C 85..83 MOV DPH,?XSP + 1
\ 00003F F0 MOVX @DPTR,A
193 *pBuf++ = msg->severity;
\ 000040 8E82 MOV DPL,R6
\ 000042 8F83 MOV DPH,R7
\ 000044 A3 INC DPTR
\ 000045 A3 INC DPTR
\ 000046 A3 INC DPTR
\ 000047 E0 MOVX A,@DPTR
\ 000048 C0E0 PUSH A
\ 00004A 7401 MOV A,#0x1
\ 00004C 12.... LCALL ?XSTACK_DISP0_8
\ 00004F D0E0 POP A
\ 000051 F0 MOVX @DPTR,A
194 *pBuf++ = msg->numParams;
\ 000052 EE MOV A,R6
\ 000053 2404 ADD A,#0x4
\ 000055 F8 MOV R0,A
\ 000056 E4 CLR A
\ 000057 3F ADDC A,R7
\ 000058 F9 MOV R1,A
\ 000059 E8 MOV A,R0
\ 00005A FA MOV R2,A
\ 00005B E9 MOV A,R1
\ 00005C FB MOV R3,A
\ 00005D 8882 MOV DPL,R0
\ 00005F F583 MOV DPH,A
\ 000061 E0 MOVX A,@DPTR
\ 000062 C0E0 PUSH A
\ 000064 7402 MOV A,#0x2
\ 000066 12.... LCALL ?XSTACK_DISP0_8
\ 000069 D0E0 POP A
\ 00006B F0 MOVX @DPTR,A
\ 00006C 7403 MOV A,#0x3
\ 00006E 12.... LCALL ?XSTACK_DISP0_8
\ 000071 A882 MOV R0,DPL
\ 000073 A983 MOV R1,DPH
195
196 if ( msg->numParams >= 1 )
\ 000075 8A82 MOV DPL,R2
\ 000077 8B83 MOV DPH,R3
\ 000079 E0 MOVX A,@DPTR
\ 00007A 7003 JNZ $+5
\ 00007C 02.... LJMP ??MT_ProcessDebugMsg_1 & 0xFFFF
197 {
198 *pBuf++ = LO_UINT16( msg->param1 );
\ 00007F EE MOV A,R6
\ 000080 2405 ADD A,#0x5
\ 000082 F8 MOV R0,A
\ 000083 E4 CLR A
\ 000084 3F ADDC A,R7
\ 000085 F9 MOV R1,A
\ 000086 8882 MOV DPL,R0
\ 000088 F583 MOV DPH,A
\ 00008A E0 MOVX A,@DPTR
\ 00008B C0E0 PUSH A
\ 00008D 7403 MOV A,#0x3
\ 00008F 12.... LCALL ?XSTACK_DISP0_8
\ 000092 D0E0 POP A
\ 000094 F0 MOVX @DPTR,A
199 *pBuf++ = HI_UINT16( msg->param1 );
\ 000095 8882 MOV DPL,R0
\ 000097 8983 MOV DPH,R1
\ 000099 A3 INC DPTR
\ 00009A E0 MOVX A,@DPTR
\ 00009B C0E0 PUSH A
\ 00009D 7404 MOV A,#0x4
\ 00009F 12.... LCALL ?XSTACK_DISP0_8
\ 0000A2 D0E0 POP A
\ 0000A4 F0 MOVX @DPTR,A
\ 0000A5 7405 MOV A,#0x5
\ 0000A7 12.... LCALL ?XSTACK_DISP0_8
\ 0000AA A882 MOV R0,DPL
\ 0000AC A983 MOV R1,DPH
200 }
201
202 if ( msg->numParams >= 2 )
\ 0000AE 8E82 MOV DPL,R6
\ 0000B0 8F83 MOV DPH,R7
\ 0000B2 A3 INC DPTR
\ 0000B3 A3 INC DPTR
\ 0000B4 A3 INC DPTR
\ 0000B5 A3 INC DPTR
\ 0000B6 E0 MOVX A,@DPTR
\ 0000B7 C3 CLR C
\ 0000B8 9402 SUBB A,#0x2
\ 0000BA 402F JC ??MT_ProcessDebugMsg_2
203 {
204 *pBuf++ = LO_UINT16( msg->param2 );
\ 0000BC EE MOV A,R6
\ 0000BD 2407 ADD A,#0x7
\ 0000BF F8 MOV R0,A
\ 0000C0 E4 CLR A
\ 0000C1 3F ADDC A,R7
\ 0000C2 F9 MOV R1,A
\ 0000C3 8882 MOV DPL,R0
\ 0000C5 F583 MOV DPH,A
\ 0000C7 E0 MOVX A,@DPTR
\ 0000C8 C0E0 PUSH A
\ 0000CA 7405 MOV A,#0x5
\ 0000CC 12.... LCALL ?XSTACK_DISP0_8
\ 0000CF D0E0 POP A
\ 0000D1 F0 MOVX @DPTR,A
205 *pBuf++ = HI_UINT16( msg->param2 );
\ 0000D2 8882 MOV DPL,R0
\ 0000D4 8983 MOV DPH,R1
\ 0000D6 A3 INC DPTR
\ 0000D7 E0 MOVX A,@DPTR
\ 0000D8 C0E0 PUSH A
\ 0000DA 7406 MOV A,#0x6
\ 0000DC 12.... LCALL ?XSTACK_DISP0_8
\ 0000DF D0E0 POP A
\ 0000E1 F0 MOVX @DPTR,A
\ 0000E2 7407 MOV A,#0x7
\ 0000E4 12.... LCALL ?XSTACK_DISP0_8
\ 0000E7 A882 MOV R0,DPL
\ 0000E9 A983 MOV R1,DPH
206 }
207
208 if ( msg->numParams == 3 )
\ ??MT_ProcessDebugMsg_2:
\ 0000EB 8E82 MOV DPL,R6
\ 0000ED 8F83 MOV DPH,R7
\ 0000EF A3 INC DPTR
\ 0000F0 A3 INC DPTR
\ 0000F1 A3 INC DPTR
\ 0000F2 A3 INC DPTR
\ 0000F3 E0 MOVX A,@DPTR
\ 0000F4 6403 XRL A,#0x3
\ 0000F6 700D JNZ ??MT_ProcessDebugMsg_1
209 {
210 *pBuf++ = LO_UINT16( msg->param3 );
\ 0000F8 EE MOV A,R6
\ 0000F9 2409 ADD A,#0x9
\ 0000FB 12.... LCALL ?Subroutine0 & 0xFFFF
211 *pBuf++ = HI_UINT16( msg->param3 );
212 }
\ ??CrossCallReturnLabel_0:
\ 0000FE E8 MOV A,R0
\ 0000FF 2402 ADD A,#0x2
\ 000101 F8 MOV R0,A
\ 000102 5001 JNC ??MT_ProcessDebugMsg_1
\ 000104 09 INC R1
213
214 *pBuf++ = LO_UINT16( msg->timestamp );
\ ??MT_ProcessDebugMsg_1:
\ 000105 EE MOV A,R6
\ 000106 240B ADD A,#0xb
\ 000108 12.... LCALL ?Subroutine0 & 0xFFFF
215 *pBuf++ = HI_UINT16( msg->timestamp );
216
217 #ifdef MT_UART_DEFAULT_PORT
218 /* Debug message is set to AREQ CMD 0x80 for now */
219 /* Build and send back the response */
220 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_DBG), 0x80, dataLen, buf);
\ ??CrossCallReturnLabel_1:
\ 00010B ; Setup parameters for call to function MT_BuildAndSendZToolResponse
\ 00010B AC.. MOV R4,?XSP + 0
\ 00010D AD.. MOV R5,?XSP + 1
\ 00010F AB.. MOV R3,?V2
\ 000111 7A80 MOV R2,#-0x80
\ 000113 7948 MOV R1,#0x48
\ 000115 12.... LCALL `??MT_BuildAndSendZToolResponse::?relay`; Banked call to: MT_BuildAndSendZToolResponse
221 #endif
222 osal_msg_deallocate( msg_ptr );
\ 000118 ; Setup parameters for call to function osal_msg_deallocate
\ 000118 AA.. MOV R2,?V0
\ 00011A AB.. MOV R3,?V1
\ 00011C 12.... LCALL `??osal_msg_deallocate::?relay`; Banked call to: osal_msg_deallocate
223 }
224 }
\ ??MT_ProcessDebugMsg_0:
\ 00011F 740B MOV A,#0xb
\ 000121 12.... LCALL ?DEALLOC_XSTACK8
\ 000124 7F06 MOV R7,#0x6
\ 000126 02.... LJMP ?BANKED_LEAVE_XDATA
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 FA MOV R2,A
\ 000001 E4 CLR A
\ 000002 3F ADDC A,R7
\ 000003 FB MOV R3,A
\ 000004 8A82 MOV DPL,R2
\ 000006 F583 MOV DPH,A
\ 000008 E0 MOVX A,@DPTR
\ 000009 8882 MOV DPL,R0
\ 00000B 8983 MOV DPH,R1
\ 00000D F0 MOVX @DPTR,A
\ 00000E 8A82 MOV DPL,R2
\ 000010 8B83 MOV DPH,R3
\ 000012 A3 INC DPTR
\ 000013 E0 MOVX A,@DPTR
\ 000014 8882 MOV DPL,R0
\ 000016 8983 MOV DPH,R1
\ 000018 A3 INC DPTR
\ 000019 F0 MOVX @DPTR,A
\ 00001A 22 RET
225
226 /***************************************************************************************************
227 * @fn MT_ProcessDebugStr
228 *
229 * @brief Build and send a debug string.
230 *
231 * @param byte *dstr - pointer to the data portion of the debug message
232 *
233 * @return void
234 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
235 void MT_ProcessDebugStr(mtDebugStr_t *dstr)
\ MT_ProcessDebugStr:
236 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 REQUIRE ?V2
\ 000000 REQUIRE ?V3
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
237 byte *msg_ptr;
238
239 /* Get a message buffer to build the debug message */
240 msg_ptr = osal_mem_alloc( (byte)(SPI_0DATA_MSG_LEN + dstr->strLen) );
\ 000009 ; Setup parameters for call to function osal_mem_alloc
\ 000009 8A82 MOV DPL,R2
\ 00000B F583 MOV DPH,A
\ 00000D A3 INC DPTR
\ 00000E A3 INC DPTR
\ 00000F E0 MOVX A,@DPTR
\ 000010 2405 ADD A,#0x5
\ 000012 FA MOV R2,A
\ 000013 7B00 MOV R3,#0x0
\ 000015 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
\ 000018 8A.. MOV ?V0,R2
\ 00001A 8B.. MOV ?V1,R3
241 if ( msg_ptr )
\ 00001C EA MOV A,R2
\ 00001D 4B ORL A,R3
\ 00001E 6022 JZ ??MT_ProcessDebugStr_0
242 {
243 #ifdef MT_UART_DEFAULT_PORT
244 /* Debug message is set to AREQ CMD 0x80 for now */
245 /* Build and send back the response */
246 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_DBG), MT_DEBUG_MSG, dstr->strLen, dstr->pString);
\ 000020 ; Setup parameters for call to function MT_BuildAndSendZToolResponse
\ 000020 8E82 MOV DPL,R6
\ 000022 8F83 MOV DPH,R7
\ 000024 A3 INC DPTR
\ 000025 A3 INC DPTR
\ 000026 A3 INC DPTR
\ 000027 E0 MOVX A,@DPTR
\ 000028 FC MOV R4,A
\ 000029 A3 INC DPTR
\ 00002A E0 MOVX A,@DPTR
\ 00002B FD MOV R5,A
\ 00002C 8E82 MOV DPL,R6
\ 00002E 8F83 MOV DPH,R7
\ 000030 A3 INC DPTR
\ 000031 A3 INC DPTR
\ 000032 E0 MOVX A,@DPTR
\ 000033 FB MOV R3,A
\ 000034 7A80 MOV R2,#-0x80
\ 000036 7948 MOV R1,#0x48
\ 000038 12.... LCALL `??MT_BuildAndSendZToolResponse::?relay`; Banked call to: MT_BuildAndSendZToolResponse
247 #endif
248 osal_mem_free( msg_ptr );
\ 00003B ; Setup parameters for call to function osal_mem_free
\ 00003B AA.. MOV R2,?V0
\ 00003D AB.. MOV R3,?V1
\ 00003F 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
249 }
250 }
\ ??MT_ProcessDebugStr_0:
\ 000042 7F04 MOV R7,#0x4
\ 000044 02.... LJMP ?BANKED_LEAVE_XDATA
251
252 /**************************************************************************************************
253 */
Maximum stack usage in bytes:
ISTACK XSTACK Function
------ ------ --------
1 25 MT_ProcessDebugMsg
0 25 -> MT_BuildAndSendZToolResponse
0 25 -> osal_msg_allocate
0 25 -> osal_msg_deallocate
0 12 MT_ProcessDebugStr
0 12 -> MT_BuildAndSendZToolResponse
0 12 -> osal_mem_alloc
0 12 -> osal_mem_free
Segment part sizes:
Bytes Function/Label
----- --------------
27 ?Subroutine0
297 MT_ProcessDebugMsg
71 MT_ProcessDebugStr
12 -- Other
395 bytes in segment BANKED_CODE
12 bytes in segment BANK_RELAYS
12 bytes of CODE memory
395 bytes of HUGECODE memory
Errors: none
Warnings: none

View File

@@ -1,729 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:25
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_SAPI.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW5EF6.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_SAPI.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_SAPI.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\MT_SAPI.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_SAPI.c
1 /**************************************************************************************************
2 Filename: MT_SAPI.c
3 Revised: $Date: 2010-05-25 10:12:39 -0700 (Tue, 25 May 2010) $
4 Revision: $Revision: 22614 $
5
6 Description: MonitorTest functions for the Simple API.
7
8
9 Copyright 2007-2010 Texas Instruments Incorporated. All rights reserved.
10
11 IMPORTANT: Your use of this Software is limited to those specific rights
12 granted under the terms of a software license agreement between the user
13 who downloaded the software, his/her employer (which must be your employer)
14 and Texas Instruments Incorporated (the "License"). You may not use this
15 Software unless you agree to abide by the terms of the License. The License
16 limits your use, and you acknowledge, that the Software may not be modified,
17 copied or distributed unless embedded on a Texas Instruments microcontroller
18 or used solely and exclusively in conjunction with a Texas Instruments radio
19 frequency transceiver, which is integrated into your product. Other than for
20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
21 works of, modify, distribute, perform, display or sell this Software and/or
22 its documentation for any purpose.
23
24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
25 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
35
36 Should you have any questions regarding your right to use this Software,
37 contact Texas Instruments Incorporated at www.TI.com.
38
39 **************************************************************************************************/
40
41 /***************************************************************************************************
42 * INCLUDES
43 ***************************************************************************************************/
44 #include "ZComDef.h"
45 #include "AddrMgr.h"
46 #include "OSAL.h"
47 #include "OSAL_Nv.h"
48 #include "OnBoard.h"
49 #include "MT.h"
50 #include "MT_SAPI.h"
51 #include "MT_UART.h"
52
53 /***************************************************************************************************
54 * GLOBAL VARIABLES
55 ***************************************************************************************************/
56 #if defined ( MT_SAPI_CB_FUNC )
57 uint16 _sapiCallbackSub;
58 #endif
59
60 /***************************************************************************************************
61 * LOCAL FUNCTIONS
62 ***************************************************************************************************/
63 void MT_SapiSystemReset(uint8 *pBuf);
64 void MT_SapiStart(uint8* pBuf);
65 void MT_SapiBindDevice(uint8 *pBuf);
66 void MT_SapiAllowBind(uint8 *pBuf);
67 void MT_SapiSendData(uint8 *pBuf);
68 void MT_SapiReadCfg(uint8 *pBuf);
69 void MT_SapiWriteCfg(uint8 *pBuf);
70 void MT_SapiGetDevInfo(uint8 *pBuf);
71 void MT_SapiFindDev(uint8 *pBuf);
72 void MT_SapiPermitJoin(uint8 *pBuf);
73 void MT_SapiAppRegister(uint8 *pBuf);
74
75 #if defined ( MT_SAPI_FUNC )
76 /***************************************************************************************************
77 * @fn MT_sapiCommandProcessing
78 *
79 * @brief Process all the SAPI commands that are issued by test tool
80 *
81 * @param pBuf - pointer to received buffer
82 *
83 * @return MT_RPC_SUCCESS if command processed, MT_RPC_ERR_COMMAND_ID if not.
84 ***************************************************************************************************/
85 uint8 MT_SapiCommandProcessing(uint8 *pBuf)
86 {
87 uint8 status = MT_RPC_SUCCESS;
88
89 switch (pBuf[MT_RPC_POS_CMD1])
90 {
91 case MT_SAPI_START_REQ:
92 MT_SapiStart(pBuf);
93 break;
94
95 case MT_SAPI_BIND_DEVICE_REQ:
96 MT_SapiBindDevice(pBuf);
97 break;
98
99 case MT_SAPI_ALLOW_BIND_REQ:
100 MT_SapiAllowBind(pBuf);
101 break;
102
103 case MT_SAPI_SEND_DATA_REQ:
104 MT_SapiSendData(pBuf);
105 break;
106
107 case MT_SAPI_READ_CFG_REQ:
108 MT_SapiReadCfg(pBuf);
109 break;
110
111 case MT_SAPI_WRITE_CFG_REQ:
112 MT_SapiWriteCfg(pBuf);
113 break;
114
115 case MT_SAPI_GET_DEV_INFO_REQ:
116 MT_SapiGetDevInfo(pBuf);
117 break;
118
119 case MT_SAPI_FIND_DEV_REQ:
120 MT_SapiFindDev(pBuf);
121 break;
122
123 case MT_SAPI_PMT_JOIN_REQ:
124 MT_SapiPermitJoin(pBuf);
125 break;
126
127 case MT_SAPI_SYS_RESET:
128 MT_SapiSystemReset(pBuf);
129 break;
130
131 case MT_SAPI_APP_REGISTER_REQ:
132 MT_SapiAppRegister(pBuf);
133 break;
134
135 default:
136 status = MT_RPC_ERR_COMMAND_ID;
137 break;
138 }
139
140 return status;
141 }
142
143 /***************************************************************************************************
144 * @fn MT_SapiSystemReset
145 *
146 * @brief Process SAPI System Reset
147 *
148 * @param pBuf - pointer to received buffer
149 *
150 * @return none
151 ***************************************************************************************************/
152 void MT_SapiSystemReset(uint8 *pBuf)
153 {
154 zb_SystemReset();
155 }
156
157 /***************************************************************************************************
158 * @fn MT_SapiStart
159 *
160 * @brief Process SAPI Start
161 *
162 * @param pBuf - pointer to received buffer
163 *
164 * @return none
165 ***************************************************************************************************/
166 void MT_SapiStart(uint8 *pBuf)
167 {
168 zb_StartRequest();
169
170 /* Build and send back the response */
171 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_START_REQ, 0, NULL);
172 }
173 /***************************************************************************************************
174 * @fn MT_SapiAppRegister
175 *
176 * @brief Process SAPI App Register
177 *
178 * @param pBuf - pointer to received buffer
179 *
180 * @return none
181 ***************************************************************************************************/
182 void MT_SapiAppRegister(uint8 *pBuf)
183 {
184 uint8 ret = ZApsIllegalRequest;
185
186 /* check if sapi is alredy registered with an endpoint */
187 if ( (sapi_epDesc.endPoint == 0) && (*pBuf != 0) )
188 {
189 ret = MT_BuildEndpointDesc( pBuf+MT_RPC_FRAME_HDR_SZ, &sapi_epDesc );
190 if ( ret == ZSuccess )
191 {
192 ret = afRegister( &sapi_epDesc );
193 // Turn off match descriptor response by default
194 afSetMatch(sapi_epDesc.simpleDesc->EndPoint, FALSE);
195 }
196
197 if ( ret != ZSuccess )
198 {
199 sapi_epDesc.endPoint = 0;
200 }
201 }
202
203 /* Build and send back the response */
204 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI),
205 MT_SAPI_APP_REGISTER_REQ, 1, &ret);
206 }
207 /***************************************************************************************************
208 * @fn MT_SapiBindDevice
209 *
210 * @brief Process SAPI Bind Device Command
211 *
212 * @param pBuf - pointer to received buffer
213 *
214 * @return none
215 ***************************************************************************************************/
216 void MT_SapiBindDevice(uint8 *pBuf)
217 {
218 uint8 cmdId;
219
220 /* parse header */
221 cmdId = pBuf[MT_RPC_POS_CMD1];
222 pBuf += MT_RPC_FRAME_HDR_SZ;
223
224 if (AddrMgrExtAddrValid(pBuf+3))
225 {
226 zb_BindDevice(pBuf[0], BUILD_UINT16(pBuf[1], pBuf[2]), &pBuf[3]);
227 }
228 else
229 {
230 zb_BindDevice(pBuf[0], BUILD_UINT16(pBuf[1], pBuf[2]), (uint8 *)NULL);
231 }
232
233 /* Build and send back the response */
234 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL);
235 }
236
237 /***************************************************************************************************
238 * @fn MT_SapiAllowBind
239 *
240 * @brief Process SAPI Allow Bind
241 *
242 * @param pBuf - pointer to received buffer
243 *
244 * @return none
245 ***************************************************************************************************/
246 void MT_SapiAllowBind(uint8 *pBuf)
247 {
248 uint8 cmdId;
249
250 /* parse header */
251 cmdId = pBuf[MT_RPC_POS_CMD1];
252 pBuf += MT_RPC_FRAME_HDR_SZ;
253
254 zb_AllowBind(pBuf[0]);
255
256 /* Build and send back the response */
257 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL);
258 }
259
260 /***************************************************************************************************
261 * @fn MT_SapiSendData
262 *
263 * @brief Process SAPI Send Data Command
264 *
265 * @param pBuf - pointer to received buffer
266 *
267 * @return none
268 ***************************************************************************************************/
269 void MT_SapiSendData(uint8 *pBuf)
270 {
271 uint8 cmdId;
272 uint16 destination, command;
273 uint8 len, handle, txOption, radius;
274
275 /* parse header */
276 cmdId = pBuf[MT_RPC_POS_CMD1];
277 pBuf += MT_RPC_FRAME_HDR_SZ;
278
279 /* Destination */
280 destination = BUILD_UINT16(pBuf[0], pBuf[1]);
281 /* Command */
282 command = BUILD_UINT16(pBuf[2], pBuf[3]);
283 /* Handle */
284 handle = pBuf[4];
285 /* txOption */
286 txOption = pBuf[5];
287 /* Radius */
288 radius = pBuf[6];
289 /* Length */
290 len = pBuf[7];
291
292 zb_SendDataRequest(destination, command, len, &pBuf[8], handle, txOption, radius);
293
294 /* Build and send back the response */
295 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL);
296 }
297
298 /***************************************************************************************************
299 * @fn MT_SapiReadCfg
300 *
301 * @brief Process SAPI Read Config Commands
302 *
303 * @param pBuf - pointer to received buffer
304 *
305 * @return none
306 ***************************************************************************************************/
307 void MT_SapiReadCfg(uint8 *pBuf)
308 {
309 uint8 len, retStatus;
310 uint8 cfgId, cmdId;
311 uint8 *pRetBuf;
312
313 /* Parse header */
314 cmdId = pBuf[MT_RPC_POS_CMD1];
315 cfgId = pBuf[MT_RPC_POS_DAT0];
316
317 /* Length of item in NV memory */
318 len = (uint8)osal_nv_item_len(cfgId);
319
320 pRetBuf = osal_mem_alloc(len+3);
321 if (pRetBuf != NULL)
322 {
323 if (len && ((cfgId != ZCD_NV_NIB) && (cfgId != ZCD_NV_DEVICE_LIST) &&
324 (cfgId != ZCD_NV_ADDRMGR) && (cfgId != ZCD_NV_NWKKEY)))
325 {
326 if ((zb_ReadConfiguration(cfgId, len, pRetBuf+3)) == ZSUCCESS)
327 {
328 retStatus = ZSuccess;
329 }
330 else
331 {
332 retStatus = ZFailure;
333 }
334 }
335 else
336 {
337 retStatus = ZInvalidParameter;
338 }
339
340 if (retStatus != ZSuccess)
341 {
342 /* Don't return garbage with error */
343 len = 0;
344 }
345
346 /* Status */
347 pRetBuf[0] = retStatus;
348 /* Config ID */
349 pRetBuf[1] = cfgId;
350 /* NV item length */
351 pRetBuf[2] = len;
352
353 /* Build and send back the response */
354 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, len+3, pRetBuf );
355
356 osal_mem_free(pRetBuf);
357 }
358 }
359
360 /***************************************************************************************************
361 * @fn MT_SpiWriteCfg
362 *
363 * @brief Process Write Configuration Command
364 *
365 * @param pBuf - pointer to received buffer
366 *
367 * @return none
368 ***************************************************************************************************/
369 void MT_SapiWriteCfg(uint8 *pBuf)
370 {
371 uint8 retValue, cmdId;
372
373 /* Parse header */
374 cmdId = pBuf[MT_RPC_POS_CMD1];
375 pBuf += MT_RPC_FRAME_HDR_SZ;
376
377 if ((pBuf[0] != ZCD_NV_NIB) && (pBuf[0] != ZCD_NV_DEVICE_LIST) &&
378 (pBuf[0] != ZCD_NV_ADDRMGR) && (pBuf[0] != ZCD_NV_NWKKEY))
379 {
380 if ((zb_WriteConfiguration(pBuf[0], pBuf[1], &pBuf[2])) == ZSUCCESS)
381 {
382 retValue = ZSuccess;
383 }
384 else
385 {
386 retValue = ZFailure;
387 }
388 }
389 else
390 {
391 retValue = ZInvalidParameter;
392 }
393
394 /* Build and send back the response */
395 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 1, &retValue );
396 }
397
398 /***************************************************************************************************
399 * @fn MT_SapiGetDevInfo
400 *
401 * @brief Process Get Device Info command
402 *
403 * @param pBuf - pointer to received buffer
404 *
405 * @return none
406 ***************************************************************************************************/
407 void MT_SapiGetDevInfo(uint8 *pBuf)
408 {
409 uint8 *pRetBuf;
410 uint8 cmdId;
411
412 /* parse header */
413 cmdId = pBuf[MT_RPC_POS_CMD1];
414 pBuf += MT_RPC_FRAME_HDR_SZ;
415
416 pRetBuf = osal_mem_alloc(Z_EXTADDR_LEN+1);
417 if (pRetBuf)
418 {
419 zb_GetDeviceInfo(pBuf[0], pRetBuf+1);
420 pRetBuf[0] = pBuf[0];
421
422 /* Build and send back the response */
423 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, Z_EXTADDR_LEN+1, pRetBuf );
424
425 osal_mem_free(pRetBuf);
426 }
427 }
428
429 /***************************************************************************************************
430 * @fn MT_SapiFindDev
431 *
432 * @brief Process Find Device Command
433 *
434 * @param pBuf - pointer to received buffer
435 *
436 * @return none
437 ***************************************************************************************************/
438 void MT_SapiFindDev(uint8 *pBuf)
439 {
440 uint8 cmdId;
441
442 /* parse header */
443 cmdId = pBuf[MT_RPC_POS_CMD1];
444 pBuf += MT_RPC_FRAME_HDR_SZ;
445
446 /* Currently only supports IEEE search */
447 zb_FindDeviceRequest(ZB_IEEE_SEARCH, pBuf);
448
449 /* Build and send back the response */
450 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL );
451 }
452
453 /***************************************************************************************************
454 * @fn MT_SapiPermitJoin
455 *
456 * @brief Process Permit Join Command
457 *
458 * @param pBuf - pointer to received buffer
459 *
460 * @return none
461 ***************************************************************************************************/
462 void MT_SapiPermitJoin(uint8 *pBuf)
463 {
464 uint8 retValue, cmdId;
465
466 /* parse header */
467 cmdId = pBuf[MT_RPC_POS_CMD1];
468 pBuf += MT_RPC_FRAME_HDR_SZ;
469
470 retValue = (zb_PermitJoiningRequest(BUILD_UINT16(pBuf[0], pBuf[1]), pBuf[2]));
471
472 /* Build and send back the response */
473 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 1, &retValue );
474
475 }
476 #endif /* MT_SAPI_FUNC */
477
478 #if defined ( MT_SAPI_CB_FUNC )
479 /***************************************************************************************************
480 * @fn zb_MTCallbackStartConfirm
481 *
482 * @brief Process the callback subscription for zb_StartConfirm
483 *
484 * @param Status - status
485 *
486 * @return none
487 ***************************************************************************************************/
488 void zb_MTCallbackStartConfirm( uint8 status )
489 {
490 /* Build and send back the response */
491 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_START_CNF, 1, &status);
492 }
493
494 /***************************************************************************************************
495 * @fn zb_MTCallbackSendDataConfirm
496 *
497 * @brief Process the callback subscription for zb_SendDataConfirm
498 *
499 * @param
500 *
501 * @return none
502 ***************************************************************************************************/
503 void zb_MTCallbackSendDataConfirm(uint8 handle, uint8 status)
504 {
505 uint8 retArray[2];
506
507 retArray[0] = handle;
508 retArray[1] = status;
509
510 /* Build and send back the response */
511 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_SEND_DATA_CNF, 2, retArray);
512
513 }
514
515 /***************************************************************************************************
516 * @fn zb_MTCallbackBindConfirm
517 *
518 * @brief Process the callback subscription for zb_BindConfirm
519 *
520 * @param
521 *
522 * @return none
523 ***************************************************************************************************/
524 void zb_MTCallbackBindConfirm( uint16 commandId, uint8 status )
525 {
526 uint8 retArray[3];
527
528 retArray[0] = LO_UINT16(commandId);
529 retArray[1] = HI_UINT16(commandId);
530 retArray[2] = status;
531
532 /* Build and send back the response */
533 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_BIND_CNF, 3, retArray);
534
535 }
536 /***************************************************************************************************
537 * @fn zb_MTCallbackAllowBindConfirm
538 *
539 * @brief Indicates when another device attempted to bind to this device
540 *
541 * @param
542 *
543 * @return none
544 ***************************************************************************************************/
545 void zb_MTCallbackAllowBindConfirm( uint16 source )
546 {
547 uint8 retArray[2];
548
549 retArray[0] = LO_UINT16(source);
550 retArray[1] = HI_UINT16(source);
551
552 /* Build and send back the response */
553 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_ALLOW_BIND_CNF, 3, retArray);
554
555 }
556 /***************************************************************************************************
557 * @fn zb_MTCallbackFindDeviceConfirm
558 *
559 * @brief Process the callback subscription for zb_FindDeviceConfirm
560 *
561 * @param
562 *
563 * @return none
564 ***************************************************************************************************/
565 void zb_MTCallbackFindDeviceConfirm( uint8 searchType, uint8 *searchKey, uint8 *result )
566 {
567 uint8 retArray[SPI_CB_SAPI_FIND_DEV_CNF_LEN];
568 uint16 addr = *((uint16*)searchKey);
569
570 // Currently only supports IEEE Addr Search
571 retArray[0] = ZB_IEEE_SEARCH;
572 retArray[1] = LO_UINT16(addr);
573 retArray[2] = HI_UINT16(addr);
574 osal_memcpy(&retArray[3], result, Z_EXTADDR_LEN);
575
576 /* Build and send back the response */
577 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_FIND_DEV_CNF, 11, retArray);
578
579 }
580
581 /***************************************************************************************************
582 * @fn zb_MTCallbackReceiveDataIndication
583 *
584 * @brief Process the callback subscription for zb_ReceiveDataIndication
585 *
586 * @param
587 *
588 * @return none
589 ***************************************************************************************************/
590 void zb_MTCallbackReceiveDataIndication( uint16 source, uint16 command, uint16 len, uint8 *pData )
591 {
592 uint8 *memPtr;
593 int8 i;
594 uint8 msgLen = 6 + len;
595
596 memPtr = osal_mem_alloc(msgLen);
597
598 if (memPtr)
599 {
600 memPtr[0] = LO_UINT16(source);
601 memPtr[1] = HI_UINT16(source);
602 memPtr[2] = LO_UINT16(command);
603 memPtr[3] = HI_UINT16(command);
604 memPtr[4] = LO_UINT16(len);
605 memPtr[5] = HI_UINT16(len);
606
607 for (i=0; i<len; i++)
608 {
609 memPtr[6+i] = pData[i];
610 }
611
612 /* Build and send back the response */
613 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_RCV_DATA_IND, msgLen, memPtr);
614
615 osal_mem_free( memPtr );
616 }
617 }
618 #endif /* MT_SAPI_CB_FUNC */
619
620 /***************************************************************************************************
621 ***************************************************************************************************/
Errors: none
Warnings: none

View File

@@ -1,747 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:25
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_SAPI.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW5EF6.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_SAPI.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_SAPI.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME MT_SAPI
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
END
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_SAPI.c
// 1 /**************************************************************************************************
// 2 Filename: MT_SAPI.c
// 3 Revised: $Date: 2010-05-25 10:12:39 -0700 (Tue, 25 May 2010) $
// 4 Revision: $Revision: 22614 $
// 5
// 6 Description: MonitorTest functions for the Simple API.
// 7
// 8
// 9 Copyright 2007-2010 Texas Instruments Incorporated. All rights reserved.
// 10
// 11 IMPORTANT: Your use of this Software is limited to those specific rights
// 12 granted under the terms of a software license agreement between the user
// 13 who downloaded the software, his/her employer (which must be your employer)
// 14 and Texas Instruments Incorporated (the "License"). You may not use this
// 15 Software unless you agree to abide by the terms of the License. The License
// 16 limits your use, and you acknowledge, that the Software may not be modified,
// 17 copied or distributed unless embedded on a Texas Instruments microcontroller
// 18 or used solely and exclusively in conjunction with a Texas Instruments radio
// 19 frequency transceiver, which is integrated into your product. Other than for
// 20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 21 works of, modify, distribute, perform, display or sell this Software and/or
// 22 its documentation for any purpose.
// 23
// 24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 25 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 35
// 36 Should you have any questions regarding your right to use this Software,
// 37 contact Texas Instruments Incorporated at www.TI.com.
// 38
// 39 **************************************************************************************************/
// 40
// 41 /***************************************************************************************************
// 42 * INCLUDES
// 43 ***************************************************************************************************/
// 44 #include "ZComDef.h"
// 45 #include "AddrMgr.h"
// 46 #include "OSAL.h"
// 47 #include "OSAL_Nv.h"
// 48 #include "OnBoard.h"
// 49 #include "MT.h"
// 50 #include "MT_SAPI.h"
// 51 #include "MT_UART.h"
// 52
// 53 /***************************************************************************************************
// 54 * GLOBAL VARIABLES
// 55 ***************************************************************************************************/
// 56 #if defined ( MT_SAPI_CB_FUNC )
// 57 uint16 _sapiCallbackSub;
// 58 #endif
// 59
// 60 /***************************************************************************************************
// 61 * LOCAL FUNCTIONS
// 62 ***************************************************************************************************/
// 63 void MT_SapiSystemReset(uint8 *pBuf);
// 64 void MT_SapiStart(uint8* pBuf);
// 65 void MT_SapiBindDevice(uint8 *pBuf);
// 66 void MT_SapiAllowBind(uint8 *pBuf);
// 67 void MT_SapiSendData(uint8 *pBuf);
// 68 void MT_SapiReadCfg(uint8 *pBuf);
// 69 void MT_SapiWriteCfg(uint8 *pBuf);
// 70 void MT_SapiGetDevInfo(uint8 *pBuf);
// 71 void MT_SapiFindDev(uint8 *pBuf);
// 72 void MT_SapiPermitJoin(uint8 *pBuf);
// 73 void MT_SapiAppRegister(uint8 *pBuf);
// 74
// 75 #if defined ( MT_SAPI_FUNC )
// 76 /***************************************************************************************************
// 77 * @fn MT_sapiCommandProcessing
// 78 *
// 79 * @brief Process all the SAPI commands that are issued by test tool
// 80 *
// 81 * @param pBuf - pointer to received buffer
// 82 *
// 83 * @return MT_RPC_SUCCESS if command processed, MT_RPC_ERR_COMMAND_ID if not.
// 84 ***************************************************************************************************/
// 85 uint8 MT_SapiCommandProcessing(uint8 *pBuf)
// 86 {
// 87 uint8 status = MT_RPC_SUCCESS;
// 88
// 89 switch (pBuf[MT_RPC_POS_CMD1])
// 90 {
// 91 case MT_SAPI_START_REQ:
// 92 MT_SapiStart(pBuf);
// 93 break;
// 94
// 95 case MT_SAPI_BIND_DEVICE_REQ:
// 96 MT_SapiBindDevice(pBuf);
// 97 break;
// 98
// 99 case MT_SAPI_ALLOW_BIND_REQ:
// 100 MT_SapiAllowBind(pBuf);
// 101 break;
// 102
// 103 case MT_SAPI_SEND_DATA_REQ:
// 104 MT_SapiSendData(pBuf);
// 105 break;
// 106
// 107 case MT_SAPI_READ_CFG_REQ:
// 108 MT_SapiReadCfg(pBuf);
// 109 break;
// 110
// 111 case MT_SAPI_WRITE_CFG_REQ:
// 112 MT_SapiWriteCfg(pBuf);
// 113 break;
// 114
// 115 case MT_SAPI_GET_DEV_INFO_REQ:
// 116 MT_SapiGetDevInfo(pBuf);
// 117 break;
// 118
// 119 case MT_SAPI_FIND_DEV_REQ:
// 120 MT_SapiFindDev(pBuf);
// 121 break;
// 122
// 123 case MT_SAPI_PMT_JOIN_REQ:
// 124 MT_SapiPermitJoin(pBuf);
// 125 break;
// 126
// 127 case MT_SAPI_SYS_RESET:
// 128 MT_SapiSystemReset(pBuf);
// 129 break;
// 130
// 131 case MT_SAPI_APP_REGISTER_REQ:
// 132 MT_SapiAppRegister(pBuf);
// 133 break;
// 134
// 135 default:
// 136 status = MT_RPC_ERR_COMMAND_ID;
// 137 break;
// 138 }
// 139
// 140 return status;
// 141 }
// 142
// 143 /***************************************************************************************************
// 144 * @fn MT_SapiSystemReset
// 145 *
// 146 * @brief Process SAPI System Reset
// 147 *
// 148 * @param pBuf - pointer to received buffer
// 149 *
// 150 * @return none
// 151 ***************************************************************************************************/
// 152 void MT_SapiSystemReset(uint8 *pBuf)
// 153 {
// 154 zb_SystemReset();
// 155 }
// 156
// 157 /***************************************************************************************************
// 158 * @fn MT_SapiStart
// 159 *
// 160 * @brief Process SAPI Start
// 161 *
// 162 * @param pBuf - pointer to received buffer
// 163 *
// 164 * @return none
// 165 ***************************************************************************************************/
// 166 void MT_SapiStart(uint8 *pBuf)
// 167 {
// 168 zb_StartRequest();
// 169
// 170 /* Build and send back the response */
// 171 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_START_REQ, 0, NULL);
// 172 }
// 173 /***************************************************************************************************
// 174 * @fn MT_SapiAppRegister
// 175 *
// 176 * @brief Process SAPI App Register
// 177 *
// 178 * @param pBuf - pointer to received buffer
// 179 *
// 180 * @return none
// 181 ***************************************************************************************************/
// 182 void MT_SapiAppRegister(uint8 *pBuf)
// 183 {
// 184 uint8 ret = ZApsIllegalRequest;
// 185
// 186 /* check if sapi is alredy registered with an endpoint */
// 187 if ( (sapi_epDesc.endPoint == 0) && (*pBuf != 0) )
// 188 {
// 189 ret = MT_BuildEndpointDesc( pBuf+MT_RPC_FRAME_HDR_SZ, &sapi_epDesc );
// 190 if ( ret == ZSuccess )
// 191 {
// 192 ret = afRegister( &sapi_epDesc );
// 193 // Turn off match descriptor response by default
// 194 afSetMatch(sapi_epDesc.simpleDesc->EndPoint, FALSE);
// 195 }
// 196
// 197 if ( ret != ZSuccess )
// 198 {
// 199 sapi_epDesc.endPoint = 0;
// 200 }
// 201 }
// 202
// 203 /* Build and send back the response */
// 204 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI),
// 205 MT_SAPI_APP_REGISTER_REQ, 1, &ret);
// 206 }
// 207 /***************************************************************************************************
// 208 * @fn MT_SapiBindDevice
// 209 *
// 210 * @brief Process SAPI Bind Device Command
// 211 *
// 212 * @param pBuf - pointer to received buffer
// 213 *
// 214 * @return none
// 215 ***************************************************************************************************/
// 216 void MT_SapiBindDevice(uint8 *pBuf)
// 217 {
// 218 uint8 cmdId;
// 219
// 220 /* parse header */
// 221 cmdId = pBuf[MT_RPC_POS_CMD1];
// 222 pBuf += MT_RPC_FRAME_HDR_SZ;
// 223
// 224 if (AddrMgrExtAddrValid(pBuf+3))
// 225 {
// 226 zb_BindDevice(pBuf[0], BUILD_UINT16(pBuf[1], pBuf[2]), &pBuf[3]);
// 227 }
// 228 else
// 229 {
// 230 zb_BindDevice(pBuf[0], BUILD_UINT16(pBuf[1], pBuf[2]), (uint8 *)NULL);
// 231 }
// 232
// 233 /* Build and send back the response */
// 234 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL);
// 235 }
// 236
// 237 /***************************************************************************************************
// 238 * @fn MT_SapiAllowBind
// 239 *
// 240 * @brief Process SAPI Allow Bind
// 241 *
// 242 * @param pBuf - pointer to received buffer
// 243 *
// 244 * @return none
// 245 ***************************************************************************************************/
// 246 void MT_SapiAllowBind(uint8 *pBuf)
// 247 {
// 248 uint8 cmdId;
// 249
// 250 /* parse header */
// 251 cmdId = pBuf[MT_RPC_POS_CMD1];
// 252 pBuf += MT_RPC_FRAME_HDR_SZ;
// 253
// 254 zb_AllowBind(pBuf[0]);
// 255
// 256 /* Build and send back the response */
// 257 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL);
// 258 }
// 259
// 260 /***************************************************************************************************
// 261 * @fn MT_SapiSendData
// 262 *
// 263 * @brief Process SAPI Send Data Command
// 264 *
// 265 * @param pBuf - pointer to received buffer
// 266 *
// 267 * @return none
// 268 ***************************************************************************************************/
// 269 void MT_SapiSendData(uint8 *pBuf)
// 270 {
// 271 uint8 cmdId;
// 272 uint16 destination, command;
// 273 uint8 len, handle, txOption, radius;
// 274
// 275 /* parse header */
// 276 cmdId = pBuf[MT_RPC_POS_CMD1];
// 277 pBuf += MT_RPC_FRAME_HDR_SZ;
// 278
// 279 /* Destination */
// 280 destination = BUILD_UINT16(pBuf[0], pBuf[1]);
// 281 /* Command */
// 282 command = BUILD_UINT16(pBuf[2], pBuf[3]);
// 283 /* Handle */
// 284 handle = pBuf[4];
// 285 /* txOption */
// 286 txOption = pBuf[5];
// 287 /* Radius */
// 288 radius = pBuf[6];
// 289 /* Length */
// 290 len = pBuf[7];
// 291
// 292 zb_SendDataRequest(destination, command, len, &pBuf[8], handle, txOption, radius);
// 293
// 294 /* Build and send back the response */
// 295 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL);
// 296 }
// 297
// 298 /***************************************************************************************************
// 299 * @fn MT_SapiReadCfg
// 300 *
// 301 * @brief Process SAPI Read Config Commands
// 302 *
// 303 * @param pBuf - pointer to received buffer
// 304 *
// 305 * @return none
// 306 ***************************************************************************************************/
// 307 void MT_SapiReadCfg(uint8 *pBuf)
// 308 {
// 309 uint8 len, retStatus;
// 310 uint8 cfgId, cmdId;
// 311 uint8 *pRetBuf;
// 312
// 313 /* Parse header */
// 314 cmdId = pBuf[MT_RPC_POS_CMD1];
// 315 cfgId = pBuf[MT_RPC_POS_DAT0];
// 316
// 317 /* Length of item in NV memory */
// 318 len = (uint8)osal_nv_item_len(cfgId);
// 319
// 320 pRetBuf = osal_mem_alloc(len+3);
// 321 if (pRetBuf != NULL)
// 322 {
// 323 if (len && ((cfgId != ZCD_NV_NIB) && (cfgId != ZCD_NV_DEVICE_LIST) &&
// 324 (cfgId != ZCD_NV_ADDRMGR) && (cfgId != ZCD_NV_NWKKEY)))
// 325 {
// 326 if ((zb_ReadConfiguration(cfgId, len, pRetBuf+3)) == ZSUCCESS)
// 327 {
// 328 retStatus = ZSuccess;
// 329 }
// 330 else
// 331 {
// 332 retStatus = ZFailure;
// 333 }
// 334 }
// 335 else
// 336 {
// 337 retStatus = ZInvalidParameter;
// 338 }
// 339
// 340 if (retStatus != ZSuccess)
// 341 {
// 342 /* Don't return garbage with error */
// 343 len = 0;
// 344 }
// 345
// 346 /* Status */
// 347 pRetBuf[0] = retStatus;
// 348 /* Config ID */
// 349 pRetBuf[1] = cfgId;
// 350 /* NV item length */
// 351 pRetBuf[2] = len;
// 352
// 353 /* Build and send back the response */
// 354 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, len+3, pRetBuf );
// 355
// 356 osal_mem_free(pRetBuf);
// 357 }
// 358 }
// 359
// 360 /***************************************************************************************************
// 361 * @fn MT_SpiWriteCfg
// 362 *
// 363 * @brief Process Write Configuration Command
// 364 *
// 365 * @param pBuf - pointer to received buffer
// 366 *
// 367 * @return none
// 368 ***************************************************************************************************/
// 369 void MT_SapiWriteCfg(uint8 *pBuf)
// 370 {
// 371 uint8 retValue, cmdId;
// 372
// 373 /* Parse header */
// 374 cmdId = pBuf[MT_RPC_POS_CMD1];
// 375 pBuf += MT_RPC_FRAME_HDR_SZ;
// 376
// 377 if ((pBuf[0] != ZCD_NV_NIB) && (pBuf[0] != ZCD_NV_DEVICE_LIST) &&
// 378 (pBuf[0] != ZCD_NV_ADDRMGR) && (pBuf[0] != ZCD_NV_NWKKEY))
// 379 {
// 380 if ((zb_WriteConfiguration(pBuf[0], pBuf[1], &pBuf[2])) == ZSUCCESS)
// 381 {
// 382 retValue = ZSuccess;
// 383 }
// 384 else
// 385 {
// 386 retValue = ZFailure;
// 387 }
// 388 }
// 389 else
// 390 {
// 391 retValue = ZInvalidParameter;
// 392 }
// 393
// 394 /* Build and send back the response */
// 395 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 1, &retValue );
// 396 }
// 397
// 398 /***************************************************************************************************
// 399 * @fn MT_SapiGetDevInfo
// 400 *
// 401 * @brief Process Get Device Info command
// 402 *
// 403 * @param pBuf - pointer to received buffer
// 404 *
// 405 * @return none
// 406 ***************************************************************************************************/
// 407 void MT_SapiGetDevInfo(uint8 *pBuf)
// 408 {
// 409 uint8 *pRetBuf;
// 410 uint8 cmdId;
// 411
// 412 /* parse header */
// 413 cmdId = pBuf[MT_RPC_POS_CMD1];
// 414 pBuf += MT_RPC_FRAME_HDR_SZ;
// 415
// 416 pRetBuf = osal_mem_alloc(Z_EXTADDR_LEN+1);
// 417 if (pRetBuf)
// 418 {
// 419 zb_GetDeviceInfo(pBuf[0], pRetBuf+1);
// 420 pRetBuf[0] = pBuf[0];
// 421
// 422 /* Build and send back the response */
// 423 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, Z_EXTADDR_LEN+1, pRetBuf );
// 424
// 425 osal_mem_free(pRetBuf);
// 426 }
// 427 }
// 428
// 429 /***************************************************************************************************
// 430 * @fn MT_SapiFindDev
// 431 *
// 432 * @brief Process Find Device Command
// 433 *
// 434 * @param pBuf - pointer to received buffer
// 435 *
// 436 * @return none
// 437 ***************************************************************************************************/
// 438 void MT_SapiFindDev(uint8 *pBuf)
// 439 {
// 440 uint8 cmdId;
// 441
// 442 /* parse header */
// 443 cmdId = pBuf[MT_RPC_POS_CMD1];
// 444 pBuf += MT_RPC_FRAME_HDR_SZ;
// 445
// 446 /* Currently only supports IEEE search */
// 447 zb_FindDeviceRequest(ZB_IEEE_SEARCH, pBuf);
// 448
// 449 /* Build and send back the response */
// 450 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 0, NULL );
// 451 }
// 452
// 453 /***************************************************************************************************
// 454 * @fn MT_SapiPermitJoin
// 455 *
// 456 * @brief Process Permit Join Command
// 457 *
// 458 * @param pBuf - pointer to received buffer
// 459 *
// 460 * @return none
// 461 ***************************************************************************************************/
// 462 void MT_SapiPermitJoin(uint8 *pBuf)
// 463 {
// 464 uint8 retValue, cmdId;
// 465
// 466 /* parse header */
// 467 cmdId = pBuf[MT_RPC_POS_CMD1];
// 468 pBuf += MT_RPC_FRAME_HDR_SZ;
// 469
// 470 retValue = (zb_PermitJoiningRequest(BUILD_UINT16(pBuf[0], pBuf[1]), pBuf[2]));
// 471
// 472 /* Build and send back the response */
// 473 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SAPI), cmdId, 1, &retValue );
// 474
// 475 }
// 476 #endif /* MT_SAPI_FUNC */
// 477
// 478 #if defined ( MT_SAPI_CB_FUNC )
// 479 /***************************************************************************************************
// 480 * @fn zb_MTCallbackStartConfirm
// 481 *
// 482 * @brief Process the callback subscription for zb_StartConfirm
// 483 *
// 484 * @param Status - status
// 485 *
// 486 * @return none
// 487 ***************************************************************************************************/
// 488 void zb_MTCallbackStartConfirm( uint8 status )
// 489 {
// 490 /* Build and send back the response */
// 491 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_START_CNF, 1, &status);
// 492 }
// 493
// 494 /***************************************************************************************************
// 495 * @fn zb_MTCallbackSendDataConfirm
// 496 *
// 497 * @brief Process the callback subscription for zb_SendDataConfirm
// 498 *
// 499 * @param
// 500 *
// 501 * @return none
// 502 ***************************************************************************************************/
// 503 void zb_MTCallbackSendDataConfirm(uint8 handle, uint8 status)
// 504 {
// 505 uint8 retArray[2];
// 506
// 507 retArray[0] = handle;
// 508 retArray[1] = status;
// 509
// 510 /* Build and send back the response */
// 511 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_SEND_DATA_CNF, 2, retArray);
// 512
// 513 }
// 514
// 515 /***************************************************************************************************
// 516 * @fn zb_MTCallbackBindConfirm
// 517 *
// 518 * @brief Process the callback subscription for zb_BindConfirm
// 519 *
// 520 * @param
// 521 *
// 522 * @return none
// 523 ***************************************************************************************************/
// 524 void zb_MTCallbackBindConfirm( uint16 commandId, uint8 status )
// 525 {
// 526 uint8 retArray[3];
// 527
// 528 retArray[0] = LO_UINT16(commandId);
// 529 retArray[1] = HI_UINT16(commandId);
// 530 retArray[2] = status;
// 531
// 532 /* Build and send back the response */
// 533 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_BIND_CNF, 3, retArray);
// 534
// 535 }
// 536 /***************************************************************************************************
// 537 * @fn zb_MTCallbackAllowBindConfirm
// 538 *
// 539 * @brief Indicates when another device attempted to bind to this device
// 540 *
// 541 * @param
// 542 *
// 543 * @return none
// 544 ***************************************************************************************************/
// 545 void zb_MTCallbackAllowBindConfirm( uint16 source )
// 546 {
// 547 uint8 retArray[2];
// 548
// 549 retArray[0] = LO_UINT16(source);
// 550 retArray[1] = HI_UINT16(source);
// 551
// 552 /* Build and send back the response */
// 553 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_ALLOW_BIND_CNF, 3, retArray);
// 554
// 555 }
// 556 /***************************************************************************************************
// 557 * @fn zb_MTCallbackFindDeviceConfirm
// 558 *
// 559 * @brief Process the callback subscription for zb_FindDeviceConfirm
// 560 *
// 561 * @param
// 562 *
// 563 * @return none
// 564 ***************************************************************************************************/
// 565 void zb_MTCallbackFindDeviceConfirm( uint8 searchType, uint8 *searchKey, uint8 *result )
// 566 {
// 567 uint8 retArray[SPI_CB_SAPI_FIND_DEV_CNF_LEN];
// 568 uint16 addr = *((uint16*)searchKey);
// 569
// 570 // Currently only supports IEEE Addr Search
// 571 retArray[0] = ZB_IEEE_SEARCH;
// 572 retArray[1] = LO_UINT16(addr);
// 573 retArray[2] = HI_UINT16(addr);
// 574 osal_memcpy(&retArray[3], result, Z_EXTADDR_LEN);
// 575
// 576 /* Build and send back the response */
// 577 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_FIND_DEV_CNF, 11, retArray);
// 578
// 579 }
// 580
// 581 /***************************************************************************************************
// 582 * @fn zb_MTCallbackReceiveDataIndication
// 583 *
// 584 * @brief Process the callback subscription for zb_ReceiveDataIndication
// 585 *
// 586 * @param
// 587 *
// 588 * @return none
// 589 ***************************************************************************************************/
// 590 void zb_MTCallbackReceiveDataIndication( uint16 source, uint16 command, uint16 len, uint8 *pData )
// 591 {
// 592 uint8 *memPtr;
// 593 int8 i;
// 594 uint8 msgLen = 6 + len;
// 595
// 596 memPtr = osal_mem_alloc(msgLen);
// 597
// 598 if (memPtr)
// 599 {
// 600 memPtr[0] = LO_UINT16(source);
// 601 memPtr[1] = HI_UINT16(source);
// 602 memPtr[2] = LO_UINT16(command);
// 603 memPtr[3] = HI_UINT16(command);
// 604 memPtr[4] = LO_UINT16(len);
// 605 memPtr[5] = HI_UINT16(len);
// 606
// 607 for (i=0; i<len; i++)
// 608 {
// 609 memPtr[6+i] = pData[i];
// 610 }
// 611
// 612 /* Build and send back the response */
// 613 MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SAPI), MT_SAPI_RCV_DATA_IND, msgLen, memPtr);
// 614
// 615 osal_mem_free( memPtr );
// 616 }
// 617 }
// 618 #endif /* MT_SAPI_CB_FUNC */
// 619
// 620 /***************************************************************************************************
// 621 ***************************************************************************************************/
//
//
//
//
//
//Errors: none
//Warnings: none

View File

@@ -1,791 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:25
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_TASK.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW6030.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_TASK.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_TASK.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\MT_TASK.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_TASK.c
1 /***************************************************************************************************
2 Filename: MT_TASK.c
3 Revised: $Date: 2011-06-07 15:36:01 -0700 (Tue, 07 Jun 2011) $
4 Revision: $Revision: 26245 $
5
6 Description: MonitorTest Task handling routines
7
8 Copyright 2007-2011 Texas Instruments Incorporated. All rights reserved.
9
10 IMPORTANT: Your use of this Software is limited to those specific rights
11 granted under the terms of a software license agreement between the user
12 who downloaded the software, his/her employer (which must be your employer)
13 and Texas Instruments Incorporated (the "License"). You may not use this
14 Software unless you agree to abide by the terms of the License. The License
15 limits your use, and you acknowledge, that the Software may not be modified,
16 copied or distributed unless embedded on a Texas Instruments microcontroller
17 or used solely and exclusively in conjunction with a Texas Instruments radio
18 frequency transceiver, which is integrated into your product. Other than for
19 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
20 works of, modify, distribute, perform, display or sell this Software and/or
21 its documentation for any purpose.
22
23 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
24 PROVIDED 揂S IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
25 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
26 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
27 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
28 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
29 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
30 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
31 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
32 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
33 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
34
35 Should you have any questions regarding your right to use this Software,
36 contact Texas Instruments Incorporated at www.TI.com.
37
38 ***************************************************************************************************/
39
40 /***************************************************************************************************
41 * INCLUDES
42 ***************************************************************************************************/
43 #include "ZComDef.h"
44 #include "MT_TASK.h"
45 #include "MT.h"
46 #include "MT_DEBUG.h"
47 #include "MT_UART.h"
48 #include "MT_UTIL.h"
49 #include "MT_SYS.h"
50
51 #if !defined( NONWK )
52 #include "MT_ZDO.h"
53 #include "MT_AF.h"
54 #endif /* NONWK */
55
56 #include "hal_uart.h"
57 #include "OSAL_Memory.h"
58
59 /***************************************************************************************************
60 * LOCAL FUNCTIONS
61 ***************************************************************************************************/
62
63 static void MT_ProcessIncomingCommand( mtOSALSerialData_t *msg );
64
65 /***************************************************************************************************
66 * GLOBALS
67 ***************************************************************************************************/
68
\ In segment XDATA_Z, align 1, keep-with-next
69 uint8 MT_TaskID;
\ MT_TaskID:
\ 000000 DS 1
\ 000001 REQUIRE __INIT_XDATA_Z
70
71 /***************************************************************************************************
72 * @fn MT_TaskInit
73 *
74 * @brief MonitorTest Task Initialization. This function is put into the
75 * task table.
76 *
77 * @param task_id - task ID of the MT Task
78 *
79 * @return void
80 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
81 void MT_TaskInit(uint8 task_id)
\ MT_TaskInit:
82 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
83 MT_TaskID = task_id;
\ 000007 90.... MOV DPTR,#MT_TaskID
\ 00000A F0 MOVX @DPTR,A
84
85 /* Initialize the Serial port */
86 MT_UartInit();
\ 00000B ; Setup parameters for call to function MT_UartInit
\ 00000B 12.... LCALL `??MT_UartInit::?relay`; Banked call to: MT_UartInit
87
88 /* Register taskID - Do this after UartInit() because it will reset the taskID */
89 MT_UartRegisterTaskID(task_id);
\ 00000E ; Setup parameters for call to function MT_UartRegisterTaskID
\ 00000E EE MOV A,R6
\ 00000F F9 MOV R1,A
\ 000010 12.... LCALL `??MT_UartRegisterTaskID::?relay`; Banked call to: MT_UartRegisterTaskID
90
91 osal_set_event(task_id, MT_SECONDARY_INIT_EVENT);
\ 000013 ; Setup parameters for call to function osal_set_event
\ 000013 7A10 MOV R2,#0x10
\ 000015 7B00 MOV R3,#0x0
\ 000017 EE MOV A,R6
\ 000018 F9 MOV R1,A
\ 000019 12.... LCALL `??osal_set_event::?relay`; Banked call to: osal_set_event
92 }
\ 00001C REQUIRE ?Subroutine0
\ 00001C ; // Fall through to label ?Subroutine0
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7F01 MOV R7,#0x1
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
93
94 /**************************************************************************************************
95 * @fn MT_ProcessEvent
96 *
97 * @brief MonitorTest Task Event Processor. This task is put into the task table.
98 *
99 * @param task_id - task ID of the MT Task
100 * @param events - event(s) for the MT Task
101 *
102 * @return Bit mask of the unprocessed MT Task events.
103 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
104 UINT16 MT_ProcessEvent(uint8 task_id, uint16 events)
\ MT_ProcessEvent:
105 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 REQUIRE ?V2
\ 000000 REQUIRE ?V3
\ 000000 REQUIRE ?V4
\ 000000 REQUIRE ?V5
\ 000000 74F2 MOV A,#-0xe
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 14
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
106 /* Could be multiple events, so switch won't work */
107 if ( events & SYS_EVENT_MSG )
\ 000009 5480 ANL A,#0x80
\ 00000B 7003 JNZ $+5
\ 00000D 02.... LJMP ??MT_ProcessEvent_0 & 0xFFFF
108 {
109 uint8 *msg_ptr = osal_msg_receive(task_id);
\ 000010 ; Setup parameters for call to function osal_msg_receive
\ 000010 12.... LCALL `??osal_msg_receive::?relay`; Banked call to: osal_msg_receive
\ 000013 8A.. MOV ?V2,R2
\ 000015 8B.. MOV ?V3,R3
110
111 if (msg_ptr != NULL)
\ 000017 EA MOV A,R2
\ 000018 4B ORL A,R3
\ 000019 7003 JNZ $+5
\ 00001B 02.... LJMP ??MT_ProcessEvent_1 & 0xFFFF
112 {
113 MT_ProcessIncomingCommand((mtOSALSerialData_t *)msg_ptr);
\ 00001E 8A82 MOV DPL,R2
\ 000020 8B83 MOV DPH,R3
\ 000022 A3 INC DPTR
\ 000023 A3 INC DPTR
\ 000024 E0 MOVX A,@DPTR
\ 000025 F5.. MOV ?V0,A
\ 000027 A3 INC DPTR
\ 000028 E0 MOVX A,@DPTR
\ 000029 F5.. MOV ?V1,A
\ 00002B 8A82 MOV DPL,R2
\ 00002D 8B83 MOV DPH,R3
\ 00002F E0 MOVX A,@DPTR
\ 000030 14 DEC A
\ 000031 606E JZ ??MT_ProcessEvent_2
\ 000033 14 DEC A
\ 000034 6066 JZ ??MT_ProcessEvent_3
\ 000036 24FE ADD A,#-0x2
\ 000038 6023 JZ ??MT_ProcessEvent_4
\ 00003A 24FE ADD A,#-0x2
\ 00003C 601A JZ ??MT_ProcessEvent_5
\ 00003E 24E2 ADD A,#-0x1e
\ 000040 7066 JNZ ??MT_ProcessEvent_6
\ 000042 ; Setup parameters for call to function MTProcessAppRspMsg
\ 000042 85..82 MOV DPL,?V0
\ 000045 85..83 MOV DPH,?V1
\ 000048 A3 INC DPTR
\ 000049 A3 INC DPTR
\ 00004A A3 INC DPTR
\ 00004B E0 MOVX A,@DPTR
\ 00004C 2405 ADD A,#0x5
\ 00004E F9 MOV R1,A
\ 00004F AA.. MOV R2,?V0
\ 000051 AB.. MOV R3,?V1
\ 000053 12.... LCALL `??MTProcessAppRspMsg::?relay`; Banked call to: MTProcessAppRspMsg
\ 000056 8050 SJMP ??MT_ProcessEvent_6
\ ??MT_ProcessEvent_5:
\ 000058 ; Setup parameters for call to function MT_ProcessDebugStr
\ 000058 12.... LCALL `??MT_ProcessDebugStr::?relay`; Banked call to: MT_ProcessDebugStr
\ 00005B 804B SJMP ??MT_ProcessEvent_6
\ ??MT_ProcessEvent_4:
\ 00005D 85..82 MOV DPL,?V0
\ 000060 85..83 MOV DPH,?V1
\ 000063 A3 INC DPTR
\ 000064 A3 INC DPTR
\ 000065 A3 INC DPTR
\ 000066 E0 MOVX A,@DPTR
\ 000067 2405 ADD A,#0x5
\ 000069 F5.. MOV ?V4,A
\ 00006B ; Setup parameters for call to function MT_UartCalcFCS
\ 00006B 74FE MOV A,#-0x2
\ 00006D 25.. ADD A,?V4
\ 00006F FC MOV R4,A
\ 000070 85..82 MOV DPL,?V0
\ 000073 85..83 MOV DPH,?V1
\ 000076 A3 INC DPTR
\ 000077 AA82 MOV R2,DPL
\ 000079 AB83 MOV R3,DPH
\ 00007B 7900 MOV R1,#0x0
\ 00007D 12.... LCALL `??MT_UartCalcFCS::?relay`; Banked call to: MT_UartCalcFCS
\ 000080 E9 MOV A,R1
\ 000081 C0E0 PUSH A
\ 000083 A8.. MOV R0,?V4
\ 000085 E5.. MOV A,?V0
\ 000087 28 ADD A,R0
\ 000088 F8 MOV R0,A
\ 000089 E4 CLR A
\ 00008A 35.. ADDC A,?V1
\ 00008C F9 MOV R1,A
\ 00008D E8 MOV A,R0
\ 00008E 24FF ADD A,#-0x1
\ 000090 F582 MOV DPL,A
\ 000092 E9 MOV A,R1
\ 000093 34FF ADDC A,#-0x1
\ 000095 F583 MOV DPH,A
\ 000097 D0E0 POP A
\ 000099 F0 MOVX @DPTR,A
\ 00009A 800C SJMP ??MT_ProcessEvent_6
\ ??MT_ProcessEvent_3:
\ 00009C ; Setup parameters for call to function MT_ProcessDebugMsg
\ 00009C 12.... LCALL `??MT_ProcessDebugMsg::?relay`; Banked call to: MT_ProcessDebugMsg
\ 00009F 8007 SJMP ??MT_ProcessEvent_6
\ ??MT_ProcessEvent_2:
\ 0000A1 ; Setup parameters for call to function MT_ProcessIncoming
\ 0000A1 AA.. MOV R2,?V0
\ 0000A3 AB.. MOV R3,?V1
\ 0000A5 12.... LCALL `??MT_ProcessIncoming::?relay`; Banked call to: MT_ProcessIncoming
114
115 osal_msg_deallocate(msg_ptr);
\ ??MT_ProcessEvent_6:
\ 0000A8 ; Setup parameters for call to function osal_msg_deallocate
\ 0000A8 AA.. MOV R2,?V2
\ 0000AA AB.. MOV R3,?V3
\ 0000AC 12.... LCALL `??osal_msg_deallocate::?relay`; Banked call to: osal_msg_deallocate
116 }
117
118 /* Return unproccessed events */
119 return (events ^ SYS_EVENT_MSG);
\ ??MT_ProcessEvent_1:
\ 0000AF EE MOV A,R6
\ 0000B0 FA MOV R2,A
\ 0000B1 EF MOV A,R7
\ 0000B2 6480 XRL A,#0x80
\ 0000B4 8065 SJMP ??MT_ProcessEvent_7
120 }
121
122 if ( events & MT_SECONDARY_INIT_EVENT )
\ ??MT_ProcessEvent_0:
\ 0000B6 EA MOV A,R2
\ 0000B7 5410 ANL A,#0x10
\ 0000B9 6008 JZ ??MT_ProcessEvent_8
123 {
124 MT_Init();
\ 0000BB ; Setup parameters for call to function MT_Init
\ 0000BB 12.... LCALL `??MT_Init::?relay`; Banked call to: MT_Init
125 /* Return unproccessed events */
126 return (events ^ MT_SECONDARY_INIT_EVENT);
\ 0000BE EE MOV A,R6
\ 0000BF 6410 XRL A,#0x10
\ 0000C1 8056 SJMP ??MT_ProcessEvent_9
127 }
128
129 if ( events & MT_ZTOOL_SERIAL_RCV_BUFFER_FULL )
\ ??MT_ProcessEvent_8:
\ 0000C3 EA MOV A,R2
\ 0000C4 5402 ANL A,#0x2
\ 0000C6 6006 JZ ??MT_ProcessEvent_10
130 {
131 /* Return unproccessed events */
132 return (events ^ MT_ZTOOL_SERIAL_RCV_BUFFER_FULL);
\ 0000C8 EA MOV A,R2
\ 0000C9 6402 XRL A,#0x2
\ 0000CB FA MOV R2,A
\ 0000CC 8054 SJMP ??MT_ProcessEvent_11
133 }
134
135 #if !defined( NONWK )
136 if ( events & MT_AF_EXEC_EVT )
\ ??MT_ProcessEvent_10:
\ 0000CE EA MOV A,R2
\ 0000CF 5408 ANL A,#0x8
\ 0000D1 6008 JZ ??MT_ProcessEvent_12
137 {
138 MT_AfExec();
\ 0000D3 ; Setup parameters for call to function MT_AfExec
\ 0000D3 12.... LCALL `??MT_AfExec::?relay`; Banked call to: MT_AfExec
139 return (events ^ MT_AF_EXEC_EVT);
\ 0000D6 EE MOV A,R6
\ 0000D7 6408 XRL A,#0x8
\ 0000D9 803E SJMP ??MT_ProcessEvent_9
140 }
141 #endif /* NONWK */
142
143 /* Handle MT_SYS_OSAL_START_TIMER callbacks */
144 #if defined MT_SYS_FUNC
145 if ( events & (MT_SYS_OSAL_EVENT_MASK))
\ ??MT_ProcessEvent_12:
\ 0000DB EB MOV A,R3
\ 0000DC 540F ANL A,#0xf
\ 0000DE 603E JZ ??MT_ProcessEvent_13
146 {
147 if (events & MT_SYS_OSAL_EVENT_0)
\ 0000E0 EB MOV A,R3
\ 0000E1 5408 ANL A,#0x8
\ 0000E3 6009 JZ ??MT_ProcessEvent_14
148 {
149 MT_SysOsalTimerExpired(0x00);
\ 0000E5 ; Setup parameters for call to function MT_SysOsalTimerExpired
\ 0000E5 7900 MOV R1,#0x0
\ 0000E7 12.... LCALL `??MT_SysOsalTimerExpired::?relay`; Banked call to: MT_SysOsalTimerExpired
150 events ^= MT_SYS_OSAL_EVENT_0;
\ 0000EA 7408 MOV A,#0x8
\ 0000EC 6F XRL A,R7
\ 0000ED FF MOV R7,A
151 }
152
153 if (events & MT_SYS_OSAL_EVENT_1)
\ ??MT_ProcessEvent_14:
\ 0000EE EF MOV A,R7
\ 0000EF 5404 ANL A,#0x4
\ 0000F1 6009 JZ ??MT_ProcessEvent_15
154 {
155 MT_SysOsalTimerExpired(0x01);
\ 0000F3 ; Setup parameters for call to function MT_SysOsalTimerExpired
\ 0000F3 7901 MOV R1,#0x1
\ 0000F5 12.... LCALL `??MT_SysOsalTimerExpired::?relay`; Banked call to: MT_SysOsalTimerExpired
156 events ^= MT_SYS_OSAL_EVENT_1;
\ 0000F8 7404 MOV A,#0x4
\ 0000FA 6F XRL A,R7
\ 0000FB FF MOV R7,A
157 }
158
159 if (events & MT_SYS_OSAL_EVENT_2)
\ ??MT_ProcessEvent_15:
\ 0000FC EF MOV A,R7
\ 0000FD 5402 ANL A,#0x2
\ 0000FF 6009 JZ ??MT_ProcessEvent_16
160 {
161 MT_SysOsalTimerExpired(0x02);
\ 000101 ; Setup parameters for call to function MT_SysOsalTimerExpired
\ 000101 7902 MOV R1,#0x2
\ 000103 12.... LCALL `??MT_SysOsalTimerExpired::?relay`; Banked call to: MT_SysOsalTimerExpired
162 events ^= MT_SYS_OSAL_EVENT_2;
\ 000106 7402 MOV A,#0x2
\ 000108 6F XRL A,R7
\ 000109 FF MOV R7,A
163 }
164
165 if (events & MT_SYS_OSAL_EVENT_3)
\ ??MT_ProcessEvent_16:
\ 00010A EF MOV A,R7
\ 00010B 5401 ANL A,#0x1
\ 00010D 6009 JZ ??MT_ProcessEvent_17
166 {
167 MT_SysOsalTimerExpired(0x03);
\ 00010F ; Setup parameters for call to function MT_SysOsalTimerExpired
\ 00010F 7903 MOV R1,#0x3
\ 000111 12.... LCALL `??MT_SysOsalTimerExpired::?relay`; Banked call to: MT_SysOsalTimerExpired
168 events ^= MT_SYS_OSAL_EVENT_3;
\ 000114 7401 MOV A,#0x1
\ 000116 6F XRL A,R7
\ 000117 FF MOV R7,A
169 }
170
171 return events;
\ ??MT_ProcessEvent_17:
\ 000118 EE MOV A,R6
\ ??MT_ProcessEvent_9:
\ 000119 FA MOV R2,A
\ 00011A EF MOV A,R7
\ ??MT_ProcessEvent_7:
\ 00011B FB MOV R3,A
\ 00011C 8004 SJMP ??MT_ProcessEvent_11
172 }
173 #endif
174
175 /* Discard or make more handlers */
176 return 0;
\ ??MT_ProcessEvent_13:
\ 00011E 7A00 MOV R2,#0x0
\ 000120 7B00 MOV R3,#0x0
\ ??MT_ProcessEvent_11:
\ 000122 7F06 MOV R7,#0x6
\ 000124 02.... LJMP ?BANKED_LEAVE_XDATA
177
178 } /* MT_ProcessEvent() */
179
180 /***************************************************************************************************
181 * @fn MT_ProcessIncomingCommand
182 *
183 * @brief
184 *
185 * Process Event Messages.
186 *
187 * @param *msg - pointer to event message
188 *
189 * @return
190 ***************************************************************************************************/
191 static void MT_ProcessIncomingCommand( mtOSALSerialData_t *msg )
192 {
193 uint8 len, *msg_ptr = msg->msg;
194
195 /* Use the first byte of the message as the command ID */
196 switch ( msg->hdr.event )
197 {
198 case CMD_SERIAL_MSG:
199 MT_ProcessIncoming(msg_ptr);
200 break;
201
202 case CMD_DEBUG_MSG:
203 MT_ProcessDebugMsg( (mtDebugMsg_t *)msg );
204 break;
205
206 case CB_FUNC:
207 /*
208 Build SPI message here instead of redundantly calling MT_BuildSPIMsg
209 because we have copied data already in the allocated message
210 */
211
212 /* msg_ptr is the beginning of the intended SPI message */
213 len = SPI_0DATA_MSG_LEN + msg_ptr[DATALEN_FIELD];
214
215 /*
216 FCS goes to the last byte in the message and is calculated over all
217 the bytes except FCS and SOP
218 */
219 msg_ptr[len-1] = MT_UartCalcFCS(0, msg_ptr + 1, (uint8)(len-2));
220
221 #ifdef MT_UART_DEFAULT_PORT
222 //HalUARTWrite ( MT_UART_DEFAULT_PORT, msg_ptr, len );
223 #endif
224 break;
225
226 case CMD_DEBUG_STR:
227 MT_ProcessDebugStr( (mtDebugStr_t *)msg );
228 break;
229
230 #if !defined ( NONWK )
231 case MT_SYS_APP_RSP_MSG:
232 len = SPI_0DATA_MSG_LEN + msg_ptr[DATALEN_FIELD];
233 MTProcessAppRspMsg( msg_ptr, len );
234 break;
235 #endif // NONWK
236
237 #if defined (MT_UTIL_FUNC)
238 #if defined ZCL_KEY_ESTABLISH
239 case ZCL_KEY_ESTABLISH_IND:
240 MT_UtilKeyEstablishInd((keyEstablishmentInd_t *)msg);
241 break;
242 #endif
243 #endif
244 #ifdef MT_ZDO_CB_FUNC
245 case ZDO_STATE_CHANGE:
246 MT_ZdoStateChangeCB((osal_event_hdr_t *)msg);
247 break;
248 #endif
249
250 default:
251 break;
252 }
253 }
254
255 #ifdef MT_TASK
256 /***************************************************************************************************
257 * @fn MT_TransportAlloc
258 *
259 * @brief Allocate memory for transport msg
260 *
261 * @param uint8 cmd0 - The first byte of the MT command id containing the command type and subsystem.
262 * uint8 len - length
263 *
264 * @return pointer the allocated memory or NULL if fail to allocate the memory
265 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
266 uint8 *MT_TransportAlloc(uint8 cmd0, uint8 len)
\ MT_TransportAlloc:
267 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
268 uint8 *p;
269
270 (void)cmd0; // Intentionally unreferenced parameter
271
272 /* Allocate a buffer of data length + SOP+CMD+FCS (5 bytes) */
273 p = osal_msg_allocate(len + SPI_0DATA_MSG_LEN);
\ 000006 ; Setup parameters for call to function osal_msg_allocate
\ 000006 2405 ADD A,#0x5
\ 000008 FA MOV R2,A
\ 000009 E4 CLR A
\ 00000A 3400 ADDC A,#0x0
\ 00000C FB MOV R3,A
\ 00000D 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
\ 000010 8A82 MOV DPL,R2
\ 000012 8B83 MOV DPH,R3
274
275 if (p)
\ 000014 E582 MOV A,DPL
\ 000016 4583 ORL A,DPH
\ 000018 6007 JZ ??MT_TransportAlloc_0
276 {
277 p++; /* Save space for SOP_VALUE, msg structure */
278 return p;
\ 00001A A3 INC DPTR
\ 00001B AA82 MOV R2,DPL
\ 00001D AB83 MOV R3,DPH
\ 00001F 8004 SJMP ??MT_TransportAlloc_1
279 }
280 else
281 {
282 return NULL;
\ ??MT_TransportAlloc_0:
\ 000021 7A00 MOV R2,#0x0
\ 000023 7B00 MOV R3,#0x0
\ ??MT_TransportAlloc_1:
\ 000025 7F02 MOV R7,#0x2
\ 000027 02.... LJMP ?BANKED_LEAVE_XDATA
283 }
284 }
285
286 /***************************************************************************************************
287 * @fn MT_TransportSend
288 *
289 * @brief Fill in SOP and FCS then send out the msg
290 *
291 * @param uint8 *pBuf - pointer to the message that contains CMD, length, data and FCS
292 *
293 * @return None
294 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
295 void MT_TransportSend(uint8 *pBuf)
\ MT_TransportSend:
296 {
\ 000000 REQUIRE ?V0
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
297 uint8 *msgPtr;
298 uint8 dataLen = pBuf[0]; /* Data length is on byte #1 from the pointer */
\ 000005 8A82 MOV DPL,R2
\ 000007 8B83 MOV DPH,R3
\ 000009 E0 MOVX A,@DPTR
\ 00000A F5.. MOV ?V0,A
299
300 /* Move back to the SOP */
301 msgPtr = pBuf-1;
\ 00000C EA MOV A,R2
\ 00000D 24FF ADD A,#-0x1
\ 00000F FE MOV R6,A
\ 000010 EB MOV A,R3
\ 000011 34FF ADDC A,#-0x1
\ 000013 FF MOV R7,A
302
303 /* Insert SOP */
304 msgPtr[0] = MT_UART_SOF;
\ 000014 8E82 MOV DPL,R6
\ 000016 F583 MOV DPH,A
\ 000018 7402 MOV A,#0x2
\ 00001A F0 MOVX @DPTR,A
305
306 /* Insert FCS */
307 msgPtr[SPI_0DATA_MSG_LEN - 1 + dataLen] = MT_UartCalcFCS (0, pBuf, (3 + dataLen));
\ 00001B ; Setup parameters for call to function MT_UartCalcFCS
\ 00001B 04 INC A
\ 00001C 25.. ADD A,?V0
\ 00001E FC MOV R4,A
\ 00001F 7900 MOV R1,#0x0
\ 000021 12.... LCALL `??MT_UartCalcFCS::?relay`; Banked call to: MT_UartCalcFCS
\ 000024 A8.. MOV R0,?V0
\ 000026 EE MOV A,R6
\ 000027 28 ADD A,R0
\ 000028 F582 MOV DPL,A
\ 00002A E4 CLR A
\ 00002B 3F ADDC A,R7
\ 00002C F583 MOV DPH,A
\ 00002E A3 INC DPTR
\ 00002F A3 INC DPTR
\ 000030 A3 INC DPTR
\ 000031 A3 INC DPTR
\ 000032 E9 MOV A,R1
\ 000033 F0 MOVX @DPTR,A
308
309 /* Send to UART */
310 #ifdef MT_UART_DEFAULT_PORT
311 //HalUARTWrite(MT_UART_DEFAULT_PORT, msgPtr, dataLen + SPI_0DATA_MSG_LEN);
312 #endif
313
314 /* Deallocate */
315 osal_msg_deallocate(msgPtr);
\ 000034 ; Setup parameters for call to function osal_msg_deallocate
\ 000034 EE MOV A,R6
\ 000035 FA MOV R2,A
\ 000036 EF MOV A,R7
\ 000037 FB MOV R3,A
\ 000038 12.... LCALL `??osal_msg_deallocate::?relay`; Banked call to: osal_msg_deallocate
316 }
\ 00003B 02.... LJMP ?Subroutine0 & 0xFFFF
317 #endif /* MT_TASK */
318 /***************************************************************************************************
319 ***************************************************************************************************/
Maximum stack usage in bytes:
ISTACK XSTACK Function
------ ------ --------
1 14 MT_ProcessEvent
0 14 -> MTProcessAppRspMsg
0 14 -> MT_AfExec
0 14 -> MT_Init
0 14 -> MT_ProcessDebugMsg
0 14 -> MT_ProcessDebugStr
0 14 -> MT_ProcessIncoming
0 14 -> MT_SysOsalTimerExpired
0 14 -> MT_UartCalcFCS
0 14 -> osal_msg_deallocate
0 14 -> osal_msg_receive
0 9 MT_TaskInit
0 9 -> MT_UartInit
0 9 -> MT_UartRegisterTaskID
0 9 -> osal_set_event
0 10 MT_TransportAlloc
0 10 -> osal_msg_allocate
1 9 MT_TransportSend
0 9 -> MT_UartCalcFCS
0 9 -> osal_msg_deallocate
Segment part sizes:
Bytes Function/Label
----- --------------
5 ?Subroutine0
295 MT_ProcessEvent
1 MT_TaskID
28 MT_TaskInit
42 MT_TransportAlloc
62 MT_TransportSend
24 -- Other
432 bytes in segment BANKED_CODE
24 bytes in segment BANK_RELAYS
1 byte in segment XDATA_Z
24 bytes of CODE memory
432 bytes of HUGECODE memory
1 byte of XDATA memory
Errors: none
Warnings: none

View File

@@ -1,180 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:25
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_VERSION.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW6217.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_VERSION.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_VERSION.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\MT_VERSION.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_VERSION.c
1 /******************************************************************************
2 Filename: MT_VERSION.c
3 Revised: $Date: 2011-01-11 16:42:51 -0800 (Tue, 11 Jan 2011) $
4 Revision: $Revision: 24768 $
5
6 Description: Provides the version identification numbers
7
8 Copyright 2007-2011 Texas Instruments Incorporated. All rights reserved.
9
10 IMPORTANT: Your use of this Software is limited to those specific rights
11 granted under the terms of a software license agreement between the user
12 who downloaded the software, his/her employer (which must be your employer)
13 and Texas Instruments Incorporated (the "License"). You may not use this
14 Software unless you agree to abide by the terms of the License. The License
15 limits your use, and you acknowledge, that the Software may not be modified,
16 copied or distributed unless embedded on a Texas Instruments microcontroller
17 or used solely and exclusively in conjunction with a Texas Instruments radio
18 frequency transceiver, which is integrated into your product. Other than for
19 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
20 works of, modify, distribute, perform, display or sell this Software and/or
21 its documentation for any purpose.
22
23 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
24 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
25 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
26 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
27 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
28 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
29 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
30 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
31 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
32 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
33 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
34
35 Should you have any questions regarding your right to use this Software,
36 contact Texas Instruments Incorporated at www.TI.com.
37
38 ******************************************************************************/
39
40 /******************************************************************************
41 * INCLUDES
42 *****************************************************************************/
43 #include "ZComDef.h"
44 #include "MT_VERSION.h"
45
46 /******************************************************************************
47 * CONSTANTS
48 *****************************************************************************/
\ In segment XDATA_ROM_C, align 1
49 const uint8 MTVersionString[5] = {
\ MTVersionString:
\ 000000 02 DB 2
\ 000001 00 DB 0
\ 000002 02 DB 2
\ 000003 05 DB 5
\ 000004 00 DB 0
50 2, /* Transport protocol revision */
51 0, /* Product ID */
52 2, /* Software major release number */
53 5, /* Software minor release number */
54 0 /* Software maintenance release number */
55 };
56
57 /******************************************************************************
58 */
Segment part sizes:
Bytes Function/Label
----- --------------
5 MTVersionString
5 bytes in segment XDATA_ROM_C
5 bytes of CONST memory
Errors: none
Warnings: none

View File

@@ -1,194 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:25
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_VERSION.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW6217.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_VERSION.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\MT_VERSION.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME MT_VERSION
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
PUBLIC MTVersionString
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\mt\MT_VERSION.c
// 1 /******************************************************************************
// 2 Filename: MT_VERSION.c
// 3 Revised: $Date: 2011-01-11 16:42:51 -0800 (Tue, 11 Jan 2011) $
// 4 Revision: $Revision: 24768 $
// 5
// 6 Description: Provides the version identification numbers
// 7
// 8 Copyright 2007-2011 Texas Instruments Incorporated. All rights reserved.
// 9
// 10 IMPORTANT: Your use of this Software is limited to those specific rights
// 11 granted under the terms of a software license agreement between the user
// 12 who downloaded the software, his/her employer (which must be your employer)
// 13 and Texas Instruments Incorporated (the "License"). You may not use this
// 14 Software unless you agree to abide by the terms of the License. The License
// 15 limits your use, and you acknowledge, that the Software may not be modified,
// 16 copied or distributed unless embedded on a Texas Instruments microcontroller
// 17 or used solely and exclusively in conjunction with a Texas Instruments radio
// 18 frequency transceiver, which is integrated into your product. Other than for
// 19 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 20 works of, modify, distribute, perform, display or sell this Software and/or
// 21 its documentation for any purpose.
// 22
// 23 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 24 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 25 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 26 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 27 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 28 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 29 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 30 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 31 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 32 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 33 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 34
// 35 Should you have any questions regarding your right to use this Software,
// 36 contact Texas Instruments Incorporated at www.TI.com.
// 37
// 38 ******************************************************************************/
// 39
// 40 /******************************************************************************
// 41 * INCLUDES
// 42 *****************************************************************************/
// 43 #include "ZComDef.h"
// 44 #include "MT_VERSION.h"
// 45
// 46 /******************************************************************************
// 47 * CONSTANTS
// 48 *****************************************************************************/
RSEG XDATA_ROM_C:CONST:REORDER:NOROOT(0)
DATA8
// 49 const uint8 MTVersionString[5] = {
MTVersionString:
DB 2
DB 0
DB 2
DB 5
DB 0
END
// 50 2, /* Transport protocol revision */
// 51 0, /* Product ID */
// 52 2, /* Software major release number */
// 53 5, /* Software minor release number */
// 54 0 /* Software maintenance release number */
// 55 };
// 56
// 57 /******************************************************************************
// 58 */
//
// 5 bytes in segment XDATA_ROM_C
//
// 5 bytes of CONST memory
//
//Errors: none
//Warnings: none

View File

@@ -1,418 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:27
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\osal\common\OSAL_PwrMgr.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW6656.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\osal\common\OSAL_PwrMgr.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\OSAL_PwrMgr.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\OSAL_PwrMgr.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\osal\common\OSAL_PwrMgr.c
1 /**************************************************************************************************
2 Filename: OSAL_pwrmgr.c
3 Revised: $Date: 2008-10-07 14:47:15 -0700 (Tue, 07 Oct 2008) $
4 Revision: $Revision: 18212 $
5
6 Description: This file contains the OSAL Power Management API.
7
8
9 Copyright 2004-2007 Texas Instruments Incorporated. All rights reserved.
10
11 IMPORTANT: Your use of this Software is limited to those specific rights
12 granted under the terms of a software license agreement between the user
13 who downloaded the software, his/her employer (which must be your employer)
14 and Texas Instruments Incorporated (the "License"). You may not use this
15 Software unless you agree to abide by the terms of the License. The License
16 limits your use, and you acknowledge, that the Software may not be modified,
17 copied or distributed unless embedded on a Texas Instruments microcontroller
18 or used solely and exclusively in conjunction with a Texas Instruments radio
19 frequency transceiver, which is integrated into your product. Other than for
20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
21 works of, modify, distribute, perform, display or sell this Software and/or
22 its documentation for any purpose.
23
24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
25 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
35
36 Should you have any questions regarding your right to use this Software,
37 contact Texas Instruments Incorporated at www.TI.com.
38 **************************************************************************************************/
39
40 /*********************************************************************
41 * INCLUDES
42 */
43
44 #include "comdef.h"
45 #include "OnBoard.h"
46 #include "OSAL.h"
47 #include "OSAL_Tasks.h"
48 #include "OSAL_Timers.h"
49 #include "OSAL_PwrMgr.h"
50
51 /*********************************************************************
52 * MACROS
53 */
54
55 /*********************************************************************
56 * CONSTANTS
57 */
58
59 /*********************************************************************
60 * TYPEDEFS
61 */
62
63 /*********************************************************************
64 * GLOBAL VARIABLES
65 */
66
67 /* This global variable stores the power management attributes.
68 */
\ In segment XDATA_Z, align 1, keep-with-next
69 pwrmgr_attribute_t pwrmgr_attribute;
\ pwrmgr_attribute:
\ 000000 DS 7
\ 000007 REQUIRE __INIT_XDATA_Z
70
71 /*********************************************************************
72 * EXTERNAL VARIABLES
73 */
74
75 /*********************************************************************
76 * EXTERNAL FUNCTIONS
77 */
78
79 /*********************************************************************
80 * LOCAL VARIABLES
81 */
82
83 /*********************************************************************
84 * LOCAL FUNCTION PROTOTYPES
85 */
86
87 /*********************************************************************
88 * FUNCTIONS
89 *********************************************************************/
90
91 /*********************************************************************
92 * @fn osal_pwrmgr_init
93 *
94 * @brief Initialize the power management system.
95 *
96 * @param none.
97 *
98 * @return none.
99 */
\ In segment BANKED_CODE, align 1, keep-with-next
100 void osal_pwrmgr_init( void )
\ osal_pwrmgr_init:
101 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
102 pwrmgr_attribute.pwrmgr_device = PWRMGR_ALWAYS_ON; // Default to no power conservation.
\ 000004 90.... MOV DPTR,#pwrmgr_attribute + 6
\ 000007 E4 CLR A
\ 000008 F0 MOVX @DPTR,A
103 pwrmgr_attribute.pwrmgr_task_state = 0; // Cleared. All set to conserve
\ 000009 90.... MOV DPTR,#pwrmgr_attribute
\ 00000C F0 MOVX @DPTR,A
\ 00000D A3 INC DPTR
\ 00000E REQUIRE ?Subroutine0
\ 00000E ; // Fall through to label ?Subroutine0
104 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 F0 MOVX @DPTR,A
\ 000001 D083 POP DPH
\ 000003 D082 POP DPL
\ 000005 02.... LJMP ?BRET
105
106 /*********************************************************************
107 * @fn osal_pwrmgr_device
108 *
109 * @brief Sets the device power characteristic.
110 *
111 * @param pwrmgr_device - type of power devices. With PWRMGR_ALWAYS_ON
112 * selection, there is no power savings and the device is most
113 * likely on mains power. The PWRMGR_BATTERY selection allows the
114 * HAL sleep manager to enter sleep.
115 *
116 * @return none
117 */
\ In segment BANKED_CODE, align 1, keep-with-next
118 void osal_pwrmgr_device( uint8 pwrmgr_device )
\ osal_pwrmgr_device:
119 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
120 pwrmgr_attribute.pwrmgr_device = pwrmgr_device;
\ 000004 E9 MOV A,R1
\ 000005 90.... MOV DPTR,#pwrmgr_attribute + 6
\ 000008 80.. SJMP ?Subroutine0
121 }
122
123 /*********************************************************************
124 * @fn osal_pwrmgr_task_state
125 *
126 * @brief This function is called by each task to state whether or
127 * not this task wants to conserve power.
128 *
129 * @param task_id - calling task ID.
130 * state - whether the calling task wants to
131 * conserve power or not.
132 *
133 * @return SUCCESS if task complete
134 */
\ In segment BANKED_CODE, align 1, keep-with-next
135 uint8 osal_pwrmgr_task_state( uint8 task_id, uint8 state )
\ osal_pwrmgr_task_state:
136 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
137 if ( task_id >= tasksCnt )
\ 000005 90.... MOV DPTR,#tasksCnt
\ 000008 E0 MOVX A,@DPTR
\ 000009 F8 MOV R0,A
\ 00000A E9 MOV A,R1
\ 00000B C3 CLR C
\ 00000C 98 SUBB A,R0
\ 00000D 4004 JC ??osal_pwrmgr_task_state_0
138 return ( INVALID_TASK );
\ 00000F 7903 MOV R1,#0x3
\ 000011 8036 SJMP ??osal_pwrmgr_task_state_1
139
140 if ( state == PWRMGR_CONSERVE )
\ ??osal_pwrmgr_task_state_0:
\ 000013 EA MOV A,R2
\ 000014 75..01 MOV ?V0,#0x1
\ 000017 75..00 MOV ?V1,#0x0
\ 00001A 7019 JNZ ??osal_pwrmgr_task_state_2
141 {
142 // Clear the task state flag
143 pwrmgr_attribute.pwrmgr_task_state &= ~(1 << task_id );
\ 00001C E9 MOV A,R1
\ 00001D 78.. MOV R0,#?V0
\ 00001F 12.... LCALL ?S_SHL
\ 000022 E5.. MOV A,?V0
\ 000024 F4 CPL A
\ 000025 F8 MOV R0,A
\ 000026 E5.. MOV A,?V1
\ 000028 F4 CPL A
\ 000029 F9 MOV R1,A
\ 00002A 90.... MOV DPTR,#pwrmgr_attribute
\ 00002D E0 MOVX A,@DPTR
\ 00002E 58 ANL A,R0
\ 00002F F0 MOVX @DPTR,A
\ 000030 A3 INC DPTR
\ 000031 E0 MOVX A,@DPTR
\ 000032 59 ANL A,R1
\ 000033 8011 SJMP ??osal_pwrmgr_task_state_3
144 }
145 else
146 {
147 // Set the task state flag
148 pwrmgr_attribute.pwrmgr_task_state |= (1 << task_id);
\ ??osal_pwrmgr_task_state_2:
\ 000035 E9 MOV A,R1
\ 000036 78.. MOV R0,#?V0
\ 000038 12.... LCALL ?S_SHL
\ 00003B 90.... MOV DPTR,#pwrmgr_attribute
\ 00003E E0 MOVX A,@DPTR
\ 00003F 45.. ORL A,?V0
\ 000041 F0 MOVX @DPTR,A
\ 000042 A3 INC DPTR
\ 000043 E0 MOVX A,@DPTR
\ 000044 45.. ORL A,?V1
\ ??osal_pwrmgr_task_state_3:
\ 000046 F0 MOVX @DPTR,A
149 }
150
151 return ( SUCCESS );
\ 000047 7900 MOV R1,#0x0
\ ??osal_pwrmgr_task_state_1:
\ 000049 7F02 MOV R7,#0x2
\ 00004B 02.... LJMP ?BANKED_LEAVE_XDATA
152 }
153
154 #if defined( POWER_SAVING )
155 /*********************************************************************
156 * @fn osal_pwrmgr_powerconserve
157 *
158 * @brief This function is called from the main OSAL loop when there are
159 * no events scheduled and shouldn't be called from anywhere else.
160 *
161 * @param none.
162 *
163 * @return none.
164 */
165 void osal_pwrmgr_powerconserve( void )
166 {
167 uint16 next;
168 halIntState_t intState;
169
170 // Should we even look into power conservation
171 if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON )
172 {
173 // Are all tasks in agreement to conserve
174 if ( pwrmgr_attribute.pwrmgr_task_state == 0 )
175 {
176 // Hold off interrupts.
177 HAL_ENTER_CRITICAL_SECTION( intState );
178
179 // Get next time-out
180 next = osal_next_timeout();
181
182 // Re-enable interrupts.
183 HAL_EXIT_CRITICAL_SECTION( intState );
184
185 // Put the processor into sleep mode
186 OSAL_SET_CPU_INTO_SLEEP( next );
187 }
188 }
189 }
190 #endif /* POWER_SAVING */
191
192 /*********************************************************************
193 *********************************************************************/
Maximum stack usage in bytes:
ISTACK XSTACK Function
------ ------ --------
2 0 osal_pwrmgr_device
2 0 osal_pwrmgr_init
0 10 osal_pwrmgr_task_state
Segment part sizes:
Bytes Function/Label
----- --------------
8 ?Subroutine0
10 osal_pwrmgr_device
14 osal_pwrmgr_init
78 osal_pwrmgr_task_state
7 pwrmgr_attribute
18 -- Other
110 bytes in segment BANKED_CODE
18 bytes in segment BANK_RELAYS
7 bytes in segment XDATA_Z
18 bytes of CODE memory
110 bytes of HUGECODE memory
7 bytes of XDATA memory
Errors: none
Warnings: none

View File

@@ -1,598 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:27
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\osal\common\OSAL_PwrMgr.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW6656.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\osal\common\OSAL_PwrMgr.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\OSAL_PwrMgr.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME OSAL_PwrMgr
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
EXTERN ?V0
EXTERN ?V1
EXTERN ?BANKED_ENTER_XDATA
EXTERN ?BANKED_LEAVE_XDATA
EXTERN ?BDISPATCH
EXTERN ?BRET
EXTERN ?S_SHL
EXTERN __INIT_XDATA_Z
PUBLIC `??osal_pwrmgr_device::?relay`
FUNCTION `??osal_pwrmgr_device::?relay`,0203H
PUBLIC `??osal_pwrmgr_init::?relay`
FUNCTION `??osal_pwrmgr_init::?relay`,0203H
PUBLIC `??osal_pwrmgr_task_state::?relay`
FUNCTION `??osal_pwrmgr_task_state::?relay`,0203H
PUBLIC osal_pwrmgr_device
FUNCTION osal_pwrmgr_device,0203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC osal_pwrmgr_init
FUNCTION osal_pwrmgr_init,0203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC osal_pwrmgr_task_state
FUNCTION osal_pwrmgr_task_state,080203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 10, STACK
PUBLIC pwrmgr_attribute
CFI Names cfiNames0
CFI StackFrame CFA_SP SP IDATA
CFI StackFrame CFA_PSP16 PSP16 XDATA
CFI StackFrame CFA_XSP16 XSP16 XDATA
CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
CFI VirtualResource ?RET:24
CFI Resource ?BRET_EXT:8
CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
CFI ResourceParts PSP16 PSPH, PSPL
CFI ResourceParts XSP16 XSPH, XSPL
CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-3
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B Undefined
CFI A Undefined
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT Frame(CFA_SP, 3)
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon0
osal_pwrmgr_device SYMBOL "osal_pwrmgr_device"
`??osal_pwrmgr_device::?relay` SYMBOL "?relay", osal_pwrmgr_device
osal_pwrmgr_init SYMBOL "osal_pwrmgr_init"
`??osal_pwrmgr_init::?relay` SYMBOL "?relay", osal_pwrmgr_init
osal_pwrmgr_task_state SYMBOL "osal_pwrmgr_task_state"
`??osal_pwrmgr_task_state::?relay` SYMBOL "?relay", osal_pwrmgr_task_state
EXTERN tasksCnt
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\osal\common\OSAL_PwrMgr.c
// 1 /**************************************************************************************************
// 2 Filename: OSAL_pwrmgr.c
// 3 Revised: $Date: 2008-10-07 14:47:15 -0700 (Tue, 07 Oct 2008) $
// 4 Revision: $Revision: 18212 $
// 5
// 6 Description: This file contains the OSAL Power Management API.
// 7
// 8
// 9 Copyright 2004-2007 Texas Instruments Incorporated. All rights reserved.
// 10
// 11 IMPORTANT: Your use of this Software is limited to those specific rights
// 12 granted under the terms of a software license agreement between the user
// 13 who downloaded the software, his/her employer (which must be your employer)
// 14 and Texas Instruments Incorporated (the "License"). You may not use this
// 15 Software unless you agree to abide by the terms of the License. The License
// 16 limits your use, and you acknowledge, that the Software may not be modified,
// 17 copied or distributed unless embedded on a Texas Instruments microcontroller
// 18 or used solely and exclusively in conjunction with a Texas Instruments radio
// 19 frequency transceiver, which is integrated into your product. Other than for
// 20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 21 works of, modify, distribute, perform, display or sell this Software and/or
// 22 its documentation for any purpose.
// 23
// 24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 25 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 35
// 36 Should you have any questions regarding your right to use this Software,
// 37 contact Texas Instruments Incorporated at www.TI.com.
// 38 **************************************************************************************************/
// 39
// 40 /*********************************************************************
// 41 * INCLUDES
// 42 */
// 43
// 44 #include "comdef.h"
// 45 #include "OnBoard.h"
// 46 #include "OSAL.h"
// 47 #include "OSAL_Tasks.h"
// 48 #include "OSAL_Timers.h"
// 49 #include "OSAL_PwrMgr.h"
// 50
// 51 /*********************************************************************
// 52 * MACROS
// 53 */
// 54
// 55 /*********************************************************************
// 56 * CONSTANTS
// 57 */
// 58
// 59 /*********************************************************************
// 60 * TYPEDEFS
// 61 */
// 62
// 63 /*********************************************************************
// 64 * GLOBAL VARIABLES
// 65 */
// 66
// 67 /* This global variable stores the power management attributes.
// 68 */
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA8
// 69 pwrmgr_attribute_t pwrmgr_attribute;
pwrmgr_attribute:
DS 7
REQUIRE __INIT_XDATA_Z
// 70
// 71 /*********************************************************************
// 72 * EXTERNAL VARIABLES
// 73 */
// 74
// 75 /*********************************************************************
// 76 * EXTERNAL FUNCTIONS
// 77 */
// 78
// 79 /*********************************************************************
// 80 * LOCAL VARIABLES
// 81 */
// 82
// 83 /*********************************************************************
// 84 * LOCAL FUNCTION PROTOTYPES
// 85 */
// 86
// 87 /*********************************************************************
// 88 * FUNCTIONS
// 89 *********************************************************************/
// 90
// 91 /*********************************************************************
// 92 * @fn osal_pwrmgr_init
// 93 *
// 94 * @brief Initialize the power management system.
// 95 *
// 96 * @param none.
// 97 *
// 98 * @return none.
// 99 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 100 void osal_pwrmgr_init( void )
osal_pwrmgr_init:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function osal_pwrmgr_init
CODE
// 101 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 102 pwrmgr_attribute.pwrmgr_device = PWRMGR_ALWAYS_ON; // Default to no power conservation.
MOV DPTR,#pwrmgr_attribute + 6
CLR A
MOVX @DPTR,A
// 103 pwrmgr_attribute.pwrmgr_task_state = 0; // Cleared. All set to conserve
MOV DPTR,#pwrmgr_attribute
MOVX @DPTR,A
INC DPTR
CFI EndBlock cfiBlock0
REQUIRE ?Subroutine0
; // Fall through to label ?Subroutine0
// 104 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOVX @DPTR,A
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock1
// 105
// 106 /*********************************************************************
// 107 * @fn osal_pwrmgr_device
// 108 *
// 109 * @brief Sets the device power characteristic.
// 110 *
// 111 * @param pwrmgr_device - type of power devices. With PWRMGR_ALWAYS_ON
// 112 * selection, there is no power savings and the device is most
// 113 * likely on mains power. The PWRMGR_BATTERY selection allows the
// 114 * HAL sleep manager to enter sleep.
// 115 *
// 116 * @return none
// 117 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 118 void osal_pwrmgr_device( uint8 pwrmgr_device )
osal_pwrmgr_device:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function osal_pwrmgr_device
CODE
// 119 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 120 pwrmgr_attribute.pwrmgr_device = pwrmgr_device;
MOV A,R1
MOV DPTR,#pwrmgr_attribute + 6
SJMP ?Subroutine0
// 121 }
CFI EndBlock cfiBlock2
// 122
// 123 /*********************************************************************
// 124 * @fn osal_pwrmgr_task_state
// 125 *
// 126 * @brief This function is called by each task to state whether or
// 127 * not this task wants to conserve power.
// 128 *
// 129 * @param task_id - calling task ID.
// 130 * state - whether the calling task wants to
// 131 * conserve power or not.
// 132 *
// 133 * @return SUCCESS if task complete
// 134 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 135 uint8 osal_pwrmgr_task_state( uint8 task_id, uint8 state )
osal_pwrmgr_task_state:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function osal_pwrmgr_task_state
CODE
// 136 {
REQUIRE ?V0
REQUIRE ?V1
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
// 137 if ( task_id >= tasksCnt )
MOV DPTR,#tasksCnt
MOVX A,@DPTR
MOV R0,A
MOV A,R1
CLR C
SUBB A,R0
JC ??osal_pwrmgr_task_state_0
// 138 return ( INVALID_TASK );
MOV R1,#0x3
SJMP ??osal_pwrmgr_task_state_1
// 139
// 140 if ( state == PWRMGR_CONSERVE )
??osal_pwrmgr_task_state_0:
MOV A,R2
MOV ?V0,#0x1
MOV ?V1,#0x0
JNZ ??osal_pwrmgr_task_state_2
// 141 {
// 142 // Clear the task state flag
// 143 pwrmgr_attribute.pwrmgr_task_state &= ~(1 << task_id );
MOV A,R1
MOV R0,#?V0
LCALL ?S_SHL
MOV A,?V0
CPL A
MOV R0,A
MOV A,?V1
CPL A
MOV R1,A
MOV DPTR,#pwrmgr_attribute
MOVX A,@DPTR
ANL A,R0
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,R1
SJMP ??osal_pwrmgr_task_state_3
// 144 }
// 145 else
// 146 {
// 147 // Set the task state flag
// 148 pwrmgr_attribute.pwrmgr_task_state |= (1 << task_id);
??osal_pwrmgr_task_state_2:
MOV A,R1
MOV R0,#?V0
LCALL ?S_SHL
MOV DPTR,#pwrmgr_attribute
MOVX A,@DPTR
ORL A,?V0
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ORL A,?V1
??osal_pwrmgr_task_state_3:
MOVX @DPTR,A
// 149 }
// 150
// 151 return ( SUCCESS );
MOV R1,#0x0
??osal_pwrmgr_task_state_1:
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
// 152 }
CFI EndBlock cfiBlock3
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??osal_pwrmgr_init::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 osal_pwrmgr_init
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??osal_pwrmgr_device::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 osal_pwrmgr_device
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??osal_pwrmgr_task_state::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 osal_pwrmgr_task_state
END
// 153
// 154 #if defined( POWER_SAVING )
// 155 /*********************************************************************
// 156 * @fn osal_pwrmgr_powerconserve
// 157 *
// 158 * @brief This function is called from the main OSAL loop when there are
// 159 * no events scheduled and shouldn't be called from anywhere else.
// 160 *
// 161 * @param none.
// 162 *
// 163 * @return none.
// 164 */
// 165 void osal_pwrmgr_powerconserve( void )
// 166 {
// 167 uint16 next;
// 168 halIntState_t intState;
// 169
// 170 // Should we even look into power conservation
// 171 if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON )
// 172 {
// 173 // Are all tasks in agreement to conserve
// 174 if ( pwrmgr_attribute.pwrmgr_task_state == 0 )
// 175 {
// 176 // Hold off interrupts.
// 177 HAL_ENTER_CRITICAL_SECTION( intState );
// 178
// 179 // Get next time-out
// 180 next = osal_next_timeout();
// 181
// 182 // Re-enable interrupts.
// 183 HAL_EXIT_CRITICAL_SECTION( intState );
// 184
// 185 // Put the processor into sleep mode
// 186 OSAL_SET_CPU_INTO_SLEEP( next );
// 187 }
// 188 }
// 189 }
// 190 #endif /* POWER_SAVING */
// 191
// 192 /*********************************************************************
// 193 *********************************************************************/
//
// 110 bytes in segment BANKED_CODE
// 18 bytes in segment BANK_RELAYS
// 7 bytes in segment XDATA_Z
//
// 18 bytes of CODE memory
// 110 bytes of HUGECODE memory
// 7 bytes of XDATA memory
//
//Errors: none
//Warnings: none

View File

@@ -1,828 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 21/May/2019 10:27:34
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\SAPP_Device.c
# Command line =
# -f C:\Users\97110\AppData\Local\Temp\EWFF96.tmp
# (C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\SAPP_Device.c
# -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D SAPP_ZSTACK
# -lC
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00000800 -DZDAPP_CONFIG_PAN_ID=0x0527
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\SAPP_Device.lst
# Object file =
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\SAPP_Device.r51
#
###############################################################################
C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\SAPP_Device.c
1 #if defined(SAPP_ZSTACK)
2 #include "SAPP_Device.h"
3 #include "hal_io.h"
4 #include <string.h>
5
6 /**************************************************************/
7 /* 传感器列表 */
8 /**************************************************************/
9 /********************************/
10 /* 燃气传感器 */
11 /********************************/
12 #if defined(HAS_GAS)
13 #define GAS_IO_GROUP 0
14 #define GAS_IO_BIT 0
15 void sensorGasResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
16 void sensorGasResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
17 {
18 if(type == ResInit)
19 {
20 HalIOSetInput(GAS_IO_GROUP, GAS_IO_BIT, Pull_Down);
21 HalIOIntSet(ep->ep, GAS_IO_GROUP, GAS_IO_BIT, IOInt_Rising, 0);
22 }
23 //IO端口中断触发中断源检测
24 if(type == ResIOInt)
25 {
26 uint8 GasValue = 1;
27 SendData(ep->ep, &GasValue, 0x0000, TRANSFER_ENDPOINT, sizeof(GasValue));
28 }
29 }
30 void sensorGasTimeout(struct ep_info_t *ep);
31 void sensorGasTimeout(struct ep_info_t *ep)
32 {
33 uint8 value = HalIOGetLevel(GAS_IO_GROUP, GAS_IO_BIT);
34 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
35 }
36 #endif
37 /********************************/
38 /* 温度传感器 */
39 /********************************/
40 #if defined(HAS_TEMP) || defined(HAS_HUMM)
41 #include "sht10.h"
42 static uint16 TempValue = 0;
43 #endif
44 #if defined(HAS_TEMP)
45 void sensorTempResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
46 void sensorTempResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
47 {
48 if(type == ResInit)
49 {
50 SHT10_init(0x01);
51 }
52 }
53 void sensorTempTimeout(struct ep_info_t *ep);
54 void sensorTempTimeout(struct ep_info_t *ep)
55 {
56 unsigned int value = 0;
57 unsigned char checksum = 0;
58 SHT10_Measure(&value,&checksum, TEMPERATURE);
59 TempValue = (value << 2) - 3960;
60 SendData(ep->ep, &TempValue, 0x0000, TRANSFER_ENDPOINT, sizeof(TempValue));
61 }
62 #endif
63 /********************************/
64 /* 湿度传感器 */
65 /********************************/
66 #if defined(HAS_HUMM)
67 void sensorHummResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
68 void sensorHummResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
69 {
70 if(type == ResInit)
71 {
72 SHT10_init(0x01);
73 }
74 }
75 void sensorHummTimeout(struct ep_info_t *ep);
76 void sensorHummTimeout(struct ep_info_t *ep)
77 {
78 const float C1 = -4.0f; // for 8 Bit
79 const float C2 = +0.648f; // for 8 Bit
80 const float C3 = -0.0000072f; // for 8 Bit
81 const float T1 = 0.01f; // for 8 bit
82 const float T2 = 0.00128f; // for 8 bit
83 float rh_lin = 0.0f; // rh_lin: Humidity linear
84 float rh_true = 0.0f; // rh_true: Temperature compensated humidity
85 float t_C = 0.0f; // t_C : Temperature []
86
87 unsigned int HumiValue = 0;
88 unsigned char checksum = 0;
89 SHT10_Measure(&HumiValue,&checksum, HUMIDITY);
90 rh_lin=C3*HumiValue*HumiValue + C2*HumiValue + C1; //calc. humidity from ticks to [%RH]
91 rh_true=(t_C-25)*(T1+T2*HumiValue)+rh_lin; //calc. temperature compensated humidity [%RH]
92 if(rh_true>100)
93 rh_true=100; //cut if the value is outside of
94 if(rh_true<0.1)
95 rh_true=0.1f; //the physical possible range
96 HumiValue = (unsigned int)(rh_true * 100);
97 SendData(ep->ep, &HumiValue, 0x0000, TRANSFER_ENDPOINT, sizeof(HumiValue));
98 }
99 #endif
100 /********************************/
101 /* 雨滴传感器 */
102 /********************************/
103 #if defined(HAS_RAIN)
104 #define RAIN_IO_GROUP 0
105 #define RAIN_IO_BIT 0
106 void sensorRainResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
107 void sensorRainResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
108 {
109 if(type == ResInit)
110 {
111 HalIOSetInput(RAIN_IO_GROUP, RAIN_IO_BIT, Pull_None);
112 HalIOIntSet(ep->ep, RAIN_IO_GROUP, RAIN_IO_BIT, IOInt_Rising, 0);
113 }
114 //IO端口中断触发中断源检测
115 if(type == ResIOInt)
116 {
117 uint8 RainValue = 1;
118 SendData(ep->ep, &RainValue, 0x0000, TRANSFER_ENDPOINT, sizeof(RainValue));
119 }
120 }
121 void sensorRainTimeout(struct ep_info_t *ep);
122 void sensorRainTimeout(struct ep_info_t *ep)
123 {
124 uint8 value = HalIOGetLevel(RAIN_IO_GROUP, RAIN_IO_BIT);
125 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
126 }
127 #endif
128 /********************************/
129 /* 火焰传感器 */
130 /********************************/
131 #if defined(HAS_FIRE)
132 #define FIRE_IO_GROUP 0
133 #define FIRE_IO_BIT 0
134 void sensorFireResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
135 void sensorFireResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
136 {
137 if(type == ResInit)
138 {
139 HalIOSetInput(FIRE_IO_GROUP, FIRE_IO_BIT, Pull_Down);
140 HalIOIntSet(ep->ep, FIRE_IO_GROUP, FIRE_IO_BIT, IOInt_Rising, 0);
141 }
142 //IO端口中断触发中断源检测
143 if(type == ResIOInt)
144 {
145 uint8 FireValue = 1;
146 SendData(ep->ep, &FireValue, 0x0000, TRANSFER_ENDPOINT, sizeof(FireValue));
147 }
148 }
149 void sensorFireTimeout(struct ep_info_t *ep);
150 void sensorFireTimeout(struct ep_info_t *ep)
151 {
152 uint8 value = HalIOGetLevel(FIRE_IO_GROUP, FIRE_IO_BIT);
153 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
154 }
155 #endif
156 /********************************/
157 /* 烟雾传感器 */
158 /********************************/
159 #if defined(HAS_SMOKE)
160 #define SMOKE_IO_GROUP 0
161 #define SMOKE_IO_BIT 0
162 void sensorSmokeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
163 void sensorSmokeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
164 {
165 if(type == ResInit)
166 {
167 HalIOSetInput(SMOKE_IO_GROUP, SMOKE_IO_BIT, Pull_Down);
168 HalIOIntSet(ep->ep, SMOKE_IO_GROUP, SMOKE_IO_BIT, IOInt_Rising, 0);
169 }
170 //IO端口中断触发中断源检测
171 if(type == ResIOInt)
172 {
173 uint8 SmokeValue = 1;
174 SendData(ep->ep, &SmokeValue, 0x0000, TRANSFER_ENDPOINT, sizeof(SmokeValue));
175 }
176 }
177 void sensorSmokeTimeout(struct ep_info_t *ep);
178 void sensorSmokeTimeout(struct ep_info_t *ep)
179 {
180 uint8 value = HalIOGetLevel(SMOKE_IO_GROUP, SMOKE_IO_BIT);
181 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
182 }
183 #endif
184 /********************************/
185 /* 光照度传感器 */
186 /********************************/
187 #if defined(HAS_ILLUM)
188 #include "hal_adc.h"
189 void sensorILLumTimeout(struct ep_info_t *ep);
190 void sensorILLumTimeout(struct ep_info_t *ep)
191 {
192 uint16 LightValue = 256 - (HalAdcRead(0, HAL_ADC_RESOLUTION_14) >> 3);
193 // 将AD值变换为光照度的100倍
194 LightValue = LightValue * 39;// * 10000 / 256;
195 SendData(ep->ep, &LightValue, 0x0000, TRANSFER_ENDPOINT, sizeof(LightValue));
196 }
197 #endif
198 /********************************/
199 /* 安防传感器 */
200 /********************************/
201 #if defined(HAS_IRPERS)
202 #define SAFTY_IO_GROUP 1
203 #define SAFTY_IO_BIT 0
204 void sensorIRPersResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
205 void sensorIRPersResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
206 {
207 if(type == ResInit)
208 {
209 HalIOSetInput(SAFTY_IO_GROUP, SAFTY_IO_BIT, Pull_Down);
210 HalIOIntSet(ep->ep, SAFTY_IO_GROUP, SAFTY_IO_BIT, IOInt_Rising, 0);
211 }
212 //IO端口中断触发中断源检测
213 if(type == ResIOInt)
214 {
215 uint8 IRPersValue = 1;
216 SendData(ep->ep, &IRPersValue, 0x0000, TRANSFER_ENDPOINT, sizeof(IRPersValue));
217 }
218 }
219 void sensorIRPersTimeout(struct ep_info_t *ep);
220 void sensorIRPersTimeout(struct ep_info_t *ep)
221 {
222 uint8 value = HalIOGetLevel(SAFTY_IO_GROUP, SAFTY_IO_BIT);
223 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
224 }
225 #endif
226 /********************************/
227 /* 红外测距传感器 */
228 /********************************/
229 #if defined(HAS_IRDIST)
230 #include "hal_adc.h"
231 extern uint16 irDistTab[256];
232 void sensorIRDistTimeout(struct ep_info_t *ep);
233 void sensorIRDistTimeout(struct ep_info_t *ep)
234 {
235 uint8 value = HalAdcRead(0, HAL_ADC_RESOLUTION_14) >> 3;
236 // 计算距离值value的单位为mm
237 uint16 IRDistValue = irDistTab[value];
238 SendData(ep->ep, &IRDistValue, 0x0000, TRANSFER_ENDPOINT, sizeof(IRDistValue));
239 }
240 #endif
241 /********************************/
242 /* 语音传感器 */
243 /********************************/
244 #if defined(HAS_VOICE)
245 #include "hal_uart.h"
246 static struct ep_info_t *voiceEndPoint = NULL;
247 static uint8 LastVoiceData = 0;
248 static void sensorVoiceUartProcess( uint8 port, uint8 event );
249 static void sensorVoiceUartProcess( uint8 port, uint8 event )
250 {
251 (void)event; // Intentionally unreferenced parameter
252 while (Hal_UART_RxBufLen(port))
253 {
254 HalUARTRead(port, &LastVoiceData, 1);
255 if(LastVoiceData == 0xAA)
256 LastVoiceData = 1;
257 else if(LastVoiceData == 0x55)
258 LastVoiceData = 0;
259 else
260 LastVoiceData = -1;
261 if(voiceEndPoint != NULL)
262 SendData(voiceEndPoint->ep, &LastVoiceData, 0x0000, TRANSFER_ENDPOINT, 1);
263 }
264 }
265 void sensorVoiceNwkStateChange(struct ep_info_t *ep);
266 void sensorVoiceNwkStateChange(struct ep_info_t *ep)
267 {
268 voiceEndPoint = ep;
269 }
270 void sensorVoiceResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
271 void sensorVoiceResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
272 {
273 if(type == ResInit)
274 {
275 halUARTCfg_t uartConfig;
276
277 voiceEndPoint = ep;
278 /* UART Configuration */
279 uartConfig.configured = TRUE;
280 uartConfig.baudRate = HAL_UART_BR_9600;
281 uartConfig.flowControl = FALSE;
282 uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
283 uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
284 uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
285 uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
286 uartConfig.intEnable = TRUE;
287 uartConfig.callBackFunc = sensorVoiceUartProcess;
288 HalUARTOpen(HAL_UART_PORT_1, &uartConfig);
289 }
290 }
291 void sensorVoiceTimeout(struct ep_info_t *ep);
292 void sensorVoiceTimeout(struct ep_info_t *ep)
293 {
294 uint8 nulData = 0;
295 SendData(ep->ep, &nulData, 0x0000, TRANSFER_ENDPOINT, 1);
296 }
297 #endif
298 /********************************/
299 /* 二进制执行器传感器 */
300 /********************************/
301 #if defined(HAS_EXECUTEB)
302 #define ControlInit() do { HalIOSetOutput(1,4);HalIOSetOutput(1,5);HalIOSetOutput(1,6);HalIOSetOutput(1,7);Control(0); } while(0)
303 #define Control(mask) do { HalIOSetLevel(1,4,mask&0x01);HalIOSetLevel(1,5,mask&0x02);HalIOSetLevel(1,6,mask&0x04);HalIOSetLevel(1,7,mask&0x08); } while(0)
304 void OutputExecuteBResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
305 void OutputExecuteBResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
306 {
307 if(type == ResInit)
308 ControlInit();
309 }
310 void outputExecuteB(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
311 void outputExecuteB(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
312 {
313 //msg->Data[], msg->DataLength, msg->TransSeqNumber
314 Control(msg->Data[0]);
315 SendData(ep->ep, &msg->Data[0], 0x0000, TRANSFER_ENDPOINT, 1);
316 }
317 void outputExecuteBTimeout(struct ep_info_t *ep);
318 void outputExecuteBTimeout(struct ep_info_t *ep)
319 {
320 uint8 value = P1 >> 4;
321 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
322 }
323 #endif
324 /********************************/
325 /* 模拟执行器传感器 */
326 /********************************/
327 #if defined(HAS_EXECUTEA)
328 void outputExecuteA(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
329 void outputExecuteA(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
330 {
331 }
332 #endif
333 /********************************/
334 /* 遥控器传感器 */
335 /********************************/
336 #if defined(HAS_REMOTER)
337 #include "IR.h"
338 static uint8 lastCode[32];
339 static uint8 lastCodeLen = 0;
340 void IRSendResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
341 void IRSendResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
342 {
343 if(type == ResInit)
344 IRSendInit(); // 需要初始化
345 }
346 void outputRemoter(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
347 void outputRemoter(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
348 {
349 lastCodeLen = msg->Data[0];
350 memcpy(lastCode, &msg->Data[1], lastCodeLen);
351 GenIR(&msg->Data[1], IRGuideLen_9ms, (uint8)lastCodeLen);
352 SendData(ep->ep, lastCode, 0x0000, TRANSFER_ENDPOINT, lastCodeLen>>3);
353 }
354 void outputRemoterTimeout(struct ep_info_t *ep);
355 void outputRemoterTimeout(struct ep_info_t *ep)
356 {
357 if(lastCodeLen <= 0)
358 {
359 uint8 value = 0;
360 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, 1);
361 }
362 else
363 SendData(ep->ep, lastCode, 0x0000, TRANSFER_ENDPOINT, lastCodeLen>>3);
364 }
365 #endif
366 /********************************/
367 /* 虚拟功能 */
368 /********************************/
369 #if defined(HAS_TESTFUNCTION)
370 #define TEST_STRING "Z-Stack for SAPP"
371 static uint8 lastData[119] = TEST_STRING;
372 static uint8 lastLen = 0;
373 void testFunc_RecvData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
374 void testFunc_RecvData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
375 {
376 lastLen = msg->DataLength;
377 memcpy(&lastData[sizeof(TEST_STRING) - 1], msg->Data, lastLen);
378 SendData(ep->ep, lastData, 0x0000, TRANSFER_ENDPOINT,
379 lastLen + sizeof(TEST_STRING) - 1);
380 }
381 void testFunc_TimeOut(struct ep_info_t *ep);
382 void testFunc_TimeOut(struct ep_info_t *ep)
383 {
384 SendData(ep->ep, lastData, 0x0000, TRANSFER_ENDPOINT,
385 lastLen + sizeof(TEST_STRING) - 1);
386 }
387 #endif
388 /********************************/
389 /* 广播发送功能 */
390 /********************************/
391 #if defined(HAS_BROADCASTSEND)
392 #define BROADCAST_STRING "\r\nBroadcast Message\r\n"
393 void BroadcastSend_TimeOut(struct ep_info_t *ep);
394 void BroadcastSend_TimeOut(struct ep_info_t *ep)
395 {
396 SendData(ep->ep, BROADCAST_STRING, 0XFFFF, TRANSFER_ENDPOINT,
397 sizeof(BROADCAST_STRING) - 1);
398 //广播后指示灯 LED_D9 闪烁2次
399 HalLedBlink( HAL_LED_2, 2, 50, 100 );
400 }
401 #endif
402 /********************************/
403 /* 广播接收功能 */
404 /********************************/
405 #if defined(HAS_BROADCASTRECEIVE)
406 void BroadcastReceiveData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
407 void BroadcastReceiveData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
408 {
409 //收到广播数据后 LED_D8 连续闪烁4次!
410 HalLedBlink( HAL_LED_1, 4, 50, 120 );
411 HalUARTWrite(HAL_UART_PORT_0, msg->Data, msg->DataLength);
412 }
413 #define BROADCAST_STRING "Broadcast Message"
414 void BroadcastSend_TimeOut(struct ep_info_t *ep);
415 void BroadcastSend_TimeOut(struct ep_info_t *ep)
416 {
417 SendData(ep->ep, BROADCAST_STRING, 0X0000, TRANSFER_ENDPOINT,
418 sizeof(BROADCAST_STRING) - 1);
419 }
420 #endif
421 /********************************/
422 /* IC卡读卡器 */
423 /********************************/
424 #if defined(HAS_125KREADER)
425 #include "hal_uart.h"
426 #define CARDID_SIZE 5 // 卡号长度
427 static uint8 lastCardId[CARDID_SIZE]; // 用来保存接收到的卡号
428 static uint8 cardRecvIdx; // 上一次接收到的长度
429 static uint32 lastTick; // 上一次接收数据的系统时间
430 static struct ep_info_t *cardEndPoint;
431 static void sensor125kReaderUartProcess( uint8 port, uint8 event );
432 static void sensor125kReaderUartProcess( uint8 port, uint8 event )
433 {
434 (void)event; // Intentionally unreferenced parameter
435 if((lastTick + 100) <= osal_GetSystemClock())
436 { // 如果本次接收到的时间距离上次超过了0.1秒
437 cardRecvIdx = 0; // 则清空计数器,重新接收卡号
438 }
439 lastTick = osal_GetSystemClock(); // 记录下当前的时间
440 while (Hal_UART_RxBufLen(port))
441 {
442 uint16 restLen = Hal_UART_RxBufLen(port);
443 if(restLen > (CARDID_SIZE - cardRecvIdx))
444 restLen = CARDID_SIZE - cardRecvIdx;
445 HalUARTRead(port, &lastCardId[cardRecvIdx], restLen);
446 cardRecvIdx += restLen;
447 if(cardRecvIdx >= CARDID_SIZE) // 如果已经接收完成一个完整的卡号
448 { // 则发送给协调器
449 SendData(cardEndPoint->ep, lastCardId, 0x0000, TRANSFER_ENDPOINT, CARDID_SIZE);
450 }
451 }
452 }
453 void sensor125kReaderResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
454 void sensor125kReaderResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
455 {
456 if(type == ResInit)
457 {
458 halUARTCfg_t uartConfig;
459
460 memset(lastCardId, 0, sizeof(lastCardId));
461 cardRecvIdx = 0;
462 cardEndPoint = ep;
463 /* UART Configuration */
464 uartConfig.configured = TRUE;
465 uartConfig.baudRate = HAL_UART_BR_19200;
466 uartConfig.flowControl = FALSE;
467 uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
468 uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
469 uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
470 uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
471 uartConfig.intEnable = TRUE;
472 uartConfig.callBackFunc = sensor125kReaderUartProcess;
473 HalUARTOpen(HAL_UART_PORT_0, &uartConfig);
474 }
475 }
476 void sensor125kReaderTimeout(struct ep_info_t *ep);
477 void sensor125kReaderTimeout(struct ep_info_t *ep)
478 {
479 uint8 nullId[CARDID_SIZE] = { 0x00 };
480 SendData(cardEndPoint->ep, nullId, 0x0000, TRANSFER_ENDPOINT, CARDID_SIZE);
481 }
482 #endif
483 /********************************/
484 /* 语音播放节点 */
485 /********************************/
486 #if defined(HAS_SPEAKER)
487 void OutputSpeakerResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
488 void OutputSpeakerResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
489 {
490 if(type == ResInit)
491 HalUART1HwInit();
492 }
493 void outputSpeaker(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
494 void outputSpeaker(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
495 {
496 //msg->Data[], msg->DataLength, msg->TransSeqNumber
497 HalUART1HwTxByte(msg->Data[0]);
498 // SendData(ep->ep, &msg->Data[0], 0x0000, TRANSFER_ENDPOINT, 1);
499 }
500 void outputSpeakerTimeout(struct ep_info_t *ep);
501 void outputSpeakerTimeout(struct ep_info_t *ep)
502 {
503 uint8 value = 0;
504 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
505 }
506 #endif
507 /********************************/
508 /* 红外接收解码 */
509 /********************************/
510 #if defined(HAS_IRDecode)
511 #include <hal_irdec.h>
512 void IRDecodeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
513 void IRDecodeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
514 {
515 if(type == ResInit)
516 {
517 IRDecodeT1Init(ep->task_id, ep->ep);
518 }
519 //定时器1通道0一次红外解码结束,向上传送解码结果
520 if(type == ResTimerInt)
521 {
522 OSALIRDecData_t *irData = (OSALIRDecData_t *)res;
523 SendData(ep->ep, irData->irCode, 0x0000, TRANSFER_ENDPOINT, irData->irLen);
524 }
525 }
526 void IRDecodeTimeout(struct ep_info_t *ep);
527 void IRDecodeTimeout(struct ep_info_t *ep)
528 {
529 uint8 value = 0;
530 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
531 }
532 #endif
533 /***************************************************/
534 /* 节点功能列表 */
535 /***************************************************/
\ In segment XDATA_I, align 1, keep-with-next
536 struct ep_info_t funcList[] = {
\ funcList:
\ 000000 DS 33
\ 000021 REQUIRE `?<Initializer for funcList>`
\ 000021 REQUIRE __INIT_XDATA_I
537 #if defined(HAS_GAS)
538 {
539 // 加入网络,收到数据,超时处理,资源变化
540 NULL, NULL, sensorGasTimeout, sensorGasResAvailable,
541 { DevGas, 0, 5 }, // type, id, refresh cycle
542 },
543 #endif
544 #if defined(HAS_TEMP)
545 {
546 NULL, NULL, sensorTempTimeout, sensorTempResAvailable,
547 { DevTemp, 1, 5 }, // type, id, refresh cycle
548 },
549 #endif
550 #if defined(HAS_HUMM)
551 {
552 NULL, NULL, sensorHummTimeout, sensorHummResAvailable,
553 { DevHumm, 0, 5 }, // type, id, refresh cycle
554 },
555 #endif
556 #if defined(HAS_ILLUM)
557 {
558 NULL, NULL, sensorILLumTimeout, NULL,
559 { DevILLum, 0, 3 }, // type, id, refresh cycle
560 },
561 #endif
562 #if defined(HAS_RAIN)
563 {
564 NULL, NULL, sensorRainTimeout, sensorRainResAvailable,
565 { DevRain, 0, 5 }, // type, id, refresh cycle
566 },
567 #endif
568 #if defined(HAS_IRDIST)
569 {
570 NULL, NULL, sensorIRDistTimeout, NULL,
571 { DevIRDist, 0, 3 }, // type, id, refresh cycle
572 },
573 #endif
574 #if defined(HAS_SMOKE)
575 {
576 NULL, NULL, sensorSmokeTimeout, sensorSmokeResAvailable,
577 { DevSmoke, 0, 5 }, // type, id, refresh cycle
578 },
579 #endif
580 #if defined(HAS_FIRE)
581 {
582 NULL, NULL, sensorFireTimeout, sensorFireResAvailable,
583 { DevFire, 0, 3 }, // type, id, refresh cycle
584 },
585 #endif
586 #if defined(HAS_IRPERS)
587 {
588 NULL, NULL, sensorIRPersTimeout, sensorIRPersResAvailable,
589 { DevIRPers, 0, 2 }, // type, id, refresh cycle
590 },
591 #endif
592 #if defined(HAS_VOICE)
593 {
594 sensorVoiceNwkStateChange, NULL, sensorVoiceTimeout, sensorVoiceResAvailable,
595 { DevVoice, 0, 5 }, // type, id, refresh cycle
596 },
597 #endif
598 #if defined(HAS_EXECUTEB)
599 {
600 NULL, outputExecuteB, outputExecuteBTimeout, OutputExecuteBResAvailable,
601 { DevExecuteB, 3, 10 }, // type, id, refresh cycle
602 },
603 #endif
604 #if defined(HAS_EXECUTEA)
605 {
606 NULL, outputExecuteA, NULL, NULL,
607 { DevExecuteA, 0, 3 }, // type, id, refresh cycle
608 },
609 #endif
610 #if defined(HAS_REMOTER)
611 {
612 NULL, outputRemoter, outputRemoterTimeout, IRSendResAvailable,
613 { DevRemoter, 0, 3 }, // type, id, refresh cycle
614 },
615 #endif
616 #if defined(HAS_TESTFUNCTION)
617 {
618 NULL,
619 testFunc_RecvData,
620 testFunc_TimeOut,
621 NULL,
622 { DevTest, 0, 3 },
623 },
624 #endif
625 #if defined(HAS_BROADCASTSEND)
626 {
627 NULL,
628 NULL,
629 BroadcastSend_TimeOut,
630 NULL,
631 { DevBroadcastSend, 0, 3 },
632 },
633 #endif
634 #if defined(HAS_BROADCASTRECEIVE)
635 {
636 NULL,
637 BroadcastReceiveData,
638 BroadcastSend_TimeOut,
639 NULL,
640 { DevBroadcastReceive, 0, 30 },
641 },
642 #endif
643 #if defined(HAS_125KREADER)
644 {
645 NULL, NULL, sensor125kReaderTimeout, sensor125kReaderResAvailable,
646 { Dev125kReader, 0, 10 },
647 },
648 #endif
649 #if defined(HAS_SPEAKER)
650 {
651 NULL, outputSpeaker, outputSpeakerTimeout, OutputSpeakerResAvailable,
652 { DevSpeaker, 0, 9 }, // type, id, refresh cycle
653 },
654 #endif
655 #if defined(HAS_IRDecode)
656 {
657 NULL, NULL, IRDecodeTimeout, IRDecodeResAvailable,
658 { DevIRDecode, 0, 5 }, // type, id, refresh cycle
659 },
660 #endif
661 #if defined(ZDO_COORDINATOR)
662 { // 协调器
663 CoordinatorNwkStateChangeRoutine,
664 CoordinatorIncomingRoutine,
665 CoordinatorTimeoutRoutine,
666 CoordinatorResAvailableRoutine,
667 { DevCoordinator, 0, 0 },
668 },
669 #elif defined(RTR_NWK)
670 { // 路由器
671 RouterNwkStateChangeRoutine,
672 RouterIncomingRoutine,
673 RouterTimeoutRoutine,
674 RouterResAvailableRoutine,
675 { DevRouter, 0, 30 },
676 },
677 #endif
678 };
679
680 // 不能修改下面的内容!!!
\ In segment XDATA_ROM_C, align 1
681 const uint8 funcCount = sizeof(funcList) / sizeof(funcList[0]);
\ funcCount:
\ 000000 01 DB 1
\ In segment XDATA_ID, align 1, keep-with-next
\ `?<Initializer for funcList>`:
\ 000000 0000 DW 0H
\ 000002 .... DW `??CoordinatorIncomingRoutine::?relay`
\ 000004 0000 DW 0H
\ 000006 0000 DW 0H
\ 000008 F1 DB 241
\ 000009 00 DB 0
\ 00000A 00 DB 0
\ 00000B 00000000 DB 0, 0, 0, 0, 0, 0, 0, 0
\ 00000000
\ 000013 00000000 DB 0, 0, 0, 0, 0, 0, 0, 0
\ 00000000
\ 00001B 00000000 DB 0, 0, 0, 0, 0, 0
\ 0000
682 #endif
Segment part sizes:
Bytes Function/Label
----- --------------
33 ?<Initializer for funcList>
1 funcCount
33 funcList
33 bytes in segment XDATA_I
33 bytes in segment XDATA_ID
1 byte in segment XDATA_ROM_C
33 bytes of CODE memory
1 byte of CONST memory
33 bytes of XDATA memory
Errors: none
Warnings: none

View File

@@ -1,849 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 21/May/2019 10:27:34
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\SAPP_Device.c
// Command line =
// -f C:\Users\97110\AppData\Local\Temp\EWFF96.tmp
// (C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\SAPP_Device.c
// -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D SAPP_ZSTACK
// -lC
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00000800 -DZDAPP_CONFIG_PAN_ID=0x0527
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\SAPP_Device.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME SAPP_Device
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
EXTERN __INIT_XDATA_I
PUBLIC funcCount
PUBLIC funcList
`?<Name CoordinatorIncomingR 0>` SYMBOL "CoordinatorIncomingRoutine"
`??CoordinatorIncomingRoutine::?relay` SYMBOL "?relay", `?<Name CoordinatorIncomingR 0>`
EXTERN `??CoordinatorIncomingRoutine::?relay`
FUNCTION `??CoordinatorIncomingRoutine::?relay`,00H
// C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\SAPP_Device.c
// 1 #if defined(SAPP_ZSTACK)
// 2 #include "SAPP_Device.h"
// 3 #include "hal_io.h"
// 4 #include <string.h>
// 5
// 6 /**************************************************************/
// 7 /* 传感器列表 */
// 8 /**************************************************************/
// 9 /********************************/
// 10 /* 燃气传感器 */
// 11 /********************************/
// 12 #if defined(HAS_GAS)
// 13 #define GAS_IO_GROUP 0
// 14 #define GAS_IO_BIT 0
// 15 void sensorGasResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 16 void sensorGasResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 17 {
// 18 if(type == ResInit)
// 19 {
// 20 HalIOSetInput(GAS_IO_GROUP, GAS_IO_BIT, Pull_Down);
// 21 HalIOIntSet(ep->ep, GAS_IO_GROUP, GAS_IO_BIT, IOInt_Rising, 0);
// 22 }
// 23 //IO端口中断触发中断源检测
// 24 if(type == ResIOInt)
// 25 {
// 26 uint8 GasValue = 1;
// 27 SendData(ep->ep, &GasValue, 0x0000, TRANSFER_ENDPOINT, sizeof(GasValue));
// 28 }
// 29 }
// 30 void sensorGasTimeout(struct ep_info_t *ep);
// 31 void sensorGasTimeout(struct ep_info_t *ep)
// 32 {
// 33 uint8 value = HalIOGetLevel(GAS_IO_GROUP, GAS_IO_BIT);
// 34 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 35 }
// 36 #endif
// 37 /********************************/
// 38 /* 温度传感器 */
// 39 /********************************/
// 40 #if defined(HAS_TEMP) || defined(HAS_HUMM)
// 41 #include "sht10.h"
// 42 static uint16 TempValue = 0;
// 43 #endif
// 44 #if defined(HAS_TEMP)
// 45 void sensorTempResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 46 void sensorTempResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 47 {
// 48 if(type == ResInit)
// 49 {
// 50 SHT10_init(0x01);
// 51 }
// 52 }
// 53 void sensorTempTimeout(struct ep_info_t *ep);
// 54 void sensorTempTimeout(struct ep_info_t *ep)
// 55 {
// 56 unsigned int value = 0;
// 57 unsigned char checksum = 0;
// 58 SHT10_Measure(&value,&checksum, TEMPERATURE);
// 59 TempValue = (value << 2) - 3960;
// 60 SendData(ep->ep, &TempValue, 0x0000, TRANSFER_ENDPOINT, sizeof(TempValue));
// 61 }
// 62 #endif
// 63 /********************************/
// 64 /* 湿度传感器 */
// 65 /********************************/
// 66 #if defined(HAS_HUMM)
// 67 void sensorHummResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 68 void sensorHummResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 69 {
// 70 if(type == ResInit)
// 71 {
// 72 SHT10_init(0x01);
// 73 }
// 74 }
// 75 void sensorHummTimeout(struct ep_info_t *ep);
// 76 void sensorHummTimeout(struct ep_info_t *ep)
// 77 {
// 78 const float C1 = -4.0f; // for 8 Bit
// 79 const float C2 = +0.648f; // for 8 Bit
// 80 const float C3 = -0.0000072f; // for 8 Bit
// 81 const float T1 = 0.01f; // for 8 bit
// 82 const float T2 = 0.00128f; // for 8 bit
// 83 float rh_lin = 0.0f; // rh_lin: Humidity linear
// 84 float rh_true = 0.0f; // rh_true: Temperature compensated humidity
// 85 float t_C = 0.0f; // t_C : Temperature []
// 86
// 87 unsigned int HumiValue = 0;
// 88 unsigned char checksum = 0;
// 89 SHT10_Measure(&HumiValue,&checksum, HUMIDITY);
// 90 rh_lin=C3*HumiValue*HumiValue + C2*HumiValue + C1; //calc. humidity from ticks to [%RH]
// 91 rh_true=(t_C-25)*(T1+T2*HumiValue)+rh_lin; //calc. temperature compensated humidity [%RH]
// 92 if(rh_true>100)
// 93 rh_true=100; //cut if the value is outside of
// 94 if(rh_true<0.1)
// 95 rh_true=0.1f; //the physical possible range
// 96 HumiValue = (unsigned int)(rh_true * 100);
// 97 SendData(ep->ep, &HumiValue, 0x0000, TRANSFER_ENDPOINT, sizeof(HumiValue));
// 98 }
// 99 #endif
// 100 /********************************/
// 101 /* 雨滴传感器 */
// 102 /********************************/
// 103 #if defined(HAS_RAIN)
// 104 #define RAIN_IO_GROUP 0
// 105 #define RAIN_IO_BIT 0
// 106 void sensorRainResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 107 void sensorRainResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 108 {
// 109 if(type == ResInit)
// 110 {
// 111 HalIOSetInput(RAIN_IO_GROUP, RAIN_IO_BIT, Pull_None);
// 112 HalIOIntSet(ep->ep, RAIN_IO_GROUP, RAIN_IO_BIT, IOInt_Rising, 0);
// 113 }
// 114 //IO端口中断触发中断源检测
// 115 if(type == ResIOInt)
// 116 {
// 117 uint8 RainValue = 1;
// 118 SendData(ep->ep, &RainValue, 0x0000, TRANSFER_ENDPOINT, sizeof(RainValue));
// 119 }
// 120 }
// 121 void sensorRainTimeout(struct ep_info_t *ep);
// 122 void sensorRainTimeout(struct ep_info_t *ep)
// 123 {
// 124 uint8 value = HalIOGetLevel(RAIN_IO_GROUP, RAIN_IO_BIT);
// 125 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 126 }
// 127 #endif
// 128 /********************************/
// 129 /* 火焰传感器 */
// 130 /********************************/
// 131 #if defined(HAS_FIRE)
// 132 #define FIRE_IO_GROUP 0
// 133 #define FIRE_IO_BIT 0
// 134 void sensorFireResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 135 void sensorFireResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 136 {
// 137 if(type == ResInit)
// 138 {
// 139 HalIOSetInput(FIRE_IO_GROUP, FIRE_IO_BIT, Pull_Down);
// 140 HalIOIntSet(ep->ep, FIRE_IO_GROUP, FIRE_IO_BIT, IOInt_Rising, 0);
// 141 }
// 142 //IO端口中断触发中断源检测
// 143 if(type == ResIOInt)
// 144 {
// 145 uint8 FireValue = 1;
// 146 SendData(ep->ep, &FireValue, 0x0000, TRANSFER_ENDPOINT, sizeof(FireValue));
// 147 }
// 148 }
// 149 void sensorFireTimeout(struct ep_info_t *ep);
// 150 void sensorFireTimeout(struct ep_info_t *ep)
// 151 {
// 152 uint8 value = HalIOGetLevel(FIRE_IO_GROUP, FIRE_IO_BIT);
// 153 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 154 }
// 155 #endif
// 156 /********************************/
// 157 /* 烟雾传感器 */
// 158 /********************************/
// 159 #if defined(HAS_SMOKE)
// 160 #define SMOKE_IO_GROUP 0
// 161 #define SMOKE_IO_BIT 0
// 162 void sensorSmokeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 163 void sensorSmokeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 164 {
// 165 if(type == ResInit)
// 166 {
// 167 HalIOSetInput(SMOKE_IO_GROUP, SMOKE_IO_BIT, Pull_Down);
// 168 HalIOIntSet(ep->ep, SMOKE_IO_GROUP, SMOKE_IO_BIT, IOInt_Rising, 0);
// 169 }
// 170 //IO端口中断触发中断源检测
// 171 if(type == ResIOInt)
// 172 {
// 173 uint8 SmokeValue = 1;
// 174 SendData(ep->ep, &SmokeValue, 0x0000, TRANSFER_ENDPOINT, sizeof(SmokeValue));
// 175 }
// 176 }
// 177 void sensorSmokeTimeout(struct ep_info_t *ep);
// 178 void sensorSmokeTimeout(struct ep_info_t *ep)
// 179 {
// 180 uint8 value = HalIOGetLevel(SMOKE_IO_GROUP, SMOKE_IO_BIT);
// 181 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 182 }
// 183 #endif
// 184 /********************************/
// 185 /* 光照度传感器 */
// 186 /********************************/
// 187 #if defined(HAS_ILLUM)
// 188 #include "hal_adc.h"
// 189 void sensorILLumTimeout(struct ep_info_t *ep);
// 190 void sensorILLumTimeout(struct ep_info_t *ep)
// 191 {
// 192 uint16 LightValue = 256 - (HalAdcRead(0, HAL_ADC_RESOLUTION_14) >> 3);
// 193 // 将AD值变换为光照度的100倍
// 194 LightValue = LightValue * 39;// * 10000 / 256;
// 195 SendData(ep->ep, &LightValue, 0x0000, TRANSFER_ENDPOINT, sizeof(LightValue));
// 196 }
// 197 #endif
// 198 /********************************/
// 199 /* 安防传感器 */
// 200 /********************************/
// 201 #if defined(HAS_IRPERS)
// 202 #define SAFTY_IO_GROUP 1
// 203 #define SAFTY_IO_BIT 0
// 204 void sensorIRPersResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 205 void sensorIRPersResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 206 {
// 207 if(type == ResInit)
// 208 {
// 209 HalIOSetInput(SAFTY_IO_GROUP, SAFTY_IO_BIT, Pull_Down);
// 210 HalIOIntSet(ep->ep, SAFTY_IO_GROUP, SAFTY_IO_BIT, IOInt_Rising, 0);
// 211 }
// 212 //IO端口中断触发中断源检测
// 213 if(type == ResIOInt)
// 214 {
// 215 uint8 IRPersValue = 1;
// 216 SendData(ep->ep, &IRPersValue, 0x0000, TRANSFER_ENDPOINT, sizeof(IRPersValue));
// 217 }
// 218 }
// 219 void sensorIRPersTimeout(struct ep_info_t *ep);
// 220 void sensorIRPersTimeout(struct ep_info_t *ep)
// 221 {
// 222 uint8 value = HalIOGetLevel(SAFTY_IO_GROUP, SAFTY_IO_BIT);
// 223 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 224 }
// 225 #endif
// 226 /********************************/
// 227 /* 红外测距传感器 */
// 228 /********************************/
// 229 #if defined(HAS_IRDIST)
// 230 #include "hal_adc.h"
// 231 extern uint16 irDistTab[256];
// 232 void sensorIRDistTimeout(struct ep_info_t *ep);
// 233 void sensorIRDistTimeout(struct ep_info_t *ep)
// 234 {
// 235 uint8 value = HalAdcRead(0, HAL_ADC_RESOLUTION_14) >> 3;
// 236 // 计算距离值value的单位为mm
// 237 uint16 IRDistValue = irDistTab[value];
// 238 SendData(ep->ep, &IRDistValue, 0x0000, TRANSFER_ENDPOINT, sizeof(IRDistValue));
// 239 }
// 240 #endif
// 241 /********************************/
// 242 /* 语音传感器 */
// 243 /********************************/
// 244 #if defined(HAS_VOICE)
// 245 #include "hal_uart.h"
// 246 static struct ep_info_t *voiceEndPoint = NULL;
// 247 static uint8 LastVoiceData = 0;
// 248 static void sensorVoiceUartProcess( uint8 port, uint8 event );
// 249 static void sensorVoiceUartProcess( uint8 port, uint8 event )
// 250 {
// 251 (void)event; // Intentionally unreferenced parameter
// 252 while (Hal_UART_RxBufLen(port))
// 253 {
// 254 HalUARTRead(port, &LastVoiceData, 1);
// 255 if(LastVoiceData == 0xAA)
// 256 LastVoiceData = 1;
// 257 else if(LastVoiceData == 0x55)
// 258 LastVoiceData = 0;
// 259 else
// 260 LastVoiceData = -1;
// 261 if(voiceEndPoint != NULL)
// 262 SendData(voiceEndPoint->ep, &LastVoiceData, 0x0000, TRANSFER_ENDPOINT, 1);
// 263 }
// 264 }
// 265 void sensorVoiceNwkStateChange(struct ep_info_t *ep);
// 266 void sensorVoiceNwkStateChange(struct ep_info_t *ep)
// 267 {
// 268 voiceEndPoint = ep;
// 269 }
// 270 void sensorVoiceResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 271 void sensorVoiceResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 272 {
// 273 if(type == ResInit)
// 274 {
// 275 halUARTCfg_t uartConfig;
// 276
// 277 voiceEndPoint = ep;
// 278 /* UART Configuration */
// 279 uartConfig.configured = TRUE;
// 280 uartConfig.baudRate = HAL_UART_BR_9600;
// 281 uartConfig.flowControl = FALSE;
// 282 uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
// 283 uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
// 284 uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
// 285 uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
// 286 uartConfig.intEnable = TRUE;
// 287 uartConfig.callBackFunc = sensorVoiceUartProcess;
// 288 HalUARTOpen(HAL_UART_PORT_1, &uartConfig);
// 289 }
// 290 }
// 291 void sensorVoiceTimeout(struct ep_info_t *ep);
// 292 void sensorVoiceTimeout(struct ep_info_t *ep)
// 293 {
// 294 uint8 nulData = 0;
// 295 SendData(ep->ep, &nulData, 0x0000, TRANSFER_ENDPOINT, 1);
// 296 }
// 297 #endif
// 298 /********************************/
// 299 /* 二进制执行器传感器 */
// 300 /********************************/
// 301 #if defined(HAS_EXECUTEB)
// 302 #define ControlInit() do { HalIOSetOutput(1,4);HalIOSetOutput(1,5);HalIOSetOutput(1,6);HalIOSetOutput(1,7);Control(0); } while(0)
// 303 #define Control(mask) do { HalIOSetLevel(1,4,mask&0x01);HalIOSetLevel(1,5,mask&0x02);HalIOSetLevel(1,6,mask&0x04);HalIOSetLevel(1,7,mask&0x08); } while(0)
// 304 void OutputExecuteBResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 305 void OutputExecuteBResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 306 {
// 307 if(type == ResInit)
// 308 ControlInit();
// 309 }
// 310 void outputExecuteB(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
// 311 void outputExecuteB(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
// 312 {
// 313 //msg->Data[], msg->DataLength, msg->TransSeqNumber
// 314 Control(msg->Data[0]);
// 315 SendData(ep->ep, &msg->Data[0], 0x0000, TRANSFER_ENDPOINT, 1);
// 316 }
// 317 void outputExecuteBTimeout(struct ep_info_t *ep);
// 318 void outputExecuteBTimeout(struct ep_info_t *ep)
// 319 {
// 320 uint8 value = P1 >> 4;
// 321 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 322 }
// 323 #endif
// 324 /********************************/
// 325 /* 模拟执行器传感器 */
// 326 /********************************/
// 327 #if defined(HAS_EXECUTEA)
// 328 void outputExecuteA(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
// 329 void outputExecuteA(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
// 330 {
// 331 }
// 332 #endif
// 333 /********************************/
// 334 /* 遥控器传感器 */
// 335 /********************************/
// 336 #if defined(HAS_REMOTER)
// 337 #include "IR.h"
// 338 static uint8 lastCode[32];
// 339 static uint8 lastCodeLen = 0;
// 340 void IRSendResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 341 void IRSendResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 342 {
// 343 if(type == ResInit)
// 344 IRSendInit(); // 需要初始化
// 345 }
// 346 void outputRemoter(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
// 347 void outputRemoter(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
// 348 {
// 349 lastCodeLen = msg->Data[0];
// 350 memcpy(lastCode, &msg->Data[1], lastCodeLen);
// 351 GenIR(&msg->Data[1], IRGuideLen_9ms, (uint8)lastCodeLen);
// 352 SendData(ep->ep, lastCode, 0x0000, TRANSFER_ENDPOINT, lastCodeLen>>3);
// 353 }
// 354 void outputRemoterTimeout(struct ep_info_t *ep);
// 355 void outputRemoterTimeout(struct ep_info_t *ep)
// 356 {
// 357 if(lastCodeLen <= 0)
// 358 {
// 359 uint8 value = 0;
// 360 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, 1);
// 361 }
// 362 else
// 363 SendData(ep->ep, lastCode, 0x0000, TRANSFER_ENDPOINT, lastCodeLen>>3);
// 364 }
// 365 #endif
// 366 /********************************/
// 367 /* 虚拟功能 */
// 368 /********************************/
// 369 #if defined(HAS_TESTFUNCTION)
// 370 #define TEST_STRING "Z-Stack for SAPP"
// 371 static uint8 lastData[119] = TEST_STRING;
// 372 static uint8 lastLen = 0;
// 373 void testFunc_RecvData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
// 374 void testFunc_RecvData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
// 375 {
// 376 lastLen = msg->DataLength;
// 377 memcpy(&lastData[sizeof(TEST_STRING) - 1], msg->Data, lastLen);
// 378 SendData(ep->ep, lastData, 0x0000, TRANSFER_ENDPOINT,
// 379 lastLen + sizeof(TEST_STRING) - 1);
// 380 }
// 381 void testFunc_TimeOut(struct ep_info_t *ep);
// 382 void testFunc_TimeOut(struct ep_info_t *ep)
// 383 {
// 384 SendData(ep->ep, lastData, 0x0000, TRANSFER_ENDPOINT,
// 385 lastLen + sizeof(TEST_STRING) - 1);
// 386 }
// 387 #endif
// 388 /********************************/
// 389 /* 广播发送功能 */
// 390 /********************************/
// 391 #if defined(HAS_BROADCASTSEND)
// 392 #define BROADCAST_STRING "\r\nBroadcast Message\r\n"
// 393 void BroadcastSend_TimeOut(struct ep_info_t *ep);
// 394 void BroadcastSend_TimeOut(struct ep_info_t *ep)
// 395 {
// 396 SendData(ep->ep, BROADCAST_STRING, 0XFFFF, TRANSFER_ENDPOINT,
// 397 sizeof(BROADCAST_STRING) - 1);
// 398 //广播后指示灯 LED_D9 闪烁2次
// 399 HalLedBlink( HAL_LED_2, 2, 50, 100 );
// 400 }
// 401 #endif
// 402 /********************************/
// 403 /* 广播接收功能 */
// 404 /********************************/
// 405 #if defined(HAS_BROADCASTRECEIVE)
// 406 void BroadcastReceiveData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
// 407 void BroadcastReceiveData(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
// 408 {
// 409 //收到广播数据后 LED_D8 连续闪烁4次!
// 410 HalLedBlink( HAL_LED_1, 4, 50, 120 );
// 411 HalUARTWrite(HAL_UART_PORT_0, msg->Data, msg->DataLength);
// 412 }
// 413 #define BROADCAST_STRING "Broadcast Message"
// 414 void BroadcastSend_TimeOut(struct ep_info_t *ep);
// 415 void BroadcastSend_TimeOut(struct ep_info_t *ep)
// 416 {
// 417 SendData(ep->ep, BROADCAST_STRING, 0X0000, TRANSFER_ENDPOINT,
// 418 sizeof(BROADCAST_STRING) - 1);
// 419 }
// 420 #endif
// 421 /********************************/
// 422 /* IC卡读卡器 */
// 423 /********************************/
// 424 #if defined(HAS_125KREADER)
// 425 #include "hal_uart.h"
// 426 #define CARDID_SIZE 5 // 卡号长度
// 427 static uint8 lastCardId[CARDID_SIZE]; // 用来保存接收到的卡号
// 428 static uint8 cardRecvIdx; // 上一次接收到的长度
// 429 static uint32 lastTick; // 上一次接收数据的系统时间
// 430 static struct ep_info_t *cardEndPoint;
// 431 static void sensor125kReaderUartProcess( uint8 port, uint8 event );
// 432 static void sensor125kReaderUartProcess( uint8 port, uint8 event )
// 433 {
// 434 (void)event; // Intentionally unreferenced parameter
// 435 if((lastTick + 100) <= osal_GetSystemClock())
// 436 { // 如果本次接收到的时间距离上次超过了0.1秒
// 437 cardRecvIdx = 0; // 则清空计数器,重新接收卡号
// 438 }
// 439 lastTick = osal_GetSystemClock(); // 记录下当前的时间
// 440 while (Hal_UART_RxBufLen(port))
// 441 {
// 442 uint16 restLen = Hal_UART_RxBufLen(port);
// 443 if(restLen > (CARDID_SIZE - cardRecvIdx))
// 444 restLen = CARDID_SIZE - cardRecvIdx;
// 445 HalUARTRead(port, &lastCardId[cardRecvIdx], restLen);
// 446 cardRecvIdx += restLen;
// 447 if(cardRecvIdx >= CARDID_SIZE) // 如果已经接收完成一个完整的卡号
// 448 { // 则发送给协调器
// 449 SendData(cardEndPoint->ep, lastCardId, 0x0000, TRANSFER_ENDPOINT, CARDID_SIZE);
// 450 }
// 451 }
// 452 }
// 453 void sensor125kReaderResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 454 void sensor125kReaderResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 455 {
// 456 if(type == ResInit)
// 457 {
// 458 halUARTCfg_t uartConfig;
// 459
// 460 memset(lastCardId, 0, sizeof(lastCardId));
// 461 cardRecvIdx = 0;
// 462 cardEndPoint = ep;
// 463 /* UART Configuration */
// 464 uartConfig.configured = TRUE;
// 465 uartConfig.baudRate = HAL_UART_BR_19200;
// 466 uartConfig.flowControl = FALSE;
// 467 uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
// 468 uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
// 469 uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
// 470 uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
// 471 uartConfig.intEnable = TRUE;
// 472 uartConfig.callBackFunc = sensor125kReaderUartProcess;
// 473 HalUARTOpen(HAL_UART_PORT_0, &uartConfig);
// 474 }
// 475 }
// 476 void sensor125kReaderTimeout(struct ep_info_t *ep);
// 477 void sensor125kReaderTimeout(struct ep_info_t *ep)
// 478 {
// 479 uint8 nullId[CARDID_SIZE] = { 0x00 };
// 480 SendData(cardEndPoint->ep, nullId, 0x0000, TRANSFER_ENDPOINT, CARDID_SIZE);
// 481 }
// 482 #endif
// 483 /********************************/
// 484 /* 语音播放节点 */
// 485 /********************************/
// 486 #if defined(HAS_SPEAKER)
// 487 void OutputSpeakerResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 488 void OutputSpeakerResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 489 {
// 490 if(type == ResInit)
// 491 HalUART1HwInit();
// 492 }
// 493 void outputSpeaker(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg);
// 494 void outputSpeaker(struct ep_info_t *ep, uint16 addr, uint8 endPoint, afMSGCommandFormat_t *msg)
// 495 {
// 496 //msg->Data[], msg->DataLength, msg->TransSeqNumber
// 497 HalUART1HwTxByte(msg->Data[0]);
// 498 // SendData(ep->ep, &msg->Data[0], 0x0000, TRANSFER_ENDPOINT, 1);
// 499 }
// 500 void outputSpeakerTimeout(struct ep_info_t *ep);
// 501 void outputSpeakerTimeout(struct ep_info_t *ep)
// 502 {
// 503 uint8 value = 0;
// 504 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 505 }
// 506 #endif
// 507 /********************************/
// 508 /* 红外接收解码 */
// 509 /********************************/
// 510 #if defined(HAS_IRDecode)
// 511 #include <hal_irdec.h>
// 512 void IRDecodeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res);
// 513 void IRDecodeResAvailable(struct ep_info_t *ep, RES_TYPE type, void *res)
// 514 {
// 515 if(type == ResInit)
// 516 {
// 517 IRDecodeT1Init(ep->task_id, ep->ep);
// 518 }
// 519 //定时器1通道0一次红外解码结束,向上传送解码结果
// 520 if(type == ResTimerInt)
// 521 {
// 522 OSALIRDecData_t *irData = (OSALIRDecData_t *)res;
// 523 SendData(ep->ep, irData->irCode, 0x0000, TRANSFER_ENDPOINT, irData->irLen);
// 524 }
// 525 }
// 526 void IRDecodeTimeout(struct ep_info_t *ep);
// 527 void IRDecodeTimeout(struct ep_info_t *ep)
// 528 {
// 529 uint8 value = 0;
// 530 SendData(ep->ep, &value, 0x0000, TRANSFER_ENDPOINT, sizeof(value));
// 531 }
// 532 #endif
// 533 /***************************************************/
// 534 /* 节点功能列表 */
// 535 /***************************************************/
RSEG XDATA_I:XDATA:NOROOT(0)
// 536 struct ep_info_t funcList[] = {
funcList:
DATA8
DS 33
REQUIRE `?<Initializer for funcList>`
REQUIRE __INIT_XDATA_I
// 537 #if defined(HAS_GAS)
// 538 {
// 539 // 加入网络,收到数据,超时处理,资源变化
// 540 NULL, NULL, sensorGasTimeout, sensorGasResAvailable,
// 541 { DevGas, 0, 5 }, // type, id, refresh cycle
// 542 },
// 543 #endif
// 544 #if defined(HAS_TEMP)
// 545 {
// 546 NULL, NULL, sensorTempTimeout, sensorTempResAvailable,
// 547 { DevTemp, 1, 5 }, // type, id, refresh cycle
// 548 },
// 549 #endif
// 550 #if defined(HAS_HUMM)
// 551 {
// 552 NULL, NULL, sensorHummTimeout, sensorHummResAvailable,
// 553 { DevHumm, 0, 5 }, // type, id, refresh cycle
// 554 },
// 555 #endif
// 556 #if defined(HAS_ILLUM)
// 557 {
// 558 NULL, NULL, sensorILLumTimeout, NULL,
// 559 { DevILLum, 0, 3 }, // type, id, refresh cycle
// 560 },
// 561 #endif
// 562 #if defined(HAS_RAIN)
// 563 {
// 564 NULL, NULL, sensorRainTimeout, sensorRainResAvailable,
// 565 { DevRain, 0, 5 }, // type, id, refresh cycle
// 566 },
// 567 #endif
// 568 #if defined(HAS_IRDIST)
// 569 {
// 570 NULL, NULL, sensorIRDistTimeout, NULL,
// 571 { DevIRDist, 0, 3 }, // type, id, refresh cycle
// 572 },
// 573 #endif
// 574 #if defined(HAS_SMOKE)
// 575 {
// 576 NULL, NULL, sensorSmokeTimeout, sensorSmokeResAvailable,
// 577 { DevSmoke, 0, 5 }, // type, id, refresh cycle
// 578 },
// 579 #endif
// 580 #if defined(HAS_FIRE)
// 581 {
// 582 NULL, NULL, sensorFireTimeout, sensorFireResAvailable,
// 583 { DevFire, 0, 3 }, // type, id, refresh cycle
// 584 },
// 585 #endif
// 586 #if defined(HAS_IRPERS)
// 587 {
// 588 NULL, NULL, sensorIRPersTimeout, sensorIRPersResAvailable,
// 589 { DevIRPers, 0, 2 }, // type, id, refresh cycle
// 590 },
// 591 #endif
// 592 #if defined(HAS_VOICE)
// 593 {
// 594 sensorVoiceNwkStateChange, NULL, sensorVoiceTimeout, sensorVoiceResAvailable,
// 595 { DevVoice, 0, 5 }, // type, id, refresh cycle
// 596 },
// 597 #endif
// 598 #if defined(HAS_EXECUTEB)
// 599 {
// 600 NULL, outputExecuteB, outputExecuteBTimeout, OutputExecuteBResAvailable,
// 601 { DevExecuteB, 3, 10 }, // type, id, refresh cycle
// 602 },
// 603 #endif
// 604 #if defined(HAS_EXECUTEA)
// 605 {
// 606 NULL, outputExecuteA, NULL, NULL,
// 607 { DevExecuteA, 0, 3 }, // type, id, refresh cycle
// 608 },
// 609 #endif
// 610 #if defined(HAS_REMOTER)
// 611 {
// 612 NULL, outputRemoter, outputRemoterTimeout, IRSendResAvailable,
// 613 { DevRemoter, 0, 3 }, // type, id, refresh cycle
// 614 },
// 615 #endif
// 616 #if defined(HAS_TESTFUNCTION)
// 617 {
// 618 NULL,
// 619 testFunc_RecvData,
// 620 testFunc_TimeOut,
// 621 NULL,
// 622 { DevTest, 0, 3 },
// 623 },
// 624 #endif
// 625 #if defined(HAS_BROADCASTSEND)
// 626 {
// 627 NULL,
// 628 NULL,
// 629 BroadcastSend_TimeOut,
// 630 NULL,
// 631 { DevBroadcastSend, 0, 3 },
// 632 },
// 633 #endif
// 634 #if defined(HAS_BROADCASTRECEIVE)
// 635 {
// 636 NULL,
// 637 BroadcastReceiveData,
// 638 BroadcastSend_TimeOut,
// 639 NULL,
// 640 { DevBroadcastReceive, 0, 30 },
// 641 },
// 642 #endif
// 643 #if defined(HAS_125KREADER)
// 644 {
// 645 NULL, NULL, sensor125kReaderTimeout, sensor125kReaderResAvailable,
// 646 { Dev125kReader, 0, 10 },
// 647 },
// 648 #endif
// 649 #if defined(HAS_SPEAKER)
// 650 {
// 651 NULL, outputSpeaker, outputSpeakerTimeout, OutputSpeakerResAvailable,
// 652 { DevSpeaker, 0, 9 }, // type, id, refresh cycle
// 653 },
// 654 #endif
// 655 #if defined(HAS_IRDecode)
// 656 {
// 657 NULL, NULL, IRDecodeTimeout, IRDecodeResAvailable,
// 658 { DevIRDecode, 0, 5 }, // type, id, refresh cycle
// 659 },
// 660 #endif
// 661 #if defined(ZDO_COORDINATOR)
// 662 { // 协调器
// 663 CoordinatorNwkStateChangeRoutine,
// 664 CoordinatorIncomingRoutine,
// 665 CoordinatorTimeoutRoutine,
// 666 CoordinatorResAvailableRoutine,
// 667 { DevCoordinator, 0, 0 },
// 668 },
// 669 #elif defined(RTR_NWK)
// 670 { // 路由器
// 671 RouterNwkStateChangeRoutine,
// 672 RouterIncomingRoutine,
// 673 RouterTimeoutRoutine,
// 674 RouterResAvailableRoutine,
// 675 { DevRouter, 0, 30 },
// 676 },
// 677 #endif
// 678 };
// 679
// 680 // 不能修改下面的内容!!!
RSEG XDATA_ROM_C:CONST:REORDER:NOROOT(0)
DATA8
// 681 const uint8 funcCount = sizeof(funcList) / sizeof(funcList[0]);
funcCount:
DB 1
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for funcList>`:
DATA16
DW 0H
DW `??CoordinatorIncomingRoutine::?relay`
DW 0H
DW 0H
DATA8
DB 241
DB 0
DB 0
DB 0, 0, 0, 0, 0, 0, 0, 0
DB 0, 0, 0, 0, 0, 0, 0, 0
DB 0, 0, 0, 0, 0, 0
END
// 682 #endif
//
// 33 bytes in segment XDATA_I
// 33 bytes in segment XDATA_ID
// 1 byte in segment XDATA_ROM_C
//
// 33 bytes of CODE memory
// 1 byte of CONST memory
// 33 bytes of XDATA memory
//
//Errors: none
//Warnings: none

View File

@@ -1,424 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:28
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDConfig.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW6C3A.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDConfig.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\ZDConfig.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\ZDConfig.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDConfig.c
1 /**************************************************************************************************
2 Filename: ZDConfig.c
3 Revised: $Date: 2008-02-12 16:32:50 -0800 (Tue, 12 Feb 2008) $
4 Revision: $Revision: 16393 $
5
6
7 Description: This file contains the configuration attributes for the Zigbee Device Object.
8 These are references to Configuration items that MUST be defined in ZDApp.c.
9 The names mustn't change.
10
11
12 Copyright 2004-2007 Texas Instruments Incorporated. All rights reserved.
13
14 IMPORTANT: Your use of this Software is limited to those specific rights
15 granted under the terms of a software license agreement between the user
16 who downloaded the software, his/her employer (which must be your employer)
17 and Texas Instruments Incorporated (the "License"). You may not use this
18 Software unless you agree to abide by the terms of the License. The License
19 limits your use, and you acknowledge, that the Software may not be modified,
20 copied or distributed unless embedded on a Texas Instruments microcontroller
21 or used solely and exclusively in conjunction with a Texas Instruments radio
22 frequency transceiver, which is integrated into your product. Other than for
23 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
24 works of, modify, distribute, perform, display or sell this Software and/or
25 its documentation for any purpose.
26
27 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
28 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
29 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
30 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
31 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
32 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
33 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
34 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
35 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
36 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
37 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
38
39 Should you have any questions regarding your right to use this Software,
40 contact Texas Instruments Incorporated at www.TI.com.
41 **************************************************************************************************/
42
43 /*********************************************************************
44 * INCLUDES
45 */
46 #include "ZComdef.h"
47 #include "AF.h"
48 #include "ZDObject.h"
49 #include "ZDConfig.h"
50
51 /*********************************************************************
52 * MACROS
53 */
54
55 /*********************************************************************
56 * CONSTANTS
57 */
58
59 /*********************************************************************
60 * TYPEDEFS
61 */
62
63 /*********************************************************************
64 * GLOBAL VARIABLES
65 */
\ In segment XDATA_Z, align 1, keep-with-next
66 NodeDescriptorFormat_t ZDO_Config_Node_Descriptor;
\ ZDO_Config_Node_Descriptor:
\ 000000 DS 13
\ 00000D REQUIRE __INIT_XDATA_Z
\ In segment XDATA_Z, align 1, keep-with-next
67 NodePowerDescriptorFormat_t ZDO_Config_Power_Descriptor;
\ ZDO_Config_Power_Descriptor:
\ 000000 DS 2
\ 000002 REQUIRE __INIT_XDATA_Z
68
69 /*********************************************************************
70 * EXTERNAL VARIABLES
71 */
72
73 /*********************************************************************
74 * EXTERNAL FUNCTIONS
75 */
76
77 /*********************************************************************
78 * LOCAL FUNCTIONS
79 */
80
81 /*********************************************************************
82 * LOCAL VARIABLES
83 */
84
85 /*********************************************************************
86 * @fn ZDConfig_InitDescriptors()
87 *
88 * @brief Setup the ZDO descriptors
89 * Node, Power
90 *
91 * @param none
92 *
93 * @return none
94 */
\ In segment BANKED_CODE, align 1, keep-with-next
95 void ZDConfig_InitDescriptors( void )
\ ZDConfig_InitDescriptors:
96 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
97 ZDConfig_UpdateNodeDescriptor();
\ 000004 ; Setup parameters for call to function ZDConfig_UpdateNodeDescriptor
\ 000004 12.... LCALL `??ZDConfig_UpdateNodeDescriptor::?relay`; Banked call to: ZDConfig_UpdateNodeDescriptor
98 ZDConfig_UpdatePowerDescriptor();
\ 000007 REQUIRE ?Subroutine0
\ 000007 ; // Fall through to label ?Subroutine0
99 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ??Subroutine1_0:
\ 000000 F0 MOVX @DPTR,A
\ 000001 D083 POP DPH
\ 000003 D082 POP DPL
\ 000005 02.... LJMP ?BRET
100
101 /*********************************************************************
102 * @fn ZDConfig_UpdateNodeDescriptor()
103 *
104 * @brief Update the ZDO Node Descriptor
105 *
106 * @param none
107 *
108 * @return none
109 */
\ In segment BANKED_CODE, align 1, keep-with-next
110 void ZDConfig_UpdateNodeDescriptor( void )
\ ZDConfig_UpdateNodeDescriptor:
111 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
112 // Build the Node Descriptor
113 if ( ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE )
114 ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_COORDINATOR;
115 else if ( ZSTACK_ROUTER_BUILD )
116 ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_ROUTER;
117 else if ( ZSTACK_END_DEVICE_BUILD )
118 ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_DEVICE;
119
120 ZDO_Config_Node_Descriptor.ComplexDescAvail = FALSE; // set elsewhere
121 ZDO_Config_Node_Descriptor.UserDescAvail = FALSE; // set elsewhere
122 ZDO_Config_Node_Descriptor.Reserved = 0; // Reserved
\ 000004 90.... MOV DPTR,#ZDO_Config_Node_Descriptor
\ 000007 E4 CLR A
\ 000008 F0 MOVX @DPTR,A
123 ZDO_Config_Node_Descriptor.APSFlags = 0; // NO APS flags
124 ZDO_Config_Node_Descriptor.FrequencyBand = NODEFREQ_2400; // Frequency Band
\ 000009 A3 INC DPTR
\ 00000A 7440 MOV A,#0x40
\ 00000C F0 MOVX @DPTR,A
125
126 // MAC Capabilities
127 if ( ZSTACK_ROUTER_BUILD )
128 {
129 ZDO_Config_Node_Descriptor.CapabilityFlags
130 = (CAPINFO_DEVICETYPE_FFD | CAPINFO_POWER_AC | CAPINFO_RCVR_ON_IDLE);
131
132 if ( ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE )
133 ZDO_Config_Node_Descriptor.CapabilityFlags |= CAPINFO_ALTPANCOORD;
\ 00000D A3 INC DPTR
\ 00000E 740F MOV A,#0xf
\ 000010 F0 MOVX @DPTR,A
134 }
135 else if ( ZSTACK_END_DEVICE_BUILD )
136 {
137 ZDO_Config_Node_Descriptor.CapabilityFlags = (CAPINFO_DEVICETYPE_RFD
138 #if ( RFD_RCVC_ALWAYS_ON == TRUE)
139 | CAPINFO_RCVR_ON_IDLE
140 #endif
141 );
142 }
143
144 // Manufacturer Code - *YOU FILL IN*
145 ZDO_Config_Node_Descriptor.ManufacturerCode[0] = 0;
\ 000011 A3 INC DPTR
\ 000012 E4 CLR A
\ 000013 F0 MOVX @DPTR,A
146 ZDO_Config_Node_Descriptor.ManufacturerCode[1] = 0;
\ 000014 A3 INC DPTR
\ 000015 F0 MOVX @DPTR,A
147
148 // Maximum Buffer Size
149 ZDO_Config_Node_Descriptor.MaxBufferSize = MAX_BUFFER_SIZE;
\ 000016 A3 INC DPTR
\ 000017 7450 MOV A,#0x50
\ 000019 F0 MOVX @DPTR,A
150
151 // Maximum Incoming Transfer Size Field
152 ZDO_Config_Node_Descriptor.MaxInTransferSize[0] = LO_UINT16( MAX_TRANSFER_SIZE );
\ 00001A A3 INC DPTR
\ 00001B 74A0 MOV A,#-0x60
\ 00001D F0 MOVX @DPTR,A
153 ZDO_Config_Node_Descriptor.MaxInTransferSize[1] = HI_UINT16( MAX_TRANSFER_SIZE );
\ 00001E A3 INC DPTR
\ 00001F E4 CLR A
\ 000020 F0 MOVX @DPTR,A
154
155 // Maximum Outgoing Transfer Size Field
156 ZDO_Config_Node_Descriptor.MaxOutTransferSize[0] = LO_UINT16( MAX_TRANSFER_SIZE );
\ 000021 90.... MOV DPTR,#ZDO_Config_Node_Descriptor + 10
\ 000024 74A0 MOV A,#-0x60
\ 000026 F0 MOVX @DPTR,A
157 ZDO_Config_Node_Descriptor.MaxOutTransferSize[1] = HI_UINT16( MAX_TRANSFER_SIZE );
\ 000027 A3 INC DPTR
\ 000028 E4 CLR A
\ 000029 F0 MOVX @DPTR,A
158
159 // Server Mask
160 ZDO_Config_Node_Descriptor.ServerMask = 0;
\ 00002A 90.... MOV DPTR,#ZDO_Config_Node_Descriptor + 8
\ 00002D F0 MOVX @DPTR,A
\ 00002E A3 INC DPTR
\ 00002F F0 MOVX @DPTR,A
161
162 // Descriptor Capability Field - extended active endpoint list and
163 // extended simple descriptor are not supported.
164 ZDO_Config_Node_Descriptor.DescriptorCapability = 0;
\ 000030 90.... MOV DPTR,#ZDO_Config_Node_Descriptor + 12
\ 000033 80.. SJMP ??Subroutine1_0
165 }
166
167 /*********************************************************************
168 * @fn ZDConfig_UpdatePowerDescriptor()
169 *
170 * @brief Update the ZDO Power Descriptor
171 *
172 * @param none
173 *
174 * @return none
175 */
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 90.... MOV DPTR,#ZDO_Config_Power_Descriptor
\ 000003 7410 MOV A,#0x10
\ 000005 F0 MOVX @DPTR,A
\ 000006 A3 INC DPTR
\ 000007 74C1 MOV A,#-0x3f
\ 000009 REQUIRE ??Subroutine1_0
\ 000009 ; // Fall through to label ??Subroutine1_0
\ In segment BANKED_CODE, align 1, keep-with-next
176 void ZDConfig_UpdatePowerDescriptor( void )
\ ZDConfig_UpdatePowerDescriptor:
177 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
178 // Build the Power Descriptor
179 if ( ZSTACK_ROUTER_BUILD )
180 {
181 ZDO_Config_Power_Descriptor.PowerMode = NODECURPWR_RCVR_ALWAYS_ON;
182 ZDO_Config_Power_Descriptor.AvailablePowerSources = NODEAVAILPWR_MAINS;
183 ZDO_Config_Power_Descriptor.CurrentPowerSource = NODEAVAILPWR_MAINS;
184 ZDO_Config_Power_Descriptor.CurrentPowerSourceLevel = NODEPOWER_LEVEL_100;
\ 000004 80.. SJMP ?Subroutine0
185 }
186 else if ( ZSTACK_END_DEVICE_BUILD )
187 {
188 if ( zgPollRate )
189 ZDO_Config_Power_Descriptor.PowerMode = NODECURPWR_RCVR_AUTO;
190 else
191 ZDO_Config_Power_Descriptor.PowerMode = NODECURPWR_RCVR_STIM;
192
193 ZDO_Config_Power_Descriptor.AvailablePowerSources = NODEAVAILPWR_RECHARGE;
194 ZDO_Config_Power_Descriptor.CurrentPowerSource = NODEAVAILPWR_RECHARGE;
195 ZDO_Config_Power_Descriptor.CurrentPowerSourceLevel = NODEPOWER_LEVEL_66;
196 }
197 }
198
199 /*********************************************************************
200 *********************************************************************/
201
202
Maximum stack usage in bytes:
ISTACK Function
------ --------
2 ZDConfig_InitDescriptors
2 -> ZDConfig_UpdateNodeDescriptor
2 ZDConfig_UpdateNodeDescriptor
2 ZDConfig_UpdatePowerDescriptor
Segment part sizes:
Bytes Function/Label
----- --------------
8 ??Subroutine1_0
9 ?Subroutine0
7 ZDConfig_InitDescriptors
53 ZDConfig_UpdateNodeDescriptor
6 ZDConfig_UpdatePowerDescriptor
13 ZDO_Config_Node_Descriptor
2 ZDO_Config_Power_Descriptor
18 -- Other
83 bytes in segment BANKED_CODE
18 bytes in segment BANK_RELAYS
15 bytes in segment XDATA_Z
18 bytes of CODE memory
83 bytes of HUGECODE memory
15 bytes of XDATA memory
Errors: none
Warnings: none

View File

@@ -1,607 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:28
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDConfig.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW6C3A.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDConfig.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\ZDConfig.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME ZDConfig
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
EXTERN ?BDISPATCH
EXTERN ?BRET
EXTERN __INIT_XDATA_Z
PUBLIC `??ZDConfig_InitDescriptors::?relay`
FUNCTION `??ZDConfig_InitDescriptors::?relay`,0203H
PUBLIC `??ZDConfig_UpdateNodeDescriptor::?relay`
FUNCTION `??ZDConfig_UpdateNodeDescriptor::?relay`,0203H
PUBLIC `??ZDConfig_UpdatePowerDescriptor::?relay`
FUNCTION `??ZDConfig_UpdatePowerDescriptor::?relay`,0203H
PUBLIC ZDConfig_InitDescriptors
FUNCTION ZDConfig_InitDescriptors,021203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC ZDConfig_UpdateNodeDescriptor
FUNCTION ZDConfig_UpdateNodeDescriptor,0203H
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME ISTACK, 2, STACK
PUBLIC ZDConfig_UpdatePowerDescriptor
FUNCTION ZDConfig_UpdatePowerDescriptor,0203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC ZDO_Config_Node_Descriptor
PUBLIC ZDO_Config_Power_Descriptor
CFI Names cfiNames0
CFI StackFrame CFA_SP SP IDATA
CFI StackFrame CFA_PSP16 PSP16 XDATA
CFI StackFrame CFA_XSP16 XSP16 XDATA
CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
CFI VirtualResource ?RET:24
CFI Resource ?BRET_EXT:8
CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
CFI ResourceParts PSP16 PSPH, PSPL
CFI ResourceParts XSP16 XSPH, XSPL
CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-3
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B Undefined
CFI A Undefined
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT Frame(CFA_SP, 3)
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon0
ZDConfig_InitDescriptors SYMBOL "ZDConfig_InitDescriptors"
`??ZDConfig_InitDescriptors::?relay` SYMBOL "?relay", ZDConfig_InitDescriptors
ZDConfig_UpdateNodeDescriptor SYMBOL "ZDConfig_UpdateNodeDescriptor"
`??ZDConfig_UpdateNodeDescriptor::?relay` SYMBOL "?relay", ZDConfig_UpdateNodeDescriptor
ZDConfig_UpdatePowerDescriptor SYMBOL "ZDConfig_UpdatePowerDescriptor"
`??ZDConfig_UpdatePowerDescriptor::?relay` SYMBOL "?relay", ZDConfig_UpdatePowerDescriptor
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDConfig.c
// 1 /**************************************************************************************************
// 2 Filename: ZDConfig.c
// 3 Revised: $Date: 2008-02-12 16:32:50 -0800 (Tue, 12 Feb 2008) $
// 4 Revision: $Revision: 16393 $
// 5
// 6
// 7 Description: This file contains the configuration attributes for the Zigbee Device Object.
// 8 These are references to Configuration items that MUST be defined in ZDApp.c.
// 9 The names mustn't change.
// 10
// 11
// 12 Copyright 2004-2007 Texas Instruments Incorporated. All rights reserved.
// 13
// 14 IMPORTANT: Your use of this Software is limited to those specific rights
// 15 granted under the terms of a software license agreement between the user
// 16 who downloaded the software, his/her employer (which must be your employer)
// 17 and Texas Instruments Incorporated (the "License"). You may not use this
// 18 Software unless you agree to abide by the terms of the License. The License
// 19 limits your use, and you acknowledge, that the Software may not be modified,
// 20 copied or distributed unless embedded on a Texas Instruments microcontroller
// 21 or used solely and exclusively in conjunction with a Texas Instruments radio
// 22 frequency transceiver, which is integrated into your product. Other than for
// 23 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 24 works of, modify, distribute, perform, display or sell this Software and/or
// 25 its documentation for any purpose.
// 26
// 27 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 28 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 29 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 30 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 31 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 32 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 33 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 34 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 35 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 36 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 37 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 38
// 39 Should you have any questions regarding your right to use this Software,
// 40 contact Texas Instruments Incorporated at www.TI.com.
// 41 **************************************************************************************************/
// 42
// 43 /*********************************************************************
// 44 * INCLUDES
// 45 */
// 46 #include "ZComdef.h"
// 47 #include "AF.h"
// 48 #include "ZDObject.h"
// 49 #include "ZDConfig.h"
// 50
// 51 /*********************************************************************
// 52 * MACROS
// 53 */
// 54
// 55 /*********************************************************************
// 56 * CONSTANTS
// 57 */
// 58
// 59 /*********************************************************************
// 60 * TYPEDEFS
// 61 */
// 62
// 63 /*********************************************************************
// 64 * GLOBAL VARIABLES
// 65 */
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA8
// 66 NodeDescriptorFormat_t ZDO_Config_Node_Descriptor;
ZDO_Config_Node_Descriptor:
DS 13
REQUIRE __INIT_XDATA_Z
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 67 NodePowerDescriptorFormat_t ZDO_Config_Power_Descriptor;
ZDO_Config_Power_Descriptor:
DS 2
REQUIRE __INIT_XDATA_Z
// 68
// 69 /*********************************************************************
// 70 * EXTERNAL VARIABLES
// 71 */
// 72
// 73 /*********************************************************************
// 74 * EXTERNAL FUNCTIONS
// 75 */
// 76
// 77 /*********************************************************************
// 78 * LOCAL FUNCTIONS
// 79 */
// 80
// 81 /*********************************************************************
// 82 * LOCAL VARIABLES
// 83 */
// 84
// 85 /*********************************************************************
// 86 * @fn ZDConfig_InitDescriptors()
// 87 *
// 88 * @brief Setup the ZDO descriptors
// 89 * Node, Power
// 90 *
// 91 * @param none
// 92 *
// 93 * @return none
// 94 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 95 void ZDConfig_InitDescriptors( void )
ZDConfig_InitDescriptors:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function ZDConfig_InitDescriptors
CODE
// 96 {
FUNCALL ZDConfig_InitDescriptors, ZDConfig_UpdateNodeDescriptor
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 97 ZDConfig_UpdateNodeDescriptor();
; Setup parameters for call to function ZDConfig_UpdateNodeDescriptor
LCALL `??ZDConfig_UpdateNodeDescriptor::?relay`; Banked call to: ZDConfig_UpdateNodeDescriptor
// 98 ZDConfig_UpdatePowerDescriptor();
CFI EndBlock cfiBlock0
REQUIRE ?Subroutine0
; // Fall through to label ?Subroutine0
// 99 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOV DPTR,#ZDO_Config_Power_Descriptor
MOV A,#0x10
MOVX @DPTR,A
INC DPTR
MOV A,#-0x3f
CFI EndBlock cfiBlock1
REQUIRE ??Subroutine1_0
; // Fall through to label ??Subroutine1_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine1_0:
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOVX @DPTR,A
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock2
// 100
// 101 /*********************************************************************
// 102 * @fn ZDConfig_UpdateNodeDescriptor()
// 103 *
// 104 * @brief Update the ZDO Node Descriptor
// 105 *
// 106 * @param none
// 107 *
// 108 * @return none
// 109 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 110 void ZDConfig_UpdateNodeDescriptor( void )
ZDConfig_UpdateNodeDescriptor:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function ZDConfig_UpdateNodeDescriptor
CODE
// 111 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 112 // Build the Node Descriptor
// 113 if ( ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE )
// 114 ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_COORDINATOR;
// 115 else if ( ZSTACK_ROUTER_BUILD )
// 116 ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_ROUTER;
// 117 else if ( ZSTACK_END_DEVICE_BUILD )
// 118 ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_DEVICE;
// 119
// 120 ZDO_Config_Node_Descriptor.ComplexDescAvail = FALSE; // set elsewhere
// 121 ZDO_Config_Node_Descriptor.UserDescAvail = FALSE; // set elsewhere
// 122 ZDO_Config_Node_Descriptor.Reserved = 0; // Reserved
MOV DPTR,#ZDO_Config_Node_Descriptor
CLR A
MOVX @DPTR,A
// 123 ZDO_Config_Node_Descriptor.APSFlags = 0; // NO APS flags
// 124 ZDO_Config_Node_Descriptor.FrequencyBand = NODEFREQ_2400; // Frequency Band
INC DPTR
MOV A,#0x40
MOVX @DPTR,A
// 125
// 126 // MAC Capabilities
// 127 if ( ZSTACK_ROUTER_BUILD )
// 128 {
// 129 ZDO_Config_Node_Descriptor.CapabilityFlags
// 130 = (CAPINFO_DEVICETYPE_FFD | CAPINFO_POWER_AC | CAPINFO_RCVR_ON_IDLE);
// 131
// 132 if ( ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE )
// 133 ZDO_Config_Node_Descriptor.CapabilityFlags |= CAPINFO_ALTPANCOORD;
INC DPTR
MOV A,#0xf
MOVX @DPTR,A
// 134 }
// 135 else if ( ZSTACK_END_DEVICE_BUILD )
// 136 {
// 137 ZDO_Config_Node_Descriptor.CapabilityFlags = (CAPINFO_DEVICETYPE_RFD
// 138 #if ( RFD_RCVC_ALWAYS_ON == TRUE)
// 139 | CAPINFO_RCVR_ON_IDLE
// 140 #endif
// 141 );
// 142 }
// 143
// 144 // Manufacturer Code - *YOU FILL IN*
// 145 ZDO_Config_Node_Descriptor.ManufacturerCode[0] = 0;
INC DPTR
CLR A
MOVX @DPTR,A
// 146 ZDO_Config_Node_Descriptor.ManufacturerCode[1] = 0;
INC DPTR
MOVX @DPTR,A
// 147
// 148 // Maximum Buffer Size
// 149 ZDO_Config_Node_Descriptor.MaxBufferSize = MAX_BUFFER_SIZE;
INC DPTR
MOV A,#0x50
MOVX @DPTR,A
// 150
// 151 // Maximum Incoming Transfer Size Field
// 152 ZDO_Config_Node_Descriptor.MaxInTransferSize[0] = LO_UINT16( MAX_TRANSFER_SIZE );
INC DPTR
MOV A,#-0x60
MOVX @DPTR,A
// 153 ZDO_Config_Node_Descriptor.MaxInTransferSize[1] = HI_UINT16( MAX_TRANSFER_SIZE );
INC DPTR
CLR A
MOVX @DPTR,A
// 154
// 155 // Maximum Outgoing Transfer Size Field
// 156 ZDO_Config_Node_Descriptor.MaxOutTransferSize[0] = LO_UINT16( MAX_TRANSFER_SIZE );
MOV DPTR,#ZDO_Config_Node_Descriptor + 10
MOV A,#-0x60
MOVX @DPTR,A
// 157 ZDO_Config_Node_Descriptor.MaxOutTransferSize[1] = HI_UINT16( MAX_TRANSFER_SIZE );
INC DPTR
CLR A
MOVX @DPTR,A
// 158
// 159 // Server Mask
// 160 ZDO_Config_Node_Descriptor.ServerMask = 0;
MOV DPTR,#ZDO_Config_Node_Descriptor + 8
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 161
// 162 // Descriptor Capability Field - extended active endpoint list and
// 163 // extended simple descriptor are not supported.
// 164 ZDO_Config_Node_Descriptor.DescriptorCapability = 0;
MOV DPTR,#ZDO_Config_Node_Descriptor + 12
SJMP ??Subroutine1_0
// 165 }
CFI EndBlock cfiBlock3
// 166
// 167 /*********************************************************************
// 168 * @fn ZDConfig_UpdatePowerDescriptor()
// 169 *
// 170 * @brief Update the ZDO Power Descriptor
// 171 *
// 172 * @param none
// 173 *
// 174 * @return none
// 175 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 176 void ZDConfig_UpdatePowerDescriptor( void )
ZDConfig_UpdatePowerDescriptor:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function ZDConfig_UpdatePowerDescriptor
CODE
// 177 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 178 // Build the Power Descriptor
// 179 if ( ZSTACK_ROUTER_BUILD )
// 180 {
// 181 ZDO_Config_Power_Descriptor.PowerMode = NODECURPWR_RCVR_ALWAYS_ON;
// 182 ZDO_Config_Power_Descriptor.AvailablePowerSources = NODEAVAILPWR_MAINS;
// 183 ZDO_Config_Power_Descriptor.CurrentPowerSource = NODEAVAILPWR_MAINS;
// 184 ZDO_Config_Power_Descriptor.CurrentPowerSourceLevel = NODEPOWER_LEVEL_100;
SJMP ?Subroutine0
// 185 }
// 186 else if ( ZSTACK_END_DEVICE_BUILD )
// 187 {
// 188 if ( zgPollRate )
// 189 ZDO_Config_Power_Descriptor.PowerMode = NODECURPWR_RCVR_AUTO;
// 190 else
// 191 ZDO_Config_Power_Descriptor.PowerMode = NODECURPWR_RCVR_STIM;
// 192
// 193 ZDO_Config_Power_Descriptor.AvailablePowerSources = NODEAVAILPWR_RECHARGE;
// 194 ZDO_Config_Power_Descriptor.CurrentPowerSource = NODEAVAILPWR_RECHARGE;
// 195 ZDO_Config_Power_Descriptor.CurrentPowerSourceLevel = NODEPOWER_LEVEL_66;
// 196 }
// 197 }
CFI EndBlock cfiBlock4
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??ZDConfig_InitDescriptors::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 ZDConfig_InitDescriptors
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??ZDConfig_UpdateNodeDescriptor::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 ZDConfig_UpdateNodeDescriptor
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??ZDConfig_UpdatePowerDescriptor::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 ZDConfig_UpdatePowerDescriptor
END
// 198
// 199 /*********************************************************************
// 200 *********************************************************************/
// 201
// 202
//
// 83 bytes in segment BANKED_CODE
// 18 bytes in segment BANK_RELAYS
// 15 bytes in segment XDATA_Z
//
// 18 bytes of CODE memory
// 83 bytes of HUGECODE memory
// 15 bytes of XDATA memory
//
//Errors: none
//Warnings: none

View File

@@ -1,919 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:31
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\zstack\ZMain\TI2530DB\ZMain.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW7673.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\zstack\ZMain\TI2530DB\ZMain.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\ZMain.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\ZMain.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\zstack\ZMain\TI2530DB\ZMain.c
1 /**************************************************************************************************
2 Filename: ZMain.c
3 Revised: $Date: 2010-09-17 16:25:30 -0700 (Fri, 17 Sep 2010) $
4 Revision: $Revision: 23835 $
5
6 Description: Startup and shutdown code for ZStack
7 Notes: This version targets the Chipcon CC2530
8
9
10 Copyright 2005-2010 Texas Instruments Incorporated. All rights reserved.
11
12 IMPORTANT: Your use of this Software is limited to those specific rights
13 granted under the terms of a software license agreement between the user
14 who downloaded the software, his/her employer (which must be your employer)
15 and Texas Instruments Incorporated (the "License"). You may not use this
16 Software unless you agree to abide by the terms of the License. The License
17 limits your use, and you acknowledge, that the Software may not be modified,
18 copied or distributed unless embedded on a Texas Instruments microcontroller
19 or used solely and exclusively in conjunction with a Texas Instruments radio
20 frequency transceiver, which is integrated into your product. Other than for
21 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
22 works of, modify, distribute, perform, display or sell this Software and/or
23 its documentation for any purpose.
24
25 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
26 PROVIDED 揂S IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
27 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
28 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
29 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
30 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
31 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
32 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
33 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
34 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
35 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
36
37 Should you have any questions regarding your right to use this Software,
38 contact Texas Instruments Incorporated at www.TI.com.
39 **************************************************************************************************/
40
41 /*********************************************************************
42 * INCLUDES
43 */
44
45 #ifndef NONWK
46 #include "AF.h"
47 #endif
48 #include "hal_adc.h"
\ In segment SFR_AN, at 0x8f
\ unsigned char volatile __sfr P0INP
\ P0INP:
\ 000000 DS 1
\ In segment SFR_AN, at 0x90
\ union <unnamed> volatile __sfr _A_P1
\ _A_P1:
\ 000000 DS 1
\ In segment SFR_AN, at 0x9d
\ unsigned char volatile __sfr SLEEPSTA
\ SLEEPSTA:
\ 000000 DS 1
\ In segment SFR_AN, at 0x9e
\ unsigned char volatile __sfr CLKCONSTA
\ CLKCONSTA:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa0
\ union <unnamed> volatile __sfr _A_P2
\ _A_P2:
\ 000000 DS 1
\ In segment SFR_AN, at 0xbe
\ unsigned char volatile __sfr SLEEPCMD
\ SLEEPCMD:
\ 000000 DS 1
\ In segment SFR_AN, at 0xc6
\ unsigned char volatile __sfr CLKCONCMD
\ CLKCONCMD:
\ 000000 DS 1
\ In segment SFR_AN, at 0xfe
\ unsigned char volatile __sfr P1DIR
\ P1DIR:
\ 000000 DS 1
\ In segment SFR_AN, at 0xff
\ unsigned char volatile __sfr P2DIR
\ P2DIR:
\ 000000 DS 1
49 #include "hal_flash.h"
50 #include "hal_lcd.h"
51 #include "hal_led.h"
52 #include "hal_drivers.h"
53 #include "OnBoard.h"
54 #include "OSAL.h"
55 #include "OSAL_Nv.h"
56 #include "ZComDef.h"
57 #include "ZMAC.h"
58
59 /*********************************************************************
60 * LOCAL FUNCTIONS
61 */
62
63 static void zmain_ext_addr( void );
64 #if defined ZCL_KEY_ESTABLISH
65 static void zmain_cert_init( void );
66 #endif
67 static void zmain_dev_info( void );
68 static void zmain_vdd_check( void );
69
70 #ifdef LCD_SUPPORTED
71 static void zmain_lcd_init( void );
72 #endif
73
74 /*********************************************************************
75 * @fn main
76 * @brief First function called after startup.
77 * @return don't care
78 */
\ In segment BANKED_CODE, align 1, keep-with-next
79 int main(void)
\ main:
80 {
\ 000000 ; Auto size: 0
81 // Turn off interrupts
82 osal_int_disable( INTS_ALL );
\ 000000 ; Setup parameters for call to function osal_int_disable
\ 000000 79FF MOV R1,#-0x1
\ 000002 12.... LCALL `??osal_int_disable::?relay`; Banked call to: osal_int_disable
83
84 // Initialization for board related stuff such as LEDs
85 HAL_BOARD_INIT();
\ 000005 53BEFB ANL 0xbe,#0xfb
\ ??main_0:
\ 000008 E59D MOV A,0x9d
\ 00000A A2E6 MOV C,0xE0 /* A */.6
\ 00000C 50FA JNC ??main_0
\ 00000E 00 NOP
\ 00000F 78F8 MOV R0,#-0x8
\ 000011 7901 MOV R1,#0x1
\ ??main_1:
\ 000013 00 NOP
\ 000014 E8 MOV A,R0
\ 000015 24FF ADD A,#-0x1
\ 000017 18 DEC R0
\ 000018 E9 MOV A,R1
\ 000019 34FF ADDC A,#-0x1
\ 00001B F9 MOV R1,A
\ 00001C E8 MOV A,R0
\ 00001D 49 ORL A,R1
\ 00001E 70F3 JNZ ??main_1
\ 000020 75C600 MOV 0xc6,#0x0
\ ??main_2:
\ 000023 E59E MOV A,0x9e
\ 000025 70FC JNZ ??main_2
\ 000027 43BE04 ORL 0xbe,#0x4
\ 00002A 906270 MOV DPTR,#0x6270
\ 00002D 7408 MOV A,#0x8
\ 00002F F0 MOVX @DPTR,A
\ 000030 D2A0 SETB 0xa0.0
\ 000032 43FF01 ORL 0xff,#0x1
\ 000035 D291 SETB 0x90.1
\ 000037 43FE02 ORL 0xfe,#0x2
\ 00003A C294 CLR 0x90.4
\ 00003C 43FE10 ORL 0xfe,#0x10
\ 00003F 438F01 ORL 0x8f,#0x1
86
87 // Make sure supply voltage is high enough to run
88 zmain_vdd_check();
\ 000042 7E10 MOV R6,#0x10
\ ??main_3:
\ 000044 ; Setup parameters for call to function HalAdcCheckVdd
\ 000044 794A MOV R1,#0x4a
\ 000046 12.... LCALL `??HalAdcCheckVdd::?relay`; Banked call to: HalAdcCheckVdd
\ 000049 E9 MOV A,R1
\ 00004A 60F8 JZ ??main_3
\ 00004C 1E DEC R6
\ 00004D EE MOV A,R6
\ 00004E 70F4 JNZ ??main_3
89
90 // Initialize board I/O
91 InitBoard( OB_COLD );
\ 000050 ; Setup parameters for call to function InitBoard
\ 000050 7900 MOV R1,#0x0
\ 000052 12.... LCALL `??InitBoard::?relay`; Banked call to: InitBoard
92
93 // Initialze HAL drivers
94 HalDriverInit();
\ 000055 ; Setup parameters for call to function HalDriverInit
\ 000055 12.... LCALL `??HalDriverInit::?relay`; Banked call to: HalDriverInit
95
96 // Initialize NV System
97 osal_nv_init( NULL );
\ 000058 ; Setup parameters for call to function osal_nv_init
\ 000058 7A00 MOV R2,#0x0
\ 00005A 7B00 MOV R3,#0x0
\ 00005C 12.... LCALL `??osal_nv_init::?relay`; Banked call to: osal_nv_init
98
99 // Initialize the MAC
100 ZMacInit();
\ 00005F ; Setup parameters for call to function ZMacInit
\ 00005F 12.... LCALL `??ZMacInit::?relay`; Banked call to: ZMacInit
101
102 // Determine the extended address
103 zmain_ext_addr();
\ 000062 ; Setup parameters for call to function zmain_ext_addr
\ 000062 12.... LCALL `??zmain_ext_addr::?relay`; Banked call to: zmain_ext_addr
104
105 #if defined ZCL_KEY_ESTABLISH
106 // Initialize the Certicom certificate information.
107 zmain_cert_init();
108 #endif
109
110 // Initialize basic NV items
111 zgInit();
\ 000065 ; Setup parameters for call to function zgInit
\ 000065 12.... LCALL `??zgInit::?relay`; Banked call to: zgInit
112
113 #ifndef NONWK
114 // Since the AF isn't a task, call it's initialization routine
115 afInit();
116 #endif
117
118 // Initialize the operating system
119 osal_init_system();
\ 000068 ; Setup parameters for call to function osal_init_system
\ 000068 12.... LCALL `??osal_init_system::?relay`; Banked call to: osal_init_system
120
121 // Allow interrupts
122 osal_int_enable( INTS_ALL );
\ 00006B ; Setup parameters for call to function osal_int_enable
\ 00006B 79FF MOV R1,#-0x1
\ 00006D 12.... LCALL `??osal_int_enable::?relay`; Banked call to: osal_int_enable
123
124 // Final board initialization
125 InitBoard( OB_READY );
\ 000070 ; Setup parameters for call to function InitBoard
\ 000070 7902 MOV R1,#0x2
\ 000072 12.... LCALL `??InitBoard::?relay`; Banked call to: InitBoard
126
127 // Display information about this device
128 zmain_dev_info();
129
130 /* Display the device info on the LCD */
131 #ifdef LCD_SUPPORTED
132 zmain_lcd_init();
133 #endif
134
135 #ifdef WDT_IN_PM1
136 /* If WDT is used, this is a good place to enable it. */
137 WatchDogEnable( WDTIMX );
138 #endif
139
140 osal_start_system(); // No Return from here
\ 000075 ; Setup parameters for call to function osal_start_system
\ 000075 12.... LCALL `??osal_start_system::?relay`; Banked call to: osal_start_system
141
142 return 0; // Shouldn't get here.
\ 000078 7A00 MOV R2,#0x0
\ 00007A 7B00 MOV R3,#0x0
\ 00007C 02.... LJMP ?BRET
\ 00007F REQUIRE SLEEPCMD
\ 00007F REQUIRE SLEEPSTA
\ 00007F REQUIRE CLKCONCMD
\ 00007F REQUIRE CLKCONSTA
\ 00007F REQUIRE _A_P2
\ 00007F REQUIRE P2DIR
\ 00007F REQUIRE _A_P1
\ 00007F REQUIRE P1DIR
\ 00007F REQUIRE P0INP
143 } // main()
144
145 /*********************************************************************
146 * @fn zmain_vdd_check
147 * @brief Check if the Vdd is OK to run the processor.
148 * @return Return if Vdd is ok; otherwise, flash LED, then reset
149 *********************************************************************/
150 static void zmain_vdd_check( void )
151 {
152 uint8 cnt = 16;
153
154 do {
155 while (!HalAdcCheckVdd(VDD_MIN_RUN));
156 } while (--cnt);
157 }
158
159 /**************************************************************************************************
160 * @fn zmain_ext_addr
161 *
162 * @brief Execute a prioritized search for a valid extended address and write the results
163 * into the OSAL NV system for use by the system. Temporary address not saved to NV.
164 *
165 * input parameters
166 *
167 * None.
168 *
169 * output parameters
170 *
171 * None.
172 *
173 * @return None.
174 **************************************************************************************************
175 */
\ In segment BANKED_CODE, align 1, keep-with-next
176 static void zmain_ext_addr(void)
\ zmain_ext_addr:
177 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 REQUIRE ?V2
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 10
\ 000005 74F6 MOV A,#-0xa
\ 000007 12.... LCALL ?ALLOC_XSTACK8
178 uint8 nullAddr[Z_EXTADDR_LEN] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
\ 00000A 90.... MOV DPTR,#`?<Constant {255, 255, 255, 255, 255, 255, 255,`
\ 00000D 7402 MOV A,#0x2
\ 00000F 12.... LCALL ?XSTACK_DISP102_8
\ 000012 7408 MOV A,#0x8
\ 000014 12.... LCALL ?MOVE_LONG8_XDATA_XDATA
179 uint8 writeNV = TRUE;
180
181 // First check whether a non-erased extended address exists in the OSAL NV.
182 if ((SUCCESS != osal_nv_item_init(ZCD_NV_EXTADDR, Z_EXTADDR_LEN, NULL)) ||
183 (SUCCESS != osal_nv_read(ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, aExtendedAddress)) ||
184 (osal_memcmp(aExtendedAddress, nullAddr, Z_EXTADDR_LEN)))
\ 000017 ; Setup parameters for call to function osal_nv_item_init
\ 000017 F5.. MOV ?V0,A
\ 000019 F5.. MOV ?V1,A
\ 00001B 78.. MOV R0,#?V0
\ 00001D 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000020 7C08 MOV R4,#0x8
\ 000022 7D00 MOV R5,#0x0
\ 000024 7A01 MOV R2,#0x1
\ 000026 7B00 MOV R3,#0x0
\ 000028 12.... LCALL `??osal_nv_item_init::?relay`; Banked call to: osal_nv_item_init
\ 00002B 7402 MOV A,#0x2
\ 00002D 12.... LCALL ?DEALLOC_XSTACK8
\ 000030 E9 MOV A,R1
\ 000031 7052 JNZ ??zmain_ext_addr_0
\ 000033 ; Setup parameters for call to function osal_nv_read
\ 000033 75.... MOV ?V0,#aExtendedAddress & 0xff
\ 000036 75.... MOV ?V1,#(aExtendedAddress >> 8) & 0xff
\ 000039 78.. MOV R0,#?V0
\ 00003B 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00003E 75..08 MOV ?V0,#0x8
\ 000041 75..00 MOV ?V1,#0x0
\ 000044 78.. MOV R0,#?V0
\ 000046 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000049 7C00 MOV R4,#0x0
\ 00004B 7D00 MOV R5,#0x0
\ 00004D 7A01 MOV R2,#0x1
\ 00004F 7B00 MOV R3,#0x0
\ 000051 12.... LCALL `??osal_nv_read::?relay`; Banked call to: osal_nv_read
\ 000054 7404 MOV A,#0x4
\ 000056 12.... LCALL ?DEALLOC_XSTACK8
\ 000059 E9 MOV A,R1
\ 00005A 7029 JNZ ??zmain_ext_addr_0
\ 00005C ; Setup parameters for call to function osal_memcmp
\ 00005C 7402 MOV A,#0x2
\ 00005E 12.... LCALL ?XSTACK_DISP100_8
\ 000061 88.. MOV ?V0,R0
\ 000063 89.. MOV ?V1,R1
\ 000065 75..00 MOV ?V2,#0x0
\ 000068 78.. MOV R0,#?V0
\ 00006A 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 00006D 7C08 MOV R4,#0x8
\ 00006F 7D00 MOV R5,#0x0
\ 000071 79.. MOV R1,#aExtendedAddress & 0xff
\ 000073 7A.. MOV R2,#(aExtendedAddress >> 8) & 0xff
\ 000075 7B00 MOV R3,#0x0
\ 000077 12.... LCALL `??osal_memcmp::?relay`; Banked call to: osal_memcmp
\ 00007A 7403 MOV A,#0x3
\ 00007C 12.... LCALL ?DEALLOC_XSTACK8
\ 00007F E9 MOV A,R1
\ 000080 7003 JNZ $+5
\ 000082 02.... LJMP ??zmain_ext_addr_1 & 0xFFFF
185 {
186 // Attempt to read the extended address from the location on the lock bits page
187 // where the programming tools know to reserve it.
188 HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, aExtendedAddress, Z_EXTADDR_LEN);
\ ??zmain_ext_addr_0:
\ 000085 ; Setup parameters for call to function HalFlashRead
\ 000085 75..08 MOV ?V0,#0x8
\ 000088 75..00 MOV ?V1,#0x0
\ 00008B 78.. MOV R0,#?V0
\ 00008D 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000090 7C.. MOV R4,#aExtendedAddress & 0xff
\ 000092 7D.. MOV R5,#(aExtendedAddress >> 8) & 0xff
\ 000094 7AE8 MOV R2,#-0x18
\ 000096 7B07 MOV R3,#0x7
\ 000098 797F MOV R1,#0x7f
\ 00009A 12.... LCALL `??HalFlashRead::?relay`; Banked call to: HalFlashRead
\ 00009D 7402 MOV A,#0x2
\ 00009F 12.... LCALL ?DEALLOC_XSTACK8
189
190 if (osal_memcmp(aExtendedAddress, nullAddr, Z_EXTADDR_LEN))
\ 0000A2 ; Setup parameters for call to function osal_memcmp
\ 0000A2 7402 MOV A,#0x2
\ 0000A4 12.... LCALL ?XSTACK_DISP100_8
\ 0000A7 88.. MOV ?V0,R0
\ 0000A9 89.. MOV ?V1,R1
\ 0000AB 75..00 MOV ?V2,#0x0
\ 0000AE 78.. MOV R0,#?V0
\ 0000B0 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 0000B3 7C08 MOV R4,#0x8
\ 0000B5 7D00 MOV R5,#0x0
\ 0000B7 79.. MOV R1,#aExtendedAddress & 0xff
\ 0000B9 7A.. MOV R2,#(aExtendedAddress >> 8) & 0xff
\ 0000BB 7B00 MOV R3,#0x0
\ 0000BD 12.... LCALL `??osal_memcmp::?relay`; Banked call to: osal_memcmp
\ 0000C0 7403 MOV A,#0x3
\ 0000C2 12.... LCALL ?DEALLOC_XSTACK8
\ 0000C5 E9 MOV A,R1
\ 0000C6 6038 JZ ??zmain_ext_addr_2
191 {
192 // Attempt to read the extended address from the designated location in the Info Page.
193 if (!osal_memcmp((uint8 *)(P_INFOPAGE+HAL_INFOP_IEEE_OSET), nullAddr, Z_EXTADDR_LEN))
\ 0000C8 ; Setup parameters for call to function osal_memcmp
\ 0000C8 78.. MOV R0,#?V0
\ 0000CA 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 0000CD 7C08 MOV R4,#0x8
\ 0000CF 7D00 MOV R5,#0x0
\ 0000D1 790C MOV R1,#0xc
\ 0000D3 7A78 MOV R2,#0x78
\ 0000D5 7B00 MOV R3,#0x0
\ 0000D7 12.... LCALL `??osal_memcmp::?relay`; Banked call to: osal_memcmp
\ 0000DA 7403 MOV A,#0x3
\ 0000DC 12.... LCALL ?DEALLOC_XSTACK8
\ 0000DF E9 MOV A,R1
\ 0000E0 6003 JZ $+5
\ 0000E2 02.... LJMP ??zmain_ext_addr_3 & 0xFFFF
194 {
195 osal_memcpy(aExtendedAddress, (uint8 *)(P_INFOPAGE+HAL_INFOP_IEEE_OSET), Z_EXTADDR_LEN);
\ 0000E5 ; Setup parameters for call to function osal_memcpy
\ 0000E5 75..0C MOV ?V0,#0xc
\ 0000E8 75..78 MOV ?V1,#0x78
\ 0000EB 78.. MOV R0,#?V0
\ 0000ED 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 0000F0 7C08 MOV R4,#0x8
\ 0000F2 7D00 MOV R5,#0x0
\ 0000F4 7A.. MOV R2,#aExtendedAddress & 0xff
\ 0000F6 7B.. MOV R3,#(aExtendedAddress >> 8) & 0xff
\ 0000F8 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
\ 0000FB 7403 MOV A,#0x3
\ 0000FD 12.... LCALL ?DEALLOC_XSTACK8
196 }
197 else // No valid extended address was found.
198 {
199 uint8 idx;
200
201 #if !defined ( NV_RESTORE )
202 writeNV = FALSE; // Make this a temporary IEEE address
203 #endif
204
205 /* Attempt to create a sufficiently random extended address for expediency.
206 * Note: this is only valid/legal in a test environment and
207 * must never be used for a commercial product.
208 */
209 for (idx = 0; idx < (Z_EXTADDR_LEN - 2);)
210 {
211 uint16 randy = osal_rand();
212 aExtendedAddress[idx++] = LO_UINT16(randy);
213 aExtendedAddress[idx++] = HI_UINT16(randy);
214 }
215 // Next-to-MSB identifies ZigBee devicetype.
216 #if ZG_BUILD_COORDINATOR_TYPE && !ZG_BUILD_JOINING_TYPE
217 aExtendedAddress[idx++] = 0x10;
218 #elif ZG_BUILD_RTRONLY_TYPE
219 aExtendedAddress[idx++] = 0x20;
220 #else
221 aExtendedAddress[idx++] = 0x30;
222 #endif
223 // MSB has historical signficance.
224 aExtendedAddress[idx] = 0xF8;
225 }
226 }
227
228 if (writeNV)
229 {
230 (void)osal_nv_write(ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, aExtendedAddress);
\ ??zmain_ext_addr_2:
\ 000100 ; Setup parameters for call to function osal_nv_write
\ 000100 75.... MOV ?V0,#aExtendedAddress & 0xff
\ 000103 75.... MOV ?V1,#(aExtendedAddress >> 8) & 0xff
\ 000106 78.. MOV R0,#?V0
\ 000108 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00010B 75..08 MOV ?V0,#0x8
\ 00010E 75..00 MOV ?V1,#0x0
\ 000111 78.. MOV R0,#?V0
\ 000113 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000116 7C00 MOV R4,#0x0
\ 000118 7D00 MOV R5,#0x0
\ 00011A 7A01 MOV R2,#0x1
\ 00011C 7B00 MOV R3,#0x0
\ 00011E 12.... LCALL `??osal_nv_write::?relay`; Banked call to: osal_nv_write
\ 000121 7404 MOV A,#0x4
\ 000123 12.... LCALL ?DEALLOC_XSTACK8
231 }
232 }
233 // add by lijian 20120821
234 if(zgConfigPANID == 0xFFFF)
\ ??zmain_ext_addr_1:
\ 000126 90.... MOV DPTR,#zgConfigPANID
\ 000129 E0 MOVX A,@DPTR
\ 00012A F4 CPL A
\ 00012B 7003 JNZ ??zmain_ext_addr_4
\ 00012D A3 INC DPTR
\ 00012E E0 MOVX A,@DPTR
\ 00012F F4 CPL A
\ ??zmain_ext_addr_4:
\ 000130 7031 JNZ ??zmain_ext_addr_5
235 {
236 uint8 pid[2];
237 HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_PID_OSET, pid, HAL_FLASH_PID_SIZE);
\ 000132 ; Setup parameters for call to function HalFlashRead
\ 000132 75..02 MOV ?V0,#0x2
\ 000135 75..00 MOV ?V1,#0x0
\ 000138 78.. MOV R0,#?V0
\ 00013A 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00013D 7402 MOV A,#0x2
\ 00013F 12.... LCALL ?XSTACK_DISP102_8
\ 000142 7A00 MOV R2,#0x0
\ 000144 7B00 MOV R3,#0x0
\ 000146 797F MOV R1,#0x7f
\ 000148 12.... LCALL `??HalFlashRead::?relay`; Banked call to: HalFlashRead
\ 00014B 7402 MOV A,#0x2
\ 00014D 12.... LCALL ?DEALLOC_XSTACK8
238 zgConfigPANID = *(uint16 *)pid;
\ 000150 85..82 MOV DPL,?XSP + 0
\ 000153 85..83 MOV DPH,?XSP + 1
\ 000156 E0 MOVX A,@DPTR
\ 000157 F8 MOV R0,A
\ 000158 A3 INC DPTR
\ 000159 E0 MOVX A,@DPTR
\ 00015A F9 MOV R1,A
\ 00015B 90.... MOV DPTR,#zgConfigPANID
\ 00015E E8 MOV A,R0
\ 00015F F0 MOVX @DPTR,A
\ 000160 A3 INC DPTR
\ 000161 E9 MOV A,R1
\ 000162 F0 MOVX @DPTR,A
239 }
240 // end of add
241
242 // Set the MAC PIB extended address according to results from above.
243 (void)ZMacSetReq(MAC_EXTENDED_ADDRESS, aExtendedAddress);
\ ??zmain_ext_addr_5:
\ 000163 ; Setup parameters for call to function ZMacSetReq
\ 000163 7A.. MOV R2,#aExtendedAddress & 0xff
\ 000165 7B.. MOV R3,#(aExtendedAddress >> 8) & 0xff
\ 000167 79E2 MOV R1,#-0x1e
\ 000169 12.... LCALL `??ZMacSetReq::?relay`; Banked call to: ZMacSetReq
244 }
\ 00016C 740A MOV A,#0xa
\ 00016E 12.... LCALL ?DEALLOC_XSTACK8
\ 000171 7F03 MOV R7,#0x3
\ 000173 02.... LJMP ?BANKED_LEAVE_XDATA
\ ??zmain_ext_addr_3:
\ 000176 7E00 MOV R6,#0x0
\ ??zmain_ext_addr_6:
\ 000178 ; Setup parameters for call to function osal_rand
\ 000178 12.... LCALL `??osal_rand::?relay`; Banked call to: osal_rand
\ 00017B 8A.. MOV ?V0,R2
\ 00017D EE MOV A,R6
\ 00017E FA MOV R2,A
\ 00017F 74.. MOV A,#aExtendedAddress & 0xff
\ 000181 2A ADD A,R2
\ 000182 F582 MOV DPL,A
\ 000184 E4 CLR A
\ 000185 34.. ADDC A,#(aExtendedAddress >> 8) & 0xff
\ 000187 F583 MOV DPH,A
\ 000189 E5.. MOV A,?V0
\ 00018B F0 MOVX @DPTR,A
\ 00018C 0E INC R6
\ 00018D EE MOV A,R6
\ 00018E F8 MOV R0,A
\ 00018F 12.... LCALL ?Subroutine0 & 0xFFFF
\ ??CrossCallReturnLabel_0:
\ 000192 EB MOV A,R3
\ 000193 F0 MOVX @DPTR,A
\ 000194 0E INC R6
\ 000195 EE MOV A,R6
\ 000196 C3 CLR C
\ 000197 9406 SUBB A,#0x6
\ 000199 40DD JC ??zmain_ext_addr_6
\ 00019B 08 INC R0
\ 00019C 12.... LCALL ?Subroutine0 & 0xFFFF
\ ??CrossCallReturnLabel_1:
\ 00019F 7410 MOV A,#0x10
\ 0001A1 F0 MOVX @DPTR,A
\ 0001A2 08 INC R0
\ 0001A3 74.. MOV A,#aExtendedAddress & 0xff
\ 0001A5 28 ADD A,R0
\ 0001A6 F582 MOV DPL,A
\ 0001A8 E4 CLR A
\ 0001A9 34.. ADDC A,#(aExtendedAddress >> 8) & 0xff
\ 0001AB F583 MOV DPH,A
\ 0001AD 74F8 MOV A,#-0x8
\ 0001AF F0 MOVX @DPTR,A
\ 0001B0 02.... LJMP ??zmain_ext_addr_1 & 0xFFFF
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 74.. MOV A,#aExtendedAddress & 0xff
\ 000002 2E ADD A,R6
\ 000003 F582 MOV DPL,A
\ 000005 E4 CLR A
\ 000006 34.. ADDC A,#(aExtendedAddress >> 8) & 0xff
\ 000008 F583 MOV DPH,A
\ 00000A 22 RET
\ In segment XDATA_ROM_C, align 1
\ `?<Constant {255, 255, 255, 255, 255, 255, 255,`:
\ 000000 FF DB 255
\ 000001 FF DB 255
\ 000002 FF DB 255
\ 000003 FF DB 255
\ 000004 FF DB 255
\ 000005 FF DB 255
\ 000006 FF DB 255
\ 000007 FF DB 255
245
246 #if defined ZCL_KEY_ESTABLISH
247 /**************************************************************************************************
248 * @fn zmain_cert_init
249 *
250 * @brief Initialize the Certicom certificate information.
251 *
252 * input parameters
253 *
254 * None.
255 *
256 * output parameters
257 *
258 * None.
259 *
260 * @return None.
261 **************************************************************************************************
262 */
263 static void zmain_cert_init(void)
264 {
265 uint8 certData[ZCL_KE_IMPLICIT_CERTIFICATE_LEN];
266 uint8 nullData[ZCL_KE_IMPLICIT_CERTIFICATE_LEN] = {
267 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
268 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
269 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
270 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
271 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
272 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
273 };
274
275 (void)osal_nv_item_init(ZCD_NV_IMPLICIT_CERTIFICATE, ZCL_KE_IMPLICIT_CERTIFICATE_LEN, NULL);
276 (void)osal_nv_item_init(ZCD_NV_DEVICE_PRIVATE_KEY, ZCL_KE_DEVICE_PRIVATE_KEY_LEN, NULL);
277
278 // First check whether non-null certificate data exists in the OSAL NV. To save on code space,
279 // just use the ZCD_NV_CA_PUBLIC_KEY as the bellwether for all three.
280 if ((SUCCESS != osal_nv_item_init(ZCD_NV_CA_PUBLIC_KEY, ZCL_KE_CA_PUBLIC_KEY_LEN, NULL)) ||
281 (SUCCESS != osal_nv_read(ZCD_NV_CA_PUBLIC_KEY, 0, ZCL_KE_CA_PUBLIC_KEY_LEN, certData)) ||
282 (osal_memcmp(certData, nullData, ZCL_KE_CA_PUBLIC_KEY_LEN)))
283 {
284 // Attempt to read the certificate data from its corresponding location on the lock bits page.
285 HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_CA_PUBLIC_KEY_OSET, certData,
286 ZCL_KE_CA_PUBLIC_KEY_LEN);
287 // If the certificate data is not NULL, use it to update the corresponding NV items.
288 if (!osal_memcmp(certData, nullData, ZCL_KE_CA_PUBLIC_KEY_LEN))
289 {
290 (void)osal_nv_write(ZCD_NV_CA_PUBLIC_KEY, 0, ZCL_KE_CA_PUBLIC_KEY_LEN, certData);
291 HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IMPLICIT_CERT_OSET, certData,
292 ZCL_KE_IMPLICIT_CERTIFICATE_LEN);
293 (void)osal_nv_write(ZCD_NV_IMPLICIT_CERTIFICATE, 0,
294 ZCL_KE_IMPLICIT_CERTIFICATE_LEN, certData);
295 HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_DEV_PRIVATE_KEY_OSET, certData,
296 ZCL_KE_DEVICE_PRIVATE_KEY_LEN);
297 (void)osal_nv_write(ZCD_NV_DEVICE_PRIVATE_KEY, 0, ZCL_KE_DEVICE_PRIVATE_KEY_LEN, certData);
298 }
299 }
300 }
301 #endif
302
303 /**************************************************************************************************
304 * @fn zmain_dev_info
305 *
306 * @brief This displays the IEEE (MSB to LSB) on the LCD.
307 *
308 * input parameters
309 *
310 * None.
311 *
312 * output parameters
313 *
314 * None.
315 *
316 * @return None.
317 **************************************************************************************************
318 */
319 static void zmain_dev_info(void)
320 {
321 #ifdef LCD_SUPPORTED
322 uint8 i;
323 uint8 *xad;
324 uint8 lcd_buf[Z_EXTADDR_LEN*2+1];
325
326 // Display the extended address.
327 xad = aExtendedAddress + Z_EXTADDR_LEN - 1;
328
329 for (i = 0; i < Z_EXTADDR_LEN*2; xad--)
330 {
331 uint8 ch;
332 ch = (*xad >> 4) & 0x0F;
333 lcd_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');
334 ch = *xad & 0x0F;
335 lcd_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');
336 }
337 lcd_buf[Z_EXTADDR_LEN*2] = '\0';
338 HalLcdWriteString( "IEEE: ", HAL_LCD_LINE_1 );
339 HalLcdWriteString( (char*)lcd_buf, HAL_LCD_LINE_2 );
340 #endif
341 }
342
343 #ifdef LCD_SUPPORTED
344 /*********************************************************************
345 * @fn zmain_lcd_init
346 * @brief Initialize LCD at start up.
347 * @return none
348 *********************************************************************/
349 static void zmain_lcd_init ( void )
350 {
351 #ifdef SERIAL_DEBUG_SUPPORTED
352 {
353 HalLcdWriteString( "TexasInstruments", HAL_LCD_LINE_1 );
354
355 #if defined( MT_MAC_FUNC )
356 #if defined( ZDO_COORDINATOR )
357 HalLcdWriteString( "MAC-MT Coord", HAL_LCD_LINE_2 );
358 #else
359 HalLcdWriteString( "MAC-MT Device", HAL_LCD_LINE_2 );
360 #endif // ZDO
361 #elif defined( MT_NWK_FUNC )
362 #if defined( ZDO_COORDINATOR )
363 HalLcdWriteString( "NWK Coordinator", HAL_LCD_LINE_2 );
364 #else
365 HalLcdWriteString( "NWK Device", HAL_LCD_LINE_2 );
366 #endif // ZDO
367 #endif // MT_FUNC
368 }
369 #endif // SERIAL_DEBUG_SUPPORTED
370 }
371 #endif
372
373 /*********************************************************************
374 *********************************************************************/
Maximum stack usage in bytes:
ISTACK XSTACK Function
------ ------ --------
0 0 main
0 0 -> HalAdcCheckVdd
0 0 -> HalDriverInit
0 0 -> InitBoard
0 0 -> ZMacInit
0 0 -> osal_init_system
0 0 -> osal_int_disable
0 0 -> osal_int_enable
0 0 -> osal_nv_init
0 0 -> osal_start_system
0 0 -> zgInit
0 0 -> zmain_ext_addr
1 25 zmain_ext_addr
0 23 -> HalFlashRead
0 21 -> ZMacSetReq
0 24 -> osal_memcmp
0 24 -> osal_memcpy
0 23 -> osal_nv_item_init
0 25 -> osal_nv_read
0 25 -> osal_nv_write
0 21 -> osal_rand
Segment part sizes:
Bytes Function/Label
----- --------------
8 ?<Constant {255, 255, 255, 255, 255, 255, 255,
11 ?Subroutine0
1 CLKCONCMD
1 CLKCONSTA
1 P0INP
1 P1DIR
1 P2DIR
1 SLEEPCMD
1 SLEEPSTA
1 _A_P1
1 _A_P2
127 main
435 zmain_ext_addr
12 -- Other
573 bytes in segment BANKED_CODE
12 bytes in segment BANK_RELAYS
9 bytes in segment SFR_AN
8 bytes in segment XDATA_ROM_C
12 bytes of CODE memory
8 bytes of CONST memory
0 bytes of DATA memory (+ 9 bytes shared)
573 bytes of HUGECODE memory
Errors: none
Warnings: none

View File

@@ -1,582 +0,0 @@
###############################################################################
#
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:20
# Copyright 2004-2018 IAR Systems AB.
# PC-locked license - IAR Embedded Workbench for 8051
#
# Core = plain
# Code model = banked
# Data model = large
# Calling convention = xdata reentrant
# Constant location = data_rom
# Dptr setup = 1,16
#
# Source file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\hal_adc.c
# Command line =
# -f C:\Users\VULCAN\AppData\Local\Temp\EW4DF9.tmp
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\hal_adc.c
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
# SAPP_ZSTACK -lC
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# -lA
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
# --diag_suppress Pe001,Pa010 -o
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
# -e --debug --core=plain --dptr=16,1 --data_model=large
# --code_model=banked --calling_convention=xdata_reentrant
# --place_constants=data_rom --nr_virtual_regs 8 -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
# -DZDO_COORDINATOR -DRTR_NWK) -f
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
# -DREJOIN_POLL_RATE=440) -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
# -I
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
# -Ohz --require_prototypes --no_code_motion)
# Locale = Chinese (Simplified)_CHN.936
# List file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\hal_adc.lst
# Object file =
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj\hal_adc.r51
#
###############################################################################
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\hal_adc.c
1 /**************************************************************************************************
2 Filename: hal_adc.c
3 Revised: $Date: 2010-03-12 16:10:36 -0800 (Fri, 12 Mar 2010) $
4 Revision: $Revision: 21910 $
5
6 Description: This file contains the interface to the HAL ADC.
7
8
9 Copyright 2006-2010 Texas Instruments Incorporated. All rights reserved.
10
11 IMPORTANT: Your use of this Software is limited to those specific rights
12 granted under the terms of a software license agreement between the user
13 who downloaded the software, his/her employer (which must be your employer)
14 and Texas Instruments Incorporated (the "License"). You may not use this
15 Software unless you agree to abide by the terms of the License. The License
16 limits your use, and you acknowledge, that the Software may not be modified,
17 copied or distributed unless embedded on a Texas Instruments microcontroller
18 or used solely and exclusively in conjunction with a Texas Instruments radio
19 frequency transceiver, which is integrated into your product. Other than for
20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
21 works of, modify, distribute, perform, display or sell this Software and/or
22 its documentation for any purpose.
23
24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
25 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
35
36 Should you have any questions regarding your right to use this Software,
37 contact Texas Instruments Incorporated at www.TI.com.
38 **************************************************************************************************/
39
40 /**************************************************************************************************
41 * INCLUDES
42 **************************************************************************************************/
43
44 #include "hal_adc.h"
\ In segment SFR_AN, at 0xb4
\ unsigned char volatile __sfr ADCCON1
\ ADCCON1:
\ 000000 DS 1
\ In segment SFR_AN, at 0xb6
\ unsigned char volatile __sfr ADCCON3
\ ADCCON3:
\ 000000 DS 1
\ In segment SFR_AN, at 0xba
\ unsigned char volatile __sfr ADCL
\ ADCL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xbb
\ unsigned char volatile __sfr ADCH
\ ADCH:
\ 000000 DS 1
\ In segment SFR_AN, at 0xf2
\ unsigned char volatile __sfr ADCCFG
\ ADCCFG:
\ 000000 DS 1
45 #include "hal_defs.h"
46 #include "hal_mcu.h"
47 #include "hal_types.h"
48
49 /**************************************************************************************************
50 * CONSTANTS
51 **************************************************************************************************/
52 #define HAL_ADC_EOC 0x80 /* End of Conversion bit */
53 #define HAL_ADC_START 0x40 /* Starts Conversion */
54
55 #define HAL_ADC_STSEL_EXT 0x00 /* External Trigger */
56 #define HAL_ADC_STSEL_FULL 0x10 /* Full Speed, No Trigger */
57 #define HAL_ADC_STSEL_T1C0 0x20 /* Timer1, Channel 0 Compare Event Trigger */
58 #define HAL_ADC_STSEL_ST 0x30 /* ADCCON1.ST =1 Trigger */
59
60 #define HAL_ADC_RAND_NORM 0x00 /* Normal Operation */
61 #define HAL_ADC_RAND_LFSR 0x04 /* Clock LFSR */
62 #define HAL_ADC_RAND_SEED 0x08 /* Seed Modulator */
63 #define HAL_ADC_RAND_STOP 0x0c /* Stop Random Generator */
64 #define HAL_ADC_RAND_BITS 0x0c /* Bits [3:2] */
65
66 #define HAL_ADC_DEC_064 0x00 /* Decimate by 64 : 8-bit resolution */
67 #define HAL_ADC_DEC_128 0x10 /* Decimate by 128 : 10-bit resolution */
68 #define HAL_ADC_DEC_256 0x20 /* Decimate by 256 : 12-bit resolution */
69 #define HAL_ADC_DEC_512 0x30 /* Decimate by 512 : 14-bit resolution */
70 #define HAL_ADC_DEC_BITS 0x30 /* Bits [5:4] */
71
72 #define HAL_ADC_STSEL HAL_ADC_STSEL_ST
73 #define HAL_ADC_RAND_GEN HAL_ADC_RAND_STOP
74 #define HAL_ADC_REF_VOLT HAL_ADC_REF_AVDD
75 #define HAL_ADC_DEC_RATE HAL_ADC_DEC_064
76 #define HAL_ADC_SCHN HAL_ADC_CHN_VDD3
77 #define HAL_ADC_ECHN HAL_ADC_CHN_GND
78
79 /* ------------------------------------------------------------------------------------------------
80 * Local Variables
81 * ------------------------------------------------------------------------------------------------
82 */
83
84 #if (HAL_ADC == TRUE)
\ In segment XDATA_Z, align 1, keep-with-next
85 static uint8 adcRef;
\ adcRef:
\ 000000 DS 1
\ 000001 REQUIRE __INIT_XDATA_Z
86 #endif
87
88 /**************************************************************************************************
89 * @fn HalAdcInit
90 *
91 * @brief Initialize ADC Service
92 *
93 * @param None
94 *
95 * @return None
96 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
97 void HalAdcInit (void)
\ HalAdcInit:
98 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
99 #if (HAL_ADC == TRUE)
100 adcRef = HAL_ADC_REF_VOLT;
\ 000004 90.... MOV DPTR,#adcRef
\ 000007 7480 MOV A,#-0x80
\ 000009 REQUIRE ?Subroutine0
\ 000009 ; // Fall through to label ?Subroutine0
101 #endif
102 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 F0 MOVX @DPTR,A
\ 000001 D083 POP DPH
\ 000003 D082 POP DPL
\ 000005 02.... LJMP ?BRET
103
104 /**************************************************************************************************
105 * @fn HalAdcRead
106 *
107 * @brief Read the ADC based on given channel and resolution
108 *
109 * @param channel - channel where ADC will be read
110 * @param resolution - the resolution of the value
111 *
112 * @return 16 bit value of the ADC in offset binary format.
113 *
114 * Note that the ADC is "bipolar", which means the GND (0V) level is mid-scale.
115 * Note2: This function assumes that ADCCON3 contains the voltage reference.
116 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
117 uint16 HalAdcRead (uint8 channel, uint8 resolution)
\ HalAdcRead:
118 {
\ 000000 REQUIRE ?V0
\ 000000 REQUIRE ?V1
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FC MOV R4,A
\ 000007 EA MOV A,R2
\ 000008 FD MOV R5,A
119 int16 reading = 0;
120
121 #if (HAL_ADC == TRUE)
122 uint8 i, resbits;
123 uint8 adcChannel = 1;
\ 000009 7901 MOV R1,#0x1
124
125 /*
126 * If Analog input channel is AIN0..AIN7, make sure corresponing P0 I/O pin is enabled. The code
127 * does NOT disable the pin at the end of this function. I think it is better to leave the pin
128 * enabled because the results will be more accurate. Because of the inherent capacitance on the
129 * pin, it takes time for the voltage on the pin to charge up to its steady-state level. If
130 * HalAdcRead() has to turn on the pin for every conversion, the results may show a lower voltage
131 * than actuality because the pin did not have time to fully charge.
132 */
133 if (channel < 8)
\ 00000B EC MOV A,R4
\ 00000C C3 CLR C
\ 00000D 9408 SUBB A,#0x8
\ 00000F 500E JNC ??HalAdcRead_0
134 {
135 for (i=0; i < channel; i++)
\ 000011 7800 MOV R0,#0x0
\ 000013 8005 SJMP ??HalAdcRead_1
136 {
137 adcChannel <<= 1;
\ ??HalAdcRead_2:
\ 000015 E9 MOV A,R1
\ 000016 C3 CLR C
\ 000017 33 RLC A
\ 000018 F9 MOV R1,A
138 }
\ 000019 08 INC R0
\ ??HalAdcRead_1:
\ 00001A E8 MOV A,R0
\ 00001B C3 CLR C
\ 00001C 9C SUBB A,R4
\ 00001D 40F6 JC ??HalAdcRead_2
139 }
140
141 /* Enable channel */
142 ADCCFG |= adcChannel;
\ ??HalAdcRead_0:
\ 00001F E9 MOV A,R1
\ 000020 42F2 ORL 0xf2,A
143
144 /* Convert resolution to decimation rate */
145 switch (resolution)
\ 000022 EA MOV A,R2
\ 000023 14 DEC A
\ 000024 6008 JZ ??HalAdcRead_3
\ 000026 14 DEC A
\ 000027 6009 JZ ??HalAdcRead_4
\ 000029 14 DEC A
\ 00002A 600A JZ ??HalAdcRead_5
\ 00002C 800C SJMP ??HalAdcRead_6
146 {
147 case HAL_ADC_RESOLUTION_8:
148 resbits = HAL_ADC_DEC_064;
\ ??HalAdcRead_3:
\ 00002E 7800 MOV R0,#0x0
149 break;
\ 000030 800A SJMP ??HalAdcRead_7
150 case HAL_ADC_RESOLUTION_10:
151 resbits = HAL_ADC_DEC_128;
\ ??HalAdcRead_4:
\ 000032 7810 MOV R0,#0x10
152 break;
\ 000034 8006 SJMP ??HalAdcRead_7
153 case HAL_ADC_RESOLUTION_12:
154 resbits = HAL_ADC_DEC_256;
\ ??HalAdcRead_5:
\ 000036 7820 MOV R0,#0x20
155 break;
\ 000038 8002 SJMP ??HalAdcRead_7
156 case HAL_ADC_RESOLUTION_14:
157 default:
158 resbits = HAL_ADC_DEC_512;
\ ??HalAdcRead_6:
\ 00003A 7830 MOV R0,#0x30
159 break;
160 }
161
162 /* writing to this register starts the extra conversion */
163 ADCCON3 = channel | resbits | adcRef;
\ ??HalAdcRead_7:
\ 00003C 90.... MOV DPTR,#adcRef
\ 00003F E0 MOVX A,@DPTR
\ 000040 FA MOV R2,A
\ 000041 EC MOV A,R4
\ 000042 48 ORL A,R0
\ 000043 4A ORL A,R2
\ 000044 F5B6 MOV 0xb6,A
164
165 /* Wait for the conversion to be done */
166 while (!(ADCCON1 & HAL_ADC_EOC));
\ ??HalAdcRead_8:
\ 000046 E5B4 MOV A,0xb4
\ 000048 A2E7 MOV C,0xE0 /* A */.7
\ 00004A 50FA JNC ??HalAdcRead_8
167
168 /* Disable channel after done conversion */
169 ADCCFG &= (adcChannel ^ 0xFF);
\ 00004C 74FF MOV A,#-0x1
\ 00004E 69 XRL A,R1
\ 00004F 52F2 ANL 0xf2,A
170
171 /* Read the result */
172 reading = (int16) (ADCL);
\ 000051 E5BA MOV A,0xba+0x0
173 reading |= (int16) (ADCH << 8);
\ 000053 FA MOV R2,A
\ 000054 A9BB MOV R1,0xbb
\ 000056 E9 MOV A,R1
\ 000057 FB MOV R3,A
174
175 /* Treat small negative as 0 */
176 if (reading < 0)
\ 000058 C3 CLR C
\ 000059 9400 SUBB A,#0x0
\ 00005B A2D2 MOV C,0xD0 /* PSW */.2
\ 00005D 65D0 XRL A,PSW
\ 00005F 33 RLC A
\ 000060 5004 JNC ??HalAdcRead_9
177 reading = 0;
\ 000062 7A00 MOV R2,#0x0
\ 000064 7B00 MOV R3,#0x0
178
179 switch (resolution)
\ ??HalAdcRead_9:
\ 000066 ED MOV A,R5
\ 000067 14 DEC A
\ 000068 6008 JZ ??HalAdcRead_10
\ 00006A 14 DEC A
\ 00006B 600D JZ ??HalAdcRead_11
\ 00006D 14 DEC A
\ 00006E 6012 JZ ??HalAdcRead_12
\ 000070 8018 SJMP ??HalAdcRead_13
180 {
181 case HAL_ADC_RESOLUTION_8:
182 reading >>= 8;
\ ??HalAdcRead_10:
\ 000072 8A.. MOV ?V0,R2
\ 000074 8B.. MOV ?V1,R3
\ 000076 7408 MOV A,#0x8
\ 000078 8016 SJMP ??HalAdcRead_14
183 break;
184 case HAL_ADC_RESOLUTION_10:
185 reading >>= 6;
\ ??HalAdcRead_11:
\ 00007A 8A.. MOV ?V0,R2
\ 00007C 8B.. MOV ?V1,R3
\ 00007E 7406 MOV A,#0x6
\ 000080 800E SJMP ??HalAdcRead_14
186 break;
187 case HAL_ADC_RESOLUTION_12:
188 reading >>= 4;
\ ??HalAdcRead_12:
\ 000082 8A.. MOV ?V0,R2
\ 000084 8B.. MOV ?V1,R3
\ 000086 7404 MOV A,#0x4
\ 000088 8006 SJMP ??HalAdcRead_14
189 break;
190 case HAL_ADC_RESOLUTION_14:
191 default:
192 reading >>= 2;
\ ??HalAdcRead_13:
\ 00008A 8A.. MOV ?V0,R2
\ 00008C 8B.. MOV ?V1,R3
\ 00008E 7402 MOV A,#0x2
\ ??HalAdcRead_14:
\ 000090 78.. MOV R0,#?V0
\ 000092 12.... LCALL ?SS_SHR
\ 000095 AA.. MOV R2,?V0
\ 000097 AB.. MOV R3,?V1
193 break;
194 }
195 #else
196 // unused arguments
197 (void) channel;
198 (void) resolution;
199 #endif
200
201 return ((uint16)reading);
\ 000099 7F02 MOV R7,#0x2
\ 00009B 02.... LJMP ?BANKED_LEAVE_XDATA
\ 00009E REQUIRE ADCCFG
\ 00009E REQUIRE ADCCON3
\ 00009E REQUIRE ADCCON1
\ 00009E REQUIRE ADCL
\ 00009E REQUIRE ADCH
202 }
203
204 /**************************************************************************************************
205 * @fn HalAdcSetReference
206 *
207 * @brief Sets the reference voltage for the ADC and initializes the service
208 *
209 * @param reference - the reference voltage to be used by the ADC
210 *
211 * @return none
212 *
213 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
214 void HalAdcSetReference ( uint8 reference )
\ HalAdcSetReference:
215 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
216 #if (HAL_ADC == TRUE)
217 adcRef = reference;
\ 000004 E9 MOV A,R1
\ 000005 90.... MOV DPTR,#adcRef
\ 000008 02.... LJMP ?Subroutine0 & 0xFFFF
218 #endif
219 }
220
221 /*********************************************************************
222 * @fn HalAdcCheckVdd
223 *
224 * @brief Check for minimum Vdd specified.
225 *
226 * @param vdd - The board-specific Vdd reading to check for.
227 *
228 * @return TRUE if the Vdd measured is greater than the 'vdd' minimum parameter;
229 * FALSE if not.
230 *
231 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
232 bool HalAdcCheckVdd(uint8 vdd)
\ HalAdcCheckVdd:
233 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
234 ADCCON3 = 0x0F;
\ 000000 75B60F MOV 0xb6,#0xf
235 while (!(ADCCON1 & 0x80));
\ ??HalAdcCheckVdd_0:
\ 000003 E5B4 MOV A,0xb4
\ 000005 A2E7 MOV C,0xE0 /* A */.7
\ 000007 50FA JNC ??HalAdcCheckVdd_0
236 return (ADCH > vdd);
\ 000009 E9 MOV A,R1
\ 00000A C3 CLR C
\ 00000B 95BB SUBB A,0xbb
\ 00000D 5004 JNC ??HalAdcCheckVdd_1
\ 00000F 7901 MOV R1,#0x1
\ 000011 8002 SJMP ??HalAdcCheckVdd_2
\ ??HalAdcCheckVdd_1:
\ 000013 7900 MOV R1,#0x0
\ ??HalAdcCheckVdd_2:
\ 000015 02.... LJMP ?BRET
\ 000018 REQUIRE ADCCON3
\ 000018 REQUIRE ADCCON1
\ 000018 REQUIRE ADCH
237 }
238
239 /**************************************************************************************************
240 **************************************************************************************************/
Maximum stack usage in bytes:
ISTACK XSTACK Function
------ ------ --------
0 0 HalAdcCheckVdd
2 0 HalAdcInit
0 10 HalAdcRead
2 0 HalAdcSetReference
Segment part sizes:
Bytes Function/Label
----- --------------
8 ?Subroutine0
1 ADCCFG
1 ADCCON1
1 ADCCON3
1 ADCH
1 ADCL
24 HalAdcCheckVdd
9 HalAdcInit
158 HalAdcRead
11 HalAdcSetReference
1 adcRef
24 -- Other
210 bytes in segment BANKED_CODE
24 bytes in segment BANK_RELAYS
5 bytes in segment SFR_AN
1 byte in segment XDATA_Z
24 bytes of CODE memory
0 bytes of DATA memory (+ 5 bytes shared)
210 bytes of HUGECODE memory
1 byte of XDATA memory
Errors: none
Warnings: none

View File

@@ -1,780 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:10:20
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\hal_adc.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EW4DF9.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\hal_adc.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wCoord.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DZDO_COORDINATOR -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\CoordinatorEB\List\hal_adc.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME hal_adc
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:XDATA:NOROOT(0)
EXTERN ?V0
EXTERN ?V1
EXTERN ?BANKED_ENTER_XDATA
EXTERN ?BANKED_LEAVE_XDATA
EXTERN ?BDISPATCH
EXTERN ?BRET
EXTERN ?SS_SHR
EXTERN __INIT_XDATA_Z
PUBLIC `??HalAdcCheckVdd::?relay`
FUNCTION `??HalAdcCheckVdd::?relay`,0203H
PUBLIC `??HalAdcInit::?relay`
FUNCTION `??HalAdcInit::?relay`,0203H
PUBLIC `??HalAdcRead::?relay`
FUNCTION `??HalAdcRead::?relay`,0203H
PUBLIC `??HalAdcSetReference::?relay`
FUNCTION `??HalAdcSetReference::?relay`,0203H
PUBWEAK ADCCFG
PUBWEAK ADCCON1
PUBWEAK ADCCON3
PUBWEAK ADCH
PUBWEAK ADCL
PUBLIC HalAdcCheckVdd
FUNCTION HalAdcCheckVdd,0203H
ARGFRAME XSTACK, 0, STACK
PUBLIC HalAdcInit
FUNCTION HalAdcInit,0203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC HalAdcRead
FUNCTION HalAdcRead,080203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 10, STACK
PUBLIC HalAdcSetReference
FUNCTION HalAdcSetReference,0203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
CFI Names cfiNames0
CFI StackFrame CFA_SP SP IDATA
CFI StackFrame CFA_PSP16 PSP16 XDATA
CFI StackFrame CFA_XSP16 XSP16 XDATA
CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
CFI VirtualResource ?RET:24
CFI Resource ?BRET_EXT:8
CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
CFI ResourceParts PSP16 PSPH, PSPL
CFI ResourceParts XSP16 XSPH, XSPL
CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-3
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B Undefined
CFI A Undefined
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT Frame(CFA_SP, 3)
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon0
HalAdcCheckVdd SYMBOL "HalAdcCheckVdd"
`??HalAdcCheckVdd::?relay` SYMBOL "?relay", HalAdcCheckVdd
HalAdcInit SYMBOL "HalAdcInit"
`??HalAdcInit::?relay` SYMBOL "?relay", HalAdcInit
HalAdcRead SYMBOL "HalAdcRead"
`??HalAdcRead::?relay` SYMBOL "?relay", HalAdcRead
HalAdcSetReference SYMBOL "HalAdcSetReference"
`??HalAdcSetReference::?relay` SYMBOL "?relay", HalAdcSetReference
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\hal\target\CC2530EB\hal_adc.c
// 1 /**************************************************************************************************
// 2 Filename: hal_adc.c
// 3 Revised: $Date: 2010-03-12 16:10:36 -0800 (Fri, 12 Mar 2010) $
// 4 Revision: $Revision: 21910 $
// 5
// 6 Description: This file contains the interface to the HAL ADC.
// 7
// 8
// 9 Copyright 2006-2010 Texas Instruments Incorporated. All rights reserved.
// 10
// 11 IMPORTANT: Your use of this Software is limited to those specific rights
// 12 granted under the terms of a software license agreement between the user
// 13 who downloaded the software, his/her employer (which must be your employer)
// 14 and Texas Instruments Incorporated (the "License"). You may not use this
// 15 Software unless you agree to abide by the terms of the License. The License
// 16 limits your use, and you acknowledge, that the Software may not be modified,
// 17 copied or distributed unless embedded on a Texas Instruments microcontroller
// 18 or used solely and exclusively in conjunction with a Texas Instruments radio
// 19 frequency transceiver, which is integrated into your product. Other than for
// 20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 21 works of, modify, distribute, perform, display or sell this Software and/or
// 22 its documentation for any purpose.
// 23
// 24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 25 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 35
// 36 Should you have any questions regarding your right to use this Software,
// 37 contact Texas Instruments Incorporated at www.TI.com.
// 38 **************************************************************************************************/
// 39
// 40 /**************************************************************************************************
// 41 * INCLUDES
// 42 **************************************************************************************************/
// 43
// 44 #include "hal_adc.h"
ASEGN SFR_AN:DATA:NOROOT,0b4H
// unsigned char volatile __sfr ADCCON1
ADCCON1:
DATA8
DS 1
ASEGN SFR_AN:DATA:NOROOT,0b6H
// unsigned char volatile __sfr ADCCON3
ADCCON3:
DATA8
DS 1
ASEGN SFR_AN:DATA:NOROOT,0baH
// unsigned char volatile __sfr ADCL
ADCL:
DATA8
DS 1
ASEGN SFR_AN:DATA:NOROOT,0bbH
// unsigned char volatile __sfr ADCH
ADCH:
DATA8
DS 1
ASEGN SFR_AN:DATA:NOROOT,0f2H
// unsigned char volatile __sfr ADCCFG
ADCCFG:
DATA8
DS 1
// 45 #include "hal_defs.h"
// 46 #include "hal_mcu.h"
// 47 #include "hal_types.h"
// 48
// 49 /**************************************************************************************************
// 50 * CONSTANTS
// 51 **************************************************************************************************/
// 52 #define HAL_ADC_EOC 0x80 /* End of Conversion bit */
// 53 #define HAL_ADC_START 0x40 /* Starts Conversion */
// 54
// 55 #define HAL_ADC_STSEL_EXT 0x00 /* External Trigger */
// 56 #define HAL_ADC_STSEL_FULL 0x10 /* Full Speed, No Trigger */
// 57 #define HAL_ADC_STSEL_T1C0 0x20 /* Timer1, Channel 0 Compare Event Trigger */
// 58 #define HAL_ADC_STSEL_ST 0x30 /* ADCCON1.ST =1 Trigger */
// 59
// 60 #define HAL_ADC_RAND_NORM 0x00 /* Normal Operation */
// 61 #define HAL_ADC_RAND_LFSR 0x04 /* Clock LFSR */
// 62 #define HAL_ADC_RAND_SEED 0x08 /* Seed Modulator */
// 63 #define HAL_ADC_RAND_STOP 0x0c /* Stop Random Generator */
// 64 #define HAL_ADC_RAND_BITS 0x0c /* Bits [3:2] */
// 65
// 66 #define HAL_ADC_DEC_064 0x00 /* Decimate by 64 : 8-bit resolution */
// 67 #define HAL_ADC_DEC_128 0x10 /* Decimate by 128 : 10-bit resolution */
// 68 #define HAL_ADC_DEC_256 0x20 /* Decimate by 256 : 12-bit resolution */
// 69 #define HAL_ADC_DEC_512 0x30 /* Decimate by 512 : 14-bit resolution */
// 70 #define HAL_ADC_DEC_BITS 0x30 /* Bits [5:4] */
// 71
// 72 #define HAL_ADC_STSEL HAL_ADC_STSEL_ST
// 73 #define HAL_ADC_RAND_GEN HAL_ADC_RAND_STOP
// 74 #define HAL_ADC_REF_VOLT HAL_ADC_REF_AVDD
// 75 #define HAL_ADC_DEC_RATE HAL_ADC_DEC_064
// 76 #define HAL_ADC_SCHN HAL_ADC_CHN_VDD3
// 77 #define HAL_ADC_ECHN HAL_ADC_CHN_GND
// 78
// 79 /* ------------------------------------------------------------------------------------------------
// 80 * Local Variables
// 81 * ------------------------------------------------------------------------------------------------
// 82 */
// 83
// 84 #if (HAL_ADC == TRUE)
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA8
// 85 static uint8 adcRef;
adcRef:
DS 1
REQUIRE __INIT_XDATA_Z
// 86 #endif
// 87
// 88 /**************************************************************************************************
// 89 * @fn HalAdcInit
// 90 *
// 91 * @brief Initialize ADC Service
// 92 *
// 93 * @param None
// 94 *
// 95 * @return None
// 96 **************************************************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 97 void HalAdcInit (void)
HalAdcInit:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function HalAdcInit
CODE
// 98 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 99 #if (HAL_ADC == TRUE)
// 100 adcRef = HAL_ADC_REF_VOLT;
MOV DPTR,#adcRef
MOV A,#-0x80
CFI EndBlock cfiBlock0
REQUIRE ?Subroutine0
; // Fall through to label ?Subroutine0
// 101 #endif
// 102 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOVX @DPTR,A
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock1
// 103
// 104 /**************************************************************************************************
// 105 * @fn HalAdcRead
// 106 *
// 107 * @brief Read the ADC based on given channel and resolution
// 108 *
// 109 * @param channel - channel where ADC will be read
// 110 * @param resolution - the resolution of the value
// 111 *
// 112 * @return 16 bit value of the ADC in offset binary format.
// 113 *
// 114 * Note that the ADC is "bipolar", which means the GND (0V) level is mid-scale.
// 115 * Note2: This function assumes that ADCCON3 contains the voltage reference.
// 116 **************************************************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 117 uint16 HalAdcRead (uint8 channel, uint8 resolution)
HalAdcRead:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function HalAdcRead
CODE
// 118 {
REQUIRE ?V0
REQUIRE ?V1
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
MOV A,R1
MOV R4,A
MOV A,R2
MOV R5,A
// 119 int16 reading = 0;
// 120
// 121 #if (HAL_ADC == TRUE)
// 122 uint8 i, resbits;
// 123 uint8 adcChannel = 1;
MOV R1,#0x1
// 124
// 125 /*
// 126 * If Analog input channel is AIN0..AIN7, make sure corresponing P0 I/O pin is enabled. The code
// 127 * does NOT disable the pin at the end of this function. I think it is better to leave the pin
// 128 * enabled because the results will be more accurate. Because of the inherent capacitance on the
// 129 * pin, it takes time for the voltage on the pin to charge up to its steady-state level. If
// 130 * HalAdcRead() has to turn on the pin for every conversion, the results may show a lower voltage
// 131 * than actuality because the pin did not have time to fully charge.
// 132 */
// 133 if (channel < 8)
MOV A,R4
CLR C
SUBB A,#0x8
JNC ??HalAdcRead_0
// 134 {
// 135 for (i=0; i < channel; i++)
MOV R0,#0x0
SJMP ??HalAdcRead_1
// 136 {
// 137 adcChannel <<= 1;
??HalAdcRead_2:
MOV A,R1
CLR C
RLC A
MOV R1,A
// 138 }
INC R0
??HalAdcRead_1:
MOV A,R0
CLR C
SUBB A,R4
JC ??HalAdcRead_2
// 139 }
// 140
// 141 /* Enable channel */
// 142 ADCCFG |= adcChannel;
??HalAdcRead_0:
MOV A,R1
ORL 0xf2,A
// 143
// 144 /* Convert resolution to decimation rate */
// 145 switch (resolution)
MOV A,R2
DEC A
JZ ??HalAdcRead_3
DEC A
JZ ??HalAdcRead_4
DEC A
JZ ??HalAdcRead_5
SJMP ??HalAdcRead_6
// 146 {
// 147 case HAL_ADC_RESOLUTION_8:
// 148 resbits = HAL_ADC_DEC_064;
??HalAdcRead_3:
MOV R0,#0x0
// 149 break;
SJMP ??HalAdcRead_7
// 150 case HAL_ADC_RESOLUTION_10:
// 151 resbits = HAL_ADC_DEC_128;
??HalAdcRead_4:
MOV R0,#0x10
// 152 break;
SJMP ??HalAdcRead_7
// 153 case HAL_ADC_RESOLUTION_12:
// 154 resbits = HAL_ADC_DEC_256;
??HalAdcRead_5:
MOV R0,#0x20
// 155 break;
SJMP ??HalAdcRead_7
// 156 case HAL_ADC_RESOLUTION_14:
// 157 default:
// 158 resbits = HAL_ADC_DEC_512;
??HalAdcRead_6:
MOV R0,#0x30
// 159 break;
// 160 }
// 161
// 162 /* writing to this register starts the extra conversion */
// 163 ADCCON3 = channel | resbits | adcRef;
??HalAdcRead_7:
MOV DPTR,#adcRef
MOVX A,@DPTR
MOV R2,A
MOV A,R4
ORL A,R0
ORL A,R2
MOV 0xb6,A
// 164
// 165 /* Wait for the conversion to be done */
// 166 while (!(ADCCON1 & HAL_ADC_EOC));
??HalAdcRead_8:
MOV A,0xb4
MOV C,0xE0 /* A */.7
JNC ??HalAdcRead_8
// 167
// 168 /* Disable channel after done conversion */
// 169 ADCCFG &= (adcChannel ^ 0xFF);
MOV A,#-0x1
XRL A,R1
ANL 0xf2,A
// 170
// 171 /* Read the result */
// 172 reading = (int16) (ADCL);
MOV A,0xba+0x0
// 173 reading |= (int16) (ADCH << 8);
MOV R2,A
MOV R1,0xbb
MOV A,R1
MOV R3,A
// 174
// 175 /* Treat small negative as 0 */
// 176 if (reading < 0)
CLR C
SUBB A,#0x0
MOV C,0xD0 /* PSW */.2
XRL A,PSW
RLC A
JNC ??HalAdcRead_9
// 177 reading = 0;
MOV R2,#0x0
MOV R3,#0x0
// 178
// 179 switch (resolution)
??HalAdcRead_9:
MOV A,R5
DEC A
JZ ??HalAdcRead_10
DEC A
JZ ??HalAdcRead_11
DEC A
JZ ??HalAdcRead_12
SJMP ??HalAdcRead_13
// 180 {
// 181 case HAL_ADC_RESOLUTION_8:
// 182 reading >>= 8;
??HalAdcRead_10:
MOV ?V0,R2
MOV ?V1,R3
MOV A,#0x8
SJMP ??HalAdcRead_14
// 183 break;
// 184 case HAL_ADC_RESOLUTION_10:
// 185 reading >>= 6;
??HalAdcRead_11:
MOV ?V0,R2
MOV ?V1,R3
MOV A,#0x6
SJMP ??HalAdcRead_14
// 186 break;
// 187 case HAL_ADC_RESOLUTION_12:
// 188 reading >>= 4;
??HalAdcRead_12:
MOV ?V0,R2
MOV ?V1,R3
MOV A,#0x4
SJMP ??HalAdcRead_14
// 189 break;
// 190 case HAL_ADC_RESOLUTION_14:
// 191 default:
// 192 reading >>= 2;
??HalAdcRead_13:
MOV ?V0,R2
MOV ?V1,R3
MOV A,#0x2
??HalAdcRead_14:
MOV R0,#?V0
LCALL ?SS_SHR
MOV R2,?V0
MOV R3,?V1
// 193 break;
// 194 }
// 195 #else
// 196 // unused arguments
// 197 (void) channel;
// 198 (void) resolution;
// 199 #endif
// 200
// 201 return ((uint16)reading);
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock2
REQUIRE ADCCFG
REQUIRE ADCCON3
REQUIRE ADCCON1
REQUIRE ADCL
REQUIRE ADCH
// 202 }
// 203
// 204 /**************************************************************************************************
// 205 * @fn HalAdcSetReference
// 206 *
// 207 * @brief Sets the reference voltage for the ADC and initializes the service
// 208 *
// 209 * @param reference - the reference voltage to be used by the ADC
// 210 *
// 211 * @return none
// 212 *
// 213 **************************************************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 214 void HalAdcSetReference ( uint8 reference )
HalAdcSetReference:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function HalAdcSetReference
CODE
// 215 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 216 #if (HAL_ADC == TRUE)
// 217 adcRef = reference;
MOV A,R1
MOV DPTR,#adcRef
LJMP ?Subroutine0 & 0xFFFF
// 218 #endif
// 219 }
CFI EndBlock cfiBlock3
// 220
// 221 /*********************************************************************
// 222 * @fn HalAdcCheckVdd
// 223 *
// 224 * @brief Check for minimum Vdd specified.
// 225 *
// 226 * @param vdd - The board-specific Vdd reading to check for.
// 227 *
// 228 * @return TRUE if the Vdd measured is greater than the 'vdd' minimum parameter;
// 229 * FALSE if not.
// 230 *
// 231 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 232 bool HalAdcCheckVdd(uint8 vdd)
HalAdcCheckVdd:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function HalAdcCheckVdd
CODE
// 233 {
; Saved register size: 0
; Auto size: 0
// 234 ADCCON3 = 0x0F;
MOV 0xb6,#0xf
// 235 while (!(ADCCON1 & 0x80));
??HalAdcCheckVdd_0:
MOV A,0xb4
MOV C,0xE0 /* A */.7
JNC ??HalAdcCheckVdd_0
// 236 return (ADCH > vdd);
MOV A,R1
CLR C
SUBB A,0xbb
JNC ??HalAdcCheckVdd_1
MOV R1,#0x1
SJMP ??HalAdcCheckVdd_2
??HalAdcCheckVdd_1:
MOV R1,#0x0
??HalAdcCheckVdd_2:
LJMP ?BRET
CFI EndBlock cfiBlock4
REQUIRE ADCCON3
REQUIRE ADCCON1
REQUIRE ADCH
// 237 }
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??HalAdcInit::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 HalAdcInit
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??HalAdcRead::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 HalAdcRead
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??HalAdcSetReference::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 HalAdcSetReference
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??HalAdcCheckVdd::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 HalAdcCheckVdd
END
// 238
// 239 /**************************************************************************************************
// 240 **************************************************************************************************/
//
// 210 bytes in segment BANKED_CODE
// 24 bytes in segment BANK_RELAYS
// 5 bytes in segment SFR_AN
// 1 byte in segment XDATA_Z
//
// 24 bytes of CODE memory
// 0 bytes of DATA memory (+ 5 bytes shared)
// 210 bytes of HUGECODE memory
// 1 byte of XDATA memory
//
//Errors: none
//Warnings: none

Some files were not shown because too many files have changed in this diff Show More