aboutsummaryrefslogtreecommitdiffstats
path: root/src/protocol/diag_log_gprs_rlc.h
blob: 2aab20b100c08e804c635e71b1175629ded4ed7b (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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#pragma once

#include <stdint.h>

/* LOG_GPRS_RLC_UL_ABNRML_RLS_COUNTS_C */
struct gprs_rlc_ul_abnrml_rls_counts {
	uint16_t access_reject_cnt;
	uint16_t arc_retry_cnt;
	uint16_t arc_wo_retry_cnt;
	uint16_t arc_sys_info_cnt;
} __attribute__ ((packed));

/* LOG_GPRS_RLC_UL_EVENT_COUNTS_C */
struct gprs_rlc_ul_event_counts {
	uint16_t llc_event_cnt;
	uint16_t mac_event_cnt;
	uint16_t pl1_event_cnt;
	uint16_t tmr_event_cnt;
} __attribute__ ((packed));

/* LOG_GPRS_RLC_UL_STATS_C */
enum gprs_rlc_ul_state {
	US_NULL,
	US_AWAIT_ASS,
	US_ACK_XFER,
	US_GTTP_XFER, // optional
	US_UNACK_XFER,
	US_TEST_MODE,
	US_AWAIT_RECOVERY,
};
extern struct value_string gprs_rlc_ul_state_vals[8];

enum gprs_rlc_ul_substate {
	RALS_NULL,
	RALS_AWAIT_TX_COMPLETE,
	RALS_CURRENT_PDU_TX_COMPLETED,
	RALS_COMPLETE,
};
extern struct value_string gprs_rlc_ul_substate_vals[5];

enum gprs_rlc_dl_state {
	DS_NULL,
	DS_RX_ACK,
	DS_RX_UNACK,
	DS_RX_ACK_PENDING_RELEASE,
	DS_RX_UNACK_PENDING_RELEASE,
	DS_TEST_MODE,
};
extern struct value_string gprs_rlc_dl_state_vals[7];

/* LOG_GPRS_RLC_UL_STATS_C */
struct gprs_rlc_ul_stats {
	uint8_t	rlc_ul_state;
	uint8_t rlc_ul_substate;
	uint32_t ack_tx_pdu_cnt;
	uint32_t ack_tx_oct_cnt;
	uint32_t unack_tx_pdu_cnt;
	uint32_t unack_tx_oct_cnt;
	uint16_t coding_sch_changes;
	uint8_t ul_seq_va;
	uint8_t ul_seq_vs;
	uint8_t ul_seq_nseg;
	uint8_t ul_seq_vsf;
	uint8_t ul_seq_pack_vsf;
	uint8_t ul_seq_nack_vsf;
	int8_t ul_n3102;
	int8_t ul_n3104;
	uint32_t ul_gen_p_cnt_a;
	uint32_t ul_gen_p_cnt_b;
	uint32_t ul_gen_p_cnt_c;
} __attribute__ ((packed));

/* LOG_GPRS_RLC_DL_STATS_C */
struct gprs_rlc_dl_stats {
	uint8_t	rlc_dl_state;
	uint32_t ack_rx_pdu_cnt;
	uint32_t ack_rx_oct_cnt;
	uint32_t unack_rx_pdu_cnt;
	uint32_t unack_pdu_filled_cnt;
	uint32_t unack_rx_oct_cnt;
	uint32_t unack_oct_filled_cnt;
	uint32_t ack_nack_req_cnt;
	uint8_t dl_seq_vq;
	uint8_t dl_seq_vr;
	uint8_t dl_seq_ssn;
	uint32_t dl_gen_p_cnt_a;
	uint32_t dl_gen_p_cnt_b;
	uint32_t dl_gen_p_cnt_c;
} __attribute__ ((packed));

/* LOG_GPRS_RLC_UL_ACKNACK_PARAMS_VER2_C */
struct gprs_rlc_ul_acknack_params_v2 {
	uint8_t ul_tfi;
	uint8_t fai;
	uint8_t ssn;
	uint8_t cs;
	uint8_t cv;
	uint8_t va;
	uint8_t vs;
	uint8_t si;
	uint32_t hu32;
	uint32_t lu32;
} __attribute__ ((packed));

/* LOG_GPRS_RLC_DL_ACKNACK_PARAMS_VER2_C */
struct gprs_rlc_dl_acknack_params_v2 {
	uint8_t dl_tfi;
	uint8_t fai;
	uint8_t ssn;
	uint8_t vq;
	uint32_t hu32;
	uint32_t lu32;
	uint8_t cs;
} __attribute__ ((packed));

/* LOG_GPRS_RLC_UL_RELEASE_IND_C + LOG_GPRS_RLC_DL_RELEASE_IND_C */
struct gprs_rlc_release_ind {
	uint8_t tfi;
	uint8_t cause;
} __attribute__ ((packed));

enum gprs_rlc_hdr_type {
	GPRS_HEADER_TYPE,
	EGPRS_HEADER_TYPE_1,
	EGPRS_HEADER_TYPE_2,
	EGPRS_HEADER_TYPE_3
};
extern struct value_string gprs_rlc_hdr_type_vals[5];


/* LOG_EGPRS_RLC_DL_HEADER_C */
struct gprs_rlc_dl_header {
	uint8_t type;
	uint8_t ul_hdr[5];
	uint8_t crc_status;
	uint8_t ts;
	uint32_t fn;
	uint8_t dl_payload[6];
} __attribute__ ((packed));

/* LOG_EGPRS_RLC_UL_HEADER_C */
struct gprs_rlc_ul_header {
	uint8_t type;
	uint8_t ul_hdr[6];
} __attribute__ ((packed));

/* LOG_EGPRS_RLC_EPUAN_C */
struct diag_egprs_rlc_epuan {
	uint8_t tfi;
	uint8_t msc;
	uint8_t final_ack_ind:1,
		begin_of_window:1,
		end_of_window:1,
		resegment_ir_off:1,
		preemptive_tx:1,
		starting_color_code:1,
		_pad:2;
	uint16_t ssn;
	uint8_t crrb_num_bits;
	uint8_t crrb[16];
	uint8_t urrb_num_bits;
	uint8_t urrb[20];
} __attribute__ ((packed));

/* LOG_EGPRS_RLC_EPDAN_C */
struct diag_egprs_rlc_epdan {
	uint8_t tfi;
	uint8_t final_ack_ind:1,
		begin_of_window:1,
		end_of_window:1,
		esp:2,
		starting_color_code:1,
		gmsk_valid:1,
		psk_valid:1;
	uint16_t ssn;
	uint8_t crrb_num_bits;
	uint8_t crrb[16];
	uint8_t urrb_num_bits;
	uint8_t urrb[20];
	uint8_t gmsk_bep;
	uint8_t psk_bep;
	uint8_t c_value;
} __attribute__ ((packed));