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

📄 pdm_inoise.ps.c

📁 用OPNET实现802.11MAC协议DCF协议
💻 C
字号:
/* dra_inoise.ps.c */                                                       
/* Default interference noise model for radio link Transceiver Pipeline */

/****************************************/
/*		  Copyright (c) 1993-2002		*/
/*		by OPNET Technologies, Inc.		*/
/*		(A Delaware Corporation)		*/
/*	7255 Woodmont Av., Suite 250  		*/
/*     Bethesda, MD 20814, U.S.A.       */
/*			All Rights Reserved.		*/
/****************************************/

#include "opnet.h"


#if defined (__cplusplus)
extern "C"
#endif
void
pdm_inoise (Packet * pkptr_prev, Packet * pkptr_arriv)
	{
	int			arriv_match, prev_match;
	double		prev_rcvd_power, arriv_rcvd_power;
	double		arriv_noise_accum, prev_noise_accum;

	/** Evaluate a collision due to arrival of 'pkptr_arriv'	**/
	/** where 'pkptr_prev' is the packet that is currently		**/
	/** being received.											**/
	FIN (dra_inoise (pkptr_prev, pkptr_arriv));

	/* If the previous packet ends just as the new one begins, this is not	*/
	/* a collision (just a near miss, or perhaps back-to-back packets).		*/ 
	if (op_td_get_dbl (pkptr_prev, OPC_TDA_RA_END_RX) != op_sim_time ())
		{
		/* Increment the number of collisions in previous packet. */
		op_td_set_int (pkptr_prev, OPC_TDA_RA_NUM_COLLS, 
				op_td_get_int (pkptr_prev, OPC_TDA_RA_NUM_COLLS) + 1);

		/* Increment number of collisions in arriving packet. */
		op_td_set_int (pkptr_arriv, OPC_TDA_RA_NUM_COLLS, 
				op_td_get_int (pkptr_arriv, OPC_TDA_RA_NUM_COLLS) + 1);

		/* Determine if previous packet is valid or noise. */
		prev_match = op_td_get_int (pkptr_prev, OPC_TDA_RA_MATCH_STATUS);

		/* Determine if arriving packet is valid or noise. */
		arriv_match = op_td_get_int (pkptr_arriv, OPC_TDA_RA_MATCH_STATUS);
		
		/* Get received power levels for both packets. */
		prev_rcvd_power = op_td_get_dbl (pkptr_prev, OPC_TDA_RA_RCVD_POWER);
		arriv_rcvd_power = op_td_get_dbl (pkptr_arriv, OPC_TDA_RA_RCVD_POWER);

		/* If the arriving packet is valid, calculate		*/
		/* interference of previous packet on arriving one.	*/
		if (arriv_match == OPC_TDA_RA_MATCH_VALID)
			{
			arriv_noise_accum = op_td_get_dbl (pkptr_arriv, OPC_TDA_RA_NOISE_ACCUM);
			op_td_set_dbl (pkptr_arriv, OPC_TDA_RA_NOISE_ACCUM,
				arriv_noise_accum + prev_rcvd_power);
			}

		/* And vice-versa. */
		if (prev_match == OPC_TDA_RA_MATCH_VALID)
			{
			prev_noise_accum = op_td_get_dbl (pkptr_prev, OPC_TDA_RA_NOISE_ACCUM);
			op_td_set_dbl (pkptr_prev, OPC_TDA_RA_NOISE_ACCUM,
				prev_noise_accum + arriv_rcvd_power);
			}
		}

	FOUT
	}                

⌨️ 快捷键说明

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