⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genericapp.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 4 页
字号:
//  301 /*********************************************************************
//  302  * @fn      GenericApp_HandleKeys
//  303  *
//  304  * @brief   Handles all key events for this device.
//  305  *
//  306  * @param   shift - true if in shift/alt.
//  307  * @param   keys - bit field for key events. Valid entries:
//  308  *                 HAL_KEY_SW_4
//  309  *                 HAL_KEY_SW_3
//  310  *                 HAL_KEY_SW_2
//  311  *                 HAL_KEY_SW_1
//  312  *
//  313  * @return  none
//  314  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  315 void GenericApp_HandleKeys( byte shift, byte keys )
GenericApp_HandleKeys:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function GenericApp_HandleKeys
//  316 {
        FUNCALL GenericApp_HandleKeys, ZDApp_SendEndDeviceBindReq
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL GenericApp_HandleKeys, ZDApp_AutoFindDestinationEx
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R2
        MOV	R6,A
//  317   // Shift is used to make each button/switch dual purpose.
//  318   if ( shift )
        MOV	A,R1
        JNZ	??GenericApp_HandleKeys_0
//  319   {
//  320     if ( keys & HAL_KEY_SW_1 )
//  321     {
//  322     }
//  323     if ( keys & HAL_KEY_SW_2 )
//  324     {
//  325     }
//  326     if ( keys & HAL_KEY_SW_3 )
//  327     {
//  328     }
//  329     if ( keys & HAL_KEY_SW_4 )
//  330     {
//  331     }
//  332   }
//  333   else
//  334   {
//  335     if ( keys & HAL_KEY_SW_1 )
//  336     {
//  337     }
//  338 
//  339     if ( keys & HAL_KEY_SW_2 )
        MOV	A,R6
        MOV	C,0xE0 /* A   */.1
        JNC	??GenericApp_HandleKeys_1
//  340     {
//  341       // Initiate an End Device Bind Request for the mandatory endpoint
//  342       ZDApp_SendEndDeviceBindReq( GenericApp_epDesc.endPoint );
        ; Setup parameters for call to function ZDApp_SendEndDeviceBindReq
        MOV	DPTR,#GenericApp_epDesc
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(ZDApp_SendEndDeviceBindReq & 0xffff)
        MOV	A,#((ZDApp_SendEndDeviceBindReq >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  343     }
//  344 
//  345     if ( keys & HAL_KEY_SW_3 )
//  346     {
//  347     }
//  348 
//  349     if ( keys & HAL_KEY_SW_4 )
??GenericApp_HandleKeys_1:
        MOV	A,R6
        MOV	C,0xE0 /* A   */.3
        JNC	??GenericApp_HandleKeys_0
//  350     {
//  351       // Initiate a Match Description Request (Service Discovery)
//  352       //  for the mandatory endpoint
//  353       ZDApp_AutoFindDestination( GenericApp_epDesc.endPoint );
        ; Setup parameters for call to function ZDApp_AutoFindDestinationEx
        MOV	R2,#0x0
        MOV	R3,#0x0
        MOV	DPTR,#GenericApp_epDesc
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(ZDApp_AutoFindDestinationEx & 0xffff)
        MOV	A,#((ZDApp_AutoFindDestinationEx >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  354     }
//  355   }
//  356 }
??GenericApp_HandleKeys_0:
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  357 
//  358 /*********************************************************************
//  359  * LOCAL FUNCTIONS
//  360  */
//  361 
//  362 /*********************************************************************
//  363  * @fn      GenericApp_MessageMSGCB
//  364  *
//  365  * @brief   Data message processor callback.  This function processes
//  366  *          any incoming data - probably from other devices.  So, based
//  367  *          on cluster ID, perform the intended action.
//  368  *
//  369  * @param   none
//  370  *
//  371  * @return  none
//  372  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  373 void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
GenericApp_MessageMSGCB:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function GenericApp_MessageMSGCB
//  374 {
        ; Saved register size: 0
        ; Auto size: 0
//  375   switch ( pkt->clusterId )
//  376   {
//  377     case GENERICAPP_CLUSTERID:
//  378       // "the" message
//  379 #if defined( LCD_SUPPORTED )
//  380       HalLcdWriteScreen( (char*)pkt->cmd.Data, "rcvd" );
//  381 #elif defined( WIN32 )
//  382       WPRINTSTR( pkt->cmd.Data );
//  383 #endif
//  384       break;
//  385   }
//  386 }
        LJMP	?BRET
        CFI EndBlock cfiBlock3
//  387 
//  388 /*********************************************************************
//  389  * @fn      GenericApp_SendTheMessage
//  390  *
//  391  * @brief   Send "the" message.
//  392  *
//  393  * @param   none
//  394  *
//  395  * @return  none
//  396  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  397 void GenericApp_SendTheMessage( void )
GenericApp_SendTheMessage:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function GenericApp_SendTheMessage
//  398 {
        FUNCALL GenericApp_SendTheMessage, osal_strlen
        LOCFRAME XSTACK, 27, STACK
        ARGFRAME XSTACK, 27, STACK
        FUNCALL GenericApp_SendTheMessage, AF_DataRequest
        LOCFRAME XSTACK, 31, STACK
        ARGFRAME XSTACK, 31, STACK
        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: 12
        MOV	A,#-0xc
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 22)
//  399   char theMessageData[] = "Hello World";
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	DPH,#((`?<Constant "Hello World">` >> 8) & 0xff)
        MOV	DPL,#(`?<Constant "Hello World">` & 0xff)
        MOV	A,#0xc
        LCALL	?MOVE_LONG8_XDATA_XDATA
//  400 
//  401   if ( AF_DataRequest( &GenericApp_DstAddr, &GenericApp_epDesc,
//  402                        GENERICAPP_CLUSTERID,
//  403                        (byte)osal_strlen( theMessageData ) + 1,
//  404                        (byte *)&theMessageData,
//  405                        &GenericApp_TransID,
//  406                        AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
        ; Setup parameters for call to function AF_DataRequest
        MOV	?V0 + 0,#0xa
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 23)
        MOV	?V0 + 0,#(GenericApp_TransID & 0xff)
        MOV	?V0 + 1,#((GenericApp_TransID >> 8) & 0xff)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 25)
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        MOV	?V0 + 0,DPL
        MOV	?V0 + 1,DPH
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 27)
        ; Setup parameters for call to function osal_strlen
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(osal_strlen & 0xffff)
        MOV	A,#((osal_strlen >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R2
        MOV	R0,A
        MOV	A,#0x1
        ADD	A,R0
        MOV	?V0 + 0,A
        CLR	A
        ADDC	A,#0x0
        MOV	?V0 + 1,A
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 29)
        MOV	?V0 + 0,#0x1
        MOV	?V0 + 1,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 31)
        MOV	R1,#0x20
        MOV	R4,#(GenericApp_epDesc & 0xff)
        MOV	R5,#((GenericApp_epDesc >> 8) & 0xff)
        MOV	R2,#(GenericApp_DstAddr & 0xff)
        MOV	R3,#((GenericApp_DstAddr >> 8) & 0xff)
        MOV	DPTR,#(AF_DataRequest & 0xffff)
        MOV	A,#((AF_DataRequest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x9
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 22)
//  407   {
//  408     // Successfully requested to be sent.
//  409   }
//  410   else
//  411   {
//  412     // Error occurred in request to send.
//  413   }
//  414 }
        MOV	A,#0xc
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock4

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "Hello World">>`:
        DB "Hello World"

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for GenericApp_ClusterList>`:
        DW 1

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for GenericApp_SimpleDesc>`:
        DB 10
        DW 3844, 1
        DB 0, 1
        DW GenericApp_ClusterList
        DB 1
        DW GenericApp_ClusterList

        END
//  415 
//  416 /*********************************************************************
//  417 *********************************************************************/
// 
// 568 bytes in segment BANKED_CODE
//  26 bytes in segment XDATA_I
//  26 bytes in segment XDATA_ID
//  13 bytes in segment XDATA_Z
// 
// 594 bytes of CODE  memory
//  39 bytes of XDATA memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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