aboutsummaryrefslogtreecommitdiffstats
path: root/src/protocol/diag_log_gprs_mac.h
blob: 536128d66fea4a753e6b4c23821081ed57988bb6 (plain)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#pragma once

#include <stdint.h>

enum gprs_mac_mode {
	NULL_MODE,
	IDLE_MODE,
	TRANSFER_MODE,
};
extern struct value_string gprs_mac_mode_vals[4];

enum gprs_mac_null_substates {
	NULL_INACTIVE,
	NULL_GPRS_51_ACTIVE,
	NULL_SUSPENDED,
	NULL_SUSPEND_RESEL,
	NULL_UPLINK_TBF_ESTAB,
	NULL_UPLINK_SB_ESTAB,
	NULL_DOWNLINK_SB_ESTAB,
	NULL_UPLINK_TBF_ACCESS,
	NULL_DL_TBF_EST,
	NULL_DTM_CONNECT_PENDING,
	NULL_DTM_GTTP_UL_CON,
	NULL_RESET,
};
extern struct value_string gprs_mac_null_substate_vals[13];

enum gprs_mac_idle_substates {
	IDLE_PASSIVE,
	IDLE_UL_PACKET_ACCESS,
	IDLE_UL_ACCESS_QUEUED,
	IDLE_UL_ACCESS_REJECT,
	IDLE_UL_1PHASE_ASS,
	IDLE_UL_2PHASE_ASS,
	IDLE_UL_1PHASE_CONT_RES,
	IDLE_DL_ASS,
};
extern struct value_string gprs_mac_idle_substate_vals[9];

enum gprs_mac_transfer_substates {
	TRANSFER_INACTIVE,
	TRANSFER_DL,
	TRANSFER_DL_REASSIGN,
	TRANSFER_DL_WITH_DYNAMIC_ALLOC,
	TRANSFER_DL_REASSIGN_DYNAMIC_ALLOC,
	TRANSFER_UL_DYNAMIC,
	TRANSFER_UL_DYNAMIC_REALLOC,
	TRANSFER_UL_DYNAMIC_DL_ASSIGN,
	TRANSFER_UL_DYNAMIC_REALLOC_DL_ASSIGN,
	TRANSFER_CONCURRENT_DYNAMIC_TRANSFER,
	TRANSFER_CONCURRENT_DYNAMIC_DL_REASSIGN,
	TRANSFER_CONCURRENT_DYNAMIC_REALLOC,
	TRANSFER_CONCURRENT_DL_REASSIGN_DYNAMIC_REALLOC,
};
extern struct value_string gprs_mac_transfer_substate_vals[14];

/* LOG_GPRS_MAC_STATE_C */
struct gprs_mac_state_change {
	uint8_t mac_mode;
	uint8_t mac_null_fsm_state;
	uint8_t mac_idle_fsm_state;
	uint8_t mac_transfer_fsm_state;
} __attribute__((packed));

/* LOG_GPRS_MAC_SIGNALLING_MESSAGE_C */
struct gprs_mac_signalling_msg {
	uint8_t chan_type;
	uint8_t msg_type;
	uint8_t msg_len;
	uint8_t msg[0];
} __attribute__((packed));

/* LOG_GPRS_MAC_DL_TBF_ESTABLISH_C */
struct gprs_mac_dl_tbf_est {
	uint8_t dl_tfi;
	uint8_t rlc_mode;
	uint8_t dl_ts_bmap;
	uint8_t is_egprs_tbf;
	uint16_t egprs_win_size;
	uint8_t egprs_link_qual_mode;
	uint8_t bep_period2;
} __attribute__((packed));

/* LOG_GPRS_MAC_UL_TBF_ESTABLISH_C */
struct gprs_mac_ul_tbf_est {
	uint8_t tbf_req_cause;
	uint8_t acc_granted;
	uint8_t radio_prio;
	uint8_t peak_tput;
	uint8_t ul_tfi;
	uint8_t rlc_mode;
	uint8_t ul_ts_bmap;

	uint8_t is_egprs_tbf;
	uint16_t egprs_win_size;
	uint8_t resegment;
	uint8_t bep_period2;
} __attribute__ ((packed));

/* LOG_EGPRS_MAC_DL_ACKNACK_C */
struct gprs_mac_dl_acknack {
	uint8_t is_egprs;
	uint8_t dl_acknack[0];
} __attribute__ ((packed));

/* LOG_EGPRS_MAC_UL_ACKNACK_C */
struct gprs_mac_ul_acknack {
	uint8_t ul_acknack[0];
} __attribute__ ((packed));

/* identical for LOG_GPRS_MAC_UL_TBF_RELEASE_C and
 * LOG_GPRS_MAC_DL_TBF_RELEASE_C */
struct gprs_mac_tbf_release {
	uint8_t tfi;
	uint8_t fail_cause;
} __attribute__ ((packed));


/* EVENT_GPRS_MAC_MSG_RECEIVED / EVENT_GPRS_MAC_MSG_SENT */
enum gprs_mac_chan_type {
	PRACH_11BIT_CHANNEL	= 0x01,
	PRACH_8BIT_CHANNEL	= 0x02,
	PACCH_RRBP_CHANNEL	= 0x03,
	UL_PACCH_CHANNEL	= 0x04,
	PCCCH_CHANNEL		= 0x81,
	PBCCH_CHANNEL		= 0x82,
	DL_PACCH_CHANNEL	= 0x83,
};
extern struct value_string gprs_mac_chan_type_vals[8];

enum gprs_mac_msg_type {
	PACKET_CELL_CHANGE_FAILURE		= 0x00,
	PACKET_CONTROL_ACKNOWLEDGE		= 0x01,
	PACKET_DOWNLINK_ACK_NACK		= 0x02,
	PACKET_UPLK_DUMMY_CNTRL_BLK		= 0x03,
	PACKET_MEASUREMENT_REPORT		= 0x04,
	PACKET_RESOURCE_REQUEST			= 0x05,
	PACKET_MOBILE_TBF_STATUS		= 0x06,
	PACKET_PSI_STATUS			= 0x07,
	EGPRS_PACKET_DOWNLINK_ACK_NACK		= 0x08,
	PACKET_PAUSE				= 0x09,
	PACKET_ENHANCED_MEASUREMENT_REPORT	= 0x0a,
	ADDITIONAL_MS_RAC			= 0x0b,
	PACKET_CELL_CHANGE_NOTIFICATION		= 0x0c,
	PACKET_SI_STATUS			= 0x0d,
	PACKET_CS_REQUEST			= 0x0e,
	PACKET_CHANNEL_REQUEST			= 0x20,
};
extern struct value_string gprs_mac_msg_type_vals[17];

struct evt_gprs_mac_msg {
	uint8_t msg_type;
	uint8_t prot_disc;
	uint8_t chan_type;
} __attribute__ ((packed));