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

📄 mobilenode.h~

📁 TCP westwood code, download
💻 H~
字号:
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*-  * * Copyright (c) 1997 Regents of the University of California. * 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. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#) $Header: /nfs/jade/vint/CVSROOT/ns-2/common/mobilenode.h,v 1.17 2001/02/07 10:25:35 yaxu Exp $ * *//* * XXX * Eventually energe model and location stuff in this file will be cleaned * up and moved to separate file to improve modularity. BUT before that is  * finished, they should stay in this file rather than bothering the base  * node. */#ifndef __ns_mobilenode_h__#define __ns_mobilenode_h__#define POSITION_UPDATE_INTERVAL	30.0   // seconds#define MAX_SPEED			5.0    // meters per second (33.55 mph)#define MIN_SPEED			0.0#include "object.h"#include "trace.h"#include "lib/bsd-list.h"#include "phy.h"#include "topography.h"#include "arp.h"#include "node.h"#include "gridkeeper.h"#include "energy-model.h"#include "location.h"class GridKeeper;#if COMMENT_ONLY		 -----------------------		|			|		|	Upper Layers	|		|			|		 -----------------------		    |		    |		    |		    |		 -------	 -------		|	|	|	|		|  LL	|	|  LL	|		|	|	|	|		 -------	 -------		    |		    |		    |		    |		 -------	 -------		|	|	|	|		| Queue	|	| Queue	|		|	|	|	|		 -------	 -------		    |		    |		    |		    |		 -------	 -------		|	|	|	|		|  Mac	|	|  Mac	|		|	|	|	|		 -------	 -------		    |		    |		    |		    |		 -------	 -------	 -----------------------		|	|	|	|	|			|		| Netif	| <---	| Netif | <---	|	Mobile Node	|		|	|	|	|	|			|		 -------	 -------	 -----------------------		    |		    |		    |		    |		 -----------------------		|			|		|	Channel(s) 	|		|			|		 -----------------------#endif		 class MobileNode;class PositionHandler : public Handler {public:	PositionHandler(MobileNode* n) : node(n) {}	void handle(Event*);private:	MobileNode *node;};class MobileNode : public Node {	friend class PositionHandler;public:	MobileNode();	virtual int command(int argc, const char*const* argv);	double	distance(MobileNode*);	double	propdelay(MobileNode*);	void	start(void);        inline void getLoc(double *x, double *y, double *z) {		update_position();  *x = X_; *y = Y_; *z = Z_;	}        inline void getVelo(double *dx, double *dy, double *dz) {		*dx = dX_ * speed_; *dy = dY_ * speed_; *dz = 0.0;	}	inline MobileNode* nextnode() { return link_.le_next; }	inline int base_stn() { return base_stn_;}	inline void set_base_stn(int addr) { base_stn_ = addr; }	void dump(void);	inline MobileNode*& next() { return next_; }	inline double X() { return X_; }	inline double Y() { return Y_; }	inline double Z() { return Z_; }	inline double speed() { return speed_; }	inline double dX() { return dX_; }	inline double dY() { return dY_; }	inline double dZ() { return dZ_; }	inline double destX() { return destX_; }	inline double destY() { return destY_; }	inline double radius() { return radius_; }	//inline double last_routingtime() { return last_rt_time_;}	void update_position();	void log_energy(int);	//void logrttime(double);	virtual void idle_energy_patch(float, float);protected:	/*	 * Last time the position of this node was updated.	 */	double position_update_time_;        double position_update_interval_;	/*         *  The following indicate the (x,y,z) position of the node on         *  the "terrain" of the simulation.         */	double X_;	double Y_;	double Z_;	double speed_;	// meters per second	/*         *  The following is a unit vector that specifies the         *  direction of the mobile node.  It is used to update         *  position         */	double dX_;	double dY_;	double dZ_;        /* where are we going? */	double destX_;	double destY_;	/*	 * for gridkeeper use only 	 */	MobileNode*	next_;	double          radius_;	// Used to generate position updates	PositionHandler pos_handle_;	Event pos_intr_;	void	log_movement();	void	random_direction();	void	random_speed();        void    random_destination();        int	set_destination(double x, double y, double speed);	  private:	inline int initialized() {		return (T_ && log_target_ &&			X_ >= T_->lowerX() && X_ <= T_->upperX() &&			Y_ >= T_->lowerY() && Y_ <= T_->upperY());	}	void		random_position();	void		bound_position();	int		random_motion_;	// is mobile	/*	 * A global list of mobile nodes	 */	LIST_ENTRY(MobileNode) link_;	/*	 * The topography over which the mobile node moves.	 */	Topography *T_;	/*	 * Trace Target	 */	Trace* log_target_;        /* 	 * base_stn for mobilenodes communicating with wired nodes         */	int base_stn_;	//int last_rt_time_;};#endif // ns_mobilenode_h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -