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 + -
显示快捷键?