亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
图片区小说区区亚洲影院| 豆国产96在线|亚洲| 狠狠狠色丁香婷婷综合久久五月| www.亚洲人| 欧美v日韩v国产v| 亚州成人在线电影| 99精品视频中文字幕| 精品99久久久久久| 天天影视网天天综合色在线播放 | 亚洲一区二区三区在线| 国产精品一级二级三级| 91精品国产综合久久久蜜臀粉嫩| 亚洲激情在线激情| 成人白浆超碰人人人人| 国产日韩欧美a| 国产剧情一区二区| 久久久综合九色合综国产精品| 午夜成人免费视频| 欧美体内she精高潮| 国产精品二区一区二区aⅴ污介绍| 国产真实乱子伦精品视频| 日韩视频免费观看高清完整版| 亚洲国产精品久久一线不卡| 91国在线观看| 亚洲一区二区在线免费看| 色悠久久久久综合欧美99| 日韩理论片网站| 91蜜桃视频在线| 自拍偷在线精品自拍偷无码专区| 国产成人av网站| 国产亚洲一区二区在线观看| 国产一区二区三区黄视频 | 亚洲欧洲精品一区二区三区| 成人高清视频免费观看| 日本一区二区视频在线| 国产成人精品综合在线观看 | 色综合av在线| 亚洲不卡在线观看| 3d动漫精品啪啪一区二区竹菊| 午夜一区二区三区视频| 3d动漫精品啪啪1区2区免费 | 午夜精品久久久久久久| 在线不卡的av| 久久国产视频网| 亚洲精品在线电影| 福利91精品一区二区三区| 综合久久国产九一剧情麻豆| 欧美在线观看一区| 午夜精品一区二区三区电影天堂| 日韩午夜精品视频| 国产成人av在线影院| 亚洲免费在线视频一区 二区| 欧美亚洲禁片免费| 美女久久久精品| 国产目拍亚洲精品99久久精品| 色婷婷综合久久久| 免费一级欧美片在线观看| 国产农村妇女精品| 欧美日韩中字一区| 国产一区二区三区蝌蚪| 亚洲综合丁香婷婷六月香| 日韩欧美区一区二| 色综合网色综合| 青青国产91久久久久久| 日本一区二区三区久久久久久久久不| 91色九色蝌蚪| 老色鬼精品视频在线观看播放| 国产蜜臀av在线一区二区三区| 一本一道综合狠狠老| 麻豆免费看一区二区三区| 国产精品免费观看视频| 日韩一区二区三区高清免费看看| 国产成人午夜电影网| 午夜婷婷国产麻豆精品| 日本一二三四高清不卡| 欧美一级片在线| 91黄色激情网站| 国产精品自拍在线| 三级欧美在线一区| 玉足女爽爽91| 国产欧美日韩中文久久| 777午夜精品免费视频| 成人高清视频免费观看| 久久精品国内一区二区三区| 一区二区三区资源| 亚洲国产精品黑人久久久| 日韩美一区二区三区| 日本丶国产丶欧美色综合| 国产aⅴ综合色| 精品一区二区精品| 日韩av在线免费观看不卡| 日韩毛片一二三区| 国产精品网站在线观看| 精品国产免费人成电影在线观看四季| 欧美色综合久久| 一本一本大道香蕉久在线精品| 国产成都精品91一区二区三| 激情久久久久久久久久久久久久久久| 亚洲国产精品麻豆| 亚洲精品videosex极品| 成人免费在线视频观看| 中文字幕乱码久久午夜不卡 | 成人激情小说乱人伦| 精品一区二区三区免费观看| 天天av天天翘天天综合网| 亚洲国产日韩精品| 亚洲一区二区欧美日韩| 136国产福利精品导航| 国产精品久久久久久户外露出| 2014亚洲片线观看视频免费| 日韩欧美成人午夜| 欧美大度的电影原声| 欧美不卡在线视频| 久久在线观看免费| 久久久久久久久蜜桃| 精品国产免费视频| 2021中文字幕一区亚洲| 久久久噜噜噜久噜久久综合| 国产日韩成人精品| 国产精品成人在线观看| 亚洲精品日产精品乱码不卡| 亚洲一二三四区| 无吗不卡中文字幕| 美女在线视频一区| 国产麻豆精品久久一二三| 东方aⅴ免费观看久久av| 国产99一区视频免费| 色综合天天性综合| 欧美日本一区二区| 日韩精品一区国产麻豆| 精品国产一区a| 国产精品日韩成人| 一区二区三区在线看| 视频在线在亚洲| 国产精选一区二区三区| 成人国产亚洲欧美成人综合网| 91精品办公室少妇高潮对白| 欧美一区二区三区日韩视频| 久久精品视频免费| 亚洲精品自拍动漫在线| 免费观看在线综合| 成人国产一区二区三区精品| 欧美手机在线视频| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品毛片a∨一区二区三区| 亚洲欧美另类综合偷拍| 久久爱www久久做| www.欧美亚洲| 日韩欧美一二三区| 中文字幕二三区不卡| 亚洲成人精品影院| 成人一二三区视频| 欧美高清精品3d| 中文字幕第一区| 开心九九激情九九欧美日韩精美视频电影| 国产传媒日韩欧美成人| 在线成人午夜影院| 国产精品无遮挡| 日本不卡不码高清免费观看| 成人免费不卡视频| 精品伦理精品一区| 亚洲成人免费av| 不卡视频在线观看| 日韩视频不卡中文| 一区二区成人在线视频| 国产一区二区三区| 337p亚洲精品色噜噜噜| 亚洲乱码一区二区三区在线观看| 老司机精品视频在线| 欧美色图在线观看| 最好看的中文字幕久久| 激情欧美一区二区三区在线观看| 色综合久久久久久久| 国产亚洲欧美日韩在线一区| 婷婷开心激情综合| 91久久久免费一区二区| 亚洲国产精华液网站w| 激情综合亚洲精品| 欧美精品第1页| 亚洲v日本v欧美v久久精品| 成a人片亚洲日本久久| wwww国产精品欧美| 蜜桃av噜噜一区| 欧美日本在线播放| 一卡二卡三卡日韩欧美| 99久久精品久久久久久清纯| 久久综合视频网| 国产麻豆日韩欧美久久| 精品日韩一区二区| 看片的网站亚洲| 日韩一区二区电影在线| 日韩二区三区四区| 在线电影一区二区三区| 亚洲香肠在线观看| 欧美三区在线视频| 亚洲不卡av一区二区三区| 欧美日韩精品一区二区在线播放 | 136国产福利精品导航| 成人禁用看黄a在线| 国产精品色眯眯|