NetSim Source Code Help
Loading...
Searching...
No Matches
WSMP.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 "
IEEE1609.h
"
16
#include "
WSMP.h
"
17
#pragma comment(lib,"ws2_32.lib"
)
18
19
void
set_hdr
(
PWSMP_HDR
p,
UINT8
len)
20
{
21
p->
wsm_version
= 0x02;
22
p->
psid
= 0x0a;
23
p->
ch_no
[0] = 0x0F;
24
p->
ch_no
[1] = 0x01;
25
p->
ch_no
[2] = 0xAC;
26
p->
data_rate
[0] = 0x10;
27
p->
data_rate
[1] = 0x01;
28
p->
data_rate
[2] = 0x0C;
29
p->
tx_power_level
[0] = 0x04;
30
p->
tx_power_level
[1] = 0x01;
31
p->
tx_power_level
[2] = 0x0F;
32
p->
ele_id
= htons(0x8000);
33
p->
wsm_len
= len;
34
}
35
36
void
fn_NetSim_WSNP_SendWSMPacket
()
37
{
38
NetSim_PACKET
*wsmPacket;
39
NETSIM_ID
nAppId;
40
ptrSOCKETINTERFACE
nSocketId;
41
PWSMP_HDR
hdr;
42
43
nSocketId =
pstruEventDetails
->
szOtherDetails
;
44
45
46
nAppId =
pstruEventDetails
->
nApplicationId
;
47
48
wsmPacket =
fn_NetSim_Socket_GetPacketFromInterface
(nSocketId, 0);
49
if
(!wsmPacket)
50
return
;
//No packet in buffer
51
52
while
(
fn_NetSim_Socket_GetBufferStatus
(nSocketId))
53
{
54
wsmPacket =
fn_NetSim_Socket_GetPacketFromInterface
(nSocketId, 1);
55
56
hdr = (
PWSMP_HDR
)
calloc
(1,
sizeof
*hdr);
57
set_hdr
(hdr, (
UINT8
)wsmPacket->
pstruTransportData
->
dPayload
);
58
SET_WSMP_HDR
(wsmPacket, hdr);
59
60
/* Add payload and overheads */
61
wsmPacket->
pstruTransportData
->
dPayload
= wsmPacket->
pstruAppData
->
dPacketSize
;
62
wsmPacket->
pstruTransportData
->
dOverhead
=
WSMP_HDR_LEN
;
63
64
/* Assign the packet size */
65
wsmPacket->
pstruTransportData
->
dPacketSize
=
66
wsmPacket->
pstruTransportData
->
dPayload
+ wsmPacket->
pstruTransportData
->
dOverhead
;
67
68
/* Update TransportLayer time */
69
wsmPacket->
pstruTransportData
->
dArrivalTime
=
pstruEventDetails
->
dEventTime
;
70
wsmPacket->
pstruTransportData
->
dStartTime
=
pstruEventDetails
->
dEventTime
;
71
wsmPacket->
pstruTransportData
->
dEndTime
=
pstruEventDetails
->
dEventTime
;
72
wsmPacket->
pstruTransportData
->
nTransportProtocol
=
TX_PROTOCOL_WSMP
;
73
74
//Set network layer timing
75
wsmPacket->
pstruNetworkData
->
dArrivalTime
=
pstruEventDetails
->
dEventTime
;
76
wsmPacket->
pstruNetworkData
->
dStartTime
=
pstruEventDetails
->
dEventTime
;
77
wsmPacket->
pstruNetworkData
->
dEndTime
=
pstruEventDetails
->
dEventTime
;
78
79
wsmPacket->
pstruNetworkData
->
dPacketSize
= wsmPacket->
pstruTransportData
->
dPacketSize
;
80
wsmPacket->
pstruNetworkData
->
dPayload
= wsmPacket->
pstruTransportData
->
dPacketSize
;
81
wsmPacket->
pstruNetworkData
->
dOverhead
= 0;
82
83
wsmPacket->
pstruNetworkData
->
szGatewayIP
= wsmPacket->
pstruNetworkData
->
szSourceIP
;
84
wsmPacket->
pstruNetworkData
->
szNextHopIp
= wsmPacket->
pstruNetworkData
->
szDestIP
;
85
86
wsmPacket->
pstruMacData
->
szSourceMac
= (
fn_NetSim_Stack_GetMacAddressFromIP
(wsmPacket->
pstruNetworkData
->
szGatewayIP
));
87
wsmPacket->
pstruMacData
->
szDestMac
= (
fn_NetSim_Stack_GetMacAddressFromIP
(wsmPacket->
pstruNetworkData
->
szNextHopIp
));
88
89
if
(!wsmPacket->
pstruMacData
->
szSourceMac
)
90
wsmPacket->
pstruMacData
->
szSourceMac
=
BROADCAST_MAC
;
91
if
(!wsmPacket->
pstruMacData
->
szDestMac
)
92
wsmPacket->
pstruMacData
->
szDestMac
=
BROADCAST_MAC
;
93
94
95
96
NetSim_BUFFER
* buf =
DEVICE_ACCESSBUFFER
(
pstruEventDetails
->
nDeviceId
, 1);
97
if
(!
fn_NetSim_GetBufferStatus
(buf))
98
{
99
/* Add the event details for NETWORK_OUT_EVENT*/
100
pstruEventDetails
->
nInterfaceId
= 1;
101
pstruEventDetails
->
nApplicationId
= wsmPacket->
pstruAppData
->
nApplicationId
;
102
pstruEventDetails
->
nProtocolId
=
fn_NetSim_Stack_GetMacProtocol
(
pstruEventDetails
->
nDeviceId
, 1);
103
pstruEventDetails
->
nPacketId
= wsmPacket->
nPacketId
;
104
pstruEventDetails
->
nSegmentId
= wsmPacket->
pstruAppData
->
nSegmentId
;
105
pstruEventDetails
->
dPacketSize
= wsmPacket->
pstruTransportData
->
dPacketSize
;
106
pstruEventDetails
->
nEventType
=
MAC_OUT_EVENT
;
107
pstruEventDetails
->
nSubEventType
= 0;
108
pstruEventDetails
->
pPacket
= NULL;
109
fnpAddEvent
(
pstruEventDetails
);
110
}
111
fn_NetSim_Packet_AddPacketToList
(buf, wsmPacket,0);
112
113
}
114
}
115
116
int
fn_NetSim_WSNP_ReceiveWSMPacket
()
117
{
118
NetSim_PACKET
*wsmPacket;
119
120
wsmPacket =
pstruEventDetails
->
pPacket
;
121
122
wsmPacket->
pstruTransportData
->
dOverhead
-=
WSMP_HDR_LEN
;
123
wsmPacket->
pstruTransportData
->
dPacketSize
= wsmPacket->
pstruTransportData
->
dPayload
+
124
wsmPacket->
pstruTransportData
->
dOverhead
;
125
126
pstruEventDetails
->
nEventType
=
APPLICATION_IN_EVENT
;
127
pstruEventDetails
->
nPacketId
= wsmPacket->
nPacketId
;
128
pstruEventDetails
->
nSubEventType
= 0;
129
pstruEventDetails
->
nProtocolId
= 0;
130
pstruEventDetails
->
dPacketSize
= wsmPacket->
pstruTransportData
->
dPacketSize
;
131
pstruEventDetails
->
pPacket
= wsmPacket;
132
fnpAddEvent
(
pstruEventDetails
);
133
return
1;
134
}
NETSIM_ID
unsigned int NETSIM_ID
Definition:
Animation.h:45
IEEE1609.h
UINT8
#define UINT8
Definition:
Linux.h:31
calloc
#define calloc(c, s)
Definition:
Memory.h:29
fn_NetSim_GetBufferStatus
bool fn_NetSim_GetBufferStatus(NetSim_BUFFER *pstruBuffer)
Definition:
Scheduling.c:41
BROADCAST_MAC
EXPORTED PNETSIM_MACADDRESS BROADCAST_MAC
Definition:
Stack.h:393
TX_PROTOCOL_WSMP
@ TX_PROTOCOL_WSMP
Definition:
Stack.h:182
fn_NetSim_Stack_GetMacAddressFromIP
PNETSIM_MACADDRESS fn_NetSim_Stack_GetMacAddressFromIP(const NETSIM_IPAddress szIPAddress)
fn_NetSim_Stack_GetMacProtocol
MAC_LAYER_PROTOCOL fn_NetSim_Stack_GetMacProtocol(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
fn_NetSim_Socket_GetPacketFromInterface
NetSim_PACKET * fn_NetSim_Socket_GetPacketFromInterface(ptrSOCKETINTERFACE s, int moveFlag)
APPLICATION_IN_EVENT
@ APPLICATION_IN_EVENT
Definition:
Stack.h:113
MAC_OUT_EVENT
@ MAC_OUT_EVENT
Definition:
Stack.h:106
DEVICE_ACCESSBUFFER
#define DEVICE_ACCESSBUFFER(DeviceId, InterfaceId)
Definition:
Stack.h:794
fn_NetSim_Socket_GetBufferStatus
bool fn_NetSim_Socket_GetBufferStatus(ptrSOCKETINTERFACE s)
pstruEventDetails
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
Definition:
Stack.h:837
fn_NetSim_WSNP_SendWSMPacket
void fn_NetSim_WSNP_SendWSMPacket()
Definition:
WSMP.c:36
set_hdr
void set_hdr(PWSMP_HDR p, UINT8 len)
Definition:
WSMP.c:19
fn_NetSim_WSNP_ReceiveWSMPacket
int fn_NetSim_WSNP_ReceiveWSMPacket()
Definition:
WSMP.c:116
WSMP.h
WSMP_HDR_LEN
#define WSMP_HDR_LEN
Definition:
WSMP.h:23
SET_WSMP_HDR
static __inline void SET_WSMP_HDR(NetSim_PACKET *packet, PWSMP_HDR hdr)
Definition:
WSMP.h:46
PWSMP_HDR
struct wsmp_header * PWSMP_HDR
main.h
fnpAddEvent
#define fnpAddEvent(pstruEvent)
Definition:
main.h:191
fn_NetSim_Packet_AddPacketToList
#define fn_NetSim_Packet_AddPacketToList(pstruBuffer, pstruPacket, nInsertionType)
Definition:
main.h:179
stru_NetSim_Device_Buffer
Definition:
Stack.h:567
stru_NetSim_EventDetails::nApplicationId
NETSIM_ID nApplicationId
Definition:
Stack.h:752
stru_NetSim_EventDetails::nEventType
EVENT_TYPE nEventType
Definition:
Stack.h:747
stru_NetSim_EventDetails::nProtocolId
NETSIM_ID nProtocolId
Definition:
Stack.h:748
stru_NetSim_EventDetails::pPacket
struct stru_NetSim_Packet * pPacket
Definition:
Stack.h:754
stru_NetSim_EventDetails::nSubEventType
NETSIM_ID nSubEventType
Definition:
Stack.h:757
stru_NetSim_EventDetails::nDeviceId
NETSIM_ID nDeviceId
Definition:
Stack.h:750
stru_NetSim_EventDetails::nPacketId
long long int nPacketId
Definition:
Stack.h:755
stru_NetSim_EventDetails::szOtherDetails
void * szOtherDetails
Definition:
Stack.h:758
stru_NetSim_EventDetails::nInterfaceId
NETSIM_ID nInterfaceId
Definition:
Stack.h:751
stru_NetSim_EventDetails::dEventTime
double dEventTime
Definition:
Stack.h:746
stru_NetSim_EventDetails::nSegmentId
int nSegmentId
Definition:
Stack.h:756
stru_NetSim_EventDetails::dPacketSize
double dPacketSize
Definition:
Stack.h:753
stru_NetSim_Packet_AppLayer::nSegmentId
int nSegmentId
Definition:
Packet.h:161
stru_NetSim_Packet_AppLayer::dPacketSize
double dPacketSize
Definition:
Packet.h:167
stru_NetSim_Packet_AppLayer::nApplicationId
NETSIM_ID nApplicationId
Definition:
Packet.h:162
stru_NetSim_Packet_MACLayer::szDestMac
PNETSIM_MACADDRESS szDestMac
Definition:
Packet.h:221
stru_NetSim_Packet_MACLayer::szSourceMac
PNETSIM_MACADDRESS szSourceMac
Definition:
Packet.h:220
stru_NetSim_Packet_NetworkLayer::dOverhead
double dOverhead
Definition:
Packet.h:197
stru_NetSim_Packet_NetworkLayer::dPayload
double dPayload
Definition:
Packet.h:196
stru_NetSim_Packet_NetworkLayer::dEndTime
double dEndTime
Definition:
Packet.h:194
stru_NetSim_Packet_NetworkLayer::dArrivalTime
double dArrivalTime
Definition:
Packet.h:192
stru_NetSim_Packet_NetworkLayer::szGatewayIP
NETSIM_IPAddress szGatewayIP
Definition:
Packet.h:200
stru_NetSim_Packet_NetworkLayer::szDestIP
NETSIM_IPAddress szDestIP
Definition:
Packet.h:199
stru_NetSim_Packet_NetworkLayer::szNextHopIp
NETSIM_IPAddress szNextHopIp
Definition:
Packet.h:201
stru_NetSim_Packet_NetworkLayer::dStartTime
double dStartTime
Definition:
Packet.h:193
stru_NetSim_Packet_NetworkLayer::dPacketSize
double dPacketSize
Definition:
Packet.h:195
stru_NetSim_Packet_NetworkLayer::szSourceIP
NETSIM_IPAddress szSourceIP
Definition:
Packet.h:198
stru_NetSim_Packet_TransportLayer::dPacketSize
double dPacketSize
Definition:
Packet.h:181
stru_NetSim_Packet_TransportLayer::dPayload
double dPayload
Definition:
Packet.h:182
stru_NetSim_Packet_TransportLayer::dOverhead
double dOverhead
Definition:
Packet.h:183
stru_NetSim_Packet_TransportLayer::nTransportProtocol
TRANSPORT_LAYER_PROTOCOL nTransportProtocol
Definition:
Packet.h:186
stru_NetSim_Packet_TransportLayer::dStartTime
double dStartTime
Definition:
Packet.h:179
stru_NetSim_Packet_TransportLayer::dArrivalTime
double dArrivalTime
Definition:
Packet.h:178
stru_NetSim_Packet_TransportLayer::dEndTime
double dEndTime
Definition:
Packet.h:180
stru_NetSim_Packet
Definition:
Packet.h:255
stru_NetSim_Packet::nPacketId
long long int nPacketId
Definition:
Packet.h:256
stru_NetSim_Packet::pstruAppData
struct stru_NetSim_Packet_AppLayer * pstruAppData
Definition:
Packet.h:273
stru_NetSim_Packet::pstruNetworkData
struct stru_NetSim_Packet_NetworkLayer * pstruNetworkData
Definition:
Packet.h:275
stru_NetSim_Packet::pstruTransportData
struct stru_NetSim_Packet_TransportLayer * pstruTransportData
Definition:
Packet.h:274
stru_NetSim_Packet::pstruMacData
struct stru_NetSim_Packet_MACLayer * pstruMacData
Definition:
Packet.h:276
stru_NetSim_SocketInterface
Definition:
Stack.h:455
wsmp_header
Definition:
WSMP.h:28
wsmp_header::ele_id
UINT16 ele_id
Definition:
WSMP.h:34
wsmp_header::tx_power_level
UINT8 tx_power_level[3]
Definition:
WSMP.h:33
wsmp_header::psid
UINT8 psid
Definition:
WSMP.h:30
wsmp_header::wsm_version
UINT8 wsm_version
Definition:
WSMP.h:29
wsmp_header::ch_no
UINT8 ch_no[3]
Definition:
WSMP.h:31
wsmp_header::wsm_len
UINT8 wsm_len
Definition:
WSMP.h:35
wsmp_header::data_rate
UINT8 data_rate[3]
Definition:
WSMP.h:32
ALL
Component 9
IEEE1609
WSMP.c
Generated on Fri Dec 9 2022 10:22:48 for NetSim Source Code Help by
1.9.5