-
Notifications
You must be signed in to change notification settings - Fork 0
/
basic_types.h
67 lines (53 loc) · 1.03 KB
/
basic_types.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef BASIC_TYPES_H
#define BASIC_TYPES_H
#define MSG_TYPE unsigned int
#define ACK_TYPE unsigned int
#define ID_TYPE unsigned int
#define TIMEOUT 6
#define FULL_PACK_SIZE 32
#define PACK_ID_SIZE 4
#define ACK_TYPE_SIZE 1
//#define WINDOW_SIZE pow(2,PACK_ID_SIZE)
#define WINDOW_SIZE 5
#define PROB_ERROR 0.04
#define CRC_GEN_POL 15
#define CRC_SIZE 3
#define RAND_SEED time(NULL)
#define MAX_DELAY 4
#define IN_MSGQ_KEY 0x1927
#define OUT_MSGQ_KEY 0x1928
#define MANUAL_ERROR
//#define AUTO_DELAY
enum protocols_options {
STOPNWAIT = 1,
GOBACKN = 2,
SELECTIVEREPEAT = 3,
EXIT = 9
};
enum ack_types {
ACK,
NACK
};
// msgbuff package format:
// payload | identifier | crc
struct msgbuff {
long mtype;
MSG_TYPE msg;
};
// ackbuff package format:
// ack type | identifier | crc
struct ackbuff {
long mtype;
ACK_TYPE ack;
};
struct msg_window {
ID_TYPE identifier;
ack_types ack_type;
MSG_TYPE payload; // deprecated
};
struct receiver_msgbuff {
ID_TYPE msg_num;
ack_types rcv_flag;
MSG_TYPE payload;
};
#endif