summaryrefslogtreecommitdiffstats
path: root/src/gsm
diff options
context:
space:
mode:
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;