44 bool* isInterfaceUsed =
calloc(ifCount,
sizeof * isInterfaceUsed);
46 for (i = 0; i < ifCount; i++)
48 if (isInterfaceUsed[i])
54 free(isInterfaceUsed);
61 case IEEE802_11_EVENT_DIFS_FAILED:
64 case IEEE802_11_EVENT_DIFS_END:
67 case IEEE802_11_EVENT_AIFS_FAILED:
70 case IEEE802_11_EVENT_AIFS_END:
73 case IEEE802_11_EVENT_BACKOFF:
77 case IEEE802_11_EVENT_BACKOFF_PAUSED:
160 fnNetSimError(
"BSSType %d is not implemented for IEEE802.11 protocol");
188 isInterfaceUsed[in - 1] =
true;
193 isInterfaceUsed[in - 1] =
true;
197 isInterfaceUsed[in - 1] =
true;
235 isInterfaceUsed[vin - 1] =
true;
334 double dPacketSize=0;
345 fnNetSimError(
"%s is called without mac->currentProcessingPacket",__FUNCTION__);
407 for(i=1;i<=
DEVICE(d)->nNumOfInterface;i++)
int fn_NetSim_IEEE802_11_CSMACA_CheckNAV()
int fn_NetSim_IEEE802_11_CSMACA_SendBlockACK()
int fn_NetSim_IEEE802_11_CSMACA_SendACK()
void fn_NetSim_IEEE802_11_CSMACA_DIFSEnd()
void ieee802_11_csmaca_aifs_failed(PIEEE802_11_MAC_VAR mac)
void ieee802_11_csmaca_pause_backoff(PIEEE802_11_MAC_VAR mac)
void ieee802_11_csmaca_difs_failed(PIEEE802_11_MAC_VAR mac)
bool fn_NetSim_IEEE802_11_CSMACA_CS()
bool fn_NetSim_IEEE802_11_CSMACA_Backoff()
void fn_NetSim_IEEE802_11_CSMACA_AIFSEnd()
int fn_NetSim_IEEE802_11_CSMACA_Init()
PIEEE802_11_PHY_VAR IEEE802_11_PHY(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId)
bool isPacketInQueue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
NETSIM_ID add_to_queue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *packet)
int fn_NetSim_IEEE802_11_FreePacket(NetSim_PACKET *pstruPacket)
double getAckSize(void *phy)
void ieee802_11_edcaf_set_txop_time(PIEEE802_11_MAC_VAR mac, double currTime)
IEEE802_11_MAC_STATE
Enumeration for 802.11 MAC states.
@ IEEE802_11_MACSTATE_BACKING_OFF
@ IEEE802_11_MACSTATE_Wait_BlockACK
@ IEEE802_11_MACSTATE_Wait_DATA
@ IEEE802_11_MACSTATE_Wait_AIFS
@ IEEE802_11_MACSTATE_Wait_ACK
@ IEEE802_11_MACSTATE_TXing_CTS
@ IEEE802_11_MACSTATE_WF_NAV
@ IEEE802_11_MACSTATE_Txing_BroadCast
@ IEEE802_11_MACSTATE_MAC_IDLE
@ IEEE802_11_MACSTATE_TXing_MPDU
@ IEEE802_11_MACSTATE_TXing_RTS
@ IEEE802_11_MACSTATE_Wait_DIFS
@ IEEE802_11_MACSTATE_TXing_ACK
@ IEEE802_11_MACSTATE_Wait_CTS
void fn_NetSim_IEEE802_11_Add_MAC_Header(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *pstruPacket, unsigned int i)
void fn_NetSim_Process_CtrlPacket()
void fn_NetSim_IEEE802_11_RTS_CTS_SendCTS()
bool isPacketforsameInfrastructureBSS(PIEEE802_11_MAC_VAR mac, NetSim_PACKET *packet)
void fn_NetSim_802_11_InfrastructureBSS_UpdateReceiver(NetSim_PACKET *packet)
void fn_NetSim_802_11_MeshBSS_UpdateReceiver(NetSim_PACKET *packet)
bool isIEEE802_11_CtrlPacket(NetSim_PACKET *packet)
bool isPacketforsameMeshBSS(PIEEE802_11_MAC_VAR mac, NetSim_PACKET *packet)
static char strIEEE802_11_MAC_STATE[IEEE802_11_MACSTATE_LAST][48]
void print_ieee802_11_log(char *format,...)
#define IEEE802_11_CURR_MAC
void fn_NetSim_IEEE802_11_MacOut()
static void forward_to_other_interface(NetSim_PACKET *packet)
void fn_NetSim_IEE802_11_MacReInit(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
double calculate_nav(NETSIM_ID d, NETSIM_ID i, NetSim_PACKET *packet)
bool isMacReceivingState(PIEEE802_11_MAC_VAR mac)
static void fn_NetSim_IEEE802_11_MacInit(bool *isInterfaceUsed)
static void add_to_mac_queue(NetSim_PACKET *packet)
void IEEE802_11_Change_Mac_State(PIEEE802_11_MAC_VAR mac, IEEE802_11_MAC_STATE state)
void fn_NetSim_IEEE802_11_SendToPhy()
bool isMacIdle(PIEEE802_11_MAC_VAR mac)
void set_mac_state_for_tx(PIEEE802_11_MAC_VAR mac, NetSim_PACKET *p)
bool isMacTransmittingState(PIEEE802_11_MAC_VAR mac)
int fn_NetSim_IEEE802_11_MacIn()
void set_mac_state_after_txend(PIEEE802_11_MAC_VAR mac)
double get_preamble_time(PIEEE802_11_PHY_VAR phy)
#define fnNetSimError(x,...)
bool fn_NetSim_GetBufferStatus(NetSim_BUFFER *pstruBuffer)
NetSim_PACKET * fn_NetSim_Packet_GetPacketFromBuffer(NetSim_BUFFER *pstruBuffer, int nFlag)
bool isMulticastPacket(NetSim_PACKET *packet)
bool isBroadcastPacket(NetSim_PACKET *packet)
EXPORTED double ldEventTime
NETWORK_LAYER_PROTOCOL fn_NetSim_Stack_GetNWProtocol(NETSIM_ID nDeviceId)
bool isVirtualInterface(NETSIM_ID d, NETSIM_ID in)
#define DEVICE_TYPE(DeviceId)
MAC_LAYER_PROTOCOL fn_NetSim_Stack_GetMacProtocol(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
#define DEVICE_ACCESSBUFFER(DeviceId, InterfaceId)
#define DEVICE_NWLAYER(DeviceId)
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
#define fn_NetSim_Packet_CopyPacket(pstruPacket)
#define fn_NetSim_Packet_FreePacket(pstruPacket)
#define fnpAddEvent(pstruEvent)
#define fn_NetSim_Packet_AddPacketToList(pstruBuffer, pstruPacket, nInsertionType)
#define fn_NetSim_Packet_CopyPacketList(pstruPacket)
Page-405 of IEEE Std 802.11-2012 Figure 8-14—CTS frame.
IEEE802_11_MAC_STATE prevMacState
NETSIM_ID parentInterfaceId
IEEE802_11_MAC_STATE currMacState
NetSim_PACKET * currentProcessingPacket
IEEE802_11_METRICS metrics
IEEE802_11_BSS_TYPE BSSType
UINT nTransmittedFrameCount
double dControlFrameDataRate
PLME_CHARACTERISTICS plmeCharacteristics
Page-404 of IEEE Std 802.11-2012 Figure 8-13—RTS frame.
struct stru_NetSim_Packet * pPacket
netsimDEVICE_TYPE nDeviceType
MAC_LAYER_PROTOCOL nMACProtocol
void * Packet_MACProtocol
struct stru_NetSim_Packet_AppLayer * pstruAppData
struct stru_NetSim_Packet_PhyLayer * pstruPhyData
struct stru_NetSim_Packet_NetworkLayer * pstruNetworkData
unsigned int nControlDataType
struct stru_NetSim_Packet * pstruNextPacket
struct stru_NetSim_Packet_MACLayer * pstruMacData