Hi,
On Wed, 2016-04-06 at 14:20 +0200, Neels Hofmeyr wrote:
Hi list,
I've noted a subtle difference in specifications for BCD-coding MCC and MNC.
I'll illustrate by encoding the two sets MCC 123, MNC 45 and MCC 123, MNC 456
In Figure 10.5.3/3GPP TS 04.08, we have both the third digits in the second byte, i.e. above are encoded as: 21 f3 54 and 21 63 54 respectively
In 3GPP TS 25.413 in 9.2.3.55 PLMN Identity, I see a very similar definition for BCD coding, but it omits the detail to put the last MNC digit into the second byte. So, by omittance, it defines a different coding from 04.08: 21 f3 54 (same) but 21 43 65 respectively.
This is what the hnb does. A PLMNID of 901123 results in 09 11 32 being transmitted in HNBAP. PLMNID of 90123 corresponds to 09 f1 32
The RANAP fields for LAI and SAI are encoded the same.
This strikes me as pretty odd, and I wonder whether the spec author overlooked this detail. The definition in the RANAP spec is also squeezed into the rightmost column of the IE description table, so it looks like a "quick hack".
Yet another fun quirk...
I would like to replace the ranap_parse_lai() implementation with gsm48_mcc_mnc_from_bcd() to have less code duplication, and hence I hit this weird difference.
Does anyone have an idea how I should handle this?
Since the coding differs I wouldn't try to merge the implementations. I'd think that it would obscure more than it helps.
Regards Daniel