37#define SPEED_OF_LIGHT 299.792458
168 double dPreambleTime = 0;
186 return dPreambleTime;
197 double dTransmissionTime;
198 double dPropagationDelay;
199 double dPreambleTime;
203 UINT64 transmissionId = 0;
236 dPropagationDelay = 0.01;
238 time+=dTransmissionTime+dPreambleTime;
258 if (packet == NULL) {
return -2; }
339 if (pdbm < srcPhy->dCurrentRxSensitivity_dbm)
467 double dTxTime = 0.0;
483 fnNetSimError(
"IEEE802.11--- Unknown phy protocol type %d in Calculate Transmission Time\n", pstruPhy->
PhyProtocol);
492 if(dFrequency1 > dFrequency2)
494 if( (dFrequency1 - dFrequency2) >= bandwidth )
501 if( (dFrequency2 - dFrequency1) >= bandwidth )
528 fnNetSimError(
"No dest phy layer is found for device %d:%d in function %s",
529 destId, destif, __FUNCTION__);
534 while(pstruPacketList)
551 pstruPacketList=pstruPacket;
552 while(pstruPacketList)
554 pstruPacket=pstruPacketList;
593 bool isTransmitted =
false;
610 isTransmitted =
true;
623 isTransmitted =
true;
640 isTransmitted =
true;
656 isTransmitted =
true;
663 return isTransmitted;
701 double dInterferenceThreshold = 0.0;
720 return dInterferenceThreshold;
void fn_NetSim_IEEE802_11_CSMA_UpdateNAV(NETSIM_ID d, NETSIM_ID in, NetSim_PACKET *packet)
void fn_NetSim_IEEE802_11_CSMACA_AddAckTimeOut(NetSim_PACKET *packet, NETSIM_ID devId, NETSIM_ID devIf)
#define GET_RX_POWER_dbm(tx, rx, time)
PIEEE802_11_MAC_VAR IEEE802_11_MAC(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId)
PIEEE802_11_PHY_VAR IEEE802_11_PHY(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId)
bool validate_processing_time(double time, NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
void fn_NetSim_IEEE802_11_OFDMPhy_SetEDThreshold(PIEEE802_11_PHY_VAR phy)
int fn_NetSim_IEEE802_11_OFDMPhy_DataRate(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NETSIM_ID nReceiverId, NetSim_PACKET *packet, double time)
bool is_more_fragment_coming(NetSim_PACKET *packet)
bool is_first_packet(NetSim_PACKET *packet)
#define CONTRL_FRAME_RATE_11A_AND_G
Control frame data rate for IEEE 802.11a/g in Mbps.
#define CONTRL_FRAME_RATE_11P
Control frame data rate for IEEE 802.11p in Mbps.
void fn_NetSim_IEEE802_11_RTS_CTS_AddCTSTimeOut(NetSim_PACKET *packet, NETSIM_ID devId, NETSIM_ID devIf)
NETSIM_ID get_send_interface_id(NetSim_PACKET *packet)
bool isIEEE802_11_CtrlPacket(NetSim_PACKET *packet)
#define CONTRL_FRAME_RATE_11B
Control frame data rate for IEEE 802.11b in Mbps.
int fn_NetSim_IEEE802_11_DSSSPhy_DataRate(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NETSIM_ID nReceiverId, NetSim_PACKET *packet, double time)
void fn_NetSim_IEEE802_11_DSSPhy_SetEDThreshold(PIEEE802_11_PHY_VAR phy)
void fn_NetSim_IEEE802_11_HTPhy_SetEDThreshold(PIEEE802_11_PHY_VAR phy)
int fn_NetSim_IEEE802_11_HTPhy_DataRate(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NETSIM_ID nReceiverId, NetSim_PACKET *packet, double time)
#define ACK_SIZE
10 bytes header 4 bytes FCS
void set_mac_state_after_txend(PIEEE802_11_MAC_VAR mac)
double DSSSPhy_get_min_rxSensitivity()
static double calculate_propagation_delay(NetSim_PACKET *packet)
int fn_NetSim_IEEE802_11_SetDataRate(NETSIM_ID txId, NETSIM_ID txIf, NETSIM_ID rxId, NETSIM_ID rxIf, NetSim_PACKET *packet, double time)
bool fn_NetSim_IEEE802_11_TransmitBroadcastFrame(NetSim_PACKET *pstruPacket, NETSIM_ID nDevId, NETSIM_ID nInterfaceId)
double fn_NetSim_IEEE802_11_CalculateTransmissionTime(double size, NETSIM_ID nDevId, NETSIM_ID nInterfaceId)
int fn_NetSim_IEEE802_11_PhyOut()
double HTPhy_get_min_rxSensitivity(double bandwidth, UINT NSS)
double ofdmphy_get_min_rxSensitivity(double bandwidth)
int fn_NetSim_IEEE802_11_PHY_Init(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
bool fn_NetSim_IEEE802_11_TransmitFrame(NetSim_PACKET *pstruPacket, NETSIM_ID nDevId, NETSIM_ID nInterfaceId)
static void wlanphy_update_medium_param(NETSIM_ID d, NETSIM_ID in)
double fn_NetSim_IEEE802_11_GetMinRxSensitivity(NETSIM_ID txId, NETSIM_ID txIf)
int fn_NetSim_IEEE802_11_PhyIn()
double get_preamble_time(PIEEE802_11_PHY_VAR phy)
bool CheckFrequencyInterfrence(double dFrequency1, double dFrequency2, double bandwidth)
double get_11ac_preamble_time(PIEEE802_11_PHY_VAR phy)
bool set_radio_state(NETSIM_ID d, NETSIM_ID in, PHY_TX_STATUS state, NETSIM_ID peerId, UINT64 transmissionId)
#define IEEE802_11_CURR_PHY
void fn_NetSim_IEEE802_11n_OFDM_MIMO_init(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
void fn_NetSim_IEEE802_11_Add_Phy_Header(NetSim_PACKET *packet, UINT64 *transmissionId)
double get_11n_preamble_time(PIEEE802_11_PHY_VAR phy)
void fn_NetSim_IEEE802_11ac_OFDM_MIMO_init(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
#define fnNetSimError(x,...)
bool medium_isIdle(NETSIM_ID d, NETSIM_ID in)
void medium_notify_packet_received(NetSim_PACKET *packet)
void medium_update_datarate(NETSIM_ID d, NETSIM_ID in, double r_mbps)
void medium_update_modulation(NETSIM_ID d, NETSIM_ID in, PHY_MODULATION m, double coderate)
void medium_notify_packet_send(NetSim_PACKET *packet, NETSIM_ID txId, NETSIM_ID txIf, NETSIM_ID rxId, NETSIM_ID rxIf)
NETSIM_UTILITY_EXPORT WIRESHARKTRACE wireshark_trace
#define PACKET_PHYPROTOCOLDATA(pPacket)
bool isMulticastPacket(NetSim_PACKET *packet)
bool isBroadcastPacket(NetSim_PACKET *packet)
#define DEVICE_MACLAYER(DeviceId, InterfaceId)
#define DEVICE_TYPE(DeviceId)
@ MAC_PROTOCOL_IEEE802_11
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
NETSIM_ID fn_NetSim_Stack_GetConnectedInterface(NETSIM_ID devId, NETSIM_ID ifid, NETSIM_ID conId)
#define DEVICE_PHYLAYER(DeviceId, InterfaceId)
#define DEVICE_POSITION(DeviceId)
#define fn_NetSim_Metrics_Add(packet)
double fn_NetSim_Utilities_CalculateDistance(NetSim_COORDINATES *coordinate1, NetSim_COORDINATES *coordinates2)
#define fn_NetSim_Packet_FreePacket(pstruPacket)
enum enum_PacketStatus PACKET_STATUS
#define fn_NetSim_WritePacketTrace(pstruPacket)
#define fnpAddEvent(pstruEvent)
#define fn_NetSim_Packet_CopyPacketList(pstruPacket)
NETSIM_ID parentInterfaceId
PHY_MODULATION modulation
double dCurrentRxSensitivity_dbm
IEEE802_11_PHY_TYPE PhyType
IEEE802_11_OFDM_MIMO ofdmPhy_11n
union stru_802_11_Phy_Var::@4 PHY_TYPE
IEEE802_11_DSSS_PHY dsssPhy
PACKET_STATUS firstpacketstatus
IEEE802_11_PROTOCOL PhyProtocol
IEEE802_11_OFDM_PHY ofdmPhy
double dBroadcastFrameDataRate
double dControlFrameDataRate
PLME_CHARACTERISTICS plmeCharacteristics
PHY_MODULATION modulation
PHY_MODULATION modulation
struct stru_NetSim_Packet * pPacket
netsimDEVICE_TYPE nDeviceType
NETSIM_ID nConnectedDeviceCount
NETSIM_ID nConnectedDeviceCount
NETSIM_ID nCenterDeviceId
NETSIM_ID nSecondDeviceId
union stru_NetSim_Links::uni_NetSim_Link_DeviceList puniDevList
void * Packet_MACProtocol
PACKET_STATUS nPacketErrorFlag
PHYSICAL_LAYER_MEDIUM nPhyMedium
struct stru_NetSim_Packet_AppLayer * pstruAppData
PACKET_STATUS nPacketStatus
struct stru_NetSim_Packet_PhyLayer * pstruPhyData
unsigned int nControlDataType
struct stru_NetSim_Packet * pstruNextPacket
struct stru_NetSim_Packet_MACLayer * pstruMacData
NETSIM_ID recvInterfaceId
PPCAP_WRITER ** pcapWriterlist
void(* convert_sim_to_real_packet)(void *netsim_packet, void *pcap_handle, double dTime)
struct stru_NetSim_Links::uni_NetSim_Link_DeviceList::stru_NetSim_P2P pstruP2P
struct stru_NetSim_Links::uni_NetSim_Link_DeviceList::stru_NetSim_P2MP pstrup2MP
struct stru_NetSim_Links::uni_NetSim_Link_DeviceList::stru_NetSim_MP2MP pstruMP2MP