[layer23] Fixed conditions for complete set of SYSTEM INFORMATION

This commit is contained in:
Andreas.Eversberg 2010-10-24 12:55:31 +00:00
parent 5e819e682f
commit fbbb3ac953
2 changed files with 8 additions and 21 deletions

View File

@ -1990,11 +1990,7 @@ struct gsm322_ba_list *gsm322_cs_sysinfo_sacch(struct osmocom_ms *ms)
}
/* collect system information received during dedicated mode */
if (s->si5
&& (!s->nb_ext_ind_si5
|| (s->si5bis && s->nb_ext_ind_si5 && !s->nb_ext_ind_si5bis)
|| (s->si5bis && s->si5ter && s->nb_ext_ind_si5
&& s->nb_ext_ind_si5bis))) {
if (s->si5 && (!s->nb_ext_ind_si5 || s->si5bis)) {
/* find or create ba list */
ba = gsm322_find_ba_list(cs, s->mcc, s->mnc);
if (!ba) {
@ -2189,18 +2185,14 @@ static int gsm322_c_scan_sysinfo_bcch(struct osmocom_ms *ms, struct msgb *msg)
|| gm->sysinfo == GSM48_MT_RR_SYSINFO_2ter)
&& s->si1
&& s->si2
&& (!s->nb_ext_ind_si2
|| (s->si2bis && s->nb_ext_ind_si2 && !s->nb_ext_ind_si2bis)
|| (s->si2bis && s->si2ter && s->nb_ext_ind_si2
&& s->nb_ext_ind_si2bis)))
&& (!s->nb_ext_ind_si2 || s->si2bis)
&& (!s->si2ter_ind || s->si2ter))
gsm322_store_ba_list(cs, s);
/* all relevant system informations received */
if (s->si1 && s->si2 && s->si3
&& (!s->nb_ext_ind_si2
|| (s->si2bis && s->nb_ext_ind_si2 && !s->nb_ext_ind_si2bis)
|| (s->si2bis && s->si2ter && s->nb_ext_ind_si2
&& s->nb_ext_ind_si2bis))) {
&& (!s->nb_ext_ind_si2 || s->si2bis)
&& (!s->si2ter_ind || s->si2ter)) {
LOGP(DCS, LOGL_DEBUG, "Received relevant sysinfo.\n");
/* stop timer */
stop_cs_timer(cs);

View File

@ -2551,15 +2551,11 @@ static int gsm48_rr_tx_meas_rep(struct osmocom_ms *ms)
/* check if SI5* is completely received, check BA-IND */
if (s->si5
&& (!s->nb_ext_ind_si5
|| (s->si5bis && s->nb_ext_ind_si5 && !s->nb_ext_ind_si5bis)
|| (s->si5bis && s->si5ter && s->nb_ext_ind_si5
&& s->nb_ext_ind_si5bis))) {
&& (!s->nb_ext_ind_si5 || s->si5bis)) {
rep_ba = s->nb_ba_ind_si5;
if ((s->si5bis && s->nb_ext_ind_si5
&& s->nb_ba_ind_si5bis != rep_ba)
|| (s->si5bis && s->si5ter && s->nb_ext_ind_si5
&& s->nb_ext_ind_si5bis && s->nb_ba_ind_si5ter != rep_ba)) {
|| (s->si5ter && s->nb_ba_ind_si5ter != rep_ba)) {
LOGP(DRR, LOGL_NOTICE, "BA-IND missmatch on SI5*");
} else
rep_valid = 1;
@ -2581,8 +2577,7 @@ static int gsm48_rr_tx_meas_rep(struct osmocom_ms *ms)
int i, index;
/* multiband reporting, if not: 0 = normal reporting */
if (s->si5 && s->si5bis && s->si5ter && s->nb_ext_ind_si5
&& s->nb_ext_ind_si5bis)
if (s->si5ter)
multi_rep = s->nb_multi_rep_si5ter;
/* get 6 strongest measurements */