af.s51

来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,631 行 · 第 1/5 页

S51
1,631
字号
//  253  * NOTE:  The memory that epDesc is pointing to must exist after this call.
//  254  *
//  255  * @return  afStatus_SUCCESS - Registered
//  256  *          afStatus_MEM_FAIL - not enough memory to add descriptor
//  257  */
//  258 afStatus_t afRegisterFlags( endPointDesc_t *epDesc, eEP_Flags flags )
//  259 {
//  260   epList_t *ep = afRegisterExtended( epDesc, NULL );
//  261 
//  262   if ( ep != NULL )
//  263   {
//  264     ep->flags = flags;
//  265     return afStatus_SUCCESS;
//  266   }
//  267   else
//  268   {
//  269     return afStatus_MEM_FAIL;
//  270   }
//  271 }
//  272 #endif
//  273 
//  274 /*********************************************************************
//  275  * @fn          afDataConfirm
//  276  *
//  277  * @brief       This function will generate the Data Confirm back to
//  278  *              the application.
//  279  *
//  280  * @param       endPoint - confirm end point
//  281  * @param       transID - transaction ID from APSDE_DATA_REQUEST
//  282  * @param       status - status of APSDE_DATA_REQUEST
//  283  *
//  284  * @return      none
//  285  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  286 void afDataConfirm( uint8 endPoint, uint8 transID, ZStatus_t status )
afDataConfirm:
        CFI Block cfiBlock7 Using cfiCommon0
        CFI Function afDataConfirm
//  287 {
        FUNCALL afDataConfirm, afFindEndPointDesc
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL afDataConfirm, osal_msg_allocate
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL afDataConfirm, osal_msg_send
        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
        ; 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_3
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 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, 12)
        CFI Block cfiCond9 Using cfiCommon0
        CFI (cfiCond9) NoFunction
        CFI (cfiCond9) Conditional ??CrossCallReturnLabel_4
        CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond9) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond9) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond9) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond9) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond9) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond9) V6 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, 43)
        CFI Block cfiCond10 Using cfiCommon0
        CFI (cfiCond10) NoFunction
        CFI (cfiCond10) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond10) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond10) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond10) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond10) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond10) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond10) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond10) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond10) V5 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, 14)
        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;

⌨️ 快捷键说明

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