summaryrefslogtreecommitdiffstats
path: root/src/gsm
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-05-25 16:56:35 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-05-27 21:54:12 +0200
commit38e58416b1ab32a7f156d01b166493411f4cffdb (patch)
tree961eac0362d11fc1ef6f39d39f1d53511f43fbf3 /src/gsm
parentb4186824c20cbb5a18963d737f47718aed791e33 (diff)
add gsm0808_cell_id_to_list()
The idea is to be able to add a gsm0808_cell_id to a gsm0808_cell_id_list2: first convert it to a list, then re-use gsm0808_cell_id_list_add(). It will be used by osmo-bsc to manage neighbor-BSS cell identifiers from VTY. Change-Id: Ibf746ac60b1b1e920baf494b396658a5ceabd788
Diffstat (limited to 'src/gsm')
-rw-r--r--src/gsm/gsm0808_utils.c31
-rw-r--r--src/gsm/libosmogsm.map1
2 files changed, 32 insertions, 0 deletions
diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c
index 2c659bba..080fc95b 100644
--- a/src/gsm/gsm0808_utils.c
+++ b/src/gsm/gsm0808_utils.c
@@ -988,6 +988,37 @@ int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm
return added;
}
+/*! Convert a single Cell Identifier to a Cell Identifier List with one entry.
+ * \param dst[out] Overwrite this list.
+ * \param src[in] Set \a dst to contain exactly this item.
+ */
+void gsm0808_cell_id_to_list(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id *src)
+{
+ if (!dst)
+ return;
+ if (!src) {
+ *dst = (struct gsm0808_cell_id_list2){
+ .id_discr = CELL_IDENT_NO_CELL,
+ };
+ return;
+ }
+
+ *dst = (struct gsm0808_cell_id_list2){
+ .id_discr = src->id_discr,
+ .id_list = { src->id },
+ .id_list_len = 1,
+ };
+
+ switch (src->id_discr) {
+ case CELL_IDENT_NO_CELL:
+ case CELL_IDENT_BSS:
+ dst->id_list_len = 0;
+ break;
+ default:
+ break;
+ }
+}
+
/*! Encode Cell Identifier IE (3GPP TS 48.008 3.2.2.17).
* \param[out] msg Message Buffer to which IE is to be appended
* \param[in] ci Cell ID to be encoded
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index c4b1b75e..5a574290 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -177,6 +177,7 @@ gsm0808_enc_cell_id_list2;
gsm0808_dec_cell_id_list;
gsm0808_dec_cell_id_list2;
gsm0808_cell_id_list_add;
+gsm0808_cell_id_to_list;
gsm0808_enc_cell_id;
gsm0808_dec_cell_id;
gsm0808_cell_id_name;