📄 dataqueue.lst
字号:
605 .L43:
606 027e 6081 ld r22,Z
607 0280 8050 subi r24,lo8(-(Queuemsgqueue+2))
608 0282 9040 sbci r25,hi8(-(Queuemsgqueue+2))
609 0284 0E94 0000 call MACUnicastMsg
610 0288 23C0 rjmp .L33
611 .L39:
203:dataqueue.c **** }else{
204:dataqueue.c **** Queuemsgqueue[dequeue_next].length = 0;
613 .LM75:
614 028a 4C9F mul r20,r28
615 028c F001 movw r30,r0
616 028e 4D9F mul r20,r29
617 0290 F00D add r31,r0
618 0292 5C9F mul r21,r28
619 0294 F00D add r31,r0
620 0296 1124 clr r1
621 0298 E050 subi r30,lo8(-(Queuemsgqueue))
622 029a F040 sbci r31,hi8(-(Queuemsgqueue))
623 029c 2083 st Z,r18
205:dataqueue.c **** dequeue_next++;
206:dataqueue.c **** dequeue_next %= MESSAGE_QUEUE_SIZE;
625 .LM76:
626 029e 832F mov r24,r19
627 02a0 8F5F subi r24,lo8(-(1))
628 02a2 66E0 ldi r22,lo8(6)
629 02a4 0E94 0000 call __udivmodqi4
630 02a8 9093 0000 sts dequeue_next,r25
207:dataqueue.c **** FreeAreaInQueue = FreeAreaInQueue + 1;
632 .LM77:
633 02ac 8091 0000 lds r24,FreeAreaInQueue
634 02b0 8F5F subi r24,lo8(-(1))
635 02b2 8093 0000 sts FreeAreaInQueue,r24
636 02b6 0CC0 rjmp .L33
637 .L35:
208:dataqueue.c **** }
209:dataqueue.c **** }
210:dataqueue.c ****
211:dataqueue.c **** } else {
212:dataqueue.c ****
213:dataqueue.c **** if( dequeue_next !=enqueue_next ) {
639 .LM78:
640 02b8 8091 0000 lds r24,enqueue_next
641 02bc 9817 cp r25,r24
642 02be 41F0 breq .L33
214:dataqueue.c **** dequeue_next = (dequeue_next + 1)%MESSAGE_QUEUE_SIZE;
644 .LM79:
645 02c0 C901 movw r24,r18
646 02c2 0196 adiw r24,1
647 02c4 66E0 ldi r22,lo8(6)
648 02c6 70E0 ldi r23,hi8(6)
649 02c8 0E94 0000 call __divmodhi4
650 02cc 8093 0000 sts dequeue_next,r24
651 .L33:
652 /* epilogue: frame size=0 */
653 02d0 DF91 pop r29
654 02d2 CF91 pop r28
655 02d4 1F91 pop r17
656 02d6 0895 ret
657 /* epilogue end (size=4) */
658 /* function routeSendTask size 132 (125) */
663 .global TransmitDone
665 TransmitDone:
215:dataqueue.c **** }
216:dataqueue.c **** }
217:dataqueue.c **** }
218:dataqueue.c **** /**************************************************************************
219:dataqueue.c **** *功能描述:数据包发送完成后的处理
220:dataqueue.c **** *参数说明:发送出去的数据包地址
221:dataqueue.c **** *返回值:
222:dataqueue.c **** **************************************************************************/
223:dataqueue.c **** result_t TransmitDone(OSMACMsgPtr msg) {
667 .LM80:
668 /* prologue: frame size=0 */
669 /* prologue end (size=0) */
670 02d8 DC01 movw r26,r24
224:dataqueue.c ****
225:dataqueue.c **** uint8_t type;
226:dataqueue.c **** SHopMsgPtr sHopMsg;
227:dataqueue.c **** sHopMsg = (SHopMsgPtr )msg->data;
228:dataqueue.c **** type = sHopMsg->type;
672 .LM81:
673 02da FC01 movw r30,r24
674 02dc 8581 ldd r24,Z+5
229:dataqueue.c ****
230:dataqueue.c **** switch (type) {
676 .LM82:
677 02de 9927 clr r25
678 02e0 8330 cpi r24,3
679 02e2 9105 cpc r25,__zero_reg__
680 02e4 81F0 breq .L48
682 .LM83:
683 02e6 0497 sbiw r24,4
684 02e8 09F0 breq .+2
685 02ea 3FC0 rjmp .L45
231:dataqueue.c **** case BROADCAST: //发送广播包结束
232:dataqueue.c **** if (msg != &QueueBroadcast.Msg) {
687 .LM84:
688 02ec F0E0 ldi r31,hi8(QueueBroadcast+2)
689 02ee A030 cpi r26,lo8(QueueBroadcast+2)
690 02f0 BF07 cpc r27,r31
691 02f2 19F0 breq .L47
233:dataqueue.c **** return FAIL;
693 .LM85:
694 02f4 80E0 ldi r24,lo8(0)
695 02f6 90E0 ldi r25,hi8(0)
696 02f8 0895 ret
697 .L47:
234:dataqueue.c **** }
235:dataqueue.c **** QueueBroadcastState = IDLE;
699 .LM86:
700 02fa 1092 0000 sts QueueBroadcastState,__zero_reg__
236:dataqueue.c **** routeBroadcastDone(msg);
702 .LM87:
703 02fe CD01 movw r24,r26
704 0300 0E94 0000 call routeBroadcastDone
237:dataqueue.c **** break;
706 .LM88:
707 0304 32C0 rjmp .L45
708 .L48:
238:dataqueue.c ****
239:dataqueue.c **** case SENSOR: //发送数据包结束
240:dataqueue.c **** TimeMask = 4;//如果数据报发送成功,为了保证上层节点发送数据包时不冲突,尽量退避
710 .LM89:
711 0306 84E0 ldi r24,lo8(4)
712 0308 8093 0000 sts TimeMask,r24
241:dataqueue.c **** if (msg == &Queuemsgqueue[dequeue_next].Msg) {
714 .LM90:
715 030c 4091 0000 lds r20,dequeue_next
716 0310 8EE3 ldi r24,lo8(62)
717 0312 489F mul r20,r24
718 0314 C001 movw r24,r0
719 0316 1124 clr r1
720 0318 8050 subi r24,lo8(-(Queuemsgqueue+2))
721 031a 9040 sbci r25,hi8(-(Queuemsgqueue+2))
722 031c A817 cp r26,r24
723 031e B907 cpc r27,r25
724 0320 D9F4 brne .L49
242:dataqueue.c **** Queuemsgqueue[dequeue_next].length = 0;
726 .LM91:
727 0322 242F mov r18,r20
728 0324 3327 clr r19
729 0326 8EE3 ldi r24,lo8(62)
730 0328 90E0 ldi r25,hi8(62)
731 032a 289F mul r18,r24
732 032c F001 movw r30,r0
733 032e 299F mul r18,r25
734 0330 F00D add r31,r0
735 0332 389F mul r19,r24
736 0334 F00D add r31,r0
737 0336 1124 clr r1
738 0338 E050 subi r30,lo8(-(Queuemsgqueue))
739 033a F040 sbci r31,hi8(-(Queuemsgqueue))
740 033c 1082 st Z,__zero_reg__
243:dataqueue.c **** dequeue_next++;
244:dataqueue.c **** dequeue_next %= MESSAGE_QUEUE_SIZE;
742 .LM92:
743 033e 842F mov r24,r20
744 0340 8F5F subi r24,lo8(-(1))
745 0342 66E0 ldi r22,lo8(6)
746 0344 0E94 0000 call __udivmodqi4
747 0348 9093 0000 sts dequeue_next,r25
245:dataqueue.c **** FreeAreaInQueue = FreeAreaInQueue + 1;
749 .LM93:
750 034c 8091 0000 lds r24,FreeAreaInQueue
751 0350 8F5F subi r24,lo8(-(1))
752 0352 8093 0000 sts FreeAreaInQueue,r24
753 0356 06C0 rjmp .L50
754 .L49:
246:dataqueue.c **** }else if(msg == &QueueLocalMsg.Msg){
756 .LM94:
757 0358 80E0 ldi r24,hi8(QueueLocalMsg+2)
758 035a A030 cpi r26,lo8(QueueLocalMsg+2)
759 035c B807 cpc r27,r24
760 035e 11F4 brne .L50
247:dataqueue.c **** QueueLocalMsgState = IDLE;
762 .LM95:
763 0360 1092 0000 sts QueueLocalMsgState,__zero_reg__
764 .L50:
248:dataqueue.c **** }
249:dataqueue.c **** routeSendSENSORDone(msg);
766 .LM96:
767 0364 CD01 movw r24,r26
768 0366 0E94 0000 call routeSendSENSORDone
769 .L45:
250:dataqueue.c **** break;
251:dataqueue.c **** }
252:dataqueue.c ****
253:dataqueue.c **** return SUCCESS;
771 .LM97:
772 036a 81E0 ldi r24,lo8(1)
773 036c 90E0 ldi r25,hi8(1)
254:dataqueue.c **** }
775 .LM98:
776 036e 0895 ret
777 /* epilogue: frame size=0 */
778 0370 0895 ret
779 /* epilogue end (size=1) */
780 /* function TransmitDone size 77 (76) */
784 .global GetFreeQueueLength
786 GetFreeQueueLength:
255:dataqueue.c ****
256:dataqueue.c ****
257:dataqueue.c **** result_t GetFreeQueueLength(void){
788 .LM99:
789 /* prologue: frame size=0 */
790 /* prologue end (size=0) */
258:dataqueue.c **** return FreeAreaInQueue;
792 .LM100:
793 0372 8091 0000 lds r24,FreeAreaInQueue
259:dataqueue.c **** }
795 .LM101:
796 0376 9927 clr r25
797 /* epilogue: frame size=0 */
798 0378 0895 ret
799 /* epilogue end (size=1) */
800 /* function GetFreeQueueLength size 4 (3) */
804 .global SendFail
806 SendFail:
260:dataqueue.c ****
261:dataqueue.c **** void SendFail(OSMACMsgPtr receivemsg){
808 .LM102:
809 /* prologue: frame size=0 */
810 /* prologue end (size=0) */
262:dataqueue.c **** RouteChangeP(receivemsg->toAddr);
812 .LM103:
813 037a FC01 movw r30,r24
814 037c 8281 ldd r24,Z+2
815 037e 0E94 0000 call RouteChangeP
816 /* epilogue: frame size=0 */
817 0382 0895 ret
818 /* epilogue end (size=1) */
819 /* function SendFail size 5 (4) */
821 .comm RecordPassed,30,1
822 .comm Queuemsgqueue,372,1
823 .comm QueueBroadcast,62,1
824 .comm QueueLocalMsg,62,1
825 .comm nbrTable,270,1
826 .comm POWERLEVEL,1,1
827 .comm OS_LOCAL_ADDRESS,1,1
828 .comm OS_BCAST_ADDR,1,1
829 .comm ACK_ON,1,1
830 .comm ACKTIME,1,1
831 .lcomm enqueue_next,1
832 .lcomm dequeue_next,1
833 .lcomm QueueIdle,1
834 .lcomm FreeAreaInQueue,1
835 .lcomm TimeMask,1
836 .lcomm nextAddr,1
837 .lcomm QueueBroadcastState,1
838 .lcomm QueueLocalMsgState,1
857 .text
859 Letext:
860 /* File "dataqueue.c": code 450 = 0x01c2 ( 425), prologues 7, epilogues 18 */
DEFINED SYMBOLS
*ABS*:00000000 dataqueue.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:95 .text:00000000 QueueInit
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:834 .bss:00000004 TimeMask
.bss:00000000 enqueue_next
*COM*:00000174 Queuemsgqueue
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:831 .bss:00000001 dequeue_next
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:833 .bss:00000003 FreeAreaInQueue
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:832 .bss:00000002 QueueIdle
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:836 .bss:00000006 QueueBroadcastState
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:837 .bss:00000007 QueueLocalMsgState
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:150 .text:00000036 InQueue
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:499 .text:000001d0 routeSendTask
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:263 .text:000000d8 InBroadQueue
*COM*:0000003e QueueBroadcast
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:322 .text:00000114 InLocalMsgQueue
*COM*:0000003e QueueLocalMsg
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:378 .text:00000150 MACTask
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:456 .text:000001aa routeSendBroadcast
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:474 .text:000001b8 routeSendLocalMsg
*COM*:00000001 OS_LOCAL_ADDRESS
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:835 .bss:00000005 nextAddr
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:665 .text:000002d8 TransmitDone
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:786 .text:00000372 GetFreeQueueLength
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:806 .text:0000037a SendFail
*COM*:0000001e RecordPassed
*COM*:0000010e nbrTable
*COM*:00000001 POWERLEVEL
*COM*:00000001 OS_BCAST_ADDR
*COM*:00000001 ACK_ON
*COM*:00000001 ACKTIME
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc25aaaa.s:859 .text:00000384 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__divmodhi4
OSPostTask
__udivmodqi4
currentparent
LedRedOn
LedRedOff
LocalDataIn
MACBroadcastMsg
MACUnicastMsg
CheckRoute
routeBroadcastDone
routeSendSENSORDone
RouteChangeP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -