wxl_sampleapp.lst

来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,078 行 · 第 1/4 页

LST
1,078
字号
   \   000000                DS 1
     67          

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     68          afAddrType_t WXL_SampleApp_All_DstAddr;     //广播的方式
   \                     WXL_SampleApp_All_DstAddr:
   \   000000                DS 4

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     69          afAddrType_t WXL_SampleApp_Single_DstAddr;  //短地址单播的方式
   \                     WXL_SampleApp_Single_DstAddr:
   \   000000                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           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
     93          void WXL_SampleApp_Init( uint8 task_id )
   \                     WXL_SampleApp_Init:
     94          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
     95            WXL_SampleApp_TaskID = task_id;                  //任务ID
   \   000004   E9           MOV     A,R1
   \   000005   90....       MOV     DPTR,#WXL_SampleApp_TaskID
   \   000008   F0           MOVX    @DPTR,A
     96            /**********************************************************/
     97            /*                    通讯需要的参数                      */
     98            /**********************************************************/
     99            WXL_SampleApp_NwkState = DEV_INIT;               //网络类型
   \   000009   7401         MOV     A,#0x1
   \   00000B   90....       MOV     DPTR,#WXL_SampleApp_NwkState
   \   00000E   F0           MOVX    @DPTR,A
    100            WXL_SampleApp_TransID = 0;      //唯一的一个消息ID(计数器)
   \   00000F   E4           CLR     A
   \   000010   90....       MOV     DPTR,#WXL_SampleApp_TransID
   \   000013   F0           MOVX    @DPTR,A
    101          
    102            // 设置发送数据的方式和目的地址
    103            // 广播到所有的设备
    104          
    105            WXL_SampleApp_All_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;//广播的方式
   \   000014   740F         MOV     A,#0xf
   \   000016   90....       MOV     DPTR,#(WXL_SampleApp_All_DstAddr + 2)
   \   000019   F0           MOVX    @DPTR,A
    106            WXL_SampleApp_All_DstAddr.endPoint = WXL_SAMPLEAPP_ENDPOINT;
   \   00001A   7414         MOV     A,#0x14
   \   00001C   90....       MOV     DPTR,#(WXL_SampleApp_All_DstAddr + 3)
   \   00001F   F0           MOVX    @DPTR,A
    107            WXL_SampleApp_All_DstAddr.addr.shortAddr = 0xFFFF;
   \   000020   90....       MOV     DPTR,#WXL_SampleApp_All_DstAddr
   \   000023   74FF         MOV     A,#-0x1
   \   000025   F0           MOVX    @DPTR,A
   \   000026   A3           INC     DPTR
   \   000027   F0           MOVX    @DPTR,A
    108          
    109           // 单播到一个设备
    110            WXL_SampleApp_Single_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;;
   \   000028   7402         MOV     A,#0x2
   \   00002A   90....       MOV     DPTR,#(WXL_SampleApp_Single_DstAddr + 2)
   \   00002D   F0           MOVX    @DPTR,A
    111            WXL_SampleApp_Single_DstAddr.endPoint = WXL_SAMPLEAPP_ENDPOINT;
   \   00002E   7414         MOV     A,#0x14
   \   000030   90....       MOV     DPTR,#(WXL_SampleApp_Single_DstAddr + 3)
   \   000033   F0           MOVX    @DPTR,A
    112          
    113            // 设置 endpoint description.
    114            WXL_SampleApp_epDesc.endPoint = WXL_SAMPLEAPP_ENDPOINT;
   \   000034   90....       MOV     DPTR,#WXL_SampleApp_epDesc
   \   000037   F0           MOVX    @DPTR,A
    115            WXL_SampleApp_epDesc.task_id = &WXL_SampleApp_TaskID;
   \   000038   90....       MOV     DPTR,#(WXL_SampleApp_epDesc + 1)
   \   00003B   74..         MOV     A,#(WXL_SampleApp_TaskID & 0xff)
   \   00003D   F0           MOVX    @DPTR,A
   \   00003E   A3           INC     DPTR
   \   00003F   74..         MOV     A,#((WXL_SampleApp_TaskID >> 8) & 0xff)
   \   000041   F0           MOVX    @DPTR,A
    116            WXL_SampleApp_epDesc.simpleDesc
    117                      = (SimpleDescriptionFormat_t *)&WXL_SampleApp_SimpleDesc;
   \   000042   90....       MOV     DPTR,#(WXL_SampleApp_epDesc + 3)
   \   000045   74..         MOV     A,#(WXL_SampleApp_SimpleDesc & 0xff)
   \   000047   F0           MOVX    @DPTR,A
   \   000048   A3           INC     DPTR
   \   000049   74..         MOV     A,#((WXL_SampleApp_SimpleDesc >> 8) & 0xff)
   \   00004B   F0           MOVX    @DPTR,A
    118            WXL_SampleApp_epDesc.latencyReq = noLatencyReqs;
   \   00004C   E4           CLR     A
   \   00004D   90....       MOV     DPTR,#(WXL_SampleApp_epDesc + 5)
   \   000050   F0           MOVX    @DPTR,A
    119          
    120            // 登记endpoint description 到 AF
    121            afRegister( &WXL_SampleApp_epDesc );
   \   000051                ; Setup parameters for call to function afRegister
   \   000051   7A..         MOV     R2,#(WXL_SampleApp_epDesc & 0xff)
   \   000053   7B..         MOV     R3,#((WXL_SampleApp_epDesc >> 8) & 0xff)
   \   000055   90....       MOV     DPTR,#(afRegister & 0xffff)
   \   000058   74..         MOV     A,#((afRegister >> 16) & 0xff)
   \   00005A   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    122          
    123            // 登记所有的按键时间
    124            RegisterForKeys( WXL_SampleApp_TaskID );
   \   00005D                ; Setup parameters for call to function RegisterForKeys
   \   00005D   90....       MOV     DPTR,#WXL_SampleApp_TaskID
   \   000060   E0           MOVX    A,@DPTR
   \   000061   F9           MOV     R1,A
   \   000062   90....       MOV     DPTR,#(RegisterForKeys & 0xffff)
   \   000065   74..         MOV     A,#((RegisterForKeys >> 16) & 0xff)
   \   000067   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    125          }
   \   00006A                REQUIRE ?Subroutine1
   \   00006A                ; // Fall through to label ?Subroutine1

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   02....       LJMP    ?BRET
    126          
    127          /*********************************************************************
    128           * @函数名   WXL_SampleApp_ProcessEvent
    129           *
    130           * 函数功能: 一般应用任务事件处理,这个函数是处理所有的事件到任务,事件包括
    131           *          时间片、消息和所有其他使用者定义过的时间。
    132           *
    133           * @参 数: task_id - OS分配的任务ID.  这个ID将用于发送数据和设置时间片.
    134           *          events  - 处理的事件
    135           *
    136           * @return  none
    137           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    138          uint16 WXL_SampleApp_ProcessEvent( uint8 task_id, uint16 events )
   \                     WXL_SampleApp_ProcessEvent:
    139          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
   \   000005   8A..         MOV     ?V0 + 0,R2
   \   000007   8B..         MOV     ?V0 + 1,R3
    140            afIncomingMSGPacket_t *MSGpkt;
    141          
    142            if ( events & SYS_EVENT_MSG )                                                   //系统信息,
   \   000009   7480         MOV     A,#-0x80
   \   00000B   55..         ANL     A,?V0 + 1
   \   00000D   F9           MOV     R1,A
   \   00000E   E4           CLR     A
   \   00000F   7001         JNZ     ??WXL_SampleApp_ProcessEvent_0
   \   000011   E9           MOV     A,R1
   \                     ??WXL_SampleApp_ProcessEvent_0:
   \   000012   606F         JZ      ??WXL_SampleApp_ProcessEvent_1
    143            {
    144              MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( WXL_SampleApp_TaskID );   //OS发送过来的信息
   \   000014                ; Setup parameters for call to function osal_msg_receive
   \   000014   8016         SJMP    ??WXL_SampleApp_ProcessEvent_2
    145              while ( MSGpkt )
    146              {
    147                switch ( MSGpkt->hdr.event )
    148                {
    149                    // 按键事件
    150                  case KEY_CHANGE:
    151                    //按键处理函数
    152                    WXL_SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->keys );
    153                    break;
    154          
    155                    // 接收数据事件
    156                  case AF_INCOMING_MSG_CMD:
    157                    //接收数据的处理函数
    158                    WXL_SampleApp_MessageMSGCB( MSGpkt );
    159                    break;
    160          
    161                    // 网络状态发生变化时间
    162                  case ZDO_STATE_CHANGE:
    163                    WXL_SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);         //获取网络状态
   \                     ??WXL_SampleApp_ProcessEvent_3:
   \   000016   8E82         MOV     DPL,R6
   \   000018   8F83         MOV     DPH,R7
   \   00001A   A3           INC     DPTR
   \   00001B   E0           MOVX    A,@DPTR
   \   00001C   90....       MOV     DPTR,#WXL_SampleApp_NwkState
   \   00001F   F0           MOVX    @DPTR,A
    164                    if ( (WXL_SampleApp_NwkState == DEV_ZB_COORD)                       //判断网络类型
    165                        || (WXL_SampleApp_NwkState == DEV_ROUTER)
    166                        || (WXL_SampleApp_NwkState == DEV_END_DEVICE) )
    167                    {
    168          
    169                    }
    170                    else
    171                    {
    172                      // 设备不属于这个网络
    173                    }
    174                    break;
    175          
    176                  default:
    177                    break;
    178                }
    179          
    180                // 释放存储器
    181                osal_msg_deallocate( (uint8 *)MSGpkt );
   \                     ??WXL_SampleApp_ProcessEvent_4:
   \   000020                ; Setup parameters for call to function osal_msg_deallocate
   \   000020   EE           MOV     A,R6
   \   000021   FA           MOV     R2,A
   \   000022   EF           MOV     A,R7
   \   000023   FB           MOV     R3,A
   \   000024   90....       MOV     DPTR,#(osal_msg_deallocate & 0xffff)
   \   000027   74..         MOV     A,#((osal_msg_deallocate >> 16) & 0xff)
   \   000029   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    182          
    183                // Next - 如果有一个空闲的任务
    184                MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( WXL_SampleApp_TaskID );
   \   00002C                ; Setup parameters for call to function osal_msg_receive
   \                     ??WXL_SampleApp_ProcessEvent_2:
   \   00002C   90....       MOV     DPTR,#WXL_SampleApp_TaskID
   \   00002F   E0           MOVX    A,@DPTR
   \   000030   F9           MOV     R1,A
   \   000031   90....       MOV     DPTR,#(osal_msg_receive & 0xffff)
   \   000034   74..         MOV     A,#((osal_msg_receive >> 16) & 0xff)
   \   000036   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000039   8A..         MOV     ?V0 + 2,R2
   \   00003B   8B..         MOV     ?V0 + 3,R3
   \   00003D   AE..         MOV     R6,?V0 + 2
   \   00003F   AF..         MOV     R7,?V0 + 3
   \   000041   EE           MOV     A,R6
   \   000042   7001         JNZ     ??WXL_SampleApp_ProcessEvent_5
   \   000044   EF           MOV     A,R7
   \                     ??WXL_SampleApp_ProcessEvent_5:
   \   000045   6033         JZ      ??WXL_SampleApp_ProcessEvent_6
   \   000047   8E82         MOV     DPL,R6
   \   000049   8F83         MOV     DPH,R7
   \   00004B   E0           MOVX    A,@DPTR
   \   00004C   12....       LCALL   ?UC_SWITCH_SPARSE
   \                     `?<Jumptable for WXL_SampleApp_ProcessEvent>_0`:
   \   00004F   00           DB        0
   \   000050   03           DB        3
   \   000051   1A           DB        26
   \   000052   ....         DW        ??WXL_SampleApp_ProcessEvent_7
   \   000054   C0           DB        192
   \   000055   ....         DW        ??WXL_SampleApp_ProcessEvent_8
   \   000057   D1           DB        209
   \   000058   ....         DW        ??WXL_SampleApp_ProcessEvent_3
   \   00005A   ....         DW        ??WXL_SampleApp_ProcessEvent_4
   \                     ??WXL_SampleApp_ProcessEvent_8:
   \   00005C                ; Setup parameters for call to function WXL_SampleApp_HandleKeys
   \   00005C   8E82         MOV     DPL,R6
   \   00005E   8F83         MOV     DPH,R7

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?