Prepare for extended SI2quater support
Supporting SI2quater as per 3GPP TS 44.018 will require chnages to the
way System Information is stored because it uses 1:n instead of 1:1
mapping between SI type and generated SI content. This should not affect
other SI types though. To facilitate this transition:
* convert the code to always use GSM_BTS_SI helper instead of accessing
buffer directly
* make helper more robust by adding extra parenthesis
* add similar helper for gsm_lchan
* add function estimating number of SI2quater message to hold configured
number of (U|E)ARFCNs
* add SI2q index/count fields and pass them to rest_octets generator
explicitly
* internalize buffer access in generate_si* functions
Change-Id: I74e4e3cb86364cec869a1472a41b4a95af0d50dd
Related: RT#8792
diff --git a/openbsc/include/openbsc/gsm_data_shared.h b/openbsc/include/openbsc/gsm_data_shared.h
index 242889a..166de16 100644
--- a/openbsc/include/openbsc/gsm_data_shared.h
+++ b/openbsc/include/openbsc/gsm_data_shared.h
@@ -483,7 +483,8 @@
struct gsm_bts_trx_ts ts[TRX_NR_TS];
};
-#define GSM_BTS_SI(bts, i) (void *)(bts->si_buf[i])
+#define GSM_BTS_SI(bts, i) (void *)((bts)->si_buf[i])
+#define GSM_LCHAN_SI(lchan, i) (void *)((lchan)->si.buf[i])
enum gsm_bts_type {
GSM_BTS_TYPE_UNKNOWN,
@@ -702,6 +703,9 @@
/* bitmask of all SI that are present/valid in si_buf */
uint32_t si_valid;
+ /* 3GPP TS 44.018 Table 10.5.2.33b.1 INDEX and COUNT for SI2quater */
+ uint8_t si2q_index;
+ uint8_t si2q_count;
/* buffers where we put the pre-computed SI */
sysinfo_buf_t si_buf[_MAX_SYSINFO_TYPE];