zigbee and wifitricker
This commit is contained in:
101
zigbee/README.md
101
zigbee/README.md
@@ -1,51 +1,86 @@
|
||||
## zigbee协议栈
|
||||
## z-stack协议栈
|
||||
|
||||
#### 整体功能概述:
|
||||
#### 协议栈的文件包层次结构:
|
||||
|
||||
* 每个老人一个手环,手环可以获取到老人的**地点、心率、步数**等信息
|
||||
- App:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议中一般是以操作系统的任务实现的。
|
||||
|
||||
* 每个老人的房间门上有一个**RFID**卡(反正能扫描后获取ID的),可以通过**扫描**这个卡,获取到老人的身体情况和当天运动情况
|
||||
* 老人房间情况:**温度**、**湿度**、**有没有人**等,可以定时上传到服务器
|
||||
- HAL:硬件层目录,包含有与硬件相关的配置和驱动及操作函数
|
||||
|
||||
* 子女有个app,可以查看绑定了的老人的所有信息(地图可视化、身体信息可视化)
|
||||
* 子女app还可以看老人房间的情况,看是不是过于热或者过于潮湿,如果有问题就可以联系管理人员进行帮助
|
||||
* 子女可以为绑定的老人设置个人信息(比如病理啥的,一般是对环境有要求的),比如设置了风湿,那房间湿度过高就自动提醒子女和管理员
|
||||
* 管理员(养老院方)有一个网站,可以查看到所有老人的情况
|
||||
- MAC:MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件
|
||||
|
||||
#### 细节功能实现
|
||||
- MT:实现通过串口可控制各层,并与各层进行直接交互
|
||||
|
||||
| 功能描述 | 实现 |
|
||||
| :--------------: | :----------------------------------------------------------: |
|
||||
| 老人身体情况获取 | **开源手环**通过**蓝牙**给老人随身携带的**app**发送数据,然后app传到**服务器** |
|
||||
| 老人房门数据获取 | **~~RFID~~二维码**获得老人的ID,通过ID从**服务器**获取老人的资料(这里我不太懂,有问题请改正) |
|
||||
| 子女App端 | 百度地图可视化老人轨迹、可视化老人运动量(步数)、可视化老人身体情况、联系老人、紧急联络管理人员、获取老人房间数据 |
|
||||
| 管理员(Web端) | 对老人进行管理,可以根据体检信息给老人更新老人的数据,可以点击相应老人查看老人的情况等、可以紧急联系子女 |
|
||||
| 老人房间信息获取 | **温湿度传感器**等,通过zigbee与服务器连接进行增删改 |
|
||||
- NWK:网络层目录,包含网络层配置参数文件网络层库的函数接口文件及APS层库的函数接口
|
||||
|
||||
#### 软硬件需求
|
||||
- OSAL:协议栈的操作系统
|
||||
|
||||
- Profile:AF(Applicationframework应用框架)层目录
|
||||
|
||||
- Security:安全层目录,包含安全层处理函数,比如加密函数等
|
||||
|
||||
- Services:地址处理函数目录,包括地址模式的定义及地址处理函数
|
||||
|
||||
- Tools: 工程配置目录,包括空间划分及Z-Stack相关配置信息
|
||||
|
||||
- ZDO:ZDO目录
|
||||
|
||||
- ZMac:MAC层目录,包括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),后台主机
|
||||
* 协议:zigbee,TCP/IP,BLE 4.0
|
||||
* wifitricker连通内外网
|
||||
#### 手环功能
|
||||
|
||||
* 步数
|
||||
* 心率
|
||||
* <u>定位</u>
|
||||
* 睡眠
|
||||
|
||||
|
||||
#### 硬件模块功能实现
|
||||
|
||||
| 功能描述 | 实现 |
|
||||
| :--------------: | :----------------------------------------------------------: |
|
||||
| 老人身体情况获取 | **开源手环**通过**蓝牙**给老人随身携带的**app**发送数据,采集老人的**心率,步数,血氧,睡眠。运动轨迹**,然后app传到**服务器** |
|
||||
| 老人房门数据获取 | **~~RFID~~二维码**获得老人的ID,通过ID从**服务器**获取老人的资料 |
|
||||
| 老人房间信息获取 |通过实验箱模拟老人房间环境,zigbee模块通过**温湿度传感器**,**人体红外传感器**采集老人房间状态值,并根据温度值控制**继电器(空调)**实现房间的温控,A8网关通过系统提供的CGI接口请求协调器发送各节点的信息,通过脚本解析过后发送给服务器。|
|
||||
|
||||
####硬件系统架构
|
||||
|
||||

|
||||
|
||||
####数据访问网络接口
|
||||
|
||||
获取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拓扑访问接口访问,效果如下:
|
||||

|
||||
|
||||
####拉取数据
|
||||
|
||||

|
||||
|
||||
通过访问上面的zigbee节点数据接口,可以看到数据拉取成功,各个节点的数据都有啦!
|
||||
|
||||
**备注**:
|
||||
|
||||
* 由于硬件的数据访问是通过WiFi AP创建的局域网,所以数无法部署到云服务器,所以我们自己编写了一个脚本用来连接外网,把数据post到云服务器
|
||||
*
|
||||
* 若要访问以上网络接口,需要将设备连接到WiFi Ap创建的局域网内。
|
||||
|
||||
|
||||
11
zigbee/WifiTrick/.idea/libraries/gson_2_2_2.xml
generated
Normal file
11
zigbee/WifiTrick/.idea/libraries/gson_2_2_2.xml
generated
Normal 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
6
zigbee/WifiTrick/.idea/misc.xml
generated
Normal 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
8
zigbee/WifiTrick/.idea/modules.xml
generated
Normal 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
368
zigbee/WifiTrick/.idea/workspace.xml
generated
Normal 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="<template>" 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	" 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>
|
||||
12
zigbee/WifiTrick/WifiTrick.iml
Normal file
12
zigbee/WifiTrick/WifiTrick.iml
Normal 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>
|
||||
BIN
zigbee/WifiTrick/gson-2.2.2.jar
Normal file
BIN
zigbee/WifiTrick/gson-2.2.2.jar
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/okhttp-3.5.0.jar
Normal file
BIN
zigbee/WifiTrick/okhttp-3.5.0.jar
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/okio-1.11.0.jar
Normal file
BIN
zigbee/WifiTrick/okio-1.11.0.jar
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$1.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$1.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$2$1$1.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$2$1$1.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$2$1.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$2$1.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$2.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$2.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$3.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main$3.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Main.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Node.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Node.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/Room.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/Room.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/RoomData.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/RoomData.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/TimeUtils.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/TimeUtils.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/WebUtils.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/WebUtils.class
Normal file
Binary file not shown.
BIN
zigbee/WifiTrick/out/production/WifiTrick/funcList.class
Normal file
BIN
zigbee/WifiTrick/out/production/WifiTrick/funcList.class
Normal file
Binary file not shown.
130
zigbee/WifiTrick/src/Main.java
Normal file
130
zigbee/WifiTrick/src/Main.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
62
zigbee/WifiTrick/src/Node.java
Normal file
62
zigbee/WifiTrick/src/Node.java
Normal 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
58
zigbee/WifiTrick/src/Room.java
Normal file
58
zigbee/WifiTrick/src/Room.java
Normal 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;
|
||||
}
|
||||
}
|
||||
82
zigbee/WifiTrick/src/RoomData.java
Normal file
82
zigbee/WifiTrick/src/RoomData.java
Normal 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 + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
18
zigbee/WifiTrick/src/TimeUtils.java
Normal file
18
zigbee/WifiTrick/src/TimeUtils.java
Normal 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);
|
||||
}
|
||||
}
|
||||
73
zigbee/WifiTrick/src/WebUtils.java
Normal file
73
zigbee/WifiTrick/src/WebUtils.java
Normal 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);
|
||||
}
|
||||
}
|
||||
55
zigbee/WifiTrick/src/funcList.java
Normal file
55
zigbee/WifiTrick/src/funcList.java
Normal 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;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user