📄 mac_indirect_polling.lst
字号:
104 return RESOURCE_SHORTAGE;
\ 000034 80E6 SJMP ??mipTransmitDataRequest_2
105 }
106
107 // Set TX options
108 txOptions = TX_OPT_ACK_REQ;
109 #if MAC_OPT_SECURITY
110 if (securityEnable) {
111 txOptions |= TX_OPT_SECURITY_ENABLE;
112 }
113 #endif
114
115 // TX mode
116 pPacket->txMode = MTX_MODE_USE_CSMACA_BM;
\ ??mipTransmitDataRequest_4:
\ 000036 E5.. MOV A,?V0 + 0
\ 000038 2486 ADD A,#-0x7a
\ 00003A F582 MOV DPL,A
\ 00003C E5.. MOV A,?V0 + 1
\ 00003E 3400 ADDC A,#0x0
\ 000040 F583 MOV DPH,A
\ 000042 7401 MOV A,#0x1
\ 000044 F0 MOVX @DPTR,A
117 pPacket->retriesLeft = aMaxFrameRetries;
\ 000045 E5.. MOV A,?V0 + 0
\ 000047 2491 ADD A,#-0x6f
\ 000049 F582 MOV DPL,A
\ 00004B E5.. MOV A,?V0 + 1
\ 00004D 3400 ADDC A,#0x0
\ 00004F F583 MOV DPH,A
\ 000051 7403 MOV A,#0x3
\ 000053 F0 MOVX @DPTR,A
118
119 // Generate the packet header (and find security material, if enabled)
120 if (mpib.macShortAddress >= 0xFFFE) {
\ 000054 E5.. MOV A,?V0 + 3
\ 000056 33 RLC A
\ 000057 33 RLC A
\ 000058 54FC ANL A,#0xfc
\ 00005A FA MOV R2,A
\ 00005B 90.... MOV DPTR,#(mpib + 32)
\ 00005E C3 CLR C
\ 00005F E0 MOVX A,@DPTR
\ 000060 94FE SUBB A,#-0x2
\ 000062 A3 INC DPTR
\ 000063 E0 MOVX A,@DPTR
\ 000064 94FF SUBB A,#-0x1
\ 000066 78.. MOV R0,#?V0 + 6
\ 000068 4023 JC ??mipTransmitDataRequest_5
121 msupPrepareHeader(pPacket, FT_MAC_COMMAND, (coordAddrMode << 2) | SRC_ADDR_EXT, mpib.macPANId, (ADDRESS *) &aExtendedAddress, coordPANId, pCoordAddress, (BYTE)txOptions);
\ 00006A ; Setup parameters for call to function msupPrepareHeader
\ 00006A 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00006D 8E.. MOV ?V0 + 4,R6
\ 00006F 8F.. MOV ?V0 + 5,R7
\ 000071 78.. MOV R0,#?V0 + 4
\ 000073 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000076 75.... MOV ?V0 + 4,#(aExtendedAddress & 0xff)
\ 000079 75.... MOV ?V0 + 5,#((aExtendedAddress >> 8) & 0xff)
\ 00007C 78.. MOV R0,#?V0 + 4
\ 00007E 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000081 90.... MOV DPTR,#(mpib + 28)
\ 000084 12.... LCALL ?PUSH_XSTACK8_X_TWO
\ 000087 7D01 MOV R5,#0x1
\ 000089 74C0 MOV A,#-0x40
\ 00008B 8021 SJMP ??mipTransmitDataRequest_6
122 } else {
123 msupPrepareHeader(pPacket, FT_MAC_COMMAND, (coordAddrMode << 2) | SRC_ADDR_SHORT, mpib.macPANId, (ADDRESS *) &mpib.macShortAddress, coordPANId, pCoordAddress, txOptions);
\ ??mipTransmitDataRequest_5:
\ 00008D ; Setup parameters for call to function msupPrepareHeader
\ 00008D 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000090 8E.. MOV ?V0 + 4,R6
\ 000092 8F.. MOV ?V0 + 5,R7
\ 000094 78.. MOV R0,#?V0 + 4
\ 000096 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000099 75.... MOV ?V0 + 4,#((mpib + 32) & 0xff)
\ 00009C 75.... MOV ?V0 + 5,#(((mpib + 32) >> 8) & 0xff)
\ 00009F 78.. MOV R0,#?V0 + 4
\ 0000A1 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 0000A4 90.... MOV DPTR,#(mpib + 28)
\ 0000A7 12.... LCALL ?PUSH_XSTACK8_X_TWO
\ 0000AA 7D01 MOV R5,#0x1
\ 0000AC 7480 MOV A,#-0x80
\ ??mipTransmitDataRequest_6:
\ 0000AE 4A ORL A,R2
\ 0000AF FC MOV R4,A
\ 0000B0 7903 MOV R1,#0x3
\ 0000B2 AA.. MOV R2,?V0 + 0
\ 0000B4 AB.. MOV R3,?V0 + 1
\ 0000B6 12.... LCALL msupPrepareHeader
\ 0000B9 7408 MOV A,#0x8
\ 0000BB 12.... LCALL ?DEALLOC_XSTACK8
124 }
125
126 // Store the command type
127 pPacket->commandType = CMD_DATA_REQUEST;
\ 0000BE E5.. MOV A,?V0 + 0
\ 0000C0 2483 ADD A,#-0x7d
\ 0000C2 F582 MOV DPL,A
\ 0000C4 E5.. MOV A,?V0 + 1
\ 0000C6 3400 ADDC A,#0x0
\ 0000C8 F583 MOV DPH,A
\ 0000CA 7404 MOV A,#0x4
\ 0000CC F0 MOVX @DPTR,A
128
129 // Command frame identifier
130 pPayload = pPacket->pPayload;
131 *(pPayload++) = CMD_DATA_REQUEST;
\ 0000CD E5.. MOV A,?V0 + 0
\ 0000CF 241A ADD A,#0x1a
\ 0000D1 F582 MOV DPL,A
\ 0000D3 E5.. MOV A,?V0 + 1
\ 0000D5 3400 ADDC A,#0x0
\ 0000D7 F583 MOV DPH,A
\ 0000D9 7404 MOV A,#0x4
\ 0000DB F0 MOVX @DPTR,A
132
133 #if MAC_OPT_SECURITY
134 // #bytes in frame counter + key sequence counter (0 or 5)
135 temp = msecProcessSecurityCounters(pPacket, pPayload);
136
137 // In case of frame counter overflow or missing key
138 // Generate error with FAILED_SECURITY_CHECK or UNAVAILABLE_KEY
139 if (pPacket->securitySuite >= 8) {
140 mtxpReleasePacket(pPacket);
141 mschReleaseTask(taskNumber);
142 return pPacket->securitySuite;
143 }
144
145 // Increment payload pointer when counters inserted
146 pPayload += temp;
147
148 // Include command payload length and optional MIC (integrity code) length
149 temp += CMD_DATA_REQUEST_PAYLOAD_LENGTH + pPacket->securitySetup.micLength;
150
151 #else
152 // No security material included, set MAC payload length
153 temp = CMD_DATA_REQUEST_PAYLOAD_LENGTH;
154 #endif
155
156 // Set the packet length
157 pPacket->length = pPacket->headerLength + temp + MAC_FCS_LENGTH;
\ 0000DC 85..82 MOV DPL,?V0 + 0
\ 0000DF 85..83 MOV DPH,?V0 + 1
\ 0000E2 A3 INC DPTR
\ 0000E3 E0 MOVX A,@DPTR
\ 0000E4 2403 ADD A,#0x3
\ 0000E6 F9 MOV R1,A
\ 0000E7 85..82 MOV DPL,?V0 + 0
\ 0000EA 85..83 MOV DPH,?V0 + 1
\ 0000ED A3 INC DPTR
\ 0000EE A3 INC DPTR
\ 0000EF F0 MOVX @DPTR,A
158
159 // No further packet payload
160
161 // Calculate the packet duration (including ack. and FCS)
162 pPacket->duration = msupCalcPacketDuration(pPacket->length, pPacket->txOptions & TX_OPT_ACK_REQ);
\ 0000F0 ; Setup parameters for call to function msupCalcPacketDuration
\ 0000F0 E5.. MOV A,?V0 + 0
\ 0000F2 2481 ADD A,#-0x7f
\ 0000F4 F582 MOV DPL,A
\ 0000F6 E5.. MOV A,?V0 + 1
\ 0000F8 3400 ADDC A,#0x0
\ 0000FA F583 MOV DPH,A
\ 0000FC E0 MOVX A,@DPTR
\ 0000FD A2E0 MOV C,0xE0 /* A */.0
\ 0000FF E4 CLR A
\ 000100 92E0 MOV 0xE0 /* A */.0,C
\ 000102 FA MOV R2,A
\ 000103 12.... LCALL msupCalcPacketDuration
\ 000106 E5.. MOV A,?V0 + 0
\ 000108 2485 ADD A,#-0x7b
\ 00010A F582 MOV DPL,A
\ 00010C E5.. MOV A,?V0 + 1
\ 00010E 3400 ADDC A,#0x0
\ 000110 F583 MOV DPH,A
\ 000112 E9 MOV A,R1
\ 000113 F0 MOVX @DPTR,A
163
164 // Initiate the transmission
165 mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
\ 000114 ; Setup parameters for call to function mschAddTask
\ 000114 75.... MOV ?V0 + 4,#(mtxScheduleTransmission & 0xff)
\ 000117 75.... MOV ?V0 + 5,#((mtxScheduleTransmission >> 8) & 0xff)
\ 00011A 75.... MOV ?V0 + 6,#((mtxScheduleTransmission >> 16) & 0xff)
\ 00011D 78.. MOV R0,#?V0 + 4
\ 00011F 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 000122 AC.. MOV R4,?V0 + 0
\ 000124 AD.. MOV R5,?V0 + 1
\ 000126 7A00 MOV R2,#0x0
\ 000128 A9.. MOV R1,?V0 + 2
\ 00012A 12.... LCALL mschAddTask
\ 00012D 7403 MOV A,#0x3
\ 00012F 12.... LCALL ?DEALLOC_XSTACK8
166
167 return SUCCESS;
\ 000132 7900 MOV R1,#0x0
\ ??mipTransmitDataRequest_3:
\ 000134 7F08 MOV R7,#0x8
\ 000136 02.... LJMP ?FUNC_LEAVE_XDATA
168
169 } // mipTransmitDataRequest
170
171
172
173
174 /*******************************************************************************************************
175 *******************************************************************************************************
176 ************************** DATA REQUEST TIMEOUT **************************
177 *******************************************************************************************************
178 *******************************************************************************************************/
179
180
181
182
183 //-------------------------------------------------------------------------------------------------------
184 // void mipDataRequestTimeoutTask(MAC_TASK_INFO *pTask)
185 //
186 // DESCRIPTION:
187 // This task is run when no valid response has been received after a data request. The task makes
188 // the callback to the higher layer.
189 //
190 // TASK DATA:
191 // 0
192 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
193 void mipDataRequestTimeoutTask(MAC_TASK_INFO *pTask) NEAR {
\ mipDataRequestTimeoutTask:
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
194 MAC_STATE_TYPE oldState;
195
196 // The data request has failed, so stop listening
197 mrxDecrOnCounter();
\ 000009 ; Setup parameters for call to function mrxDecrOnCounter
\ 000009 90.... MOV DPTR,#(mrxDecrOnCounter & 0xffff)
\ 00000C 74.. MOV A,#((mrxDecrOnCounter >> 16) & 0xff)
\ 00000E 12.... LCALL ?BCALL ; Banked call to: DPTR()
198 oldState = macInfo.state;
\ 000011 90.... MOV DPTR,#macInfo
\ 000014 E0 MOVX A,@DPTR
\ 000015 F5.. MOV ?V0 + 0,A
199 macSetState(MAC_STATE_DEFAULT);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -