aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-03-22 14:04:30 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-04-13 05:27:02 +0200
commit43496206c18b783a0c82faacd964819f8ee2e837 (patch)
tree1de80c9ea275e109e567678c8bc3532db7eacfe9
parentc62fc2d20f433117a123ec43862263c02013b460 (diff)
add osmo_cgi_name()
This will be used by cell idenitifier list code, like upcoming neighbor_ident VTY in osmo-bsc and regression tests. Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf
-rw-r--r--include/osmocom/gsm/gsm23003.h2
-rw-r--r--src/gsm/gsm23003.c27
-rw-r--r--src/gsm/libosmogsm.map2
3 files changed, 31 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm23003.h b/include/osmocom/gsm/gsm23003.h
index 02e79714..fd4f3694 100644
--- a/include/osmocom/gsm/gsm23003.h
+++ b/include/osmocom/gsm/gsm23003.h
@@ -99,6 +99,8 @@ const char *osmo_mnc_name(uint16_t mnc, bool mnc_3_digits);
const char *osmo_plmn_name(const struct osmo_plmn_id *plmn);
const char *osmo_plmn_name2(const struct osmo_plmn_id *plmn);
const char *osmo_lai_name(const struct osmo_location_area_id *lai);
+const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi);
+const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi);
void osmo_plmn_to_bcd(uint8_t *bcd_dst, const struct osmo_plmn_id *plmn);
void osmo_plmn_from_bcd(const uint8_t *bcd_src, struct osmo_plmn_id *plmn);
diff --git a/src/gsm/gsm23003.c b/src/gsm/gsm23003.c
index 574400de..2c3b21e6 100644
--- a/src/gsm/gsm23003.c
+++ b/src/gsm/gsm23003.c
@@ -133,6 +133,33 @@ const char *osmo_lai_name(const struct osmo_location_area_id *lai)
return buf;
}
+static const char *_cgi_name(const struct osmo_cell_global_id *cgi, char *buf, size_t buflen)
+{
+ snprintf(buf, buflen, "%s-%u", osmo_lai_name(&cgi->lai), cgi->cell_identity);
+ return buf;
+}
+
+/*! Return MCC-MNC-LAC-CI as string, in a static buffer.
+ * \param[in] cgi CGI to encode.
+ * \returns Static string buffer.
+ */
+const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi)
+{
+ static char buf[32];
+ return _cgi_name(cgi, buf, sizeof(buf));
+}
+
+/*! Same as osmo_cgi_name(), but uses a different static buffer.
+ * Useful for printing two distinct CGIs in the same printf format.
+ * \param[in] cgi CGI to encode.
+ * \returns Static string buffer.
+ */
+const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi)
+{
+ static char buf[32];
+ return _cgi_name(cgi, buf, sizeof(buf));
+}
+
static void to_bcd(uint8_t *bcd, uint16_t val)
{
bcd[2] = val % 10;
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 31717d55..a6ea47dd 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -277,6 +277,8 @@ osmo_plmn_name;
osmo_plmn_name2;
osmo_lai_name;
osmo_rai_name;
+osmo_cgi_name;
+osmo_cgi_name2;
osmo_mnc_from_str;
osmo_mnc_cmp;
osmo_plmn_cmp;