NetSim Source Code Help
Loading...
Searching...
No Matches
Mobility.c
Go to the documentation of this file.
1/************************************************************************************
2* Copyright (C) 2020 *
3* TETCOS, Bangalore. India *
4* *
5* Tetcos owns the intellectual property rights in the Product and its content. *
6* The copying, redistribution, reselling or publication of any or all of the *
7* Product or its content without express prior written consent of Tetcos is *
8* prohibited. Ownership and / or any other right relating to the software and all *
9* intellectual property rights therein shall remain at all times with Tetcos. *
10* *
11* Author: Shashi Kant Suman *
12* *
13* ---------------------------------------------------------------------------------*/
14#include "main.h"
15#include "Mobility.h"
16#include "Animation.h"
17
18static unsigned int nCallBackCount=0;
20
25
28{
30 "Node Movement",
31 false,
32 false,
33 true,
34 256,
36}
37
39 double t,
40 double x,
41 double y,
42 double z)
43{
44 MOVENODE mn;
45 mn.d = DEVICE_CONFIGID(d);
46 mn.time = t;
47 mn.x = x;
48 mn.y = y;
49 mn.z = z;
51}
52
53/** Function to configure the mobility model for all the devices */
54_declspec(dllexport) int fn_NetSim_Mobility_Configure(void** var)
55{
56 char* tagname = (char*)var[0];
57 void* xmlNetSimNode=var[2];
58 NETSIM_ID nDeviceId=var[3]?*((NETSIM_ID*)var[3]):0;
59 NETSIM_ID nInterfaceId = var[4]?*((NETSIM_ID*)var[4]):0;
60 LAYER_TYPE nLayerType = var[5]?*((LAYER_TYPE*)var[5]):LAYER_NULL;
61 char* szVal;
62 if(!_stricmp(tagname,"MOBILITY"))
63 {
64 MOBILITY_VAR* pstruMobilityVar=(MOBILITY_VAR*)calloc(1,sizeof* pstruMobilityVar);
65 NETWORK=(struct stru_NetSim_Network*)var[1];
66 NETWORK->ppstruDeviceList[nDeviceId-1]->pstruDeviceMobility->pstruMobVar = pstruMobilityVar;
67 //Configure the Model
68 getXmlVar(&szVal,MODEL,xmlNetSimNode,1,_STRING,Mobility);
69
70 if(!strcmp(szVal,"NO_MOBILITY"))
71 {
73 return 0;
74 }
75 else if(!strcmp(szVal,"RANDOM_WALK"))
76 {
78 }
79 else if(!strcmp(szVal,"RANDOM_WAY_POINT"))
80 {
82 }
83 else if(!strcmp(szVal,"FILE_BASED_MOBILITY"))
84 {
86 }
87 else if(!strcmp(szVal,"GROUP_MOBILITY"))
88 {
90 }
91 else if (!_stricmp(szVal, "SUMO")) {
93 }
94 else if (!_stricmp(szVal, "PEDESTRIAN_MOBILITY")) {
96 }
97 else
98 {
99 NetSimxmlError("Unknown mobility model",szVal,xmlNetSimNode);
101 return -1;
102 }
103 free(szVal);
104
106 {
107 //IF node has FileBasedMobility
108 pstruMobilityVar->dLastTime = 0;
109 return 1;
110 }
111 //Get the velocity
112 szVal = fn_NetSim_xmlConfig_GetVal(xmlNetSimNode,"VELOCITY",
115 if(szVal)
116 {
117 pstruMobilityVar->dVelocity = atof(szVal);
118 NETWORK->ppstruDeviceList[nDeviceId-1]->pstruDeviceMobility->dAvgSpeed = atof(szVal);
119 free(szVal);
120 }
121
122 getXmlVar(&pstruMobilityVar->dCalculationInterval, CALCULATION_INTERVAL, xmlNetSimNode, 0, _DOUBLE, Mobility);
123 pstruMobilityVar->dCalculationInterval *= SECOND;
124 if (pstruMobilityVar->dCalculationInterval == 0.0)
125 {
126 fnNetSimError("Calculation_interval can't be 0. Leads infinite loop. Assigning 1 us");
127 pstruMobilityVar->dCalculationInterval = 1;
128 }
129
131 {
133 {
134 //Get the pause time
135 szVal = fn_NetSim_xmlConfig_GetVal(xmlNetSimNode,"PAUSE_TIME",1);
136 if(szVal)
137 {
138 pstruMobilityVar->dPauseTime = atof(szVal);
139 pstruMobilityVar->dLastTime = -1000000*atof(szVal);
140 free(szVal);
141 }
142 }
143 break;
145 {
146 getXmlVar(&pstruMobilityVar->nGroupId,GROUP_ID,xmlNetSimNode,1,_INT,Mobility);
147 add_to_group(pstruMobilityVar->nGroupId,nDeviceId);
148 }
149 break;
151 {
152 extern char* sumoname;
153 extern double step_size;
154 getXmlVar(&pstruMobilityVar->sumoFileName,FILE_NAME,xmlNetSimNode,1,_STRING,Mobility);
155 sumoname = pstruMobilityVar->sumoFileName;
156 getXmlVar(&pstruMobilityVar->step_size,STEP_SIZE,xmlNetSimNode,1,_DOUBLE,Mobility);
157 step_size = pstruMobilityVar->step_size;
158 }
159 break;
161 {
162 getXmlVar(&pstruMobilityVar->Max_Speed, MAX_SPEED_M_S, xmlNetSimNode, 1, _DOUBLE, Mobility);
163 getXmlVar(&pstruMobilityVar->Min_Speed, MIN_SPEED_M_S, xmlNetSimNode, 1, _DOUBLE, Mobility);
164 getXmlVar(&pstruMobilityVar->Stop_Probability, STOP_PROBABILITY, xmlNetSimNode, 1, _DOUBLE, Mobility);
165 getXmlVar(&pstruMobilityVar->Stop_Duration, STOP_DURATION_S, xmlNetSimNode, 1, _DOUBLE, Mobility);
166 pstruMobilityVar->Stop_Duration *= SECOND;
167 pstruMobilityVar->Pedestrain_Speed = NETSIM_RAND_RN(pstruMobilityVar->Max_Speed, pstruMobilityVar->Min_Speed);
168 pstruMobilityVar->angel = 0;
169 }
170 break;
171 }
172
173 //Save the seed value
174 pstruMobilityVar->ulSeed1 = DEVICE(nDeviceId)->ulSeed[0];
175 pstruMobilityVar->ulSeed2 = DEVICE(nDeviceId)->ulSeed[1];
176 }
177 else if(!_stricmp(tagname,"NODE_JOIN_PROFILE"))
178 {
179 fn_NetSim_Mobility_configure_NodeJoinProfile(xmlNetSimNode, nDeviceId);
180 }
181 else if (!_stricmp(tagname, "PROTOCOL"))
182 {
184 }
185 return 1;
186}
187/** Function to initialize the parameters of positions for all nodes*/
188_declspec(dllexport) int fn_NetSim_Mobility_Init(struct stru_NetSim_Network *NETWORK_Formal,
190 char *pszAppPath_Formal,
192 int nVersion_Type,
193 void **fnPointer)
194{
195 NETSIM_ID nLoop;
196 NETWORK = NETWORK_Formal; //Get the Network structure from NetworkStack
197 pstruEventDetails=pstruEventDetails_Formal; //Get the Eventdetails from NetworkStack
198 pszAppPath=pszAppPath_Formal; //Get the application path from NetworkStack
199 pszIOPath=pszWritePath_Formal; //Get the write path from NetworkStack
200 nVersion_Type = nVersion_Type; //Get the version type from NetworkStack
201
202 srand(1); //Initialize seed as 1 for same result for every run
203
205
206 if(nVersion_Type/10 != VERSION)
207 {
208 printf("Mobility---Version number mismatch\nDll Version=%d\nNetSim Version=%d\nFileName=%s\nLine=%d\n",VERSION,nVersion_Type/10,__FILE__,__LINE__);
209 exit(0);
210 }
211
212 {
213 char* temp=NULL;
214 temp = getenv("NETSIM_SIM_AREA_X");
215 if(temp)
216 {
217 if(atoi(temp))
218 dSimulationArea_X = atoi(temp);
219 else
220 dSimulationArea_X = 0xFFFFFFFF;
221 }
222 else
223 dSimulationArea_X = 0xFFFFFFFF;
224 temp=NULL;
225 temp = getenv("NETSIM_SIM_AREA_Y");
226 if(temp)
227 {
228 if(atoi(temp))
229 dSimulationArea_Y = atoi(temp);
230 else
231 dSimulationArea_Y = 0xFFFFFFFF;
232 }
233 else
234 dSimulationArea_Y = 0xFFFFFFFF;
235 }
236 for(nLoop=0;nLoop<NETWORK->nDeviceCount;nLoop++)
237 {
240 {
242 var->ulSeed1 = NETWORK->ppstruDeviceList[nLoop]->ulSeed[0];
243 var->ulSeed2 = NETWORK->ppstruDeviceList[nLoop]->ulSeed[1];
245 {
247 //No action
248 break;
250 {
251 //IF node has FileBasedMobility
255 }
256 break;
260 {
268 pstruEventDetails->nDeviceId = nLoop+1;
277 }
278 break;
280 {
285 }
286 break;
288 {
289 init_sumo();
294
298 pstruEventDetails->nDeviceId = nLoop+1;
307 }
308 break;
309 default:
310 {
311 fnNetSimError("Unknown mobility model %d in fn_NetSim_Mobility_Init\n",NETWORK->ppstruDeviceList[nLoop]->pstruDeviceMobility->nMobilityType);
312 }
313 break;
314 } //End switch(mobility_type)
315 }// End if(device_mobility)
316 }// End for(loop_all_device)
317
319 return 1;
320}
321/** This function is to free the memory space allocated for the variables that are used in mobily */
323{
324
325 NETSIM_ID loop;
326
327 for(loop=0;loop<NETWORK->nDeviceCount;loop++)
328 {
330 {
332 {
335 }
340 }
341 }
344 return 1;
345}
346
348{
349 if (coor->corrType == CORRTYPE_MAP)
350 {
352 add_mobility_animation(devId, time,
353 coor->lat, coor->lon, 0);
354 }
355 else if (coor->corrType == CORRTYPE_GEO)
356 {
357 fnNetSimError("change to appropriate function..\n");
358 assert(false);
360 add_mobility_animation(devId, time,
361 coor->lat, coor->lon, coor->altitude);
362 }
363 else
364 {
365 add_mobility_animation(devId, time,
366 coor->X, coor->Y, coor->Z);
367 }
368}
369
370/** This function is used to change the positions of the devices over simulation. At the end of this function cummulativereceivedpower[][] will be updated. */
372{
374 {
375 case MOVE_GROUP:
377 break;
378 case NODE_JOIN:
380 break;
381 case NODE_LEAVE:
383 break;
384 default:
385 {
386 unsigned int nLoop;
391 double dPresentTime = pstruMobilityVar->dLastTime;
394 {
395 //IF node has FileBasedMobility
397
398 }
401 {
402 sumo_run();
403 }
410 bool isStop = false;
411 memcpy(cor, ncor, sizeof * cor);
412
413 double probability = NETSIM_RAND_01();
414 if (probability < pstruMobilityVar->Stop_Probability) {
415 pstruMobilityVar->Pedestrain_Speed = NETSIM_RAND_RN(pstruMobilityVar->Max_Speed, pstruMobilityVar->Min_Speed);
416 pstruMobilityVar->angel = NETSIM_RAND_RN(360, 0);
417 isStop = true;
418 }
419 X = pstruMobilityVar->Pedestrain_Speed * cos(pstruMobilityVar->angel) * (pstruMobilityVar->dCalculationInterval / SECOND) + cor->X;
420 Y = pstruMobilityVar->Pedestrain_Speed * sin(pstruMobilityVar->angel) * (pstruMobilityVar->dCalculationInterval / SECOND) + cor->Y;
421 while (cor->corrType == CORRTYPE_CARTESIAN &&
422 (X > dSimulationArea_X || X < 0 || Y < 0 || Y > dSimulationArea_Y)) {
423 pstruMobilityVar->Pedestrain_Speed = NETSIM_RAND_RN(pstruMobilityVar->Max_Speed, pstruMobilityVar->Min_Speed);
424 pstruMobilityVar->angel = NETSIM_RAND_RN(360, 0);
425 X = pstruMobilityVar->Pedestrain_Speed * cos(pstruMobilityVar->angel) * (pstruMobilityVar->dCalculationInterval / SECOND) + cor->X;
426 Y = pstruMobilityVar->Pedestrain_Speed * sin(pstruMobilityVar->angel) * (pstruMobilityVar->dCalculationInterval / SECOND) + cor->Y;
427 }
428 if (!isStop) {
429 ncor->X = X;
430 ncor->Y = Y;
431 }
432 else {
433 ncor->X = cor->X;
434 ncor->Y = cor->Y;
435 }
436 //store the last time
437 if (isStop)
438 pstruMobilityVar->dLastTime = pstruEventDetails->dEventTime + pstruMobilityVar->dCalculationInterval + pstruMobilityVar->Stop_Duration;
439 else
440 pstruMobilityVar->dLastTime = pstruEventDetails->dEventTime + pstruMobilityVar->dCalculationInterval;
441
442 //update the device position
443 memcpy(pos, cor, sizeof * pos);
444
447 pos);
448
449 //Add event for next point
450 if (isStop) {
454 }
455 else {
459 }
460 }
461 else
462 {
467
468 memcpy(cor, ncor, sizeof* cor);
469 if(pstruMobilityVar->dLastTime+pstruMobilityVar->dPauseTime*SECOND<pstruEventDetails->dEventTime+pstruMobilityVar->dCalculationInterval)
470 {
471 fn_NMo_RandomPoint(&X, &Y, vel, pstruMobilityVar->dCalculationInterval, &pstruMobilityVar->ulSeed1, &pstruMobilityVar->ulSeed2);
472 while (cor->corrType == CORRTYPE_CARTESIAN &&
473 (X > dSimulationArea_X || X < 0 || Y < 0 || Y > dSimulationArea_Y))
474 {
475 X = cor->X;
476 Y = cor->Y;
477 fn_NMo_RandomPoint(&X, &Y, vel, pstruMobilityVar->dCalculationInterval, &pstruMobilityVar->ulSeed1, &pstruMobilityVar->ulSeed2);
478 }
479 ncor->X = X;
480 ncor->Y = Y;
481 //store the last time
482 pstruMobilityVar->dLastTime = pstruEventDetails->dEventTime+pstruMobilityVar->dCalculationInterval;
483 }
484 //update the device position
485 memcpy(pos,cor,sizeof* pos);
486
489 pos);
490
491 //Add event for next point
495 }
496
497 //call all the callback function
498 for(nLoop=0;nLoop<nCallBackCount;nLoop++)
499 {
501 }
502 }
503 break;
504 }
505 return 1;
506};
507
509{
510 switch(id)
511 {
512 case MOVE_GROUP:
513 return "MOVE_GROUP";
514 break;
515 case NODE_JOIN:
516 return "NODE_JOIN";
517 case NODE_LEAVE:
518 return "NODE_LEAVE";
519 }
520 return "";
521};
523{
524 return 1;
525};
527{
528 return 1;
529};
531{
532 return 1;
533};
535{
536 return 1;
537};
539{
540 return "";
541};
543{
544 return "";
545};
546/** This function is used to generate the random point */
547int fn_NMo_RandomPoint(double* X, double* Y,double velocity,double interval,unsigned long *pulSeed1, unsigned long *pulSeed2)
548{
549 int min;
550 int max;
551 int ldRandNo;
552
553 ldRandNo = (unsigned int)fn_NetSim_Utilities_GenerateRandomNo(pulSeed1, pulSeed2);
554
555 min = (int)(*X - ldRandNo % ((int)(velocity * interval / SECOND) + 1));
556
557 ldRandNo = (unsigned int)fn_NetSim_Utilities_GenerateRandomNo(pulSeed1, pulSeed2);
558
559 max = (int)(*X + ldRandNo % ((int)(velocity * interval / SECOND) + 1));
560
561 if (min > max)
562 {
563 *X = max + (int)((min - max + 1) * NETSIM_RAND_01());
564 }
565 else
566 {
567 *X = min + (int)((min - max + 1) * NETSIM_RAND_01());
568 }
569
570 ldRandNo = (unsigned int)fn_NetSim_Utilities_GenerateRandomNo(pulSeed1, pulSeed2);
571
572 min = (int)(*Y - ldRandNo % ((int)(velocity * interval / SECOND) + 1));
573
574 ldRandNo = (unsigned int)fn_NetSim_Utilities_GenerateRandomNo(pulSeed1, pulSeed2);
575
576 max = (int)(*Y + ldRandNo % ((int)(velocity * interval / SECOND) + 1));
577
578 if (min > max)
579 {
580 *Y = max + (int)((min - max + 1) * NETSIM_RAND_01());
581
582 }
583 else
584 {
585 *Y = min + (int)((min - max + 1) * NETSIM_RAND_01());
586 }
587 return 1;
588}
589
591{
592 if(!nCallBackCount)
593 {
595 }
596 else
597 {
599 }
602 return 0;
603}
void animation_add_new_entry(ANIM_HANDLE animHandle, ANIM_TYPE type, void *format,...)
@ ANIM_MOVENODE
Definition: Animation.h:75
@ ANIMFILETYPE_GENERIC
Definition: Animation.h:63
void * ANIM_HANDLE
Definition: Animation.h:52
unsigned int NETSIM_ID
Definition: Animation.h:45
ANIM_HANDLE anim_add_new_menu(ANIM_HANDLE handle, char *name, bool isThreadReq, bool isNewScreen, bool isFile, UINT maxDataLen, ANIMFILETYPE fileType)
void fn_NetSim_MObility_configureOffice(void *xmlNetSimNode)
Definition: Building.c:59
int FileBasedMobilityPointersFree()
void process_filebased_mobility_event()
int FileBasedMobilityReadingFile()
int fn_NetSim_Mobility_Group_init()
Definition: GroupMobility.c:64
int fn_NetSim_MoveGroup()
int add_to_group(NETSIM_ID group_id, NETSIM_ID dev_id)
Definition: GroupMobility.c:53
#define _stricmp
Definition: Linux.h:127
#define _declspec(dllexport)
This function is used to trigger the update.
Definition: Linux.h:41
#define fnNetSimError(x,...)
Definition: Linux.h:56
#define min(a, b)
Definition: Linux.h:106
#define max(a, b)
Definition: Linux.h:107
#define realloc(p, s)
Definition: Memory.h:32
#define free(p)
Definition: Memory.h:31
#define calloc(c, s)
Definition: Memory.h:29
int fn_NetSim_Mobility_Run()
Definition: Mobility.c:371
int fnMobilityRegisterCallBackFunction(_fnMobilityCallBack fnCallBack)
Definition: Mobility.c:590
_fnMobilityCallBack * fnMobilityCallBack
Definition: Mobility.c:19
char * fn_NetSim_Mobility_Trace(NETSIM_ID id)
Definition: Mobility.c:508
int fn_NetSim_Mobility_NodeLeaved()
Definition: NodeJoin.c:105
void mobility_pass_position_to_animation(NETSIM_ID devId, double time, NetSim_COORDINATES *coor)
Definition: Mobility.c:347
int fn_NetSim_Mobility_NodeJoined()
Definition: NodeJoin.c:85
ANIM_HANDLE animHandle
Definition: Mobility.c:26
int fn_NetSim_Mobility_ConfigurePrimitives()
Definition: Mobility.c:534
char * fn_NetSim_Mobility_ConfigPacketTrace()
Definition: Mobility.c:538
int fn_NetSim_Mobility_Configure(void **var)
Definition: Mobility.c:54
int fn_NetSim_Mobility_configure_NodeJoinProfile(void *xmlNode, NETSIM_ID nDeviceId)
Definition: NodeJoin.c:23
int fn_NetSim_Mobility_FreePacket()
Definition: Mobility.c:522
int fn_NetSim_Mobility_Finish()
Definition: Mobility.c:322
static void init_mobility_animation()
Definition: Mobility.c:27
int fn_NetSim_Mobility_CopyPacket()
Definition: Mobility.c:526
int fn_NetSim_Mobility_Metrics()
Definition: Mobility.c:530
int fn_NMo_RandomPoint(double *X, double *Y, double velocity, double interval, unsigned long *pulSeed1, unsigned long *pulSeed2)
Definition: Mobility.c:547
int fn_NetSim_Mobility_NodeJoinInit(NETSIM_ID nDevIndex)
Definition: NodeJoin.c:63
void add_mobility_animation(NETSIM_ID d, double t, double x, double y, double z)
Definition: Mobility.c:38
char * fn_NetSim_Mobility_WritePacketTrace()
Definition: Mobility.c:542
int fn_NetSim_Mobility_Init(struct stru_NetSim_Network *NETWORK_Formal, NetSim_EVENTDETAILS *pstruEventDetails_Formal, char *pszAppPath_Formal, char *pszWritePath_Formal, int nVersion_Type, void **fnPointer)
Definition: Mobility.c:188
static unsigned int nCallBackCount
Definition: Mobility.c:18
double dSimulationArea_Y
Definition: Mobility.h:56
void init_sumo()
@ MobilityModel_SUMO
Definition: Mobility.h:51
@ MobilityModel_FILEBASEDMOBILITY
Definition: Mobility.h:49
@ MobilityModel_GROUP
Definition: Mobility.h:50
@ MobilityModel_NOMOBILITY
Definition: Mobility.h:46
@ MobilityModel_RANDOMWALK
Definition: Mobility.h:48
@ MobilityModel_PEDESTRAIN
Definition: Mobility.h:52
@ MobilityModel_RANDOMWAYPOINT
Definition: Mobility.h:47
void sumo_run()
double dSimulationArea_X
Definition: Mobility.h:55
@ NODE_JOIN
Definition: Mobility.h:40
@ NODE_LEAVE
Definition: Mobility.h:41
@ MOVE_GROUP
Definition: Mobility.h:39
NetSim_EVENTDETAILS * pstruEventDetails_Formal
Definition: RIP.h:178
NetSim_EVENTDETAILS char * pszAppPath_Formal
Definition: RIP.h:178
NetSim_EVENTDETAILS char char int nVersion_Type
Definition: RIP.h:178
NetSim_EVENTDETAILS char char * pszWritePath_Formal
Definition: RIP.h:178
NetSim_EVENTDETAILS char char int void ** fnPointer
Definition: RIP.h:178
#define DEVICE(DeviceId)
Definition: Stack.h:769
void fn_NetSim_Coordinate_ConvertCartesianToMap(NetSim_COORDINATES *pos)
EXPORTED char * pszIOPath
Definition: Stack.h:842
char * fn_NetSim_xmlConfig_GetVal(void *xmlNetSimNode, const char *szName, int flag)
#define getXmlVar(var, name, xmlNode, flag, type, protocol)
Definition: Stack.h:1046
@ _INT
Definition: Stack.h:1030
@ _STRING
Definition: Stack.h:1033
@ _DOUBLE
Definition: Stack.h:1031
#define NETSIM_RAND_RN(max, min)
Definition: Stack.h:861
double fn_NetSim_Utilities_GenerateRandomNo(unsigned long *uSeed, unsigned long *uSeed1)
#define DEVICE_CONFIGID(DeviceId)
Definition: Stack.h:779
EXPORTED struct stru_NetSim_Network * NETWORK
Definition: Stack.h:742
#define SECOND
Definition: Stack.h:60
@ TIMER_EVENT
Definition: Stack.h:114
EXPORTED char * pszAppPath
Definition: Stack.h:840
int(* _fnMobilityCallBack)(NETSIM_ID nDeviceId)
Definition: Stack.h:1020
@ LAYER_NULL
Definition: Stack.h:93
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
Definition: Stack.h:837
#define NETSIM_RAND_01()
Definition: Stack.h:860
int NetSimxmlError(const char *msg, char *val, const void *xmlNetSimNode)
#define PROTOCOL_MOBILITY
Definition: Stack.h:142
@ CORRTYPE_MAP
Definition: Stack.h:414
@ CORRTYPE_CARTESIAN
Definition: Stack.h:413
@ CORRTYPE_GEO
Definition: Stack.h:415
#define DEVICE_POSITION(DeviceId)
Definition: Stack.h:790
char * sumoname
double step_size
enum enum_LayerType LAYER_TYPE
Definition: main.h:136
#define VERSION
Definition: main.h:84
#define fnpAddEvent(pstruEvent)
Definition: main.h:191
NETSIM_COORDINATETYPE corrType
Definition: Stack.h:420
netsimDEVICE_TYPE nDeviceType
Definition: Stack.h:711
unsigned long ulSeed[SEED_COUNT]
Definition: Stack.h:715
struct stru_NetSim_Coordinates * pstruDevicePosition
Definition: Stack.h:722
struct stru_NetSim_Mobility * pstruDeviceMobility
Definition: Stack.h:723
NETSIM_ID nApplicationId
Definition: Stack.h:752
EVENT_TYPE nEventType
Definition: Stack.h:747
NETSIM_ID nProtocolId
Definition: Stack.h:748
struct stru_NetSim_Packet * pPacket
Definition: Stack.h:754
NETSIM_ID nSubEventType
Definition: Stack.h:757
NETSIM_ID nDeviceId
Definition: Stack.h:750
long long int nPacketId
Definition: Stack.h:755
netsimDEVICE_TYPE nDeviceType
Definition: Stack.h:749
NETSIM_ID nInterfaceId
Definition: Stack.h:751
struct stru_NetSim_Coordinates * pstruNextPosition
Definition: Mobility.h:68
struct stru_NetSim_Coordinates * pstruCurrentPosition
Definition: Mobility.h:67
MOBILITY_MODEL nMobilityType
Definition: Mobility.h:62
double dPauseTime
To store the pause time.
Definition: Mobility.h:73
double dCalculationInterval
Definition: Mobility.h:79
double dLastTime
Represent the devices last move time.
Definition: Mobility.h:77
unsigned long ulSeed1
Used to generate random point.
Definition: Mobility.h:75
NETSIM_ID nGroupId
To store group id of device.
Definition: Mobility.h:78
unsigned long ulSeed2
Used to generate random point
Definition: Mobility.h:76
double dVelocity
To store the velocity.
Definition: Mobility.h:74
struct stru_NetSim_Device ** ppstruDeviceList
Definition: Stack.h:737
NETSIM_ID d
Definition: Animation.h:108