sapi.s51

来自「CC2430上开关控制灯和温度传感器采集两个例子」· S51 代码 · 共 805 行 · 第 1/3 页

S51
805
字号
// unsigned char volatile __sfr WDCTL
WDCTL:
        DS 1
//   29 #include "nwk_util.h"
//   30 #include "ZDApp.h"
//   31 #include "ZDProfile.h"
//   32 #include "ZDObject.h"
//   33 #include "hal_drivers.h"
//   34 #include "hal_led.h"
//   35 #include "hal_key.h"
//   36 #include "sapi.h"
//   37 #include "MT_SAPI.h"
//   38 
//   39 extern uint8 zgStartDelay;
//   40 extern uint8 zgSapiEndpoint;
//   41 /*********************************************************************
//   42  * CONSTANTS
//   43  */
//   44 
//   45 // Message ID's for application user messages must be in 0xE0-0xEF range
//   46 #define ZB_USER_MSG                       0xE0
//   47 #define SAPICB_DATA_CNF   0xE0
//   48 #define SAPICB_BIND_CNF   0xE1
//   49 #define SAPICB_START_CNF  0xE2
//   50 
//   51 /*********************************************************************
//   52  * TYPEDEFS
//   53  */
//   54 
//   55 
//   56 /*********************************************************************
//   57  * GLOBAL VARIABLES
//   58  */
//   59 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   60 endPointDesc_t sapi_epDesc;
sapi_epDesc:
        DS 6

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   61 static uint8 sapi_TaskID;
??sapi_TaskID:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   62 static uint16 sapi_bindInProgress;
??sapi_bindInProgress:
        DS 2
//   63 /*********************************************************************
//   64  * LOCAL FUNCTIONS
//   65  */
//   66 
//   67 static void SAPI_SendCback( uint8 event, uint8 status, uint16 data );
//   68 
//   69 static void SAPI_StartConfirm( uint8 status );
//   70 static void SAPI_SendDataConfirm( uint8 handle, uint8 status );
//   71 static void SAPI_BindConfirm( uint16 commandId, uint8 status );
//   72 static void SAPI_FindDeviceConfirm( uint8 searchType,
//   73                                         uint8 *searchKey, uint8 *result );
//   74 static void SAPI_ReceiveDataIndication( uint16 source,
//   75                               uint16 command, uint16 len, uint8 *pData  );
//   76 static void SAPI_AllowBindConfirm( uint16 source );
//   77 
//   78 /******************************************************************************
//   79  * @fn          zb_SystemReset
//   80  *
//   81  * @brief       The zb_SystemReset function reboots the ZigBee device.  The
//   82  *              zb_SystemReset function can be called after a call to
//   83  *              zb_WriteConfiguration to restart Z-Stack with the updated
//   84  *              configuration.
//   85  *
//   86  * @param       none
//   87  *
//   88  * @return      none
//   89  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   90 void zb_SystemReset ( void )
zb_SystemReset:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function zb_SystemReset
//   91 {
        ; Saved register size: 0
        ; Auto size: 0
//   92   SystemReset();
        CLR	0xa8.7
        MOV	0xc9,#-0x55
        MOV	0xc9,#0x5b
??zb_SystemReset_0:
        NOP
        SJMP	??zb_SystemReset_0
        CFI EndBlock cfiBlock0
//   93 }
//   94 
//   95 /******************************************************************************
//   96  * @fn          zb_StartRequest
//   97  *
//   98  * @brief       The zb_StartRequest function starts the ZigBee stack.  When the
//   99  *              ZigBee stack starts, the device reads configuration parameters
//  100  *              from Nonvolatile memory and the device joins its network.  The
//  101  *              ZigBee stack calls the zb_StartConrifm callback function when
//  102  *              the startup process completes.
//  103  *
//  104  * @param       none
//  105  *
//  106  * @return      none
//  107  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  108 void zb_StartRequest()
zb_StartRequest:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function zb_StartRequest
//  109 {
        FUNCALL zb_StartRequest, zb_ReadConfiguration
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL zb_StartRequest, ??SAPI_SendCback
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL zb_StartRequest, ZDOInitDevice
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, 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: 1
        MOV	A,#-0x1
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
//  110   uint8 logicalType;
//  111 
//  112   // Start the device
//  113   // start delay = min(NWK_START_DELAY, zgStartDelay) + rand() - only for fresh start, not restore
//  114   if ( zgStartDelay < NWK_START_DELAY )
        MOV	DPTR,#zgStartDelay
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,#0x64
        JNC	??zb_StartRequest_0
//  115     zgStartDelay = 0;
        CLR	A
        SJMP	??zb_StartRequest_1
//  116   else
//  117     zgStartDelay -= NWK_START_DELAY;
??zb_StartRequest_0:
        MOVX	A,@DPTR
        ADD	A,#-0x64
??zb_StartRequest_1:
        MOVX	@DPTR,A
//  118 
//  119   // check that bad combinations of compile flag definitions and device type
//  120   zb_ReadConfiguration( ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType );
        ; Setup parameters for call to function zb_ReadConfiguration
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x1
        MOV	R1,#-0x79
        MOV	DPTR,#(zb_ReadConfiguration & 0xffff)
        MOV	A,#((zb_ReadConfiguration >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  121    if (  ( logicalType > ZG_DEVICETYPE_ENDDEVICE )        ||
//  122 #if defined( RTR_NWK )
//  123   #if defined( ZDO_COORDINATOR )
//  124           // Only RTR or Coord possible
//  125          ( logicalType == ZG_DEVICETYPE_ENDDEVICE )   ||
//  126   #else
//  127           // Only RTR possible
//  128           ( logicalType != ZG_DEVICETYPE_ROUTER )     ||
//  129   #endif
//  130 #else
//  131   #if defined( ZDO_COORDINATOR )
//  132           // Error
//  133           ( 1 )                                     ||
//  134   #else
//  135           // only ED possible
//  136           ( logicalType != ZG_DEVICETYPE_ENDDEVICE )  ||
//  137   #endif
//  138 #endif
//  139           ( 0 ) )
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,#0x3
        JNC	??zb_StartRequest_2
        MOVX	A,@DPTR
        XRL	A,#0x2
        JNZ	??zb_StartRequest_3
//  140    {
//  141      // error configuration
//  142      SAPI_SendCback( SAPICB_START_CNF, ZInvalidParameter, 0 );
??zb_StartRequest_2:
        ; Setup parameters for call to function SAPI_SendCback
        MOV	R4,#0x0
        MOV	R5,#0x0
        MOV	R2,#0x2
        MOV	R1,#-0x1e
        MOV	DPTR,#(??SAPI_SendCback & 0xffff)
        MOV	A,#((??SAPI_SendCback >> 16) & 0xff)
        SJMP	??zb_StartRequest_4
//  143    }
//  144    else
//  145    {
//  146      ZDOInitDevice(zgStartDelay);
??zb_StartRequest_3:
        ; Setup parameters for call to function ZDOInitDevice
        MOV	DPTR,#zgStartDelay
        MOVX	A,@DPTR
        MOV	R2,A
        MOV	R3,#0x0
        MOV	DPTR,#(ZDOInitDevice & 0xffff)
        MOV	A,#((ZDOInitDevice >> 16) & 0xff)
        CFI EndBlock cfiBlock1
??zb_StartRequest_4:
        REQUIRE ?Subroutine13
        ; // Fall through to label ?Subroutine13
//  147    }
//  148 
//  149   return;
//  150 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine13:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        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)))
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x1
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 9)
??Subroutine13_0:
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  151 
//  152 /******************************************************************************
//  153  * @fn          zb_BindDevice
//  154  *
//  155  * @brief       The zb_BindDevice function establishes or removes a 慴inding

⌨️ 快捷键说明

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