📄 zmac_cb.lst
字号:
\ 00001F F8 MOV R0,A
\ 000020 7421 MOV A,#0x21
\ 000022 28 ADD A,R0
\ 000023 FA MOV R2,A
\ 000024 E4 CLR A
\ 000025 3400 ADDC A,#0x0
\ 000027 FB MOV R3,A
\ 000028 8027 SJMP ??getZMacDynamicSize_3
87 case MAC_MLME_SCAN_CNF:
88 if (pData->scanCnf.scanType == ZMAC_ED_SCAN)
\ ??getZMacDynamicSize_2:
\ 00002A 8A82 MOV DPL,R2
\ 00002C 8B83 MOV DPH,R3
\ 00002E A3 INC DPTR
\ 00002F A3 INC DPTR
\ 000030 E0 MOVX A,@DPTR
\ 000031 7004 JNZ ??getZMacDynamicSize_4
89 return ZMAC_ED_SCAN_MAXCHANNELS;
\ 000033 7A1B MOV R2,#0x1b
\ 000035 8018 SJMP ??getZMacDynamicSize_5
90 else
91 return sizeof( ZMacPanDesc_t ) * pData->scanCnf.resultListSize;
\ ??getZMacDynamicSize_4:
\ 000037 8A82 MOV DPL,R2
\ 000039 8B83 MOV DPH,R3
\ 00003B A3 INC DPTR
\ 00003C A3 INC DPTR
\ 00003D A3 INC DPTR
\ 00003E A3 INC DPTR
\ 00003F A3 INC DPTR
\ 000040 A3 INC DPTR
\ 000041 A3 INC DPTR
\ 000042 A3 INC DPTR
\ 000043 E0 MOVX A,@DPTR
\ 000044 75F021 MOV B,#0x21
\ 000047 A4 MUL AB
\ 000048 FA MOV R2,A
\ 000049 ABF0 MOV R3,B
\ 00004B 8004 SJMP ??getZMacDynamicSize_3
92 }
93
94 return 0;
\ ??getZMacDynamicSize_0:
\ 00004D 7A00 MOV R2,#0x0
\ ??getZMacDynamicSize_5:
\ 00004F 7B00 MOV R3,#0x0
\ ??getZMacDynamicSize_3:
\ 000051 REQUIRE ?Subroutine8
\ 000051 ; // Fall through to label ?Subroutine8
95 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine8:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 02.... LJMP ?BRET
96
\ In segment CODE_C, align 1
97 const uint8 CODE zmacCBEventTable [] = {
\ zmacCBEventTable:
\ 000000 FF222324 DB 255, 34, 35, 36, 42, 38, 41, 37, 49, 50, 51, 55, 32, 33, 54, 255, 65
\ 2A262925
\ 31323337
\ 202136FF
\ 41
98 0xff, /* Unused */
99 MACCB_ASSOCIATE_IND_CMD, /* MAC_MLME_ASSOCIATE_IND */
100 MACCB_ASSOCIATE_CNF_CMD, /* MAC_MLME_ASSOCIATE_CNF */
101 MACCB_DISASSOCIATE_IND_CMD, /* MAC_MLME_DISASSOCIATE_IND */
102 MACCB_DISASSOCIATE_CNF_CMD, /* MAC_MLME_DISASSOCIATE_CNF */
103 MACCB_BEACON_NOTIFY_IND_CMD, /* MAC_MLME_BEACON_NOTIFY_IND */
104 /* 0xff, */ /* MAC_MLME_GTS_IND */
105 /* 0xff, */ /* MAC_MLME_GTS_CNF */
106 MACCB_ORPHAN_IND_CMD, /* MAC_MLME_ORPHAN_IND */
107 MACCB_SCAN_CNF_CMD, /* MAC_MLME_SCAN_CNF */
108 MACCB_START_CNF_CMD, /* MAC_MLME_START_CNF */
109 MACCB_SYNC_LOSS_IND_CMD, /* MAC_MLME_SYNC_LOSS_IND */
110 MACCB_POLL_CNF_CMD, /* MAC_MLME_POLL_CNF */
111 MACCB_COMM_STATUS_IND_CMD, /* MAC_MLME_COMM_STATUS_IND */
112 /* 0xff, */ /* MAC_MLME_RX_ENABLE_CNF */
113 MACCB_DATA_CNF_CMD, /* MAC_MCPS_DATA_CNF */
114 MACCB_DATA_IND_CMD, /* MAC_MCPS_DATA_IND */
115 MACCB_PURGE_CNF_CMD, /* MAC_MCPS_PURGE_CNF */
116 0xff, /* MAC_PWR_ON_CNF */
117 MACCB_POLL_IND_CMD /* MAC_MLME_POLL_IND */
118 };
119
120 #endif /* !defined NONWK */
121
122 /********************************************************************************************************
123 * TYPEDEFS
124 ********************************************************************************************************/
125
126 /********************************************************************************************************
127 * GLOBALS
128 ********************************************************************************************************/
129 /* Send Callbacks to MT */
130 void zmacSendMTCallback( macCbackEvent_t *pData );
131
132
133 /********************************************************************************************************
134 * @fn MAC_CbackEvent()
135 *
136 * @brief convert MAC data confirm and indication to ZMac and send to NWK
137 *
138 * @param pData - pointer to macCbackEvent_t
139 *
140 * @return none
141 ********************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
142 void MAC_CbackEvent(macCbackEvent_t *pData)
\ MAC_CbackEvent:
143 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 5
\ 000005 74FB MOV A,#-0x5
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A 8A.. MOV ?V0 + 4,R2
\ 00000C 8B.. MOV ?V0 + 5,R3
144 #ifdef MT_MAC_CB_FUNC
145 zmacSendMTCallback ( pData );
146 #elif !defined NONWK
147
148 uint8 macEvent = pData->hdr.event;
\ 00000E 8A82 MOV DPL,R2
\ 000010 8B83 MOV DPH,R3
\ 000012 E0 MOVX A,@DPTR
\ 000013 F5.. MOV ?V0 + 6,A
149 uint16 msgLen = zmacCBSizeTable[macEvent] + getZMacDynamicSize(macEvent, pData);
\ 000015 12.... LCALL ?Subroutine2 & 0xFFFF
\ ??CrossCallReturnLabel_5:
\ 000018 FE MOV R6,A
\ 000019 ; Setup parameters for call to function getZMacDynamicSize
\ 000019 A9.. MOV R1,?V0 + 6
\ 00001B 90.... MOV DPTR,#(getZMacDynamicSize & 0xffff)
\ 00001E 74.. MOV A,#((getZMacDynamicSize >> 16) & 0xff)
\ 000020 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000023 EA MOV A,R2
\ 000024 2E ADD A,R6
\ 000025 FE MOV R6,A
\ 000026 EB MOV A,R3
\ 000027 3400 ADDC A,#0x0
\ 000029 FF MOV R7,A
150 macCbackEvent_t *msgPtr;
151
152 /* Allocate osal msg buffer */
153 if (msgLen > 0)
\ 00002A EE MOV A,R6
\ 00002B 7001 JNZ ??MAC_CbackEvent_0
\ 00002D EF MOV A,R7
\ ??MAC_CbackEvent_0:
\ 00002E 7003 JNZ $+5
\ 000030 02.... LJMP ??MAC_CbackEvent_1 & 0xFFFF
154 {
155 if (macEvent == MAC_MCPS_DATA_IND)
\ 000033 740D MOV A,#0xd
\ 000035 65.. XRL A,?V0 + 6
\ 000037 7006 JNZ ??MAC_CbackEvent_2
156 msgPtr = pData;
\ 000039 AE.. MOV R6,?V0 + 4
\ 00003B AF.. MOV R7,?V0 + 5
\ 00003D 8030 SJMP ??MAC_CbackEvent_3
157 else
158 {
159 if ( macEvent == MAC_MCPS_DATA_CNF )
\ ??MAC_CbackEvent_2:
\ 00003F 740C MOV A,#0xc
\ 000041 65.. XRL A,?V0 + 6
\ 000043 7016 JNZ ??MAC_CbackEvent_4
160 {
161 osal_msg_deallocate( (uint8*)pData->dataCnf.pDataReq );
\ 000045 ; Setup parameters for call to function osal_msg_deallocate
\ 000045 85..82 MOV DPL,?V0 + 4
\ 000048 85..83 MOV DPH,?V0 + 5
\ 00004B A3 INC DPTR
\ 00004C A3 INC DPTR
\ 00004D A3 INC DPTR
\ 00004E E0 MOVX A,@DPTR
\ 00004F FA MOV R2,A
\ 000050 A3 INC DPTR
\ 000051 E0 MOVX A,@DPTR
\ 000052 FB MOV R3,A
\ 000053 90.... MOV DPTR,#(osal_msg_deallocate & 0xffff)
\ 000056 74.. MOV A,#((osal_msg_deallocate >> 16) & 0xff)
\ 000058 12.... LCALL ?BCALL ; Banked call to: DPTR()
162 }
163 msgPtr = (macCbackEvent_t *)osal_msg_allocate(msgLen);
\ ??MAC_CbackEvent_4:
\ 00005B ; Setup parameters for call to function osal_msg_allocate
\ 00005B EE MOV A,R6
\ 00005C FA MOV R2,A
\ 00005D EF MOV A,R7
\ 00005E FB MOV R3,A
\ 00005F 90.... MOV DPTR,#(osal_msg_allocate & 0xffff)
\ 000062 74.. MOV A,#((osal_msg_allocate >> 16) & 0xff)
\ 000064 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000067 8A.. MOV ?V0 + 0,R2
\ 000069 8B.. MOV ?V0 + 1,R3
\ 00006B AE.. MOV R6,?V0 + 0
\ 00006D AF.. MOV R7,?V0 + 1
164 }
165
166 if (msgPtr)
\ ??MAC_CbackEvent_3:
\ 00006F EE MOV A,R6
\ 000070 7001 JNZ ??MAC_CbackEvent_5
\ 000072 EF MOV A,R7
\ ??MAC_CbackEvent_5:
\ 000073 7003 JNZ $+5
\ 000075 02.... LJMP ??MAC_CbackEvent_1 & 0xFFFF
167 {
168 if (macEvent != MAC_MCPS_DATA_IND)
\ 000078 740D MOV A,#0xd
\ 00007A 65.. XRL A,?V0 + 6
\ 00007C 602A JZ ??MAC_CbackEvent_6
169 osal_memcpy(msgPtr, pData, zmacCBSizeTable[macEvent]);
\ 00007E ; Setup parameters for call to function osal_memcpy
\ 00007E 85.... MOV ?V0 + 0,?V0 + 4
\ 000081 85.... MOV ?V0 + 1,?V0 + 5
\ 000084 75..00 MOV ?V0 + 2,#0x0
\ 000087 78.. MOV R0,#?V0 + 0
\ 000089 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 00008C 85.... MOV ?V0 + 0,?V0 + 6
\ 00008F E5.. MOV A,?V0 + 0
\ 000091 12.... LCALL ?Subroutine2 & 0xFFFF
\ ??CrossCallReturnLabel_6:
\ 000094 FC MOV R4,A
\ 000095 7D00 MOV R5,#0x0
\ 000097 EE MOV A,R6
\ 000098 FA MOV R2,A
\ 000099 EF MOV A,R7
\ 00009A FB MOV R3,A
\ 00009B 90.... MOV DPTR,#(osal_memcpy & 0xffff)
\ 00009E 74.. MOV A,#((osal_memcpy >> 16) & 0xff)
\ 0000A0 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000A3 7403 MOV A,#0x3
\ 0000A5 12.... LCALL ?DEALLOC_XSTACK8
170
171 switch (macEvent) {
\ ??MAC_CbackEvent_6:
\ 0000A8 E5.. MOV A,?V0 + 6
\ 0000AA 12.... LCALL ?UC_SWITCH_SPARSE
\ `?<Jumptable for MAC_CbackEvent>_0`:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -