📄 app.lst
字号:
336 0102 DF93 push r29
337 /* prologue end (size=2) */
142:app.c **** uint8_t i;
143:app.c **** i = (sensordataflag + 1)%LOCALDATABUFFSIZE;
339 .LM42:
340 0104 2091 0000 lds r18,sensordataflag
341 0108 822F mov r24,r18
342 010a 9927 clr r25
343 .L38:
345 .LM43:
346 010c 0196 adiw r24,1
347 010e 6AE0 ldi r22,lo8(10)
348 0110 70E0 ldi r23,hi8(10)
349 0112 0E94 0000 call __divmodhi4
144:app.c **** for( ; i != sensordataflag ; ){
351 .LM44:
352 0116 8217 cp r24,r18
353 0118 09F4 brne .+2
354 011a 5DC0 rjmp .L35
145:app.c **** if(sensordatabuff[i] != 0xFFFF) {
356 .LM45:
357 011c C82F mov r28,r24
358 011e DD27 clr r29
359 0120 FE01 movw r30,r28
360 0122 EC0F add r30,r28
361 0124 FD1F adc r31,r29
362 0126 E050 subi r30,lo8(-(sensordatabuff))
363 0128 F040 sbci r31,hi8(-(sensordatabuff))
364 012a 4081 ld r20,Z
365 012c 5181 ldd r21,Z+1
366 012e 8FEF ldi r24,hi8(-1)
367 0130 4F3F cpi r20,lo8(-1)
368 0132 5807 cpc r21,r24
369 0134 09F4 brne .+2
370 0136 4DC0 rjmp .L26
371 .LBB4:
372 .LBB5:
146:app.c **** SendSensorData(sensordatabuff[i]);
147:app.c **** sensordatabuff[i] = 0xFFFF;
148:app.c **** return 1;
149:app.c **** }
150:app.c **** i = (i + 1)%LOCALDATABUFFSIZE;
151:app.c **** }
152:app.c **** return 0;
153:app.c **** }
154:app.c **** /***********************************************************
155:app.c **** 以下为内部函数
156:app.c **** **********************************************************/
157:app.c ****
158:app.c **** static void SendSensorData(uint16_t localsensordata) {
159:app.c **** //发送采集到的数据,暂为空
160:app.c **** SensorMsg *sensordata;
161:app.c **** SHopMsgPtr sHopMsg;
162:app.c **** uint8_t i;
163:app.c **** uint8_t length;
164:app.c ****
165:app.c **** if (OS_LOCAL_ADDRESS == 1) {
374 .LM46:
375 0138 8091 0000 lds r24,OS_LOCAL_ADDRESS
376 013c 8130 cpi r24,lo8(1)
377 013e F1F1 breq .L28
166:app.c **** return;
167:app.c **** }
168:app.c ****
169:app.c **** sHopMsg = (SHopMsgPtr )routesensormsgptr->data;
379 .LM47:
380 0140 6091 0000 lds r22,routesensormsgptr
381 0144 7091 0000 lds r23,(routesensormsgptr)+1
382 0148 DB01 movw r26,r22
383 014a 1596 adiw r26,5
170:app.c **** sHopMsg->type = SENSOR;
385 .LM48:
386 014c 23E0 ldi r18,lo8(3)
387 014e FB01 movw r30,r22
388 0150 2583 std Z+5,r18
171:app.c **** sHopMsg->seq = networkseq;
390 .LM49:
391 0152 8091 0000 lds r24,networkseq
392 0156 9091 0000 lds r25,(networkseq)+1
393 015a FD01 movw r30,r26
394 015c 8183 std Z+1,r24
395 015e 9283 std Z+2,r25
172:app.c **** sHopMsg->lifetime = 3;// 允许的循环路由的次数
397 .LM50:
398 0160 2383 std Z+3,r18
173:app.c ****
174:app.c **** sensordata = (SensorMsg *) (sHopMsg->data);
400 .LM51:
401 0162 DB01 movw r26,r22
402 0164 1996 adiw r26,9
175:app.c **** sensordata->sensorseq = sensorseq;
404 .LM52:
405 0166 8091 0000 lds r24,sensorseq
406 016a 9091 0000 lds r25,(sensorseq)+1
407 016e FB01 movw r30,r22
408 0170 8187 std Z+9,r24
409 0172 9287 std Z+10,r25
176:app.c **** sensordata->reading = localsensordata;
411 .LM53:
412 0174 FD01 movw r30,r26
413 0176 4283 std Z+2,r20
414 0178 5383 std Z+3,r21
177:app.c **** sensordata->type = LIGHT; //传感数据为光数据
416 .LM54:
417 017a 81E0 ldi r24,lo8(1)
418 017c 8483 std Z+4,r24
178:app.c **** sensordata->src = OS_LOCAL_ADDRESS;
420 .LM55:
421 017e 8091 0000 lds r24,OS_LOCAL_ADDRESS
422 0182 8583 std Z+5,r24
179:app.c **** sensorseq++;//应用层数据包号自增
424 .LM56:
425 0184 8091 0000 lds r24,sensorseq
426 0188 9091 0000 lds r25,(sensorseq)+1
427 018c 0196 adiw r24,1
428 018e 9093 0000 sts (sensorseq)+1,r25
429 0192 8093 0000 sts sensorseq,r24
430 0196 FB01 movw r30,r22
431 0198 3F96 adiw r30,15
432 019a 8DE0 ldi r24,lo8(13)
433 .L32:
180:app.c **** for (i = 0; i < MAXPASS; i++) {
181:app.c **** sensordata->passnode[i] = 0;
435 .LM57:
436 019c 1192 st Z+,__zero_reg__
438 .LM58:
439 019e 8150 subi r24,lo8(-(-1))
440 01a0 87FF sbrs r24,7
441 01a2 FCCF rjmp .L32
182:app.c **** }
183:app.c ****
184:app.c **** sensordata->passnode[0] = OS_LOCAL_ADDRESS;
443 .LM59:
444 01a4 8091 0000 lds r24,OS_LOCAL_ADDRESS
445 01a8 FD01 movw r30,r26
446 01aa 8683 std Z+6,r24
185:app.c ****
186:app.c **** length = SHOP_HEADER_LEN + sizeof(SensorMsg);
187:app.c ****
188:app.c **** InLocalMsgQueue(SENSOR,length, routesensormsgptr);
448 .LM60:
449 01ac 4091 0000 lds r20,routesensormsgptr
450 01b0 5091 0000 lds r21,(routesensormsgptr)+1
451 01b4 68E1 ldi r22,lo8(24)
452 01b6 83E0 ldi r24,lo8(3)
453 01b8 0E94 0000 call InLocalMsgQueue
454 .L28:
455 .LBE5:
456 .LBE4:
458 .LM61:
459 01bc CC0F add r28,r28
460 01be DD1F adc r29,r29
461 01c0 C050 subi r28,lo8(-(sensordatabuff))
462 01c2 D040 sbci r29,hi8(-(sensordatabuff))
463 01c4 8FEF ldi r24,lo8(-1)
464 01c6 9FEF ldi r25,hi8(-1)
465 01c8 8883 st Y,r24
466 01ca 9983 std Y+1,r25
468 .LM62:
469 01cc 81E0 ldi r24,lo8(1)
470 01ce 90E0 ldi r25,hi8(1)
471 01d0 04C0 rjmp .L23
472 .L26:
474 .LM63:
475 01d2 CE01 movw r24,r28
476 01d4 9BCF rjmp .L38
477 .L35:
479 .LM64:
480 01d6 80E0 ldi r24,lo8(0)
481 01d8 90E0 ldi r25,hi8(0)
482 .L23:
483 /* epilogue: frame size=0 */
484 01da DF91 pop r29
485 01dc CF91 pop r28
486 01de 0895 ret
487 /* epilogue end (size=3) */
488 /* function LocalDataIn size 112 (107) */
498 .global routeSendSENSORDone
500 routeSendSENSORDone:
189:app.c **** }
190:app.c ****
191:app.c ****
192:app.c **** result_t routeSendSENSORDone(OSMACMsgPtr msg) {
502 .LM65:
503 /* prologue: frame size=0 */
504 /* prologue end (size=0) */
193:app.c **** networkseq++; //网络层数据包号自增
506 .LM66:
507 01e0 2091 0000 lds r18,networkseq
508 01e4 3091 0000 lds r19,(networkseq)+1
509 01e8 2F5F subi r18,lo8(-(1))
510 01ea 3F4F sbci r19,hi8(-(1))
511 01ec 3093 0000 sts (networkseq)+1,r19
512 01f0 2093 0000 sts networkseq,r18
194:app.c **** RouteChangeV(msg->toAddr);
514 .LM67:
515 01f4 FC01 movw r30,r24
516 01f6 8281 ldd r24,Z+2
517 01f8 0E94 0000 call RouteChangeV
195:app.c **** return SUCCESS;
196:app.c **** }
519 .LM68:
520 01fc 81E0 ldi r24,lo8(1)
521 01fe 90E0 ldi r25,hi8(1)
522 /* epilogue: frame size=0 */
523 0200 0895 ret
524 /* epilogue end (size=1) */
525 /* function routeSendSENSORDone size 17 (16) */
529 .global ReceiveDone
531 ReceiveDone:
197:app.c ****
198:app.c **** /***************************************************************
199:app.c **** 接收部分函数
200:app.c **** *******************************************************/
201:app.c **** result_t ReceiveDone(OSMACMsgPtr packet) { //与底层接口函数
533 .LM69:
534 /* prologue: frame size=0 */
535 0202 0F93 push r16
536 0204 1F93 push r17
537 0206 CF93 push r28
538 0208 DF93 push r29
539 /* prologue end (size=4) */
540 020a EC01 movw r28,r24
202:app.c **** uint8_t type;
203:app.c **** SHopMsgPtr sHopMsg;
204:app.c **** sHopMsg = (SHopMsgPtr )packet->data;
542 .LM70:
543 020c BC01 movw r22,r24
544 020e 6B5F subi r22,lo8(-(5))
545 0210 7F4F sbci r23,hi8(-(5))
205:app.c ****
206:app.c **** type = sHopMsg->type;
547 .LM71:
548 0212 9D81 ldd r25,Y+5
207:app.c **** if( packet->group == 0x01) {
550 .LM72:
551 0214 8C81 ldd r24,Y+4
552 0216 8130 cpi r24,lo8(1)
553 0218 09F0 breq .+2
554 021a 93C0 rjmp .L41
555 .LBB6:
556 .LBB7:
208:app.c **** routehandlepkt(type, packet);
209:app.c **** }
210:app.c ****
211:app.c **** return 1;
212:app.c ****
213:app.c **** }
214:app.c ****
215:app.c **** static void routehandlepkt(uint8_t type, OSMACMsgPtr receivemsg) {
216:app.c ****
217:app.c **** switch (type) {
558 .LM73:
559 021c 892F mov r24,r25
560 021e 9927 clr r25
561 0220 8330 cpi r24,3
562 0222 9105 cpc r25,__zero_reg__
563 0224 39F0 breq .L44
564 0226 0497 sbiw r24,4
565 0228 09F0 breq .+2
566 022a 8BC0 rjmp .L41
218:app.c **** case BROADCAST:
219:app.c **** routeReceiveBroadcast(receivemsg);
568 .LM74:
569 022c CE01 movw r24,r28
570 022e 0E94 0000 call routeReceiveBroadcast
220:app.c **** break;
572 .LM75:
573 0232 87C0 rjmp .L41
574 .L44:
575 .LBB8:
576 .LBB9:
221:app.c ****
222:app.c **** case SENSOR:
223:app.c **** routeReceiveSENSOR(receivemsg);
224:app.c **** break;
225:app.c **** }
226:app.c **** }
227:app.c ****
228:app.c **** static void routeReceiveSENSOR(OSMACMsgPtr receivemsg) {
229:app.c **** SHopMsgPtr sHopMsg;
230:app.c **** SensorMsg *sensordata;
231:app.c **** uint8_t i;
232:app.c **** uint8_t j;
233:app.c ****
234:app.c **** uartMsg = *receivemsg;
578 .LM76:
579 0234 8CE3 ldi r24,lo8(60)
580 0236 A0E0 ldi r26,lo8(uartMsg)
581 0238 B0E0 ldi r27,hi8(uartMsg)
582 023a FE01 movw r30,r28
583 023c 0190 ld __tmp_reg__,Z+
584 023e 0D92 st X+,__tmp_reg__
585 0240 8A95 dec r24
586 0242 E1F7 brne .-8
235:app.c ****
236:app.c **** if (receivemsg->fromAddr == OS_LOCAL_ADDRESS) {
588 .LM77:
589 0244 1B81 ldd r17,Y+3
590 0246 0091 0000 lds r16,OS_LOCAL_ADDRESS
591 024a 1017 cp r17,r16
592 024c 09F4 brne .+2
593 024e 79C0 rjmp .L41
237:app.c **** return ;
238:app.c **** }
239:app.c ****
240:app.c **** if (OS_LOCAL_ADDRESS != 1) {
595 .LM78:
596 0250 0130 cpi r16,lo8(1)
597 0252 09F4 brne .+2
598 0254 70C0 rjmp .L47
241:app.c **** sHopMsg = (SHopMsgPtr )receivemsg->data;
242:app.c **** sensordata = (SensorMsg *) (sHopMsg->data);
600 .LM79:
601 0256 DE01 movw r26,r28
602 0258 1996 adiw r26,9
603 .LBB10:
243:app.c **** if((CheckPassed(receivemsg->fromAddr,sHopMsg->seq)) == 0){ //没有记录过
244:app.c **** if(((sHopMsg->lifetime)&0xF0) == 0){
245:app.c **** LifeTime = sHopMsg->lifetime;
246:app.c **** }else{
247:app.c **** LifeTime = ((sHopMsg->lifetime)&0x0F) - 1;
248:app.c **** }
249:app.c ****
250:app.c **** forwardsensor.sensorseq = sensordata->sensorseq;
251:app.c **** forwardsensor.reading = sensordata->reading;
252:app.c **** forwardsensor.type = sensordata->type;
253:app.c **** forwardsensor.src = sensordata->src;
254:app.c ****
255:app.c **** for (i = 0; i < MAXPASS; i++) {
256:app.c **** forwardsensor.passnode[i] = sensordata->passnode[i];
257:app.c **** }
258:app.c **** j = 0;
259:app.c **** for (i = 0; i < MAXPASS; i++) {
260:app.c **** if (sensordata->passnode[i] != 0) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -