mirror of https://gerrit.osmocom.org/libosmocore
gsm48_decode_lai(): return real integers for mcc/mnc, not hex!
This is to make it orthogonal with gsm48_encode_lai()
This commit is contained in:
parent
e866473f2a
commit
a9250b9ebc
|
@ -285,15 +285,22 @@ void gsm48_generate_lai(struct gsm48_loc_area_id *lai48, uint16_t mcc,
|
|||
lai48->lac = htons(lac);
|
||||
}
|
||||
|
||||
/* Attention: this function retunrs true integers, not hex! */
|
||||
int gsm48_decode_lai(struct gsm48_loc_area_id *lai, uint16_t *mcc,
|
||||
uint16_t *mnc, uint16_t *lac)
|
||||
{
|
||||
*mcc = ((lai->digits[0] & 0x0f) << 8)
|
||||
| (lai->digits[0] & 0xf0)
|
||||
| (lai->digits[1] & 0x0f);
|
||||
*mnc = ((lai->digits[2] & 0x0f) << 8)
|
||||
| (lai->digits[2] & 0xf0)
|
||||
| ((lai->digits[1] & 0xf0) >> 4);
|
||||
*mcc = (lai->digits[0] & 0x0f) * 100
|
||||
+ (lai->digits[0] >> 4) * 10
|
||||
+ (lai->digits[1] & 0x0f);
|
||||
|
||||
if ((lai->digits[1] & 0xf0) == 0xf0) {
|
||||
*mnc = (lai->digits[2] & 0x0f) * 10
|
||||
+ (lai->digits[2] >> 4);
|
||||
} else {
|
||||
*mnc = (lai->digits[2] & 0x0f) * 100
|
||||
+ (lai->digits[2] >> 4) * 10
|
||||
+ (lai->digits[1] >> 4);
|
||||
}
|
||||
*lac = ntohs(lai->lac);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue