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

📄 af.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        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
        ; Auto size: 0
        MOV	?V0 + 0,R1
        MOV	?V0 + 1,R3
//  288   endPointDesc_t *epDesc;
//  289   afDataConfirm_t *msgPtr;
//  290 
//  291   // Find the endpoint description
//  292   epDesc = afFindEndPointDesc( endPoint );
        ; Setup parameters for call to function afFindEndPointDesc
        MOV	DPTR,#(afFindEndPointDesc & 0xffff)
        MOV	A,#((afFindEndPointDesc >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 2,R2
        MOV	?V0 + 3,R3
        MOV	R6,?V0 + 2
        MOV	R7,?V0 + 3
//  293   if ( epDesc == NULL )
        MOV	A,R6
        JNZ	??afDataConfirm_0
        MOV	A,R7
??afDataConfirm_0:
        JZ	??afDataConfirm_1
//  294     return;
//  295 
//  296   // Determine the incoming command type
//  297   msgPtr = (afDataConfirm_t *)osal_msg_allocate( sizeof(afDataConfirm_t) );
        ; Setup parameters for call to function osal_msg_allocate
        MOV	R2,#0x4
        MOV	R3,#0x0
        MOV	DPTR,#(osal_msg_allocate & 0xffff)
        MOV	A,#((osal_msg_allocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  298   if ( msgPtr )
        MOV	A,R2
        JNZ	??afDataConfirm_2
        MOV	A,R3
??afDataConfirm_2:
        JZ	??afDataConfirm_1
//  299   {
//  300     // Build the Data Confirm message
//  301     msgPtr->hdr.event = AF_DATA_CONFIRM_CMD;
        MOV	A,#-0x3
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
//  302     msgPtr->hdr.status = status;
        INC	DPTR
        MOV	A,?V0 + 1
        LCALL	?Subroutine2 & 0xFFFF
//  303     msgPtr->endpoint = endPoint;
??CrossCallReturnLabel_3:
        MOV	A,?V0 + 0
        MOVX	@DPTR,A
//  304 #if ( AF_V1_SUPPORT )
//  305     msgPtr->transID = transID;
//  306 #elif ( AF_KVP_SUPPORT )
//  307     {
//  308       epList_t *pList = afFindEndPointDescList( endPoint );
//  309       if ( pList )
//  310       {
//  311         if ( pList->flags & eEP_UsesKVP )
//  312         {
//  313           msgPtr->transID = transID;
//  314         }
//  315       }
//  316     }
//  317 #else
//  318     (void)transID;
//  319 #endif
//  320 
//  321     // send message through task message
//  322     osal_msg_send( *(epDesc->task_id), (byte *)msgPtr );
        ; Setup parameters for call to function osal_msg_send
        MOV	DPL,R6
        MOV	DPH,R7
        LCALL	?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_30:
        LCALL	?BCALL               ; Banked call to: DPTR()
??afDataConfirm_1:
        MOV	R7,#0x4
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock7
//  323   }
//  324 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
        CFI Block cfiCond8 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_4
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V6 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+0
        CFI CFA_XSP16 add(XSP16, 43)
        CFI Block cfiCond9 Using cfiCommon0
        CFI (cfiCond9) NoFunction
        CFI (cfiCond9) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond9) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond9) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond9) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond9) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond9) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond9) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond9) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond9) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond9) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond9) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond9) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond9) CFA_SP SP+0
        CFI (cfiCond9) CFA_XSP16 add(XSP16, 14)
        CFI Block cfiCond10 Using cfiCommon0
        CFI (cfiCond10) NoFunction
        CFI (cfiCond10) Conditional ??CrossCallReturnLabel_3
        CFI (cfiCond10) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond10) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond10) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond10) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond10) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond10) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond10) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond10) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond10) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond10) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond10) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond10) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond10) CFA_SP SP+0
        CFI (cfiCond10) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker11 Using cfiCommon1
        CFI (cfiPicker11) NoFunction
        CFI (cfiPicker11) Picker
        MOVX	@DPTR,A
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        RET
        CFI EndBlock cfiCond8
        CFI EndBlock cfiCond9
        CFI EndBlock cfiCond10
        CFI EndBlock cfiPicker11
//  325 
//  326 /*********************************************************************
//  327  * @fn          afIncomingData
//  328  *
//  329  * @brief       Transfer a data PDU (ASDU) from the APS sub-layer to the AF.
//  330  *
//  331  * @param       aff  - pointer to APS frame format
//  332  * @param       SrcAddress  - Source address
//  333  * @param       LinkQuality - incoming message's link quality
//  334  * @param       SecurityUse - Security enable/disable
//  335  *
//  336  * @return      none
//  337  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  338 void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress,
afIncomingData:
        CFI Block cfiBlock12 Using cfiCommon0
        CFI Function afIncomingData
//  339                      uint8 LinkQuality, byte SecurityUse, uint32 timestamp )
//  340 {
        FUNCALL afIncomingData, NLME_GetProtocolVersion
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        FUNCALL afIncomingData, aps_FindGroupForEndpoint
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        FUNCALL afIncomingData, afFindEndPointDesc
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        FUNCALL afIncomingData, ??afFindEndPointDescList
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        FUNCALL afIncomingData, afFindEndPointDesc
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        FUNCALL afIncomingData, osal_mem_free
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        FUNCALL afIncomingData, ??afBuildMSGIncoming
        LOCFRAME XSTACK, 32, STACK
        ARGFRAME XSTACK, 32, STACK
        FUNCALL afIncomingData, NLME_GetProtocolVersion
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        FUNCALL afIncomingData, aps_FindGroupForEndpoint
        LOCFRAME XSTACK, 25, STACK
        ARGFRAME XSTACK, 25, STACK
        MOV	A,#-0x10
        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 V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 9
        MOV	A,#-0x9
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 25)
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	A,R2
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R3
        MOVX	@DPTR,A
        MOV	A,#0x7
        LCALL	?XSTACK_DISP0_8
        MOV	A,R4
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R5
        MOVX	@DPTR,A
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOV	A,R1
        MOVX	@DPTR,A
        MOV	A,#0x1a
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
//  341   endPointDesc_t *epDesc = NULL;
//  342   uint16 epProfileID = 0xFFFF;  // Invalid Profile ID
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	A,#-0x1
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  343   epList_t *pList;
//  344   uint8 grpEp;
//  345 
//  346   if ( (NLME_GetProtocolVersion() != ZB_PROT_V1_0)
//  347       && ((aff->FrmCtrl & APS_DELIVERYMODE_MASK) == APS_FC_DM_GROUP) )
        ; Setup parameters for call to function NLME_GetProtocolVersion
        MOV	DPTR,#(NLME_GetProtocolVersion & 0xffff)
        MOV	A,#((NLME_GetProtocolVersion >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        XRL	A,#0x1
        JZ	??afIncomingData_0
        LCALL	?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_34:
        JNZ	??afIncomingData_0
//  348   {
//  349     // Find the first endpoint for this group
//  350     grpEp = aps_FindGroupForEndpoint( aff->GroupID, APS_GROUPS_FIND_FIRST );
        ; Setup parameters for call to function aps_FindGroupForEndpoint
        MOV	R1,#-0x2
        LCALL	?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_20:
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        MOV	R7,A
//  351     if ( grpEp == APS_GROUPS_EP_NOT_FOUND )
        MOV	A,#-0x2
        XRL	A,R7
        JNZ	$+5
        LJMP	??afIncomingData_1 & 0xFFFF
//  352       return;   // No endpoint found
//  353 
//  354     epDesc = afFindEndPointDesc( grpEp );
??afIncomingData_2:
        ; Setup parameters for call to function afFindEndPointDesc
        MOV	A,R7
        MOV	R1,A
        MOV	DPTR,#(afFindEndPointDesc & 0xffff)
        MOV	A,#((afFindEndPointDesc >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 6,R2
        MOV	?V0 + 7,R3
//  355     if ( epDesc == NULL )
        MOV	A,R2
        JNZ	??afIncomingData_3
        MOV	A,R3
??afIncomingData_3:
        JNZ	$+5
        LJMP	??afIncomingData_1 & 0xFFFF
//  356       return;   // Endpoint descriptor not found
//  357 
//  358     pList = afFindEndPointDescList( epDesc->endPoint );
??afIncomingData_4:
        ; Setup parameters for call to function afFindEndPointDescList
        MOV	DPL,?V0 + 6
        MOV	DPH,?V0 + 7
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(??afFindEndPointDescList & 0xffff)
        MOV	A,#((??afFindEndPointDescList >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	A,R2
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R3
        MOVX	@DPTR,A
        SJMP	??afIncomingData_5

⌨️ 快捷键说明

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