add GPRS/EGPRS MAC + RLC layer DIAG related definitions
diff --git a/src/gprs_rlc.h b/src/gprs_rlc.h
new file mode 100644
index 0000000..545eaef
--- /dev/null
+++ b/src/gprs_rlc.h
@@ -0,0 +1,137 @@
+#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,
+};
+
+enum gprs_rlc_ul_substate {
+ RALS_NULL,
+ RALS_AWAIT_TX_COMPLETE,
+ RALS_CURRENT_PDU_TX_COMPLETED,
+ RALS_COMPLETE,
+};
+
+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,
+};
+
+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
+};
+
+/* 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));