Get rid of class GprsCodingScheme
We have same kind of object splitted into two layers, in coding_scheme
and gprs_coding_scheme. Let's merge them together and get rid of the
class, which is not really useful because it's only a set of functions
operating on one enum value.
This change also fixes gcc 10.1.0 error about memseting a complex type
in rlc.h init().
Change-Id: Ie9ce2144ba9e8dbba9704d4e0000a2929e3e41df
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index cd4ddb9..03149ba 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -30,7 +30,6 @@
#include <gprs_codel.h>
#include <decoding.h>
#include <encoding.h>
-#include <gprs_coding_scheme.h>
#include <gprs_ms.h>
#include <gprs_ms_storage.h>
#include <llc.h>
@@ -370,7 +369,7 @@
{
int bsn;
int data_len2, force_data_len = -1;
- GprsCodingScheme force_cs;
+ enum CodingScheme force_cs = UNKNOWN;
/* search for a nacked or resend marked bsn */
bsn = m_window.resend_needed();
@@ -446,7 +445,7 @@
return take_next_bsn(fn, previous_bsn, may_combine);
} else if (have_data()) {
/* The window has space left, generate new bsn */
- GprsCodingScheme new_cs;
+ enum CodingScheme new_cs;
new_cs = force_cs ? force_cs : current_cs();
LOGPTBFDL(this, LOGL_DEBUG,
"Sending new block at BSN %d, CS=%s\n",
@@ -480,7 +479,7 @@
bts->do_rate_ctr_inc(CTR_RLC_RESENT);
}
- *may_combine = num_data_blocks(m_rlc.block(bsn)->cs_current_trans.headerTypeData()) > 1;
+ *may_combine = num_data_blocks(mcs_header_type(m_rlc.block(bsn)->cs_current_trans)) > 1;
return bsn;
}
@@ -561,7 +560,7 @@
m_last_dl_drained_fn = -1;
}
-int gprs_rlcmac_dl_tbf::create_new_bsn(const uint32_t fn, GprsCodingScheme cs)
+int gprs_rlcmac_dl_tbf::create_new_bsn(const uint32_t fn, enum CodingScheme cs)
{
uint8_t *data;
gprs_rlc_data *rlc_data;
@@ -574,10 +573,10 @@
if (m_llc.frame_length() == 0)
schedule_next_frame();
- OSMO_ASSERT(cs.isValid());
+ OSMO_ASSERT(mcs_is_valid(cs));
/* length of usable data block (single data unit w/o header) */
- const uint8_t block_data_len = cs.maxDataBlockBytes();
+ const uint8_t block_data_len = mcs_max_data_block_bytes(cs);
/* now we still have untransmitted LLC data, so we fill mac block */
rlc_data = m_rlc.block(bsn);
@@ -691,7 +690,7 @@
int rc;
bool is_final = false;
gprs_rlc_data_info rlc;
- GprsCodingScheme cs;
+ enum CodingScheme cs;
int bsns[ARRAY_SIZE(rlc.block_info)];
unsigned num_bsns;
bool need_padding = false;
@@ -740,8 +739,8 @@
* Refer commit be881c028fc4da00c4046ecd9296727975c206a3
* dated 2016-02-07 23:45:40 (UTC)
*/
- if (cs != GprsCodingScheme(MCS8))
- cs.decToSingleBlock(&need_padding);
+ if (cs != MCS8)
+ mcs_dec_to_single_block(&cs, &need_padding);
}
spb = get_egprs_dl_spb(index);
@@ -756,7 +755,7 @@
rlc.tfi = m_tfi; /* TFI */
/* return data block(s) as message */
- msg_len = cs.sizeDL();
+ msg_len = mcs_size_dl(cs);
dl_msg = msgb_alloc(msg_len, "rlcmac_dl_data");
if (!dl_msg)
return NULL;
@@ -1273,11 +1272,11 @@
egprs_rlc_dl_reseg_bsn_state *block_status_dl =
&rlc_data->spb_status.block_status_dl;
- enum CodingScheme cs_init = CodingScheme(rlc_data->cs_init);
- enum CodingScheme cs_current_trans = CodingScheme(rlc_data->cs_current_trans);
+ enum CodingScheme cs_init = rlc_data->cs_init;
+ enum CodingScheme cs_current_trans = rlc_data->cs_current_trans;
- enum HeaderType ht_cs_init = rlc_data->cs_init.headerTypeData();
- enum HeaderType ht_cs_current_trans = rlc_data->cs_current_trans.headerTypeData();
+ enum HeaderType ht_cs_init = mcs_header_type(rlc_data->cs_init);
+ enum HeaderType ht_cs_current_trans = mcs_header_type(rlc_data->cs_current_trans);
*block_data = &rlc_data->block[0];
@@ -1346,11 +1345,11 @@
struct gprs_rlc_data *rlc_data = m_rlc.block(bsn);
egprs_rlc_dl_reseg_bsn_state block_status_dl = rlc_data->spb_status.block_status_dl;
- enum CodingScheme cs_init = CodingScheme(rlc_data->cs_init);
- enum CodingScheme cs_current_trans = CodingScheme(rlc_data->cs_current_trans);
+ enum CodingScheme cs_init = rlc_data->cs_init;
+ enum CodingScheme cs_current_trans = rlc_data->cs_current_trans;
- enum HeaderType ht_cs_init = rlc_data->cs_init.headerTypeData();
- enum HeaderType ht_cs_current_trans = rlc_data->cs_current_trans.headerTypeData();
+ enum HeaderType ht_cs_init = mcs_header_type(rlc_data->cs_init);
+ enum HeaderType ht_cs_current_trans = mcs_header_type(rlc_data->cs_current_trans);
/* Table 10.4.8b.1 of 44.060 */
if (ht_cs_current_trans == HEADER_EGPRS_DATA_TYPE_3) {