Hi!
AFAICT the code you point out is correct. In your analysis, please also take
into account the function osmo_gsm48_rest_octets_si1_encode() which consumes
the return value of is_dcs() as argument is1800_net.
We always try to keep encoding details out of our decision logic. So, since the
function is called is_dcs(), it shall return 1 == true for DCS bands. Which
value it is encoded as is "hidden" within osmo_gsm48_rest_octets_si1_encode():
if (is1800_net)
bitvec_set_bit(&bv, L);
else
bitvec_set_bit(&bv, H);
The bit written to SI1 is according to the specs you kindly point out:
DCS band = 1800 band = L, and non-DCS = 1900 = H.
Many thanks for your efforts and for pointing out possible bugs in osmocom!
~N