⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac.lst

📁 adhoc汇聚节点程序源代码(点对多点)——for atmega128
💻 LST
📖 第 1 页 / 共 4 页
字号:
 390:mac.c         **** *功能描述:处理错误数据包,进入睡眠
 391:mac.c         **** *参数说明:
 392:mac.c         **** *返回值:  执行结果
 393:mac.c         **** **************************************************************************/
 394:mac.c         **** static void handleErrPkt(void)
 395:mac.c         **** {
 670               	.LM103:
 671               	/* prologue: frame size=0 */
 672               	/* prologue end (size=0) */
 396:mac.c         **** 	if (state == BACKOFF) state = IDLE;
 674               	.LM104:
 675 027c 8091 0000 		lds r24,state
 676 0280 8430      		cpi r24,lo8(4)
 677 0282 19F4      		brne .L49
 679               	.LM105:
 680 0284 81E0      		ldi r24,lo8(1)
 681 0286 8093 0000 		sts state,r24
 682               	.L49:
 397:mac.c         **** 	if (state == IDLE) {
 684               	.LM106:
 685 028a 8091 0000 		lds r24,state
 686 028e 8130      		cpi r24,lo8(1)
 687 0290 39F4      		brne .L48
 398:mac.c         **** 		if (txRequest == 1) {
 689               	.LM107:
 690 0292 8091 0000 		lds r24,txRequest
 691 0296 8130      		cpi r24,lo8(1)
 692 0298 19F4      		brne .L48
 399:mac.c         ****             retryTime = EIFS;
 694               	.LM108:
 695 029a 8AE0      		ldi r24,lo8(10)
 696 029c 8093 0000 		sts retryTime,r24
 697               	.L48:
 698 02a0 0895      		ret
 699               	/* epilogue: frame size=0 */
 700 02a2 0895      		ret
 701               	/* epilogue end (size=1) */
 702               	/* function handleErrPkt size 20 (19) */
 707               	.global	MACPhysicalRxPktDone
 709               	MACPhysicalRxPktDone:
 400:mac.c         **** 		}
 401:mac.c         **** 	}
 402:mac.c         **** }
 403:mac.c         **** 
 404:mac.c         **** /*************************************************************************
 405:mac.c         **** *功能描述:物理层调用,对已经接收到的数据包根据包类型调用相就的处理函数
 406:mac.c         **** *参数说明:包地址 接收出错标志
 407:mac.c         **** *返回值:  执行结果
 408:mac.c         **** **************************************************************************/
 409:mac.c         **** void* MACPhysicalRxPktDone(void* packet, char error)
 410:mac.c         **** {
 711               	.LM109:
 712               	/* prologue: frame size=0 */
 713 02a4 CF93      		push r28
 714 02a6 DF93      		push r29
 715               	/* prologue end (size=2) */
 716 02a8 EC01      		movw r28,r24
 411:mac.c         **** 	char pktType;
 412:mac.c         **** 
 413:mac.c         **** 	radioState = RADIO_IDLE;
 718               	.LM110:
 719 02aa 21E0      		ldi r18,lo8(1)
 720 02ac 2093 0000 		sts radioState,r18
 414:mac.c         **** 	
 415:mac.c         **** 	if (error) {					// 接收到错误包,有碰撞发生
 722               	.LM111:
 723 02b0 6623      		tst r22
 724 02b2 49F5      		brne .L73
 416:mac.c         **** 		handleErrPkt();
 417:mac.c         **** 		return packet;
 418:mac.c         **** 	}
 419:mac.c         **** 
 420:mac.c         **** 	pktType = *((char*)packet + 1);
 726               	.LM112:
 727 02b4 8981      		ldd r24,Y+1
 421:mac.c         **** 	if (pktType == DATA_PKT) {
 729               	.LM113:
 730 02b6 8230      		cpi r24,lo8(2)
 731 02b8 01F5      		brne .L54
 732               	.LBB4:
 733               	.LBB5:
 422:mac.c         **** 		return handleDATA(packet);
 423:mac.c         **** 	} else if (pktType == RTS_PKT) {
 424:mac.c         **** 		handleRTS(packet);
 425:mac.c         **** 	} else if (pktType == CTS_PKT) {
 426:mac.c         **** 		handleCTS(packet);
 427:mac.c         **** 	} else if (pktType == ACK_PKT) {
 428:mac.c         **** 		handleACK(packet);
 429:mac.c         **** 	} else {  
 430:mac.c         **** 		handleErrPkt();
 431:mac.c         **** 	}
 432:mac.c         **** 	return packet;
 433:mac.c         **** }
 434:mac.c         **** 
 435:mac.c         **** /*************************************************************************
 436:mac.c         **** *功能描述:对接收到的RTS数据包进行处理
 437:mac.c         **** *参数说明:包地址
 438:mac.c         **** *返回值:  
 439:mac.c         **** **************************************************************************/
 440:mac.c         **** static void handleRTS(void* pkt)
 441:mac.c         **** {
 442:mac.c         **** 
 443:mac.c         **** }
 444:mac.c         **** 
 445:mac.c         **** /*************************************************************************
 446:mac.c         **** *功能描述:对接收到的CTS数据包进行处理
 447:mac.c         **** *参数说明:包地址
 448:mac.c         **** *返回值:  
 449:mac.c         **** **************************************************************************/
 450:mac.c         **** static void handleCTS(void* pkt)
 451:mac.c         **** {
 452:mac.c         **** 
 453:mac.c         **** }
 454:mac.c         **** 
 455:mac.c         **** /*************************************************************************
 456:mac.c         **** *功能描述:对接收到的DATA数据包进行处理
 457:mac.c         **** *参数说明:包地址
 458:mac.c         **** *返回值:  包地址
 459:mac.c         **** **************************************************************************/
 460:mac.c         **** static void* handleDATA(void* pkt)
 461:mac.c         **** {
 462:mac.c         **** 	void* tmp;
 463:mac.c         **** 	OSMACMsgPtr packet = (OSMACMsgPtr)pkt;
 464:mac.c         **** 	
 465:mac.c         **** 	if (packet->toAddr == OS_BCAST_ADDR) {  
 735               	.LM114:
 736 02ba 9A81      		ldd r25,Y+2
 737 02bc 8091 0000 		lds r24,OS_BCAST_ADDR
 738 02c0 9817      		cp r25,r24
 739 02c2 A1F4      		brne .L55
 466:mac.c         **** 		if (state == BACKOFF) 
 741               	.LM115:
 742 02c4 8091 0000 		lds r24,state
 743 02c8 8430      		cpi r24,lo8(4)
 744 02ca 11F4      		brne .L56
 467:mac.c         **** 			state = IDLE;
 746               	.LM116:
 747 02cc 2093 0000 		sts state,r18
 748               	.L56:
 468:mac.c         **** 		if (state == IDLE) {         
 750               	.LM117:
 751 02d0 8091 0000 		lds r24,state
 752 02d4 8130      		cpi r24,lo8(1)
 753 02d6 31F4      		brne .L57
 469:mac.c         ****             if (txRequest == 1) {
 755               	.LM118:
 756 02d8 8091 0000 		lds r24,txRequest
 757 02dc 8130      		cpi r24,lo8(1)
 758 02de 11F4      		brne .L57
 470:mac.c         **** 				tryToSend();
 760               	.LM119:
 761 02e0 0E94 0000 		call tryToSend
 762               	.L57:
 471:mac.c         ****             }
 472:mac.c         **** 		}
 473:mac.c         **** 		tmp = testBaseRxMsgDone(packet);
 764               	.LM120:
 765 02e4 CE01      		movw r24,r28
 766 02e6 0E94 0000 		call testBaseRxMsgDone
 767 02ea 10C0      		rjmp .L52
 768               	.L55:
 474:mac.c         **** 		return tmp;
 475:mac.c         **** 	} else if (packet->toAddr == OS_LOCAL_ADDRESS) {  
 770               	.LM121:
 771 02ec 8091 0000 		lds r24,OS_LOCAL_ADDRESS
 772 02f0 9817      		cp r25,r24
 773 02f2 59F0      		breq .L63
 476:mac.c         **** 		
 477:mac.c         **** 	} else { 
 478:mac.c         **** 		state = IDLE;
 775               	.LM122:
 776 02f4 2093 0000 		sts state,r18
 777 02f8 08C0      		rjmp .L63
 778               	.L54:
 779               	.LBE5:
 780               	.LBE4:
 782               	.LM123:
 783 02fa 8823      		tst r24
 784 02fc 31F0      		breq .L63
 786               	.LM124:
 787 02fe 8130      		cpi r24,lo8(1)
 788 0300 21F0      		breq .L63
 790               	.LM125:
 791 0302 8330      		cpi r24,lo8(3)
 792 0304 11F0      		breq .L63
 793               	.L73:
 795               	.LM126:
 796 0306 0E94 0000 		call handleErrPkt
 797               	.L63:
 799               	.LM127:
 800 030a CE01      		movw r24,r28
 801               	.L52:
 802               	/* epilogue: frame size=0 */
 803 030c DF91      		pop r29
 804 030e CF91      		pop r28
 805 0310 0895      		ret
 806               	/* epilogue end (size=3) */
 807               	/* function MACPhysicalRxPktDone size 55 (50) */
 810               		.lcomm state,1
 811               		.lcomm radioState,1
 812               		.comm clockTime,4,1
 813               		.comm durCtrlPkt,2,1
 814               		.comm timeWaitCtrl,2,1
 815               		.comm durDataPkt,2,1
 816               		.comm timeWaitData,2,1
 817               		.comm geneTime,2,1
 818               		.comm txDelay,1,1
 819               		.comm retryTime,1,1
 820               		.comm txRequest,1,1
 821               		.comm howToSend,1,1
 822               		.comm sendAddr,2,1
 823               		.comm numRetry,1,1
 824               		.comm numExtend,1,1
 825               		.comm txPktLen,1,1
 826               		.lcomm dataPkt,2
 827               		.comm ctrlPkt,7,1
 828               		.comm recvAddr,2,1
 850               		.text
 852               	Letext:
 853               	/* File "mac.c": code  398 = 0x018e ( 380), 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/ccQpbaaa.s:84     .data:00000000 OS_BCAST_ADDR
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:89     .data:00000001 OS_LOCAL_ADDRESS
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:95     .text:00000000 MACInit
                             .bss:00000000 state
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:810    .bss:00000001 radioState
                            *COM*:00000004 clockTime
                            *COM*:00000001 txDelay
                            *COM*:00000001 txRequest
                            *COM*:00000001 retryTime
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:145    .text:0000003c tryToSend
                            *COM*:00000001 howToSend
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:220    .text:00000088 MACBroadcastMsg
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:811    .bss:00000002 dataPkt
                            *COM*:00000001 txPktLen
                            *COM*:00000002 sendAddr
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:335    .text:00000112 MACUnicastMsg
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:352    .text:00000118 MACTxReset
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:377    .text:00000128 MACPhysicalTxPktDone
                            *COM*:00000002 geneTime
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:448    .text:00000176 MACClockFire
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:542    .text:000001fe MACChannelBusy
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:573    .text:00000218 MACChannelIdle
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:634    .text:0000025c MACStartSymDetected
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:668    .text:0000027c handleErrPkt
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:709    .text:000002a4 MACPhysicalRxPktDone
                            *COM*:00000002 durCtrlPkt
                            *COM*:00000002 timeWaitCtrl
                            *COM*:00000002 durDataPkt
                            *COM*:00000002 timeWaitData
                            *COM*:00000001 numRetry
                            *COM*:00000001 numExtend
                            *COM*:00000007 ctrlPkt
                            *COM*:00000002 recvAddr
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccQpbaaa.s:852    .text:00000312 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
uartDebug_init
RandomInit
ClockStart
PhysicalInit
RandomLFSRGen
RadiocontrolCarrierSenseStart
testBaseBroadcastDone
PhysicalIdle
LedGreenToggle
PhysicalTxPkt
testBaseRxMsgDone

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -