Move SI-related defines

* move SI2quater related defines to shared header
* add define from OsmoBTS which checks for presence of a given SI
  message in gsm_bts struct. Rename it to avoid conflicts with OsmoBTS
  code and to match naming conventions of similar macros.

Change-Id: I11432c93c772d1ead6d45a7bb0f1d13d492c82f1
Related: OS#1660
This commit is contained in:
Max 2017-06-02 10:58:26 +02:00
parent a60bb3dd28
commit 9b97b007df
5 changed files with 11 additions and 10 deletions

View File

@ -26,6 +26,12 @@
#include <openbsc/common_cs.h>
/* 16 is the max. number of SI2quater messages according to 3GPP TS 44.018: 4-bit index is used (2#1111 = 10#15) */
#define SI2Q_MAX_NUM 16
/* length in bits (for single SI2quater message) */
#define SI2Q_MAX_LEN 160
#define SI2Q_MIN_LEN 18
struct osmo_bsc_data;
struct osmo_bsc_sccp_con;
@ -486,6 +492,7 @@ struct gsm_bts_trx {
};
#define GSM_BTS_SI2Q(bts) (struct gsm48_system_information_type_2quater *)((bts)->si_buf[SYSINFO_TYPE_2quater])
#define GSM_BTS_HAS_SI(bts, i) ((bts)->si_valid & (1 << i))
#define GSM_BTS_SI(bts, i) (void *)((bts)->si_buf[i])
#define GSM_LCHAN_SI(lchan, i) (void *)((lchan)->si.buf[i])

View File

@ -5,12 +5,6 @@
#include <openbsc/gsm_04_08.h>
#include <osmocom/gsm/sysinfo.h>
/* 16 is the max. number of SI2quater messages according to 3GPP TS 44.018: 4-bit index is used */
#define SI2Q_MAX_NUM 16
/* length in bits (for single SI2quater message) */
#define SI2Q_MAX_LEN 160
#define SI2Q_MIN_LEN 18
/* generate SI1 rest octets */
int rest_octets_si1(uint8_t *data, uint8_t *nch_pos, int is1800_net);
int rest_octets_si2quater(uint8_t *data, struct gsm_bts *bts);

View File

@ -186,7 +186,7 @@ int gsm_bts_trx_set_system_infos(struct gsm_bts_trx *trx)
for (n = 0; n < n_si; n++) {
i = gen_si[n];
if (!(bts->si_valid & (1 << i)))
if (!GSM_BTS_HAS_SI(bts, i))
continue;
rc = rsl_si(trx, i, si_len[i]);
if (rc < 0)

View File

@ -774,13 +774,13 @@ static int generate_si3(enum osmo_sysinfo_type t, struct gsm_bts *bts)
/* allow/disallow DTXu */
gsm48_set_dtx(&si3->cell_options, bts->dtxu, bts->dtxu, true);
if ((bts->si_valid & (1 << SYSINFO_TYPE_2ter))) {
if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2ter)) {
LOGP(DRR, LOGL_INFO, "SI 2ter is included.\n");
si_info.si2ter_indicator = 1;
} else {
si_info.si2ter_indicator = 0;
}
if ((bts->si_valid & (1 << SYSINFO_TYPE_2quater))) {
if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2quater)) {
LOGP(DRR, LOGL_INFO, "SI 2quater is included, based on %zu EARFCNs and %zu UARFCNs.\n",
si2q_earfcn_count(&bts->si_common.si2quater_neigh_list), bts->si_common.uarfcn_length);
si_info.si2quater_indicator = 1;

View File

@ -105,7 +105,7 @@ static inline void gen(struct gsm_bts *bts, const char *s)
r = gsm_generate_si(bts, SYSINFO_TYPE_2quater);
if (r > 0)
printf("generated %s SI2quater [%02u/%02u]: [%d] %s\n",
(bts->si_valid & (1 << SYSINFO_TYPE_2quater)) ? "valid" : "invalid",
GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2quater) ? "valid" : "invalid",
bts->si2q_index, bts->si2q_count, r,
osmo_hexdump((void *)GSM_BTS_SI2Q(bts), GSM_MACBLOCK_LEN));
else