lynxis lazus has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/37831?usp=email )
Change subject: add convert functions for old gprs_ra_id and the new osmo_routing_area_id ......................................................................
add convert functions for old gprs_ra_id and the new osmo_routing_area_id
There are some parts which still depend on the old gprs_ra_id (e.g. BSSGP, Iu).
Related: OS#6536 Change-Id: Iaef54cac541913534af00f40483723e9952a6807 --- M TODO-RELEASE M include/osmocom/gsm/gsm48.h M src/gsm/gsm48.c M src/gsm/libosmogsm.map 4 files changed, 33 insertions(+), 0 deletions(-)
Approvals: daniel: Looks good to me, but someone else must approve Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve lynxis lazus: Looks good to me, approved
diff --git a/TODO-RELEASE b/TODO-RELEASE index 904d9e0..8a1e0dc 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -8,3 +8,4 @@ # If any interfaces have been removed or changed since the last public release: c:r:0. #library what description / commit summary line gb ADD add bssgp_parse_cell_id2/bssgp_create_cell_id2 +gsm ADD add osmo_rai_to_gprs/gprs_rai_to_osmo diff --git a/include/osmocom/gsm/gsm48.h b/include/osmocom/gsm/gsm48.h index 00fb6f4..d36b85c 100644 --- a/include/osmocom/gsm/gsm48.h +++ b/include/osmocom/gsm/gsm48.h @@ -42,6 +42,8 @@ const char *osmo_rai_name(const struct gprs_ra_id *rai); char *osmo_rai_name_buf(char *buf, size_t buf_len, const struct gprs_ra_id *rai); char *osmo_rai_name_c(const void *ctx, const struct gprs_ra_id *rai); +void osmo_rai_to_gprs(struct gprs_ra_id *dest, const struct osmo_routing_area_id *src); +void gprs_rai_to_osmo(struct osmo_routing_area_id *dest, const struct gprs_ra_id *src);
int gsm48_decode_lai(struct gsm48_loc_area_id *lai, uint16_t *mcc, uint16_t *mnc, uint16_t *lac) diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index 64b1765..1201595 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -222,6 +222,34 @@ return osmo_rai_name_buf(buf, 32, rai); }
+/*! Convert osmo_routing_area_id (new) into gprs_ra_id (old) */ +void osmo_rai_to_gprs(struct gprs_ra_id *dest, const struct osmo_routing_area_id *src) +{ + OSMO_ASSERT(src); + OSMO_ASSERT(dest); + + dest->mcc = src->lac.plmn.mcc; + dest->mnc = src->lac.plmn.mnc; + dest->mnc_3_digits = src->lac.plmn.mnc_3_digits; + + dest->lac = src->lac.lac; + dest->rac = src->rac; +} + +/*! Convert gprs_ra_id (old) into osmo_routing_area_id (new) */ +void gprs_rai_to_osmo(struct osmo_routing_area_id *dest, const struct gprs_ra_id *src) +{ + OSMO_ASSERT(src); + OSMO_ASSERT(dest); + + dest->lac.plmn.mcc = src->mcc; + dest->lac.plmn.mnc = src->mnc; + dest->lac.plmn.mnc_3_digits = src->mnc_3_digits; + + dest->lac.lac = src->lac; + dest->rac = src->rac; +} + /* FIXME: convert to value_string */ static const char *cc_state_names[32] = { "NULL", diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 2c4c621..3bc8309 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -487,6 +487,8 @@ osmo_rai_name2; osmo_rai_name2_buf; osmo_rai_name2_c; +osmo_rai_to_gprs; +gprs_rai_to_osmo; osmo_cgi_cmp; osmo_cgi_name; osmo_cgi_name_buf;