亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mac-802_16.cc

?? WIMAX code for NS-2, v1.05
?? CC
?? 第 1 頁 / 共 3 頁
字號:
/**************************************************************************************
* *Copyright (c) 2006 Regents of the University of Chang Gung 						*
* *All rights reserved.													*
 *																*
 * Redistribution and use in source and binary forms, with or without						*
 * modification, are permitted provided that the following conditions					*
 * are met: 															*
 * 1. Redistributions of source code must retain the above copyright						*
 *    notice, this list of conditions and the following disclaimer.						*
 * 2. Redistributions in binary form must reproduce the above copyright					*
 *    notice, this list of conditions and the following disclaimer in the						*
 *    documentation and/or other materials provided with the distribution.					*
 * 3. All advertising materials mentioning features or use of this software					*
 *    must display the following acknowledgement:									*
 *	This product includes software developed by the Computer Systems					*
 *	Engineering Group at Lawrence Berkeley Laboratory.							*
 * 4. Neither the name of the University nor of the Laboratory may be used					*
 *    to endorse or promote products derived from this software without					*
 *    specific prior written permission.										*
 *5. If you have any problem about these codes, 									*
       please mail to antibanish@gmail.com or b9229008@stmail.cgu.edu.tw                    			*
**************************************************************************************/
#include "delay.h"
#include "connector.h"
#include "packet.h"
#include "random.h"
#include "mobilenode.h"

#include "arp.h" 
#include "ll.h"
#include "mac.h"
#include "mac-802_16.h"
#include "timer-802_16.h"
#include "packet-802_16.h"
#include "cmu-trace.h"
   
#include "agent.h"
#include "basetrace.h"

#define PDUSIZE 500;
 
double BS_UL_BW=0,BS_DL_BW=0,Tmp_UL_BW=0,Tmp_DL_BW=0,CAC_UL=0;
int UL_burst_profile=0,DL_burst_profile=0;
BCID_List* BCID_head=NULL;
BCID_List* BCID_tail=NULL;
Lock* check_list=new Lock;
SS_Queue* ss_buf=new SS_Queue;
Queue_List* Queue_list=new Queue_List;
MacStatus State_=MIDLE;
int BSID=0;
int BCID_count=0;
int SFID_count1=0;
int SFID_count2=0;
int SFID_count3=0;
int SFID_count4=0;
int SFID_count5=0;
int SFID_count6=0;
int SFID_count7=0;
int SFID_count8=0;
int SFID_count9=0;
int SFID_count10=0;
int ULMAP_SS[11],DLMAP_SS[13];
u_int8_t channelNO_=10,dataSize_;
long double dlmapDuration_=0.0025,ulmapDuration_=0.0025,frameDuration_=0.005,symboleRate_;
long double symbolDuration_;
UL_MAP_IE ULMAP_IE[11];
DL_MAP_IE DLMAP_IE[13];

double allocation_start_time;

Mac802_16::Mac802_16() :Mac(),PreambleTimer(this),ulmaptimer(this),dlmaptimer(this),mhSend_(this),mhRecv_(this),mhDefer_(this),BFt(this),resumeSSBurst(this),resumeBSBurst(this),SendUL(this),SendDL(this),SendBW(this){
	creatid=index_;
	pktBr_=0;
	pktRNGREQ_=0;
	pktRNGRSP_=0;
	pktULMAP_=0;
	pktDLMAP_=0;
	pktTx_=0;
	pktBurst_=0;
	pktBSBurst_=0;	
	tx_state_ = rx_state_ = MAC_IDLE;
	state_ = MAC_IDLE;
	rx_state_ = MAC_IDLE;
	cw_=cw_bw=CW_MIN;
	
	Tcl& tcl = Tcl::instance();
	tcl.evalf("Mac/802_16 set channelSize_");
	if (strcmp(tcl.result(), "0") != 0) 
		bind_bw("channelSize_", &channelSize_);
	else
		channelSize_ = 20;	
		
	tcl.evalf("Mac/802_16 set modulation_");
	if (strcmp(tcl.result(), "0") != 0) 
		bind_bw("modulation_", &modulation_);
	else
		modulation_ = 0;
	
	tcl.evalf("Mac/802_16 set codeRate_");
	if (strcmp(tcl.result(), "0") != 0) 
		bind_bw("codeRate_", &codeRate_);
	else
		codeRate_ = 0;	

	if(creatid==0){
		if(channelSize_==20){
			if(modulation_==0 && codeRate_==0){		//20MHz QPSK 1/2
				symboleRate_=16.0;
				dataSize_=24; 
				symbolDuration_=1.0/(symboleRate_*1000000.0);
				frameDuration_ += 4.0*symbolDuration_;
				BS_DL_BW = dlmapDuration_*symboleRate_*dataSize_*channelNO_*1000000.0;
				printf("Available Downlink Bandwidth of BS %f\n",BS_DL_BW);
				BS_UL_BW = ulmapDuration_*symboleRate_*dataSize_*channelNO_*1000000.0;
				printf("Available Uplink Bandwidth of BS %f\n",BS_UL_BW);
			}
		}
		/* future work, coming soon!! */
		/*else if(channelSize_==25){
			if(modulation_==0 && codeRate_==0){		//25MHz QPSK 1/2
				symboleRate_=20.0;
				dataSize_=24.0;
				BS_DL_BW = dlmapDuration_*symboleRate_*dataSize_*channelNO_*1000000.0;
				printf("BS_DL_BW %f\n",BS_DL_BW);
				BS_UL_BW = ulmapDuration_*symboleRate_*dataSize_*channelNO_*1000000.0;
				printf("BS_UL_BW %f\n",BS_UL_BW);
			}
		}
		else if(channelSize_==28){
			if(modulation_==0 && codeRate_==0){		//28MHz QPSK 1/2
				symboleRate_=22.4;
				dataSize_=6.0;
				BS_DL_BW = dlmapDuration_*symboleRate_*dataSize_*channelNO_*1000000.0;
				printf("BS_DL_BW %f\n",BS_DL_BW);
				BS_UL_BW = ulmapDuration_*symboleRate_*dataSize_*channelNO_*1000000.0;
				printf("BS_UL_BW %f\n",BS_UL_BW);
			}
		}*/
		Tmp_UL_BW = CAC_UL = BS_UL_BW;	
		PreambleTimer.start(0);
	}
}  

void Mac802_16::recv(Packet* p, Handler* h)
{
	struct hdr_cmn *hdr = HDR_CMN(p);
	struct hdr_mac *mac_ = HDR_MAC(p);
	struct hdr_mac802_16 *mac16_ = HDR_MAC802_16(p);

	if(creatid!=0)
	{
		if(check_list->check(creatid)==2)
			goto Jump_;
		else if(check_list->check(creatid)==0)
		{		
			check_list->enque(creatid);
			check_list->unlock(creatid);		   		
			ss_buf->enque(creatid);
			Queue_list->enque(creatid);	
			sendRNGREQ(creatid);				
		}
	}	
Jump_:

	if(hdr->direction() == hdr_cmn::UP)
	{
		if(creatid==BSID)
		{
			if(mac16_->HT==0)
			{
				if(hdr->ptype()==PT_UGS||hdr->ptype()==PT_rtPS
					||hdr->ptype()==PT_nrtPS||hdr->ptype()==PT_ertPS||hdr->ptype()==PT_BE)
				{
					if(mac_->macDA_==BSID)
					{
						printf("BS receive SS %d packet at %f\n",mac_->macSA_,Scheduler::instance().clock());	
						uptarget_->recv(p, (Handler*) 0); 	
						return;
					}
				}				
				/*switch(mac16_->mmt)
				{
					case 2:	
						Packet::free(p);
						return;
						break;
					case 3: 
						Packet::free(p);
						return;
						break;
					case 4:	
						struct rng_req_t *rngreq = HDR_MAC802_16_RNGREQ(p);									
						sendRNGRSP(rngreq->ssMACAddr, Insert_BCID(rngreq->ssMACAddr));
						state_=MAC_IDLE;		
						mac_log(p);
						return;
						break;			
					case 5:
						Packet::free(p);
						return;
						break;
					default: 
						break;
				}*/
				if(mac16_->mmt==2)
				{	
					Packet::free(p);
					return;
				}
				else if(mac16_->mmt==3) 
				{
					Packet::free(p);
					return;
				}
				else if(mac16_->mmt==4)	
				{
					struct rng_req_t *rngreq = HDR_MAC802_16_RNGREQ(p);									
					sendRNGRSP(rngreq->ssMACAddr, Insert_BCID(rngreq->ssMACAddr));
					state_=MAC_IDLE;		
					mac_log(p);
					return;		
				}
				else if(mac16_->mmt==5)
				{
					Packet::free(p);
					return;
				}
			}
			else if(mac16_->HT==1)
			{
				struct bw_req_t* bwreq = HDR_MAC802_16_BWREQ(p);
				int SFID_tmp;
				switch(bwreq->Type)
				{
					case 0x0:	
						if(Call_Admission_Control(bwreq->CID,PT_UGS,bwreq->BR)==true)
						{
							SFID_tmp=Insert_SFID(bwreq->CID,PT_UGS,UL);
							Search_SFID(SFID_tmp)->BW=bwreq->BR;
							//Search_SFID(SFID_tmp)->destIP=p->destIP;
							mac_log(p);
							return;
						}
						else
						{
							printf("BR fail\n");
							return;
						}
						break;
					case 0x1:	
						if(Call_Admission_Control(bwreq->CID,PT_ertPS,bwreq->BR)==true)
						{
							SFID_tmp=Insert_SFID(bwreq->CID,PT_ertPS,UL);
							Search_SFID(SFID_tmp)->BW=bwreq->BR;
							//Search_SFID(SFID_tmp)->destIP=p->destIP;									
							mac_log(p);
							return;
						}
						else
						{
							printf("BR fail\n");
							return;
						}
						break;
					case 0x2:	
						if(Call_Admission_Control(bwreq->CID,PT_rtPS,bwreq->BR)==true)
						{
							SFID_tmp=Insert_SFID(bwreq->CID,PT_rtPS,UL);
							Search_SFID(SFID_tmp)->BW=bwreq->BR;
							//Search_SFID(SFID_tmp)->destIP=p->destIP;									
							mac_log(p);
							return;
						}
						else
						{
							printf("BR fail\n");
							return;
						}
						break;
					case 0x3:	
						if(Call_Admission_Control(bwreq->CID,PT_nrtPS,bwreq->BR)==true)
						{
							SFID_tmp=Insert_SFID(bwreq->CID,PT_nrtPS,UL);
							Search_SFID(SFID_tmp)->BW=bwreq->BR;
							//Search_SFID(SFID_tmp)->destIP=p->destIP;								
							mac_log(p);
							return;
						}
						else
						{
							printf("BR fail\n");
							return;
						}
						break;
					case 0x4:	
						if(Call_Admission_Control(bwreq->CID,PT_BE,bwreq->BR)==true)
						{
							SFID_tmp=Insert_SFID(bwreq->CID,PT_BE,UL);
							Search_SFID(SFID_tmp)->BW=bwreq->BR;
							//Search_SFID(SFID_tmp)->destIP=p->destIP;									
							mac_log(p);
							return;
						}
						else
						{
							printf("BR fail\n");
							return;
						}
						break;
					default:   
						printf("Bandwidth request type doesn't specify\n"); 
						return;	
						break;		
				}
			}	
		}
		else
		{
			if(mac16_->HT==1)
			{
				Packet::free(p);	
				return;
			}
			else if(mac16_->HT==0)
			{
				if(hdr->ptype()==PT_UGS||hdr->ptype()==PT_rtPS
					||hdr->ptype()==PT_nrtPS||hdr->ptype()==PT_ertPS||hdr->ptype()==PT_BE)
				{
					if(mac_->macSA_==BSID && Search_BCID(mac16_->CID)->srcIP==creatid){
						printf("SS %d Receive BS Packet at %f\n",creatid,Scheduler::instance().clock());
						uptarget_->recv(p, (Handler*) 0);					
						return;
					}
					else
					{ 
						Packet::free(p);
						return;
					}
				}
				/*switch(mac16_->mmt)
				{		
					case 2:	
						mac_log(p);
						return;
						break;
					case 3:	
						struct UL_MAP* ulmap=HDR_MAC802_16_UL_MAP(p);		
						if(mac_->macSA_==BSID)
						{
							for(int i=0;i<UL_burst_profile;i++)
							{
								if(ULMAP_IE[i].uiuc!=0xc && Search_BCID(ULMAP_IE[i].cid)->srcIP==creatid)
								{
									if(allocation_start_time-Scheduler::instance().clock()>=0)	
									{
										ulmaptimer.start(allocation_start_time-Scheduler::instance().clock()
											,ULMAP_IE[i].cid,ULMAP_IE[i].OFDMA_Symbol_number);
									}
									else
										printf("Uplink Time Fail\n");
								}
							}
							mac_log(p);								
						}
						return;
						break;
					case 4: 
						if(creatid==mac16_->CID)
							Packet::free(p);					
						return;
						break;
					case 5:	
						struct rng_rsp_t *rngrsp = HDR_MAC802_16_RNGRSP(p);						
						if(Search_BCID(mac16_->CID)->srcIP==creatid)
						{
							check_list->set_response(rngrsp->SSMAC);
							mac_log(p);
						}
						return;
						break;
					default:
						break;
				}*/		
				if(mac16_->mmt==2)	
				{
					mac_log(p);
					return;
				}
				else if(mac16_->mmt==3)	
				{
					//struct UL_MAP* ulmap=HDR_MAC802_16_UL_MAP(p);		
					if(mac_->macSA_==BSID)
					{
						for(int i=0;i<UL_burst_profile;i++)
						{
							if(ULMAP_IE[i].uiuc!=0xc && Search_BCID(ULMAP_IE[i].cid)->srcIP==creatid)
							{
								if(allocation_start_time-Scheduler::instance().clock()>=0)	
								{
									ulmaptimer.start(allocation_start_time-Scheduler::instance().clock()
										,ULMAP_IE[i].cid,ULMAP_IE[i].OFDMA_Symbol_number);
								}
								else
									printf("Uplink Time Fail\n");
							}
						}
						mac_log(p);								
					}
					return;
				}
				else if(mac16_->mmt==4)	
				{
					if(creatid==mac16_->CID)
						Packet::free(p);					
					return;
				}
				else if(mac16_->mmt==5)	
				{
					struct rng_rsp_t *rngrsp = HDR_MAC802_16_RNGRSP(p);						
					if(Search_BCID(mac16_->CID)->srcIP==creatid)
					{
						check_list->set_response(rngrsp->SSMAC);
						mac_log(p);
					}
					return;
				}
			}	
		}
		sendUp(p);  
		return;
	}
	else{
		callback_ = h;
		if(creatid==BSID)
		{
			if(hdr->ptype()==PT_UGS||hdr->ptype()==PT_rtPS
				||hdr->ptype()==PT_nrtPS||hdr->ptype()==PT_ertPS||hdr->ptype()==PT_BE)
			{
				Queue_list->lookup(mac_->macDA_)->BCID=Search_BCID_macSA(mac_->macDA_)->BCID;
				switch(hdr->ptype())
				{
					case PT_UGS: 	
						Queue_list->lookup(mac_->macDA_)->UGS.enque(p->copy());		
						if(Queue_list->lookup(mac_->macDA_)->UGS.Lock==0)
						{
							int SFID_tmp=Insert_SFID(Search_BCID_macSA(mac_->macDA_)->BCID,PT_UGS,DL);
							Search_SFID(SFID_tmp)->BW=Queue_list->lookup(mac_->macDA_)->UGS.byteLength()*10;
							Search_SFID(SFID_tmp)->destIP=mac_->macDA_;
							Queue_list->lookup(mac_->macDA_)->UGS.Lock=1;
						}
						break;
					case PT_rtPS: 	
						Queue_list->lookup(mac_->macDA_)->rtPS.enque(p->copy());
						if(Queue_list->lookup(mac_->macDA_)->rtPS.Lock==0)
						{
							int SFID_tmp=Insert_SFID(Search_BCID_macSA(mac_->macDA_)->BCID,PT_rtPS,DL);
							Search_SFID(SFID_tmp)->BW=Queue_list->lookup(mac_->macDA_)->rtPS.byteLength()*10;
							Search_SFID(SFID_tmp)->destIP=mac_->macDA_;
							Queue_list->lookup(mac_->macDA_)->rtPS.Lock=1;
						}
						break;
					case PT_nrtPS:	
						Queue_list->lookup(mac_->macDA_)->nrtPS.enque(p->copy());
						if(Queue_list->lookup(mac_->macDA_)->nrtPS.Lock==0)
						{
							int SFID_tmp=Insert_SFID(Search_BCID_macSA(mac_->macDA_)->BCID,PT_nrtPS,DL);
							Search_SFID(SFID_tmp)->BW=Queue_list->lookup(mac_->macDA_)->nrtPS.byteLength()*10;
							Search_SFID(SFID_tmp)->destIP=mac_->macDA_;
							Queue_list->lookup(mac_->macDA_)->nrtPS.Lock=1;
						}
						break;
					case PT_ertPS:	
						Queue_list->lookup(mac_->macDA_)->ertPS.enque(p->copy());
						if(Queue_list->lookup(mac_->macDA_)->ertPS.Lock==0)
						{
							int SFID_tmp=Insert_SFID(Search_BCID_macSA(mac_->macDA_)->BCID,PT_ertPS,DL);
							Search_SFID(SFID_tmp)->BW=Queue_list->lookup(mac_->macDA_)->ertPS.byteLength()*10;
							Search_SFID(SFID_tmp)->destIP=mac_->macDA_;
							Queue_list->lookup(mac_->macDA_)->ertPS.Lock=1;
						}
						break;
					case PT_BE:		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三区免费完整视频在线观看| 在线免费视频一区二区| 91在线看国产| 欧美成人欧美edvon| 伊人开心综合网| 高清久久久久久| 久久美女艺术照精彩视频福利播放 | 欧美无砖专区一中文字| 久久久久久久av麻豆果冻| 视频一区欧美日韩| 欧美午夜片在线看| 亚洲三级久久久| 99精品视频一区| 日本一区二区三区电影| 国产麻豆精品theporn| 日韩三级中文字幕| 免费在线观看精品| 3d成人h动漫网站入口| 夜夜精品浪潮av一区二区三区| 成人黄色a**站在线观看| 久久精品亚洲精品国产欧美kt∨| 精品一区二区在线播放| 欧美二区三区的天堂| 日日夜夜免费精品视频| 99久久国产综合色|国产精品| 国产精品麻豆欧美日韩ww| 国产91丝袜在线观看| 国产午夜亚洲精品午夜鲁丝片| 国产乱对白刺激视频不卡| 26uuu欧美| 国产一区二区三区四| 日韩欧美在线1卡| 蜜桃在线一区二区三区| 欧美色图免费看| 亚洲午夜激情网站| 欧美吻胸吃奶大尺度电影 | 国产精品一区在线观看你懂的| 欧美日韩免费观看一区二区三区| 亚洲欧洲精品一区二区三区不卡| 成人一区二区三区| 亚洲欧洲性图库| 91福利小视频| 日韩电影在线免费观看| 欧美一区二区三区在线| 久久精品国产99国产| 久久精品人人爽人人爽| 成人动漫在线一区| 亚洲综合丁香婷婷六月香| 欧美日韩国产成人在线免费| 日韩国产欧美三级| 国产校园另类小说区| 91丨porny丨中文| 亚洲123区在线观看| 精品国产乱码久久| 成人av在线资源| 亚洲成人自拍一区| 亚洲精品一区二区三区香蕉| 豆国产96在线|亚洲| 亚洲国产一区二区a毛片| ww久久中文字幕| 91久久精品网| 精品一区二区成人精品| 国产精品久久久久9999吃药| 欧美日韩国产美| 国产精品羞羞答答xxdd| 一二三四社区欧美黄| 精品国产一二三区| 91久久精品一区二区二区| 久久成人免费电影| 亚洲美女免费在线| 精品伦理精品一区| 欧洲一区在线观看| 国产丶欧美丶日本不卡视频| 亚洲成人综合网站| 成人欧美一区二区三区视频网页| 欧美一区二区三区在线| 色婷婷av一区二区三区gif | 久久久综合视频| 欧美影院精品一区| 成人免费电影视频| 久久99在线观看| 性做久久久久久免费观看欧美| 国产日韩欧美电影| 日韩三级免费观看| 精品视频在线免费看| 国产在线精品国自产拍免费| 亚洲一区二区不卡免费| 最新国产精品久久精品| 日韩免费看的电影| 欧美日韩高清一区二区| 色综合天天综合网天天看片| 国产精品综合网| 精品一区二区三区av| 免费成人在线网站| 日韩极品在线观看| 亚洲在线观看免费视频| 亚洲精品欧美在线| 综合婷婷亚洲小说| 亚洲欧洲另类国产综合| 中文一区二区完整视频在线观看 | 狠狠色狠狠色综合系列| 日本美女一区二区三区| 亚洲成人免费电影| 亚洲高清久久久| 一区二区三区国产豹纹内裤在线| 中文字幕亚洲成人| 亚洲三级小视频| 亚洲免费观看高清完整版在线观看| 国产精品麻豆网站| 中文字幕一区二区三| 中文字幕中文在线不卡住| 欧美国产国产综合| 国产精品狼人久久影院观看方式| 中文字幕av不卡| 国产精品毛片高清在线完整版| 中文字幕va一区二区三区| 国产精品卡一卡二| 一区二区三区精品在线| 一区二区三区在线观看视频| 亚洲影视资源网| 青青草国产成人99久久| 奇米色一区二区| 国产一区二区三区最好精华液| 国产精品一区一区| 成人国产精品免费网站| 91福利精品视频| 日韩一区二区免费视频| 国产亚洲美州欧州综合国| 欧美高清在线一区二区| 亚洲男同性恋视频| 日本一区中文字幕| 国产精品一区二区不卡| 91网上在线视频| 欧美丰满美乳xxx高潮www| 欧美精品一区二区蜜臀亚洲| 国产欧美日韩麻豆91| 亚洲精品老司机| 日本成人中文字幕| 国产大陆亚洲精品国产| 91浏览器打开| 日韩精品一区国产麻豆| 国产日韩av一区| 亚洲一区二区黄色| 国产高清久久久| 欧美亚洲综合在线| 国产亚洲欧美日韩日本| 一区二区国产盗摄色噜噜| 久久精品免费观看| 99久久er热在这里只有精品15| 欧美日韩亚洲综合一区二区三区| 精品国产一区二区三区久久久蜜月| 亚洲欧洲无码一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 不卡av在线免费观看| 538prom精品视频线放| 欧美国产亚洲另类动漫| 日韩精品国产精品| 99麻豆久久久国产精品免费 | 在线观看视频欧美| 久久婷婷综合激情| 无码av免费一区二区三区试看 | 综合久久久久久久| 久久91精品久久久久久秒播| 日本韩国欧美一区二区三区| 日韩欧美中文一区| 亚洲影院理伦片| 99久久精品国产观看| 久久久99久久精品欧美| 日韩中文字幕1| 91老师片黄在线观看| 国产校园另类小说区| 久久精品免费看| 欧美巨大另类极品videosbest| 国产精品三级在线观看| 国产一本一道久久香蕉| 欧美一区二区三区人| 亚洲福利电影网| 色诱视频网站一区| 一区精品在线播放| 东方aⅴ免费观看久久av| 欧美不卡视频一区| 蜜臀av在线播放一区二区三区| 欧美性猛交一区二区三区精品| 亚洲欧洲一区二区三区| av一区二区不卡| 国产精品不卡一区| 成人高清伦理免费影院在线观看| 久久蜜桃av一区二区天堂| 精品夜夜嗨av一区二区三区| 日韩精品一区在线观看| 麻豆成人在线观看| 精品欧美一区二区在线观看| 久久99精品久久久久久动态图| 欧美一区二区三区四区五区| 香蕉乱码成人久久天堂爱免费| 欧美主播一区二区三区| 亚洲国产精品久久不卡毛片 | 成人性生交大合| 国产精品污网站| av电影在线不卡|