wxl_sampleapp.s51
来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,436 行 · 第 1/4 页
S51
1,436 行
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
EXTERN afRegister
FUNCTION afRegister,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN RegisterForKeys
FUNCTION RegisterForKeys,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN osal_msg_receive
FUNCTION osal_msg_receive,0202H
ARGFRAME XSTACK, 12, STACK
EXTERN osal_msg_deallocate
FUNCTION osal_msg_deallocate,0202H
ARGFRAME XSTACK, 12, STACK
EXTERN memcpy
FUNCTION memcpy,010202H
ARGFRAME XSTACK, 16, STACK
EXTERN HalLedBlink
FUNCTION HalLedBlink,0202H
ARGFRAME XSTACK, 14, STACK
EXTERN AF_DataRequest
FUNCTION AF_DataRequest,0202H
ARGFRAME XSTACK, 19, STACK
RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "OPEN">`:
DS 5
REQUIRE `?<Initializer for <Constant "OPEN">>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "YES">`:
DS 4
REQUIRE `?<Initializer for <Constant "YES">>`
REQUIRE __INIT_XDATA_I
// D:\#ZIGBEE开发之路\20081030101956Texas Instruments\Texas Instruments\Texas Instruments\ZStack-1.4.2\Projects\zstack\Samples\SampleApp\Source\WXL_SampleApp.c
// 1 /******************************************************************************
// 2 * *
// 3 * **** ****** ****
// 4 * **** ******** ****
// 5 * **** **** **** ****
// 6 * **** **** **** **** wxl
// 7 * ******* *******
// 8 * ***** ***** 成都无线龙通讯科技有限公司
// 9 * *
// 10 *******************************************************************************
// 11
// 12 Filename: WXL_SampleApp.c 文 件 名: WXL_SampleApp.c
// 13 Target: cc2430 使用芯片: cc2430
// 14 Author: hxl 程 序 员: hxl
// 15 data: 19/08-2008 日 期: 19/08-2008
// 16 ******************************************************************************/
// 17
// 18 /**********************************头文件**************************************/
// 19 #include "OSAL.h"
// 20 #include "ZGlobals.h"
// 21 #include "AF.h"
// 22 #include "aps_groups.h"
// 23 #include "ZDApp.h"
// 24
// 25 #include "WXL_SampleApp.h"
// 26
// 27 #include "OnBoard.h"
// 28
// 29 /* HAL */
// 30 #include "hal_lcd.h"
// 31 #include "hal_led.h"
// 32 #include "hal_key.h"
// 33
// 34 #include "string.h"
// 35
// 36 /************************************end****************************************/
// 37
// 38 // 这里注册了应用中合法的串ID.
RSEG XDATA_I:XDATA:NOROOT(0)
// 39 const cId_t WXL_SampleApp_ClusterList[WXL_SAMPLEAPP_MAX_CLUSTERS] =
WXL_SampleApp_ClusterList:
DS 4
REQUIRE `?<Initializer for WXL_SampleApp_ClusterList>`
REQUIRE __INIT_XDATA_I
// 40 {
// 41 WXL_SAMPLEAPP_CLUSTERID1,
// 42 WXL_SAMPLEAPP_CLUSTERID2
// 43 };
// 44
RSEG XDATA_I:XDATA:NOROOT(0)
// 45 const SimpleDescriptionFormat_t WXL_SampleApp_SimpleDesc =
WXL_SampleApp_SimpleDesc:
DS 12
REQUIRE `?<Initializer for WXL_SampleApp_SimpleDesc>`
REQUIRE __INIT_XDATA_I
// 46 {
// 47 WXL_SAMPLEAPP_ENDPOINT, // int Endpoint;
// 48 WXL_SAMPLEAPP_PROFID, // uint16 AppProfId[2];
// 49 WXL_SAMPLEAPP_DEVICEID, // uint16 AppDeviceId[2];
// 50 WXL_SAMPLEAPP_DEVICE_VERSION, // int AppDevVer:4;
// 51 WXL_SAMPLEAPP_FLAGS, // int AppFlags:4;
// 52 WXL_SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters;
// 53 (cId_t *)WXL_SampleApp_ClusterList, // uint8 *pAppInClusterList;
// 54 WXL_SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters;
// 55 (cId_t *)WXL_SampleApp_ClusterList // uint8 *pAppInClusterList;
// 56 };
// 57
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 58 endPointDesc_t WXL_SampleApp_epDesc;
WXL_SampleApp_epDesc:
DS 6
// 59
// 60
// 61 /******************************** 变量申明*************************************/
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 62 uint8 WXL_SampleApp_TaskID; // 内部的任务 ID,它的值在SampleApp_Init()中获得
WXL_SampleApp_TaskID:
DS 1
// 63
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 64 devStates_t WXL_SampleApp_NwkState; //网络状态
WXL_SampleApp_NwkState:
DS 1
// 65
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 66 uint8 WXL_SampleApp_TransID; // 这是唯一的一个消息ID(计数器)
WXL_SampleApp_TransID:
DS 1
// 67
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 68 afAddrType_t WXL_SampleApp_All_DstAddr; //广播的方式
WXL_SampleApp_All_DstAddr:
DS 4
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 69 afAddrType_t WXL_SampleApp_Single_DstAddr; //短地址单播的方式
WXL_SampleApp_Single_DstAddr:
DS 4
// 70 /************************************end***************************************/
// 71
// 72 /******************************** 函数申明*************************************/
// 73
// 74 void WXL_SampleApp_HandleKeys( uint8 keys );
// 75 void WXL_SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pckt );
// 76 void WXL_SampleApp_SendPeriodicMessage( void );
// 77 void WXL_SampleApp_SendFlashMessage( uint8 *buffer );
// 78 void WXL_SampleApp_SendData(uint8 *buf, uint16 addr, uint8 Leng);
// 79
// 80 /************************************end***************************************/
// 81
// 82 /*********************************************************************
// 83 * @函数名 SampleApp_Init
// 84 *
// 85 * 函数功能: 任务初始化函数的功能是将该任务需要完成的功能的功能部件初始化,
// 86 * 在每一个任务的初始化函数中,必须完成的功能是要得到设置任务的任
// 87 * 务ID。
// 88 *
// 89 * @参 数: task_id - OS分配的任务ID. 这个ID将用于发送数据和设置时间片.
// 90 *
// 91 * @return none
// 92 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 93 void WXL_SampleApp_Init( uint8 task_id )
WXL_SampleApp_Init:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function WXL_SampleApp_Init
// 94 {
FUNCALL WXL_SampleApp_Init, afRegister
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL WXL_SampleApp_Init, RegisterForKeys
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
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
// 95 WXL_SampleApp_TaskID = task_id; //任务ID
MOV A,R1
MOV DPTR,#WXL_SampleApp_TaskID
MOVX @DPTR,A
// 96 /**********************************************************/
// 97 /* 通讯需要的参数 */
// 98 /**********************************************************/
// 99 WXL_SampleApp_NwkState = DEV_INIT; //网络类型
MOV A,#0x1
MOV DPTR,#WXL_SampleApp_NwkState
MOVX @DPTR,A
// 100 WXL_SampleApp_TransID = 0; //唯一的一个消息ID(计数器)
CLR A
MOV DPTR,#WXL_SampleApp_TransID
MOVX @DPTR,A
// 101
// 102 // 设置发送数据的方式和目的地址
// 103 // 广播到所有的设备
// 104
// 105 WXL_SampleApp_All_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;//广播的方式
MOV A,#0xf
MOV DPTR,#(WXL_SampleApp_All_DstAddr + 2)
MOVX @DPTR,A
// 106 WXL_SampleApp_All_DstAddr.endPoint = WXL_SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#(WXL_SampleApp_All_DstAddr + 3)
MOVX @DPTR,A
// 107 WXL_SampleApp_All_DstAddr.addr.shortAddr = 0xFFFF;
MOV DPTR,#WXL_SampleApp_All_DstAddr
MOV A,#-0x1
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 108
// 109 // 单播到一个设备
// 110 WXL_SampleApp_Single_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;;
MOV A,#0x2
MOV DPTR,#(WXL_SampleApp_Single_DstAddr + 2)
MOVX @DPTR,A
// 111 WXL_SampleApp_Single_DstAddr.endPoint = WXL_SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#(WXL_SampleApp_Single_DstAddr + 3)
MOVX @DPTR,A
// 112
// 113 // 设置 endpoint description.
// 114 WXL_SampleApp_epDesc.endPoint = WXL_SAMPLEAPP_ENDPOINT;
MOV DPTR,#WXL_SampleApp_epDesc
MOVX @DPTR,A
// 115 WXL_SampleApp_epDesc.task_id = &WXL_SampleApp_TaskID;
MOV DPTR,#(WXL_SampleApp_epDesc + 1)
MOV A,#(WXL_SampleApp_TaskID & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((WXL_SampleApp_TaskID >> 8) & 0xff)
MOVX @DPTR,A
// 116 WXL_SampleApp_epDesc.simpleDesc
// 117 = (SimpleDescriptionFormat_t *)&WXL_SampleApp_SimpleDesc;
MOV DPTR,#(WXL_SampleApp_epDesc + 3)
MOV A,#(WXL_SampleApp_SimpleDesc & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((WXL_SampleApp_SimpleDesc >> 8) & 0xff)
MOVX @DPTR,A
// 118 WXL_SampleApp_epDesc.latencyReq = noLatencyReqs;
CLR A
MOV DPTR,#(WXL_SampleApp_epDesc + 5)
MOVX @DPTR,A
// 119
// 120 // 登记endpoint description 到 AF
// 121 afRegister( &WXL_SampleApp_epDesc );
; Setup parameters for call to function afRegister
MOV R2,#(WXL_SampleApp_epDesc & 0xff)
MOV R3,#((WXL_SampleApp_epDesc >> 8) & 0xff)
MOV DPTR,#(afRegister & 0xffff)
MOV A,#((afRegister >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 122
// 123 // 登记所有的按键时间
// 124 RegisterForKeys( WXL_SampleApp_TaskID );
; Setup parameters for call to function RegisterForKeys
MOV DPTR,#WXL_SampleApp_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(RegisterForKeys & 0xffff)
MOV A,#((RegisterForKeys >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
CFI EndBlock cfiBlock0
// 125 }
REQUIRE ?Subroutine1
; // Fall through to label ?Subroutine1
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
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
// 126
// 127 /*********************************************************************
// 128 * @函数名 WXL_SampleApp_ProcessEvent
// 129 *
// 130 * 函数功能: 一般应用任务事件处理,这个函数是处理所有的事件到任务,事件包括
// 131 * 时间片、消息和所有其他使用者定义过的时间。
// 132 *
// 133 * @参 数: task_id - OS分配的任务ID. 这个ID将用于发送数据和设置时间片.
// 134 * events - 处理的事件
// 135 *
// 136 * @return none
// 137 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 138 uint16 WXL_SampleApp_ProcessEvent( uint8 task_id, uint16 events )
WXL_SampleApp_ProcessEvent:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function WXL_SampleApp_ProcessEvent
// 139 {
FUNCALL WXL_SampleApp_ProcessEvent, osal_msg_receive
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL WXL_SampleApp_ProcessEvent, osal_msg_deallocate
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL WXL_SampleApp_ProcessEvent, osal_msg_receive
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL WXL_SampleApp_ProcessEvent, WXL_SampleApp_HandleKeys
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL WXL_SampleApp_ProcessEvent, WXL_SampleApp_MessageMSGCB
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xc
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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?