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

📄 mac.lst

📁 adhoc信息节点程序源代码(点对多点)——for atmega128
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -