📄 mac.lst
字号:
659 0274 90E0 ldi r25,hi8(1)
660 /* epilogue: frame size=0 */
661 0276 0895 ret
662 /* epilogue end (size=1) */
663 /* function MACStartSymDetected size 16 (15) */
667 handleErrPkt:
394:mac.c ****
395:mac.c **** /*************************************************************************
396:mac.c **** *功能描述:处理错误数据包,进入睡眠
397:mac.c **** *参数说明:
398:mac.c **** *返回值: 执行结果
399:mac.c **** **************************************************************************/
400:mac.c **** static void handleErrPkt(void)
401:mac.c **** {
669 .LM103:
670 /* prologue: frame size=0 */
671 /* prologue end (size=0) */
402:mac.c **** if (state == BACKOFF) state = IDLE;
673 .LM104:
674 0278 8091 0000 lds r24,state
675 027c 8430 cpi r24,lo8(4)
676 027e 19F4 brne .L47
678 .LM105:
679 0280 81E0 ldi r24,lo8(1)
680 0282 8093 0000 sts state,r24
681 .L47:
403:mac.c **** if (state == IDLE) {
683 .LM106:
684 0286 8091 0000 lds r24,state
685 028a 8130 cpi r24,lo8(1)
686 028c 39F4 brne .L46
404:mac.c **** if (txRequest == 1) {
688 .LM107:
689 028e 8091 0000 lds r24,txRequest
690 0292 8130 cpi r24,lo8(1)
691 0294 19F4 brne .L46
405:mac.c **** retryTime = EIFS;
693 .LM108:
694 0296 8AE0 ldi r24,lo8(10)
695 0298 8093 0000 sts retryTime,r24
696 .L46:
697 029c 0895 ret
698 /* epilogue: frame size=0 */
699 029e 0895 ret
700 /* epilogue end (size=1) */
701 /* function handleErrPkt size 20 (19) */
706 .global MACPhysicalRxPktDone
708 MACPhysicalRxPktDone:
406:mac.c **** }
407:mac.c **** }
408:mac.c **** }
409:mac.c ****
410:mac.c **** /*************************************************************************
411:mac.c **** *功能描述:物理层调用,对已经接收到的数据包根据包类型调用相就的处理函数
412:mac.c **** *参数说明:包地址 接收出错标志
413:mac.c **** *返回值: 执行结果
414:mac.c **** **************************************************************************/
415:mac.c **** void* MACPhysicalRxPktDone(void* packet, char error)
416:mac.c **** {
710 .LM109:
711 /* prologue: frame size=0 */
712 02a0 CF93 push r28
713 02a2 DF93 push r29
714 /* prologue end (size=2) */
715 02a4 EC01 movw r28,r24
417:mac.c **** char pktType;
418:mac.c ****
419:mac.c **** radioState = RADIO_IDLE;
717 .LM110:
718 02a6 21E0 ldi r18,lo8(1)
719 02a8 2093 0000 sts radioState,r18
420:mac.c ****
421:mac.c **** if (error) { // 接收到错误包,有碰撞发生
721 .LM111:
722 02ac 6623 tst r22
723 02ae 31F5 brne .L71
422:mac.c **** handleErrPkt();
423:mac.c **** return packet;
424:mac.c **** }
425:mac.c ****
426:mac.c **** pktType = *((char*)packet + 1);
725 .LM112:
726 02b0 8981 ldd r24,Y+1
427:mac.c **** if (pktType == DATA_PKT) {
728 .LM113:
729 02b2 8230 cpi r24,lo8(2)
730 02b4 E9F4 brne .L52
731 .LBB4:
732 .LBB5:
428:mac.c **** return handleDATA(packet);
429:mac.c **** } else if (pktType == RTS_PKT) {
430:mac.c **** handleRTS(packet);
431:mac.c **** } else if (pktType == CTS_PKT) {
432:mac.c **** handleCTS(packet);
433:mac.c **** } else if (pktType == ACK_PKT) {
434:mac.c **** handleACK(packet);
435:mac.c **** } else {
436:mac.c **** handleErrPkt();
437:mac.c **** }
438:mac.c **** return packet;
439:mac.c **** }
440:mac.c ****
441:mac.c **** /*************************************************************************
442:mac.c **** *功能描述:对接收到的RTS数据包进行处理
443:mac.c **** *参数说明:包地址
444:mac.c **** *返回值:
445:mac.c **** **************************************************************************/
446:mac.c **** static void handleRTS(void* pkt)
447:mac.c **** {
448:mac.c ****
449:mac.c **** }
450:mac.c ****
451:mac.c **** /*************************************************************************
452:mac.c **** *功能描述:对接收到的CTS数据包进行处理
453:mac.c **** *参数说明:包地址
454:mac.c **** *返回值:
455:mac.c **** **************************************************************************/
456:mac.c **** static void handleCTS(void* pkt)
457:mac.c **** {
458:mac.c ****
459:mac.c **** }
460:mac.c ****
461:mac.c **** /*************************************************************************
462:mac.c **** *功能描述:对接收到的DATA数据包进行处理
463:mac.c **** *参数说明:包地址
464:mac.c **** *返回值: 包地址
465:mac.c **** **************************************************************************/
466:mac.c **** static void* handleDATA(void* pkt)
467:mac.c **** {
468:mac.c **** void* tmp = pkt;
469:mac.c **** OSMACMsgPtr packet = (OSMACMsgPtr)pkt;
470:mac.c ****
471:mac.c **** if (packet->toAddr == OS_BCAST_ADDR) {
734 .LM114:
735 02b6 9A81 ldd r25,Y+2
736 02b8 8091 0000 lds r24,OS_BCAST_ADDR
737 02bc 9817 cp r25,r24
738 02be 89F4 brne .L53
472:mac.c **** if (state == BACKOFF)
740 .LM115:
741 02c0 8091 0000 lds r24,state
742 02c4 8430 cpi r24,lo8(4)
743 02c6 11F4 brne .L54
473:mac.c **** state = IDLE;
745 .LM116:
746 02c8 2093 0000 sts state,r18
747 .L54:
474:mac.c **** if (state == IDLE) {
749 .LM117:
750 02cc 8091 0000 lds r24,state
751 02d0 8130 cpi r24,lo8(1)
752 02d2 B1F4 brne .L50
475:mac.c **** if (txRequest == 1) {
754 .LM118:
755 02d4 8091 0000 lds r24,txRequest
756 02d8 8130 cpi r24,lo8(1)
757 02da 91F4 brne .L50
476:mac.c **** tryToSend();
759 .LM119:
760 02dc 0E94 0000 call tryToSend
477:mac.c **** }
478:mac.c **** }
479:mac.c **** // tmp = testMACRxMsgDone(packet);
480:mac.c **** return tmp;
762 .LM120:
763 02e0 0FC0 rjmp .L50
764 .L53:
481:mac.c **** } else if (packet->toAddr == OS_LOCAL_ADDRESS) {
766 .LM121:
767 02e2 8091 0000 lds r24,OS_LOCAL_ADDRESS
768 02e6 9817 cp r25,r24
769 02e8 59F0 breq .L50
482:mac.c **** } else {
483:mac.c **** state = IDLE;
771 .LM122:
772 02ea 2093 0000 sts state,r18
773 .LBE5:
774 .LBE4:
776 .LM123:
777 02ee 08C0 rjmp .L50
778 .L52:
780 .LM124:
781 02f0 8823 tst r24
782 02f2 31F0 breq .L50
784 .LM125:
785 02f4 8130 cpi r24,lo8(1)
786 02f6 21F0 breq .L50
788 .LM126:
789 02f8 8330 cpi r24,lo8(3)
790 02fa 11F0 breq .L50
791 .L71:
793 .LM127:
794 02fc 0E94 0000 call handleErrPkt
795 .L50:
797 .LM128:
798 0300 CE01 movw r24,r28
799 /* epilogue: frame size=0 */
800 0302 DF91 pop r29
801 0304 CF91 pop r28
802 0306 0895 ret
803 /* epilogue end (size=3) */
804 /* function MACPhysicalRxPktDone size 52 (47) */
807 .lcomm state,1
808 .lcomm radioState,1
809 .comm clockTime,4,1
810 .comm durCtrlPkt,2,1
811 .comm timeWaitCtrl,2,1
812 .comm durDataPkt,2,1
813 .comm timeWaitData,2,1
814 .comm geneTime,2,1
815 .comm txDelay,1,1
816 .comm retryTime,1,1
817 .comm txRequest,1,1
818 .comm howToSend,1,1
819 .comm sendAddr,2,1
820 .comm numRetry,1,1
821 .comm numExtend,1,1
822 .comm txPktLen,1,1
823 .lcomm dataPkt,2
824 .comm ctrlPkt,7,1
825 .comm recvAddr,2,1
847 .text
849 Letext:
850 /* File "mac.c": code 393 = 0x0189 ( 375), prologues 3, epilogues 15 */
DEFINED SYMBOLS
*ABS*:00000000 mac.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:84 .data:00000000 OS_BCAST_ADDR
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:89 .data:00000001 OS_LOCAL_ADDRESS
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:95 .text:00000000 MACInit
.bss:00000000 state
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:807 .bss:00000001 radioState
*COM*:00000004 clockTime
*COM*:00000001 txDelay
*COM*:00000001 txRequest
*COM*:00000007 ctrlPkt
*COM*:00000001 retryTime
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:149 .text:00000044 tryToSend
*COM*:00000001 howToSend
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:224 .text:00000090 MACBroadcastMsg
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:808 .bss:00000002 dataPkt
*COM*:00000001 txPktLen
*COM*:00000002 sendAddr
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:339 .text:0000011a MACUnicastMsg
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:356 .text:00000120 MACTxReset
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:381 .text:00000130 MACPhysicalTxPktDone
*COM*:00000002 geneTime
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:450 .text:00000176 MACClockFire
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:541 .text:000001fa MACChannelBusy
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:572 .text:00000214 MACChannelIdle
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:633 .text:00000258 MACStartSymDetected
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:667 .text:00000278 handleErrPkt
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:708 .text:000002a0 MACPhysicalRxPktDone
*COM*:00000002 durCtrlPkt
*COM*:00000002 timeWaitCtrl
*COM*:00000002 durDataPkt
*COM*:00000002 timeWaitData
*COM*:00000001 numRetry
*COM*:00000001 numExtend
*COM*:00000002 recvAddr
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccyibaaa.s:849 .text:00000308 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
uartDebug_init
RandomInit
ClockStart
PhysicalInit
RandomLFSRGen
RadiocontrolCarrierSenseStart
LedYellowToggle
PhysicalIdle
PhysicalTxPkt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -