Change in libosmocore[master]: gsm48_rest_octets: Add parser for SI4 rest octets

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Thu Oct 15 06:23:23 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/20541 )

Change subject: gsm48_rest_octets: Add parser for SI4 rest octets
......................................................................

gsm48_rest_octets: Add parser for SI4 rest octets

Introduces osmo_gsm48_rest_octets_si4_decode()

Change-Id: I9d6ed06731ae15fdcef1a1f397d6ac2b7b1ca980
Related: OS#3075
---
M include/osmocom/gsm/gsm48_rest_octets.h
M src/gsm/gsm48_rest_octets.c
M src/gsm/libosmogsm.map
3 files changed, 47 insertions(+), 0 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/include/osmocom/gsm/gsm48_rest_octets.h b/include/osmocom/gsm/gsm48_rest_octets.h
index d3bb878..8f143be 100644
--- a/include/osmocom/gsm/gsm48_rest_octets.h
+++ b/include/osmocom/gsm/gsm48_rest_octets.h
@@ -125,3 +125,6 @@
 
 /* Parse SI3 Rest Octets */
 void osmo_gsm48_rest_octets_si3_decode(struct osmo_gsm48_si_ro_info *si3, const uint8_t *data);
+
+/* Parse SI4 Rest Octets */
+void osmo_gsm48_rest_octets_si4_decode(struct osmo_gsm48_si_ro_info *si4, const uint8_t *data, int len);
diff --git a/src/gsm/gsm48_rest_octets.c b/src/gsm/gsm48_rest_octets.c
index 3c1b22a..86f18b7 100644
--- a/src/gsm/gsm48_rest_octets.c
+++ b/src/gsm/gsm48_rest_octets.c
@@ -1022,3 +1022,46 @@
 	else
 		si3->si2quater_indicator = 0;
 }
+
+
+void osmo_gsm48_rest_octets_si4_decode(struct osmo_gsm48_si_ro_info *si4, const uint8_t *data, int len)
+{
+	struct osmo_gsm48_si_selection_params *sp = &si4->selection_params;
+	struct osmo_gsm48_si_power_offset *po = &si4->power_offset;
+	struct osmo_gsm48_si3_gprs_ind *gi = &si4->gprs_ind;
+	struct bitvec bv;
+
+	memset(&bv, 0, sizeof(bv));
+	bv.data = (uint8_t *) data;
+	bv.data_len = len;
+
+	memset(si4, 0, sizeof(*si4));
+
+	/* Optional Selection Parameters */
+	if (bitvec_get_bit_high(&bv) == H) {
+		sp->present = 1;
+		sp->cbq = bitvec_get_uint(&bv, 1);
+		sp->cell_resel_off = bitvec_get_uint(&bv, 6);
+		sp->temp_offs = bitvec_get_uint(&bv, 3);
+		sp->penalty_time = bitvec_get_uint(&bv, 5);
+	} else {
+		sp->present = 0;
+	}
+
+	/* Optional Power Offset */
+	if (bitvec_get_bit_high(&bv) == H) {
+		po->present = 1;
+		po->power_offset = bitvec_get_uint(&bv, 2);
+	} else {
+		po->present = 0;
+	}
+
+	/* GPRS Indicator */
+	if (bitvec_get_bit_high(&bv) == H) {
+		gi->present = 1;
+		gi->ra_colour = bitvec_get_uint(&bv, 3);
+		gi->si13_position = bitvec_get_uint(&bv, 1);
+	} else {
+		gi->present = 0;
+	}
+}
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index dd28a15..031cc20 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -322,6 +322,7 @@
 osmo_gsm48_rest_octets_si4_encode;
 osmo_gsm48_rest_octets_si13_encode;
 osmo_gsm48_rest_octets_si3_decode;
+osmo_gsm48_rest_octets_si4_decode;
 gsm48_rr_msg_name;
 gsm48_cc_state_name;
 gsm48_construct_ra;

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/20541
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I9d6ed06731ae15fdcef1a1f397d6ac2b7b1ca980
Gerrit-Change-Number: 20541
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201015/ad261b19/attachment.htm>


More information about the gerrit-log mailing list