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

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

?? mac-tdma.cc

?? 在網絡仿真模擬工具下實現支持時隙的MAC層TDMA協議
?? CC
?? 第 1 頁 / 共 2 頁
字號:
void MacTdma::recv(Packet* p, Handler* h) {	struct hdr_cmn *ch = HDR_CMN(p);		/* Incoming packets from phy layer, send UP to ll layer. 	   Now, it is in receiving mode. 	*/	if (ch->direction() == hdr_cmn::UP) {		// Since we can't really turn the radio off at lower level, 		// we just discard the packet.		if (!radio_active_) {			free(p);			//printf("<%d>, %f, I am sleeping...\n", index_, NOW);			return;		}		sendUp(p);		//printf("<%d> packet recved: %d\n", index_, tdma_pr_++);		return;	}		/* Packets coming down from ll layer (from ifq actually),	   send them to phy layer. 	   Now, it is in transmitting mode. */	callback_ = h;	state(MAC_SEND);	sendDown(p);	//printf("<%d> packet sent down: %d\n", index_, tdma_ps_++);}void MacTdma::sendUp(Packet* p) {	struct hdr_cmn *ch = HDR_CMN(p);	/* Can't receive while transmitting. Should not happen...?*/	if (tx_state_ && ch->error() == 0) {		printf("<%d>, can't receive while transmitting!\n", index_);		ch->error() = 1;	};	/* Detect if there is any collision happened. should not happen...?*/	if (rx_state_ == MAC_IDLE) {		SET_RX_STATE(MAC_RECV);     // Change the state to recv.		pktRx_ = p;                 // Save the packet for timer reference.		/* Schedule the reception of this packet, 		   since we just see the packet header. */		double rtime = TX_Time(p);		assert(rtime >= 0);		/* Start the timer for receiving, will end when receiving finishes. */		mhRxPkt_.start(p, rtime);	} else {		/* Note: we don't take the channel status into account, 		   as collision should not happen...		*/		printf("<%d>, receiving, but the channel is not idle....???\n", index_);	}}/* Actually receive data packet when RxPktTimer times out. */void MacTdma::recvDATA(Packet *p){	/*Adjust the MAC packet size: strip off the mac header.*/	struct hdr_cmn *ch = HDR_CMN(p);	ch->size() -= ETHER_HDR_LEN;	ch->num_forwards() += 1;	/* Pass the packet up to the link-layer.*/	uptarget_->recv(p, (Handler*) 0);}/* Send packet down to the physical layer.    Need to calculate a certain time slot for transmission. */void MacTdma::sendDown(Packet* p) {	u_int32_t dst, src, size;  	struct hdr_cmn* ch = HDR_CMN(p);	struct hdr_mac_tdma* dh = HDR_MAC_TDMA(p);	/* Update the MAC header, same as 802.11 */	ch->size() += ETHER_HDR_LEN;	dh->dh_fc.fc_protocol_version = MAC_ProtocolVersion;	dh->dh_fc.fc_type       = MAC_Type_Data;	dh->dh_fc.fc_subtype    = MAC_Subtype_Data;		dh->dh_fc.fc_to_ds      = 0;	dh->dh_fc.fc_from_ds    = 0;	dh->dh_fc.fc_more_frag  = 0;	dh->dh_fc.fc_retry      = 0;	dh->dh_fc.fc_pwr_mgt    = 0;	dh->dh_fc.fc_more_data  = 0;	dh->dh_fc.fc_wep        = 0;	dh->dh_fc.fc_order      = 0;	if((u_int32_t)ETHER_ADDR(dh->dh_da) != MAC_BROADCAST)		dh->dh_duration = DATA_DURATION;	else		dh->dh_duration = 0;	dst = ETHER_ADDR(dh->dh_da);	src = ETHER_ADDR(dh->dh_sa);	size = ch->size();	/* buffer the packet to be sent. */	pktTx_ = p;}/* Actually send the packet. */void MacTdma::send() {	u_int32_t dst, src, size;	struct hdr_cmn* ch;	struct hdr_mac_tdma* dh;	double stime;	/* Check if there is any packet buffered. */	if (!pktTx_) {		printf("<%d>, %f, no packet buffered.\n", index_, NOW);		return;	}	/* Perform carrier sence...should not be collision...? */	if(!is_idle()) {		/* Note: we don't take the channel status into account, ie. no collision,		   as collision should not happen...		*/		printf("<%d>, %f, transmitting, but the channel is not idle...???\n", index_, NOW);		return;	}	ch = HDR_CMN(pktTx_);	dh = HDR_MAC_TDMA(pktTx_);  	dst = ETHER_ADDR(dh->dh_da);	src = ETHER_ADDR(dh->dh_sa);	size = ch->size();	stime = TX_Time(pktTx_);	/* Turn on the radio and transmit! */	SET_TX_STATE(MAC_SEND);						     	radioSwitch(ON);	/* Start a timer that expires when the packet transmission is complete. */	mhTxPkt_.start(pktTx_->copy(), stime);	downtarget_->recv(pktTx_, this);        	pktTx_ = 0;}// Turn on / off the radiovoid MacTdma::radioSwitch(int i) {	radio_active_ = i;	EnergyModel *em = netif_->node()->energy_model();	if (i == ON) {		if (em && em->sleep())			em->set_node_sleep(0);		//    printf("<%d>, %f, turn radio ON\n", index_, NOW);		return;	}	if (i == OFF) {		if (em && !em->sleep()) {			em->set_node_sleep(1);			//    netif_->node()->set_node_state(INROUTE);		};		//    printf("<%d>, %f, turn radio OFF\n", index_, NOW);		return;	}}// make the new preamble.void MacTdma::makePreamble() {	u_int32_t dst;	struct hdr_mac_tdma* dh;		// If there is a packet buffered, file its destination to preamble.	if (pktTx_) {		dh = HDR_MAC_TDMA(pktTx_);  		dst = ETHER_ADDR(dh->dh_da);		//printf("<%d>, %f, write %d to slot %d in preamble\n", index_, NOW, dst, slot_num_);		tdma_preamble_[slot_num_] = dst;	} else {		//printf("<%d>, %f, write NO_PKT to slot %d in preamble\n", index_, NOW, slot_num_);		tdma_preamble_[slot_num_] = NOTHING_TO_SEND;	}}/* Timers' handlers *//* Slot Timer:   For the preamble calculation, we should have it:   occupy one slot time,   radio turned on for the whole slot.*/void MacTdma::slotHandler(Event *e) {	// Restart timer for next slot.	mhSlot_.start((Packet *)e, slot_time_);	// Make a new presamble for next frame.	if ((slot_count_ == active_node_) || (slot_count_ == FIRST_ROUND)) {		//printf("<%d>, %f, make the new preamble now.\n", index_, NOW);		// We should turn the radio on for the whole slot time.		radioSwitch(ON);		makePreamble();		slot_count_ = 0;		return;	}	// If it is the sending slot for me.	if (slot_count_ == slot_num_) {		//printf("<%d>, %f, time to send.\n", index_, NOW);		// We have to check the preamble first to avoid the packets coming in the middle.		if (tdma_preamble_[slot_num_] != NOTHING_TO_SEND)			send();		else			radioSwitch(OFF);		slot_count_++;		return;	} 	// If I am supposed to listen in this slot	if ((tdma_preamble_[slot_count_] == index_) || ((u_int32_t)tdma_preamble_[slot_count_] == MAC_BROADCAST)) {		//printf("<%d>, %f, preamble[%d]=%d, I am supposed to receive now.\n", index_, NOW, slot_count_, tdma_preamble_[slot_count_]);		slot_count_++;		// Wake up the receive packets.		radioSwitch(ON);		return;	}	// If I dont send / recv, do nothing.	//printf("<%d>, %f, preamble[%d]=%d, nothing to do now.\n", index_, NOW, slot_count_, tdma_preamble_[slot_count_]);	radioSwitch(OFF);	slot_count_++;	return;}void MacTdma::recvHandler(Event *e) {	u_int32_t dst, src; 	int size;	struct hdr_cmn *ch = HDR_CMN(pktRx_);	struct hdr_mac_tdma *dh = HDR_MAC_TDMA(pktRx_);	/* Check if any collision happened while receiving. */	if (rx_state_ == MAC_COLL) 		ch->error() = 1;	SET_RX_STATE(MAC_IDLE);  	/* check if this packet was unicast and not intended for me, drop it.*/   	dst = ETHER_ADDR(dh->dh_da);	src = ETHER_ADDR(dh->dh_sa);	size = ch->size();	//printf("<%d>, %f, recv a packet [from %d to %d], size = %d\n", index_, NOW, src, dst, size);	// Turn the radio off after receiving the whole packet	radioSwitch(OFF);	/* Ordinary operations on the incoming packet */	// Not a pcket destinated to me.	if ((dst != MAC_BROADCAST) && (dst != (u_int32_t)index_)) {		drop(pktRx_);		return;	}  	/* Now forward packet upwards. */	recvDATA(pktRx_);}/* After transmission a certain packet. Turn off the radio. */void MacTdma::sendHandler(Event *e) {	//  printf("<%d>, %f, send a packet finished.\n", index_, NOW);	/* Once transmission is complete, drop the packet. 	   p  is just for schedule a event. */	SET_TX_STATE(MAC_IDLE);	Packet::free((Packet *)e);  	// Turn off the radio after sending the whole packet	radioSwitch(OFF);	/* unlock IFQ. */	if(callback_) {		Handler *h = callback_;		callback_ = 0;		h->handle((Event*) 0);	} }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频第二页| 日韩视频免费直播| 欧美一级免费观看| 国产精品国产馆在线真实露脸 | 婷婷一区二区三区| 福利一区福利二区| 欧美日韩高清一区二区不卡| 国产嫩草影院久久久久| 蜜桃91丨九色丨蝌蚪91桃色| 91小视频在线观看| 日本一区二区电影| 狠狠色狠狠色合久久伊人| 欧美三级在线看| 亚洲欧美一区二区在线观看| 国产一区视频网站| 欧美一级午夜免费电影| 亚洲6080在线| 91国在线观看| 亚洲欧洲综合另类在线| 成人av在线资源网站| 2022国产精品视频| 美女性感视频久久| 欧美一区二区三区人| 亚洲国产日韩精品| 日本国产一区二区| 一区二区三区在线视频播放| 99精品国产视频| 中文字幕一区免费在线观看| 国产成人小视频| 国产日韩欧美综合在线| 国产一区二区三区美女| 亚洲精品一线二线三线无人区| 免费观看91视频大全| 欧美日本一道本在线视频| 亚洲v精品v日韩v欧美v专区| 欧美日韩一区二区在线视频| 亚洲电影一区二区| 欧美日韩黄色一区二区| 婷婷六月综合亚洲| 欧美一区日本一区韩国一区| 奇米影视在线99精品| 精品日韩一区二区三区免费视频| 美国十次综合导航| 国产婷婷色一区二区三区四区| 国产综合成人久久大片91| 国产亚洲一二三区| 成人激情小说网站| 综合亚洲深深色噜噜狠狠网站| 不卡高清视频专区| 樱桃视频在线观看一区| 91精品蜜臀在线一区尤物| 久久精品久久综合| 久久久夜色精品亚洲| 99在线精品观看| 亚洲第一激情av| 精品欧美乱码久久久久久 | 99久久精品免费看| 亚洲乱码国产乱码精品精98午夜| 欧美亚洲国产一区在线观看网站 | 亚洲欧美经典视频| 欧美一区二区在线免费播放 | 粉嫩绯色av一区二区在线观看| 《视频一区视频二区| 色婷婷av久久久久久久| 免费在线视频一区| 中文字幕巨乱亚洲| 欧美日本韩国一区二区三区视频| 激情文学综合丁香| 亚洲国产成人精品视频| 精品欧美久久久| 在线观看日韩高清av| 久久爱另类一区二区小说| 1024国产精品| 亚洲精品一区二区三区福利| 日本精品一区二区三区高清| 日韩电影免费在线看| 欧美高清一级片在线观看| 欧美精品在线观看一区二区| 岛国一区二区在线观看| 亚洲高清免费观看| 国产精品久久久久永久免费观看| 欧美一区三区二区| 色美美综合视频| 国产成人在线网站| 爽好久久久欧美精品| 国产精品久久久久一区二区三区 | 在线播放91灌醉迷j高跟美女| 国产精品资源站在线| 亚洲r级在线视频| 国产偷国产偷亚洲高清人白洁| 欧美狂野另类xxxxoooo| 99国产精品久久久久| 国产精一区二区三区| 日本不卡一区二区| 亚洲国产精品欧美一二99| 亚洲日本va午夜在线影院| 国产欧美视频在线观看| 日韩欧美亚洲国产精品字幕久久久| 色综合久久中文综合久久97| 国产精华液一区二区三区| 蜜臀av一区二区在线观看| 亚洲成av人片一区二区三区 | 亚洲精品在线观看视频| 欧美一区二区免费视频| 欧美日韩一区高清| 精品污污网站免费看| 91成人在线免费观看| jiyouzz国产精品久久| 国产成人av一区二区三区在线 | 亚洲午夜羞羞片| 亚洲综合色成人| 一区二区三区精品视频| 中文字幕日本不卡| 成人欧美一区二区三区白人| 中文字幕中文在线不卡住| 国产精品免费网站在线观看| 久久精品男人的天堂| 国产视频一区不卡| 中文字幕欧美激情一区| 亚洲欧洲色图综合| 依依成人精品视频| 亚洲一区二区三区小说| 午夜精品一区二区三区电影天堂| 亚洲18色成人| 久久se精品一区二区| 韩国成人在线视频| 国产一区二区电影| 国产91丝袜在线播放九色| 成人一区二区三区在线观看| 9人人澡人人爽人人精品| 色激情天天射综合网| 欧美日本精品一区二区三区| 日韩三级视频在线看| 久久精品夜色噜噜亚洲a∨| 亚洲国产精品成人久久综合一区| 中文乱码免费一区二区 | 日本一二三四高清不卡| 日韩一区有码在线| 天天av天天翘天天综合网| 卡一卡二国产精品| 成人免费黄色在线| 欧美午夜影院一区| 久久婷婷国产综合精品青草| 国产三级精品视频| 亚洲国产成人va在线观看天堂| 美女脱光内衣内裤视频久久网站 | 欧美一区二区三区电影| 久久久一区二区三区| 伊人色综合久久天天人手人婷| 奇米色一区二区| 99久久国产综合精品女不卡| 91精品国产综合久久婷婷香蕉| 久久综合av免费| 一区二区日韩电影| 国内精品写真在线观看| 91麻豆国产精品久久| 日韩欧美黄色影院| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲精品国产第一综合99久久| 日本不卡一区二区| 色美美综合视频| 久久精品网站免费观看| 午夜欧美在线一二页| 国产精品一区2区| 在线这里只有精品| 国产女人18毛片水真多成人如厕| 香蕉成人啪国产精品视频综合网 | 国产精品热久久久久夜色精品三区| 亚洲精品一二三区| 国产一区二区三区四区在线观看| 日本高清不卡在线观看| 久久精品在线观看| 日本美女一区二区三区| 色婷婷综合久久久久中文一区二区 | 91久久精品一区二区三| 精品国产1区2区3区| 香蕉成人啪国产精品视频综合网 | 日韩毛片视频在线看| 国产一区二区三区在线观看精品 | 欧美一区二区三区思思人| 亚洲欧美一区二区三区国产精品 | 欧美日韩国产不卡| 亚洲日本乱码在线观看| 不卡的av电影在线观看| 久久婷婷综合激情| 激情五月激情综合网| 欧美一区二区三区系列电影| 亚洲永久免费视频| 色老头久久综合| 亚洲欧美一区二区三区极速播放| 成人黄色小视频在线观看| 亚洲精品在线电影| 国产一区二区主播在线| 日韩一区二区三区电影在线观看 | 精品欧美乱码久久久久久| 麻豆久久一区二区| 日韩女同互慰一区二区| 麻豆精品一区二区av白丝在线| 欧美日韩的一区二区| 亚洲成人自拍网|