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

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

?? mac-gprs.cc

?? 用C++編寫的GPRS協議棧源代碼
?? CC
?? 第 1 頁 / 共 3 頁
字號:
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- *//* By Richa Jain, * Indian Institute of Technology, Bombay. * June, 2001.*/ /* Copyright (c) 2001 Indian Insitute of Technology, Bombay.   * 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 and binary code must contain * the above copyright notice, this list of conditions and the following  * disclaimer. *  * 2. All advertising materials mentioning features or use of this software * must display the following acknowledgement:  * This product includes software developed at Indian Insitute of * Technology, Bombay.  * * 3. The name of the Institute may not be used to endorse or promote  * products derived from this software without specific prior written  * permission. * INDIAN INSTITUTE OF TECHNOLOGY, BOMBAY, MAKES NO REPRESENTATIONS  * CONCERNING EITHER THE MERCHANTABILITY OF THIS SOFTWARE OR THE  * SUITABILITY OF THIS SOFTWARE FOR ANY PARTICULAR PURPOSE.  The software  * is provided "as is" without express or implied warranty of any kind.*//* A special slotted Aloha based MAC for GPRS/GSM  */ #include "delay.h"#include "connector.h"#include "packet.h"#include "random.h"#include "mobilenode.h"#include "address.h"     // #define DEBUG//#include <debug.h>#include "arp.h"#include "ll.h"#include "rlc.h"#include "queue.h" #include "mac.h"#include "mac-gprs.h"#include "cmu-trace.h"/* Phy specs similar to 802.11 */static PHY_MIB PMIB = {	DSSS_CWMin, DSSS_CWMax, DSSS_SlotTime, DSSS_CCATime,	DSSS_RxTxTurnaroundTime, DSSS_SIFSTime, DSSS_PreambleLength,	DSSS_PLCPHeaderLength};	/* Timers */void MacGprsTimer::start(Packet *p, double time){	Scheduler &s = Scheduler::instance();	assert(busy_ == 0);  	busy_ = 1;	paused_ = 0;	stime = s.clock();	rtime = time;	assert(rtime >= 0.0);  	s.schedule(this, p, rtime);}void MacGprsTimer::stop(Packet *p) {	Scheduler &s = Scheduler::instance();	assert(busy_);  	if(paused_ == 0)		s.cancel((Event *)p);  	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;}void BackoffGprsTimer::start(double time){   	Scheduler &s = Scheduler::instance();	assert(busy_ == 0); 	busy_ = 1;	paused_ = 0; 	stime = s.clock();	rtime = time;   	assert(rtime >= 0.0);   	s.schedule(this, &intr, rtime);   }	void BackoffGprsTimer::stop(void) {	Scheduler &s = Scheduler::instance();	assert(busy_);  	if(paused_ == 0)		s.cancel(&intr);  	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;}void BackoffGprsTimer::handle(Event *e){       	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;      mac->backoffHandler();} 	void SlotReleaseTimer::start(double time){   	Scheduler &s = Scheduler::instance();	assert(busy_ == 0); 	busy_ = 1;	paused_ = 0; 	stime = s.clock();	rtime = time;   	assert(rtime >= 0.0);   	s.schedule(this, &intr, rtime);   }	void SlotReleaseTimer::stop(void) {	Scheduler &s = Scheduler::instance();	assert(busy_);	if(paused_ == 0)		s.cancel(&intr);	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;}void SlotReleaseTimer::handle(Event *e){       	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;	mac->releaseHandler();}void WaitTimer::start(double time){   	Scheduler &s = Scheduler::instance();	assert(busy_ == 0); 	busy_ = 1;	paused_ = 0; 	stime = s.clock();	rtime = time;   	assert(rtime >= 0.0);   	s.schedule(this, &intr, rtime);   }	void WaitTimer::stop(void) {	Scheduler &s = Scheduler::instance();	assert(busy_);	if(paused_ == 0)		s.cancel(&intr);	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;}void WaitTimer::handle(Event *e){       	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;	mac->waitHandler();}/* Slot timer for TDMA scheduling - the downslot */void DownSlotGprsTimer::handle(Event *e){       	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;  	mac->downslotHandler(e);}void UpSlotGprsTimer::handle(Event *e){       	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;  	mac->upslotHandler(e);}/* Receive Timer */void RxPktGprsTimer::handle(Event *e) {       	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;  	mac->recvHandler(e);}/* Send Timer */void TxPktGprsTimer::handle(Event *e) {       	busy_ = 0;	paused_ = 0;	stime = 0.0;	rtime = 0.0;  	mac->sendHandler(e);}/* ======================================================================   TCL Hooks for the simulator   ====================================================================== */static class MacGprsClass : public TclClass {public:	MacGprsClass() : TclClass("Mac/Gprs") {}	TclObject* create(int, const char*const*) {		return (new MacGprs(&PMIB));	}} class_mac_gprs;//for the static variables:Packet * MacGprs::rxQ[MAX_NUM_FREQ][SLOTS_PER_FRAME]={NULL};Packet * MacGprs::txQ[MAX_NUM_FREQ][SLOTS_PER_FRAME]={NULL}; struct data_at_bs MacGprs::vlr_ = {0};int MacGprs:: tx_rate = {0};int MacGprs:: max_num_ms_ = {0};int MacGprs:: max_num_freq_ = {0};int MacGprs:: slot_packet_len_ = {0};int MacGprs:: gprs_slots_per_frame_ = {0};double MacGprs::slot_time_ = 0;double MacGprs::start_time_ = 0;int MacGprs::chan0_0 = {0};int MacGprs::coll_count = {0}; int MacGprs::active_node_ = {0};int MacGprs::verbose_ = {0};//static variables for rlc_errorint MacGprs::rlc_error_  ={0};int MacGprs::error_rate_ ={0};int MacGprs::drop_gap_   ={0};int MacGprs::drop_counter_ ={0};int MacGprs::next_drop_  ={0};//constructorMacGprs::MacGprs(PHY_MIB* p) : Mac(), mhDownSlot_(this), 	mhUpSlot_(this), mhTxPkt_(this), mhRxPkt_(this),     mhRel_(this), mhBackoff_(this),mhwait_(this){	int i,j;	phymib_ = p;	bind("slot_packet_len_", &slot_packet_len_);	bind("max_num_ms_", &max_num_ms_);	bind("max_num_freq_", &max_num_freq_);	bind("gprs_", &gprs_);	bind("verbose_", &verbose_);	bind("gprs_slots_per_frame_", &gprs_slots_per_frame_); 	bind("rlc_error_", &rlc_error_);	bind("error_rate_", &error_rate_);		slot_time_= 0.000577 ;//gprs slot is of 576.9 microseconds	tx_rate = (int) ((8*slot_packet_len_) / slot_time_) ;			//printf("slot_time=%f, gprs_=%d  tx_rate=%d \n", slot_time_, gprs_, tx_rate);		active_node_++;  		//max_num_ms shud be less that MAX_NUM_MS	if (max_num_ms_ > MAX_NUM_MS) {		if (verbose_==1)		   printf("Too many nodes taking part. shud be less than %d \n",  MAX_NUM_MS);		exit (-1);	}		if (active_node_ > max_num_ms_) {		if (verbose_==1)		   printf("Too many nodes taking part in the simulations, aborting...\n");		exit(-1);	}     	radio_active_ = 0;	wait_for_res=0;		first_round_=1;	down_slot_=0;	up_slot_=0;		for ( j=0 ; j< SLOTS_PER_FRAME ; j++) {		pktTx[j] =NULL;		pktRx[j] =NULL;		tx_chan[j] = -10;		rx_chan[j] = -10; 		//-10 => no channel	}	tx_chan[0]=0;   // freq 0, slot 0 reserved. for broadcasts/isgnalling 	rx_chan[0]=0;	// in either  direction. 	txQ[0][0]=0;	temp_reply=0;		// initialising data_at_bs	for ( j=0; j<max_num_ms_ ; j++) {  		vlr_.hier_addr_[j]=-10;	} 	for ( j=0; j<SLOTS_PER_FRAME ; j++) {  		 for (i=0; i<max_num_freq_ ; i++) {			 //this freq/slot hasnt been alloted to any MS yet	 		 vlr_.up_table[i][j]=-10;  	 		 vlr_.down_table[i][j]=-10;			 		 }	}	if (rlc_error_==1 && index_==0) {		drop_gap_ = Random::integer(error_rate_);		next_drop_ = drop_gap_;		if (verbose_==1) 			printf("<%d> %f  first drop will be at %d \n", index_, NOW, next_drop_ );    }				if (verbose_==1) 		printf("<%d> %f  initialised...; \n",index_, NOW);		intr1_ = intr_ ; //reqd for the slot timers	intr = intr_ ; 		mhDownSlot_.start((Packet *) (& intr_), 0);  }// similar to 802.11int MacGprs::command(int argc, const char*const* argv){	if (argc == 3) {		if (strcmp(argv[1], "log-target") == 0) {			logtarget_ = (NsObject*) TclObject::lookup(argv[2]);			if(logtarget_ == 0)				return TCL_ERROR;			return TCL_OK;		}	}	return Mac::command(argc, argv);}/* ======================================================================   Debugging Routines   ====================================================================== */void MacGprs::trace_pkt(Packet *p) {	struct hdr_cmn *ch = HDR_CMN(p);	struct hdr_mac_gprs* dh = HDR_MAC_GPRS(p);	u_int16_t *t = (u_int16_t*) &dh->dh_fc;	fprintf(stderr, "\t[ %2x %2x %2x %2x ] %x %s %d\n",		*t, dh->dh_duration,		ETHER_ADDR(dh->dh_da), ETHER_ADDR(dh->dh_sa),		index_, packet_info.name(ch->ptype()), ch->size());}void MacGprs::dump(char *fname){	fprintf(stderr, "\n%s --- (INDEX: %d, time: %2.9f)\n", fname, 		index_, Scheduler::instance().clock());		fprintf(stderr, "\tpktTx_: %x, pktRx_: %x, callback: %x\n", 		(int) pktTx_, (int) pktRx_, (int) callback_);}/* ======================================================================   Packet Headers Routines   ====================================================================== */int MacGprs::hdr_dst(char* hdr, int dst ){	struct hdr_mac_gprs *dh = (struct hdr_mac_gprs*) hdr;	if(dst > -2)		STORE4BYTE(&dst, (dh->dh_da));	return ETHER_ADDR(dh->dh_da);}int MacGprs::hdr_src(char* hdr, int src ){	struct hdr_mac_gprs *dh = (struct hdr_mac_gprs*) hdr;	if(src > -2)		STORE4BYTE(&src, (dh->dh_sa));  	return ETHER_ADDR(dh->dh_sa);}int MacGprs::hdr_type(char* hdr, u_int16_t type) {	struct hdr_mac_gprs *dh = (struct hdr_mac_gprs*) hdr;	if(type)		STORE2BYTE(&type,(dh->dh_body));	return GET2BYTE(dh->dh_body);}/*double DATA_Time(int len) { 	double 	return (8*(len) / tx_rate);}   */   double MacGprs::TX_Time(Packet *p) {    	int len=	(HDR_CMN(p))->size();	double t = (double)(len*8)/tx_rate;//	printf("< >, %f len=%d tx_time = %f \n", NOW,len, t);	if(t < 0.0) {	    drop(p, "XXX");        exit(1);    }     return t;}   		/* Resource allocation:*/void MacGprs::slot_allot( int  ms_, int &freq, int &slot){ // Allocation is sequential - first empty slot is alloted.		int i,j;	start_time_ = NOW;		if (gprs_==1) { //ie its a gprs node			//fnd the first free slot/freq			for ( i=0; i<max_num_freq_ ; i++) {  			    for ( j=1; j<(gprs_slots_per_frame_+1) ; j++){					//slot0 resv for signalling on ALL freqs					if (vlr_.up_table[i][j] == -10) {						//ie this slot's not been alloted to anyone 						break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一不卡视频| 日本亚洲天堂网| 欧美成人激情免费网| 欧美日韩不卡一区| 欧美电影一区二区三区| 欧美日韩高清在线| 日韩一级免费一区| 欧美电影精品一区二区 | 午夜久久久影院| 亚洲免费av高清| 亚洲一区二区黄色| 日韩主播视频在线| 久久66热re国产| 国产精品一二三区| 成人av在线观| 欧美自拍丝袜亚洲| 在线播放91灌醉迷j高跟美女 | 国产日韩欧美电影| 国产精品国产三级国产a| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 夜夜嗨av一区二区三区| 亚洲国产日韩a在线播放性色| 亚洲v精品v日韩v欧美v专区| 日韩激情视频在线观看| 国产精品综合网| 91片黄在线观看| 中文字幕 久热精品 视频在线 | 色综合天天综合狠狠| 欧美性猛交xxxx乱大交退制版| 欧美嫩在线观看| 日本一区二区三区四区| 亚洲乱码一区二区三区在线观看| 性久久久久久久久| 国产一区二区三区在线观看精品| 91在线观看污| 日韩一区二区电影在线| 国产精品大尺度| 日本伊人色综合网| 96av麻豆蜜桃一区二区| 91精品久久久久久蜜臀| 国产精品麻豆久久久| 日韩成人精品在线观看| www.久久久久久久久| 日韩午夜激情电影| 亚洲摸摸操操av| 国产一区二区三区免费看| 精品视频一区二区不卡| 欧美激情中文字幕| 免费在线欧美视频| 欧美日韩专区在线| 国产精品久久久爽爽爽麻豆色哟哟| 日韩av电影一区| 91福利国产精品| 国产精品色一区二区三区| 久久精品二区亚洲w码| 欧美优质美女网站| 亚洲欧洲美洲综合色网| 国产成人啪免费观看软件 | 精品久久久久av影院| 亚洲已满18点击进入久久| 成人动漫在线一区| 久久久久久久综合狠狠综合| 日韩不卡一二三区| 欧美日韩另类一区| 夜夜操天天操亚洲| 色域天天综合网| 国产精品国产三级国产| 国产69精品久久久久777| 久久综合色天天久久综合图片| 婷婷丁香激情综合| 欧美日韩激情在线| 亚洲成人激情av| 欧美日韩在线播| 午夜影视日本亚洲欧洲精品| 91黄色免费网站| 洋洋av久久久久久久一区| 色88888久久久久久影院按摩| 国产精品美女久久久久久| 国产一区在线看| 国产亚洲一区二区在线观看| 国产剧情一区在线| 日本一区二区三区在线观看| 成人永久免费视频| 国产精品美女久久久久aⅴ| 国产成人精品免费看| 国产精品毛片久久久久久久| 9i在线看片成人免费| 成人欧美一区二区三区在线播放| 91蜜桃网址入口| 国产一区二区网址| 国产欧美日韩三级| 91亚洲精品一区二区乱码| 亚洲黄一区二区三区| 欧美日韩黄色一区二区| 蜜桃久久av一区| 久久久久久久久97黄色工厂| 成人国产亚洲欧美成人综合网 | 欧美色图在线观看| 日韩综合小视频| 久久久不卡网国产精品二区| 成人午夜免费视频| 香蕉久久夜色精品国产使用方法| 欧美不卡一区二区| 盗摄精品av一区二区三区| 亚洲精品视频一区| 精品三级在线观看| 99热国产精品| 日韩经典中文字幕一区| 中文字幕不卡在线| 91精品国产色综合久久ai换脸| 激情综合网天天干| 亚洲美女偷拍久久| 精品国内片67194| 在线精品亚洲一区二区不卡| 精品一区二区三区在线观看| 亚洲欧洲国产日韩| 欧美不卡一区二区三区四区| av在线免费不卡| 免费一级欧美片在线观看| 中文字幕视频一区| 26uuu另类欧美亚洲曰本| 欧亚一区二区三区| 高清国产一区二区| 麻豆91免费看| 亚洲一区二区综合| 中文字幕精品综合| 日韩欧美成人午夜| 欧美日韩国产精品自在自线| 不卡的av电影| 国产乱人伦偷精品视频不卡 | 欧美肥妇free| 91丝袜美女网| 国产河南妇女毛片精品久久久 | 国产精品免费免费| 久久久亚洲综合| 欧美一区二区三区在线看| 欧美中文字幕亚洲一区二区va在线| 国产伦精品一区二区三区视频青涩| 婷婷开心久久网| 午夜电影一区二区三区| 亚洲女性喷水在线观看一区| 欧美高清在线视频| 26uuu欧美日本| 精品国产成人系列| 精品国内二区三区| 日韩免费看的电影| 91精品免费观看| 91精品国产色综合久久久蜜香臀| 欧美日韩国产综合视频在线观看| 在线观看中文字幕不卡| 91小视频在线免费看| 91在线国产福利| 色乱码一区二区三区88| 色综合久久久久久久久久久| av在线综合网| 在线一区二区三区四区五区| 91视频在线观看| 91久久国产最好的精华液| 在线精品视频一区二区三四| 欧美午夜影院一区| 欧美人与性动xxxx| 日韩精品一区二区三区视频播放 | 国产精品视频在线看| 中文字幕亚洲欧美在线不卡| 国产精品久久久一本精品| 一区在线观看免费| 亚洲综合一区二区精品导航| 亚洲成人免费影院| 久久99精品久久只有精品| 国产一本一道久久香蕉| 成人h动漫精品一区二区| 色婷婷综合五月| 3d动漫精品啪啪一区二区竹菊| 日韩欧美一卡二卡| 国产女同性恋一区二区| 亚洲视频香蕉人妖| 视频一区二区不卡| 国产在线一区观看| 91一区二区在线观看| 欧美高清性hdvideosex| 久久免费午夜影院| 亚洲精品少妇30p| 欧美aⅴ一区二区三区视频| 国产精品一卡二| 欧美性色黄大片手机版| 精品伦理精品一区| 亚洲免费电影在线| 激情六月婷婷综合| 色婷婷国产精品久久包臀| 日韩美女视频在线| 亚洲男同性恋视频| 国产精品伊人色| 欧美日韩精品系列| 国产精品短视频| 九色综合狠狠综合久久| 精品国产自在久精品国产| 欧美国产一区在线| 免费成人在线播放| 欧美亚州韩日在线看免费版国语版 | 成人av资源在线|