#pragma once #include enum gprs_mac_mode { NULL_MODE, IDLE_MODE, TRANSFER_MODE, }; extern struct value_string gprs_mac_mode_vals[]; 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[]; 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[]; 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[]; /* 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[]; 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[]; struct evt_gprs_mac_msg { uint8_t msg_type; uint8_t prot_disc; uint8_t chan_type; } __attribute__ ((packed));