blob: cc499b3578daf5bd6e5ea713ceea39524955c4c9 [file] [log] [blame]
Harald Welte1cd1e732016-01-08 23:24:23 +01001#include <stdint.h>
2
3enum gprs_mac_mode {
4 NULL_MODE,
5 IDLE_MODE,
6 TRANSFER_MODE,
7};
Harald Weltef5d6fee2016-01-13 22:29:10 +01008extern struct value_string gprs_mac_mode_vals[4];
Harald Welte1cd1e732016-01-08 23:24:23 +01009
10enum gprs_mac_null_substates {
11 NULL_INACTIVE,
12 NULL_GPRS_51_ACTIVE,
13 NULL_SUSPENDED,
14 NULL_SUSPEND_RESEL,
15 NULL_UPLINK_TBF_ESTAB,
16 NULL_UPLINK_SB_ESTAB,
17 NULL_DOWNLINK_SB_ESTAB,
18 NULL_UPLINK_TBF_ACCESS,
19 NULL_DL_TBF_EST,
20 NULL_DTM_CONNECT_PENDING,
21 NULL_DTM_GTTP_UL_CON,
22 NULL_RESET,
23};
Harald Weltef5d6fee2016-01-13 22:29:10 +010024extern struct value_string gprs_mac_null_substate_vals[13];
Harald Welte1cd1e732016-01-08 23:24:23 +010025
26enum gprs_mac_idle_substates {
27 IDLE_PASSIVE,
28 IDLE_UL_PACKET_ACCESS,
29 IDLE_UL_ACCESS_QUEUED,
30 IDLE_UL_ACCESS_REJECT,
31 IDLE_UL_1PHASE_ASS,
32 IDLE_UL_2PHASE_ASS,
33 IDLE_UL_1PHASE_CONT_RES,
34 IDLE_DL_ASS,
35};
Harald Weltef5d6fee2016-01-13 22:29:10 +010036extern struct value_string gprs_mac_idle_substate_vals[9];
Harald Welte1cd1e732016-01-08 23:24:23 +010037
38enum gprs_mac_transfer_substates {
39 TRANSFER_INACTIVE,
40 TRANSFER_DL,
41 TRANSFER_DL_REASSIGN,
42 TRANSFER_DL_WITH_DYNAMIC_ALLOC,
43 TRANSFER_DL_REASSIGN_DYNAMIC_ALLOC,
44 TRANSFER_UL_DYNAMIC,
45 TRANSFER_UL_DYNAMIC_REALLOC,
46 TRANSFER_UL_DYNAMIC_DL_ASSIGN,
47 TRANSFER_UL_DYNAMIC_REALLOC_DL_ASSIGN,
48 TRANSFER_CONCURRENT_DYNAMIC_TRANSFER,
49 TRANSFER_CONCURRENT_DYNAMIC_DL_REASSIGN,
50 TRANSFER_CONCURRENT_DYNAMIC_REALLOC,
51 TRANSFER_CONCURRENT_DL_REASSIGN_DYNAMIC_REALLOC,
52};
Harald Weltef5d6fee2016-01-13 22:29:10 +010053extern struct value_string gprs_mac_transfer_substate_vals[14];
Harald Welte1cd1e732016-01-08 23:24:23 +010054
55/* LOG_GPRS_MAC_STATE_C */
56struct gprs_mac_state_change {
57 uint8_t mac_mode;
58 uint8_t mac_null_fsm_state;
59 uint8_t mac_idle_fsm_state;
60 uint8_t mac_transfer_fsm_state;
61} __attribute__((packed));
62
63/* LOG_GPRS_MAC_SIGNALLING_MESSAGE_C */
64struct gprs_mac_signalling_msg {
65 uint8_t chan_type;
66 uint8_t msg_type;
67 uint8_t msg_len;
68 uint8_t msg[0];
69} __attribute__((packed));
70
71/* LOG_GPRS_MAC_DL_TBF_ESTABLISH_C */
72struct gprs_mac_dl_tbf_est {
73 uint8_t dl_tfi;
74 uint8_t rlc_mode;
75 uint8_t dl_ts_bmap;
76 uint8_t is_egprs_tbf;
77 uint16_t egprs_win_size;
78 uint8_t egprs_link_qual_mode;
79 uint8_t bep_period2;
80} __attribute__((packed));
81
82/* LOG_GPRS_MAC_UL_TBF_ESTABLISH_C */
Harald Weltef5d6fee2016-01-13 22:29:10 +010083struct gprs_mac_ul_tbf_est {
Harald Welte1cd1e732016-01-08 23:24:23 +010084 uint8_t tbf_req_cause;
85 uint8_t acc_granted;
86 uint8_t radio_prio;
87 uint8_t peak_tput;
88 uint8_t ul_tfi;
89 uint8_t rlc_mode;
90 uint8_t ul_ts_bmap;
91
92 uint8_t is_egprs_tbf;
93 uint16_t egprs_win_size;
94 uint8_t resegment;
95 uint8_t bep_period2;
96} __attribute__ ((packed));
97
98/* LOG_EGPRS_MAC_DL_ACKNACK_C */
99struct gprs_mac_dl_acknack {
100 uint8_t is_egprs;
101 uint8_t dl_acknack[0];
102} __attribute__ ((packed));
103
104/* LOG_EGPRS_MAC_UL_ACKNACK_C */
105struct gprs_mac_ul_acknack {
106 uint8_t ul_acknack[0];
107} __attribute__ ((packed));
108
109/* identical for LOG_GPRS_MAC_UL_TBF_RELEASE_C and
110 * LOG_GPRS_MAC_DL_TBF_RELEASE_C */
111struct gprs_mac_tbf_release {
112 uint8_t tfi;
113 uint8_t fail_cause;
114} __attribute__ ((packed));
115
116
117/* EVENT_GPRS_MAC_MSG_RECEIVED / EVENT_GPRS_MAC_MSG_SENT */
118enum gprs_mac_chan_type {
119 PRACH_11BIT_CHANNEL = 0x01,
120 PRACH_8BIT_CHANNEL = 0x02,
121 PACCH_RRBP_CHANNEL = 0x03,
122 UL_PACCH_CHANNEL = 0x04,
123 PCCCH_CHANNEL = 0x81,
124 PBCCH_CHANNEL = 0x82,
125 DL_PACCH_CHANNEL = 0x83,
126};
Harald Weltef5d6fee2016-01-13 22:29:10 +0100127extern struct value_string gprs_mac_chan_type_vals[8];
Harald Welte1cd1e732016-01-08 23:24:23 +0100128
129enum gprs_mac_msg_type {
130 PACKET_CELL_CHANGE_FAILURE = 0x00,
131 PACKET_CONTROL_ACKNOWLEDGE = 0x01,
132 PACKET_DOWNLINK_ACK_NACK = 0x02,
133 PACKET_UPLK_DUMMY_CNTRL_BLK = 0x03,
134 PACKET_MEASUREMENT_REPORT = 0x04,
135 PACKET_RESOURCE_REQUEST = 0x05,
136 PACKET_MOBILE_TBF_STATUS = 0x06,
137 PACKET_PSI_STATUS = 0x07,
138 EGPRS_PACKET_DOWNLINK_ACK_NACK = 0x08,
139 PACKET_PAUSE = 0x09,
140 PACKET_ENHANCED_MEASUREMENT_REPORT = 0x0a,
141 ADDITIONAL_MS_RAC = 0x0b,
142 PACKET_CELL_CHANGE_NOTIFICATION = 0x0c,
143 PACKET_SI_STATUS = 0x0d,
144 PACKET_CS_REQUEST = 0x0e,
145 PACKET_CHANNEL_REQUEST = 0x20,
146};
Harald Weltef5d6fee2016-01-13 22:29:10 +0100147extern struct value_string gprs_mac_msg_type_vals[17];
Harald Welte1cd1e732016-01-08 23:24:23 +0100148
149struct evt_gprs_mac_msg {
150 uint8_t msg_type;
151 uint8_t prot_disc;
152 uint8_t chan_type;
153} __attribute__ ((packed));