diff options
Diffstat (limited to 'src/target/firmware/layer1/rfch.c')
-rw-r--r-- | src/target/firmware/layer1/rfch.c | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/target/firmware/layer1/rfch.c b/src/target/firmware/layer1/rfch.c index 50331bf5..5627b7e4 100644 --- a/src/target/firmware/layer1/rfch.c +++ b/src/target/firmware/layer1/rfch.c @@ -120,23 +120,33 @@ void rfch_get_params(struct gsm_time *t, { if (l1s.dedicated.type == GSM_DCHAN_NONE) { /* Serving cell only */ - *arfcn_p = l1s.serving_cell.arfcn; - *tsc_p = l1s.serving_cell.bsic & 0x7; - *tn_p = 0; + if (arfcn_p) + *arfcn_p = l1s.serving_cell.arfcn; + + if (tsc_p) + *tsc_p = l1s.serving_cell.bsic & 0x7; + + if (tn_p) + *tn_p = 0; } else { /* Dedicated channel */ - if (l1s.dedicated.h) { - *arfcn_p = rfch_hop_seq_gen(t, - l1s.dedicated.h1.hsn, - l1s.dedicated.h1.maio, - l1s.dedicated.h1.n, - l1s.dedicated.h1.ma); - } else { - *arfcn_p = l1s.dedicated.h0.arfcn; + if (arfcn_p) { + if (l1s.dedicated.h) { + *arfcn_p = rfch_hop_seq_gen(t, + l1s.dedicated.h1.hsn, + l1s.dedicated.h1.maio, + l1s.dedicated.h1.n, + l1s.dedicated.h1.ma); + } else { + *arfcn_p = l1s.dedicated.h0.arfcn; + } } - *tsc_p = l1s.dedicated.tsc; - *tn_p = l1s.dedicated.tn; + if (tsc_p) + *tsc_p = l1s.dedicated.tsc; + + if (tn_p) + *tn_p = l1s.dedicated.tn; } } |