GlobalBpiLib
1.0
MessageTypes.h
1
/*
2
* MessageTypes.h
3
*
4
* Author: Valentin Fitz
5
* Institute: University of Duisburg-Essen, Germany
6
*/
7
8
#ifndef PROTOCOLS_MESSAGETYPES_H_
9
#define PROTOCOLS_MESSAGETYPES_H_
10
11
#include <stdint.h>
12
#include <string>
13
14
#define CRC32GENP 0x04C11DB7
15
#define FABDATAMIN 38
16
#define ETHDATAMIN 46
17
21
typedef
struct
MsgMeta
{
22
}
MsgMeta
;
23
27
typedef
struct
EthMsgMeta
:
MsgMeta
{
28
int
port;
29
}
EthMsgMeta
;
30
34
typedef
struct
FabanMeta
:
EthMsgMeta
{
35
// TODO
36
}
FabanMeta
;
37
41
typedef
struct
ExtMessage
{
42
uint16_t
size
;
43
MsgMeta
*
meta
;
44
}
ExtMessage
;
45
49
typedef
struct
Message
:
ExtMessage
{
50
char
* data;
51
}
Message
;
52
56
typedef
struct
EthernetMessage
:
ExtMessage
{
57
char
destination[6];
/* 6 octets */
58
char
source[6];
/* 6 octets */
59
unsigned
short
ether_type;
/* 2 octets */
60
Message
* data;
/* Data - 46..1500 octets */
61
uint32_t fcs;
/* 4 octets */
62
}
EthernetMEssage
;
63
67
typedef
struct
FabanMessage
:
ExtMessage
{
68
uint8_t senderId;
/* 1 octet */
69
uint8_t sequenceNumber;
/* 1 octet */
70
uint64_t deliveryTime :48;
/* 6 octets */
71
Message
* data;
/* Data - 38..1492 octets */
72
}
FabanMessage
;
73
74
Message
* createMessageData(
const
char
* data,
size_t
sizeofdata,
size_t
mindatasize = 0);
75
Message
* copyMessage(
Message
* msg);
76
void
deleteMessage(
Message
* msg);
77
std::string printMessage(
Message
* msg,
bool
clear=
false
);
78
79
EthernetMessage
* createEthernetMessage(
char
dest[],
char
source[],
short
ether_type,
Message
* data);
80
EthernetMessage
* copyEthernetMessage(
EthernetMessage
* em);
81
void
deleteMessage(
EthernetMessage
* msg);
82
Message
* serializeEthernetMessage(
EthernetMessage
* em);
83
EthernetMessage
* deserializeEthernetMessage(
Message
* raw);
84
EthernetMessage
* deserializeEthernetMessage(
const
char
* raw, uint16_t sizeofdata);
85
std::string printMessage(
EthernetMessage
* msg);
86
uint32_t generateCrc32(
EthernetMessage
* msg);
87
88
FabanMessage
* createFabanMessage(uint8_t senderId, uint8_t sequenceNumber, uint64_t deliveryTime,
Message
* data);
89
void
deleteMessage(
FabanMessage
* msg);
90
Message
* serializeFabanMessage(
FabanMessage
* fabMsg);
91
FabanMessage
* deserializeFabanMessage(
Message
* msg);
92
std::string printMessage(
FabanMessage
* fabMsg);
93
94
#endif
/* PROTOCOLS_MESSAGETYPES_H_ */
EthMsgMeta
Ethernet message meta information.
Definition:
MessageTypes.h:27
MsgMeta
Basic message meta information.
Definition:
MessageTypes.h:21
ExtMessage
Basic message struct from which every other message type is derived from. This struct provides a link...
Definition:
MessageTypes.h:41
ExtMessage::meta
MsgMeta * meta
Definition:
MessageTypes.h:43
Message
Raw message type.
Definition:
MessageTypes.h:49
FabanMeta
Faban message meta information.
Definition:
MessageTypes.h:34
ExtMessage::size
uint16_t size
Definition:
MessageTypes.h:42
FabanMessage
Faban message type.
Definition:
MessageTypes.h:67
EthernetMessage
Ethernet v2 message type.
Definition:
MessageTypes.h:56
Protocols
MessageTypes.h
Generated by
1.8.13