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