21#ifndef _NETSIM_802_15_4_H_
22#define _NETSIM_802_15_4_H_
29#pragma comment(lib,"PropagationModel.lib")
30#pragma comment(lib,"BatteryModel.lib")
33#define BATTERY_RECHARGING_CURRENT_MA_DEFAULT 0
34#define BATTERY_VOLTAGE_V_DEFAULT 0
35#define BATTERY_INITIAL_ENERGY_DEFAULT 0
36#define BATTERY_TRANSMITTING_CURRENT_MA_DEFAULT 0
37#define BATTERY_RECEIVING_CURRENT_MA_DEFAULT 0
38#define BATTERY_IDLEMODE_CURRENT_MA_DEFAULT 0
39#define BATTERY_SLEEPMODE_CURRENT_MA_DEFAULT 0
41#define dUnitSymbolTime ((4*1000000.0)/250000)
42#define WSN_PHY(devId) ((IEEE802_15_4_PHY_VAR*)DEVICE_PHYVAR(devId,1))
43#define WSN_MAC(devId) ((IEEE802_15_4_MAC_VAR*)DEVICE_MACVAR(devId,1))
44#define WSN_LINK_ID(nDevice_Id,nInterfaceId,nConnectedDevId,nConnectedDevPortId) fn_NetSim_Stack_GetConnectedDevice(nDevice_Id,nInterfaceId,nConnectedDevId,nConnectedDevPortId);
45#define WSN_MAC_HEADER(pPacket) ((IEEE802_15_4_HEADER*)PACKET_MACPROTOCOLDATA(pPacket))
51#define DESTINATIONPORT 50
61 PPROPAGATION_INFO Propagation_Info;
63 }propagation_info_for_list, * ptrpropagation_info_for_list;
65#define PPROPAGATION_INFO_ALLOC() (struct stru_propagation_info_for_list*)list_alloc(sizeof(struct stru_propagation_info_for_list),offsetof(struct stru_propagation_info_for_list,ele))
66#define PPROPAGATION_INFO_ADD(info,e) (LIST_ADD_LAST(&(info),(e)))
67#define PPROPAGATION_INFO_NEXT(entity) (LIST_NEXT(entity))
68#define PPROPAGATION_INFO_REMOVE(ls, mem) (LIST_FREE((void**)(ls),(mem)))
70 PPROPAGATION_INFO find_propagation_info(NETSIM_ID t, NETSIM_ID ti, NETSIM_ID r, NETSIM_ID ri);
71 void fn_NetSim_ieee802_15_4_PropagationInit();
72 int fn_NetSim_IEEE802_15_4_FreePropagationInfo();
79 typedef struct stru_Position_2D POS_2D;
85 typedef enum enum_CCAMODE CCAMODE;
86 typedef enum enum_IEEE_802_15_4_ControlPacket_Type IEEE802_15_4_PACKET_TYPE;
87 typedef enum enum_BeaconMode BEACON_MODE;
88 typedef enum enum_IEEE802_15_4_Subevent_Type SUB_EVENT;
89 typedef enum enum_MacState MAC_STATE;
91 enum enum_IEEE_802_15_4_ControlPacket_Type
93 BEACON_FRAME = MAC_PROTOCOL_IEEE802_15_4*100+1,
98 enum enum_SuperFrame_Status
100 BEACONTRANSMISSIONMODE,
107 enum enum_IEEE802_15_4_Subevent_Type
109 SUPERFRAME_EVENT = MAC_PROTOCOL_IEEE802_15_4*100+1,
115 BEACON_TRANSMISSION_END,
121 CHANGE_RXANDSENDDATA,
128 ENERGYABOVETHERESHOLD,
129 CARRIERSENSE_AND_ENERGYABOVETHERESHOLD,
130 CARRIERSENSE_OR_ENERGYABOVETHERESHOLD,
150 enum enum_IEEE802_15_4_isConfigured
156 NETSIM_ID nGlobalPANCoordinatorId;
162 struct stru_BeaconFrame* pstruBeaconFrame;
181 int nSuperFrameStatus;
182 double dSuperFrameStartTime;
183 double dSuperFrameLength;
184 double dActivePeriodLength;
185 double dInactivePeriodLength;
186 double dTimeSlotLength;
189 double dBeaconLength;
190 BEACONFRAME* pstruBeacon;
191 struct stru_SuperFrame* pstruNextSuperFrame;
193 SUPERFRAME* pstruSuperFrame;
198 ptrSOCKETINTERFACE sock;
199 MAC_STATE nNodeStatus;
201 BEACON_MODE nBeaconMode;
224 NetSim_PACKET *pstruBuffer;
229 int nBeaconReceivedFlag;
237 double dAntennaHeight;
239 unsigned long int ulSeed1, ulSeed2;
244 double dTransmitterPower_mw;
245 double dTransmitterRange_m;
252 double dSymobleRate_kSymbolsPS;
253 char* pszModulationTechnique;
254 double dMinLIFSPeriod_Symbols;
255 double dMinSIFSPeriod_Symbols;
267 PHY_TX_STATUS nRadioState;
268 double dTotalReceivedPower;
269 double macAckWaitDuration;
271 PHY_TX_STATUS nOldState;
279 ptrpropagation_info_for_list propagation_info_list;
298 CHANNELS* pstruChannelList;
303 int nPacketTransmitted;
308 int nSuccessfulCCAAttempt;
310 double dTotalbackofftime;
311 double dAveragebackofftime;
312 int nNumberofBackoffCall;
313 int nBeaconTransmitted;
315 int nBeaconForwarded;
324 IEEE802_15_4_METRCIS *pstruIEEE802_15_4_Metrics;
326 METRICS** pstruMetrics;
329#define GET_RX_POWER_dbm(tx, rx, time) (_propagation_get_received_power_dbm(find_propagation_info(tx, 1, rx, 1), time))
330#define GET_RX_POWER_mw(tx,rx,time) (DBM_TO_MW(GET_RX_POWER_dbm(tx,rx,time)))
333#define ZIGBEE_UNSLOTTED() fn_NetSim_Zigbee_UnslottedCSMACA()
334#define ZIGBEE_SLOTTED() fn_NetSim_Zigbee_SlottedCSMACA()
335#define ZIGBEE_CHANGERADIOSTATE(nDeviceId,nOldState,nNewState) fn_NetSim_Zigbee_ChangeRadioState(nDeviceId,nOldState,nNewState)
336#define ZIGBEE_RECEIVEDPOWER(pstruPhyVar,dDistance,dReceivedPower,nLinkID) fn_NetSim_Zigbee_CalculateReceivedPower(pstruPhyVar,dDistance,dReceivedPower,nLinkID)
337#define ZIGBEE_LOCATEBACKOFFBOUNDARY(dTime,dBoundaryTime,aUnitBackoffPeriod,pstruSuperFrame) fn_NetSim_Zigbee_LocateBackoffBoundary(dTime,dBoundaryTime,aUnitBackoffPeriod,pstruSuperFrame)
338#define ZIGBEE_SUPERFRAME() fn_NetSim_Zigbee_SuperFrameInitialization(&pstruSuperFrame,nGlobalPANCoordinatorId,pstruMetrics)
339#define ZIGBEE_BACKOFF(nBackoffExponent,dBackoffTime,nUnitBacoffPeriod) fn_NetSim_Zigbee_BackoffTimeCalculation(nBackoffExponent,dBackoffTime,nUnitBacoffPeriod,pstruMetrics)
340#define ZIGBEE_CHANNELFORMATION() fn_NetSim_Zigbee_ChannelFormation(&pstruChannelList)
341#define ZIGBEE_CCA(dInterferencePower,nCCA_Mode,dReceiverSensivity,dEDThreshold) fn_NetSim_Zigbee_CCA(dInterferencePower,nCCA_Mode,dReceiverSensivity,dEDThreshold,pstruMetrics)
342#define ZIGBEE_SINR(SNR,dTotalReceivedPower,dReceivedPower) fn_NetSim_Zigbee_CalculateSINR(SNR,dTotalReceivedPower,dReceivedPower)
345 int fn_NetSim_Configure_WSN_POWER(
void*,
int);
349 int fn_NetSim_Zigbee_Configure_F(
void** var);
350 int fn_NetSim_Zigbee_Init_F();
352 _declspec (dllexport)
int fn_NetSim_Zigbee_Run();
355 _declspec(dllexport)
int fn_NetSim_Zigbee_Finish();
356 int fn_NetSim_Zigbee_Finish_F();
358 _declspec (dllexport)
char *fn_NetSim_Zigbee_Trace(
int nSubEvent);
359 char *fn_NetSim_Zigbee_Trace_F(
int nSubEvent);
361 _declspec(dllexport)
int fn_NetSim_Zigbee_FreePacket(NetSim_PACKET* );
362 int fn_NetSim_zigbee_FreePacket_F(NetSim_PACKET* );
364 _declspec(dllexport)
int fn_NetSim_Zigbee_CopyPacket(NetSim_PACKET* ,NetSim_PACKET* );
365 int fn_NetSim_Zigbee_CopyPacket_F(NetSim_PACKET* ,NetSim_PACKET* );
367 _declspec(dllexport)
int fn_NetSim_Zigbee_Metrics(PMETRICSWRITER metricsWriter);
368 int fn_NetSim_Zigbee_Metrics_F(PMETRICSWRITER metricsWriter);
372 unsigned long ulBackoffSeed1;
373 unsigned long ulBackoffSeed2;
375 int fn_NetSim_Zigbee_UnslottedCSMACA();
376 int fn_NetSim_Zigbee_SlottedCSMACA();
377 bool fn_NetSim_Zigbee_ChangeRadioState(NETSIM_ID nDeviceId, PHY_TX_STATUS nOldState, PHY_TX_STATUS nNewState);
378 double fn_NetSim_Zigbee_CalculateBER(
double sinr);
379 int fn_NetSim_Zigbee_LocateBackoffBoundary(
double dTime,
double* dBoundaryTime,
int aUnitBackoffPeriod, SUPERFRAME* pstruSuperFrame);
380 int fn_NetSim_Zigbee_SuperFrameInitialization(SUPERFRAME** ppstruSuperFrame,NETSIM_ID nGlobalPANCoordinatorId,METRICS** pstruMetrics);
381 int fn_NetSim_Zigbee_BackoffTimeCalculation(
int nBackoffExponent,
double* dBackoffTime,
int nUnitBacoffPeriod,METRICS** pstruMetrics);
382 int fn_NetSim_Zigbee_CCA(
double dInterferencePower, CCAMODE nCCA_Mode,
double dReceiverSensivity,
double dEDThreshold,METRICS** pstruMetrics);
383 int fn_NetSim_Zigbee_CalculateSINR(
double *SNR,
double dTotalReceivedPower,
double dReceivedPower);
384 int fn_NetSim_Zigbee_ChannelFormation(CHANNELS** pstruChannelList);
387 void RadioMeasurements_802_15_4_Finish();
388 void RadioMeasurements_802_15_4_Init();
389 void RadioMeasurements_802_15_4_Log(NetSim_PACKET* packet, NETSIM_ID txid, NETSIM_ID txif, NETSIM_ID rxid, NETSIM_ID rxif);
391 bool get_protocol_log_status(
char* logname);
Stores the information of MAC layer.
int nBackoffExponent
specific to simulation
int nContentionWindow
To perform CCA in Slotted CSMACA.
int aUnitBackoffPeriod
20 Symbols fixed
int nMacSuperframeOrder
Range = 0 - 15 ; Default = 15.
int nBatteryLifeExtension
Enable or Disable.
int nMacMaxBE
Range = 3 - 8 ; Default = 5.
int nMacMaxFrameRetries
Range = 0 - 7 ; Default = 3.
int nMacMaxCSMABackoff
Range = 0 - 5 ; Default = 4.
double dBaseSuperFrameDuration
15.36 ms for 2.4 GHz
int nMacBeaconOrder
Range = 0 - 15 ; Default = 15.
int nMacMinBE
Range = 0 - nMacMaxBE ; Default = 3.
Structure for IEEE 802.15.4 Metrics.
Stores information of physical layer.
int aUnitBackoffPeriod
20 symbols fixed
int phySHRDDuration
3, 7, 10, 40
double dFrequencyBand_MHz
Working Frequency Range. In MHz.
double dChipRate_mcps
Chip Rate in mcps.
double dEDThreshold
-85 -10 = -95 dbm default
double dDataRate_kbps
Data rate in kbps.
int aTurnaroundTime
12 symbols fixed
double dReceiverSensivity
-85 dbm default
CCAMODE enumCCAMode
CCA Mode.
double phySymbolsPerOctet
0.4, 1.6, 2, 8
Data structure for IEEE 802.15.4 metrics which consists of sensor metrics and power model metrics als...
int nAllocatedDeviceType
Type of the device to which it is allocated.
int nAssociatedDeviceCount
Count of the devices those have been assigned to the channel.
double dFrequency
Stores the frequency.
int nChannelNumber
Stores the channel number.
int nAllocatedDeviceId
Device id to which it is allocated.
int nChannelStatus
Stores channel(IDLE,BUSY etc) status.