From Max msuraev@sysmocom.de:
Max has uploaded a new change for review.
Change subject: Add function to make Uplink Measurement ......................................................................
Add function to make Uplink Measurement
It assembles RSL Uplink Measurement IE according to 3GPP TS 08.58 §9.3.25. The function is based on lchan_build_rsl_ul_meas() from OsmoBTS but optionally includes DTX information.
Change-Id: Ib37107bcc9909e5105ea711de42d3fb1db7e8d9e --- M include/osmocom/gsm/meas_rep.h M src/gsm/gsm_utils.c M src/gsm/libosmogsm.map 3 files changed, 26 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/44/44/1
diff --git a/include/osmocom/gsm/meas_rep.h b/include/osmocom/gsm/meas_rep.h index 09c2c4f..4eaeb72 100644 --- a/include/osmocom/gsm/meas_rep.h +++ b/include/osmocom/gsm/meas_rep.h @@ -1,6 +1,7 @@ #pragma once
#include <stdint.h> +#include <stdbool.h>
/* RX Level and RX Quality */ struct gsm_rx_lev_qual { @@ -24,3 +25,6 @@ MEAS_REP_UL_RXQUAL_FULL, MEAS_REP_UL_RXQUAL_SUB, }; + +size_t gsm0858_rsl_ul_meas(struct gsm_meas_rep_unidir *mru, bool dtxd_used, + uint8_t *buf); diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index 5002947..665d4ef 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -66,11 +66,13 @@ #include <osmocom/core/utils.h> #include <osmocom/core/bitvec.h> #include <osmocom/gsm/gsm_utils.h> +#include <osmocom/gsm/meas_rep.h> #include <osmocom/gsm/protocol/gsm_04_08.h>
#include <stdlib.h> #include <stdint.h> #include <string.h> +#include <stdbool.h> #include <stdio.h> #include <errno.h> #include <ctype.h> @@ -335,6 +337,24 @@ return y; }
+/*! \brief Build the RSL uplink measurement IE (3GPP TS 08.58 § 9.3.25) + * \param[in] mru Unidirectional measumrement report structure + * \param[in] dtxd_used Indicates if DTXd was used during measurement report + * period + * \param[out] buf Pre-allocated bufer for storing IE + * \returns Number of bytes filled in buf + */ +size_t gsm0858_rsl_ul_meas(struct gsm_meas_rep_unidir *mru, bool dtxd_used, + uint8_t *buf) +{ + buf[0] = dtxd_used ? (1 << 6) : 0; + buf[0] |= (mru->full.rx_lev & 0x3f); + buf[1] = (mru->sub.rx_lev & 0x3f); + buf[2] = ((mru->full.rx_qual & 7) << 3) | (mru->sub.rx_qual & 7); + + return 3; +} + /* convert power class to dBm according to GSM TS 05.05 */ unsigned int ms_class_gmsk_dbm(enum gsm_band band, int class) { diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index e0d9dcb..4c0d054 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -92,6 +92,8 @@ gsm0808_create_sapi_reject; gsm0808_prepend_dtap_header;
+gsm0858_rsl_ul_meas; + gsm338_get_sms_alphabet;
gsm340_gen_oa;
From Harald Welte laforge@gnumonks.org:
Harald Welte has posted comments on this change.
Change subject: Add function to make Uplink Measurement ......................................................................
Patch Set 1:
(1 comment)
https://gerrit.osmocom.org/#/c/44/1/include/osmocom/gsm/meas_rep.h File include/osmocom/gsm/meas_rep.h:
Line 29: size_t gsm0858_rsl_ul_meas(struct gsm_meas_rep_unidir *mru, bool dtxd_used, In terms of naming, I would again like to see something more explicit. The name tells us the function is related to RSL uplink measurement, but what does it do? encode? decode? ...
So gsm0858_rsl_ul_meas_enc or .._enc_ul_meas would be more applicable.
From Max msuraev@sysmocom.de:
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
to look at the new patch set (#2).
Change subject: Add function to make Uplink Measurement ......................................................................
Add function to make Uplink Measurement
It assembles RSL Uplink Measurement IE according to 3GPP TS 08.58 §9.3.25. The function is based on lchan_build_rsl_ul_meas() from OsmoBTS but optionally includes DTX information.
Change-Id: Ib37107bcc9909e5105ea711de42d3fb1db7e8d9e --- M include/osmocom/gsm/meas_rep.h M src/gsm/gsm_utils.c M src/gsm/libosmogsm.map 3 files changed, 26 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/44/44/2
From Harald Welte laforge@gnumonks.org:
Harald Welte has posted comments on this change.
Change subject: Add function to make Uplink Measurement ......................................................................
Patch Set 2: Code-Review+2
From Neels Hofmeyr nhofmeyr@sysmocom.de:
Neels Hofmeyr has posted comments on this change.
Change subject: Add function to make Uplink Measurement ......................................................................
Patch Set 2:
(1 comment)
https://gerrit.osmocom.org/#/c/44/2/src/gsm/gsm_utils.c File src/gsm/gsm_utils.c:
Line 341: * \param[in] mru Unidirectional measumrement report structure typo measumrement
From Max msuraev@sysmocom.de:
Hello Harald Welte, Jenkins Builder,
I'd like you to reexamine a change. Please visit
to look at the new patch set (#3).
Change subject: Add function to make Uplink Measurement ......................................................................
Add function to make Uplink Measurement
It assembles RSL Uplink Measurement IE according to 3GPP TS 08.58 §9.3.25. The function is based on lchan_build_rsl_ul_meas() from OsmoBTS but optionally includes DTX information.
Change-Id: Ib37107bcc9909e5105ea711de42d3fb1db7e8d9e --- M include/osmocom/gsm/meas_rep.h M src/gsm/gsm_utils.c M src/gsm/libosmogsm.map 3 files changed, 26 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/44/44/3
From Harald Welte laforge@gnumonks.org:
Harald Welte has posted comments on this change.
Change subject: Add function to make Uplink Measurement ......................................................................
Patch Set 4: Code-Review+2
From Holger Freyther holger@freyther.de:
Holger Freyther has submitted this change and it was merged.
Change subject: Add function to make Uplink Measurement ......................................................................
Add function to make Uplink Measurement
It assembles RSL Uplink Measurement IE according to 3GPP TS 08.58 §9.3.25. The function is based on lchan_build_rsl_ul_meas() from OsmoBTS but optionally includes DTX information.
Change-Id: Ib37107bcc9909e5105ea711de42d3fb1db7e8d9e Reviewed-on: https://gerrit.osmocom.org/44 Tested-by: Jenkins Builder Reviewed-by: Harald Welte laforge@gnumonks.org --- M include/osmocom/gsm/meas_rep.h M src/gsm/gsm_utils.c M src/gsm/libosmogsm.map 3 files changed, 26 insertions(+), 0 deletions(-)
Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified
diff --git a/include/osmocom/gsm/meas_rep.h b/include/osmocom/gsm/meas_rep.h index 09c2c4f..90c981d 100644 --- a/include/osmocom/gsm/meas_rep.h +++ b/include/osmocom/gsm/meas_rep.h @@ -1,6 +1,7 @@ #pragma once
#include <stdint.h> +#include <stdbool.h>
/* RX Level and RX Quality */ struct gsm_rx_lev_qual { @@ -24,3 +25,6 @@ MEAS_REP_UL_RXQUAL_FULL, MEAS_REP_UL_RXQUAL_SUB, }; + +size_t gsm0858_rsl_ul_meas_enc(struct gsm_meas_rep_unidir *mru, bool dtxd_used, + uint8_t *buf); diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index 5002947..7365ab7 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -66,11 +66,13 @@ #include <osmocom/core/utils.h> #include <osmocom/core/bitvec.h> #include <osmocom/gsm/gsm_utils.h> +#include <osmocom/gsm/meas_rep.h> #include <osmocom/gsm/protocol/gsm_04_08.h>
#include <stdlib.h> #include <stdint.h> #include <string.h> +#include <stdbool.h> #include <stdio.h> #include <errno.h> #include <ctype.h> @@ -335,6 +337,24 @@ return y; }
+/*! \brief Build the RSL uplink measurement IE (3GPP TS 08.58 § 9.3.25) + * \param[in] mru Unidirectional measurement report structure + * \param[in] dtxd_used Indicates if DTXd was used during measurement report + * period + * \param[out] buf Pre-allocated bufer for storing IE + * \returns Number of bytes filled in buf + */ +size_t gsm0858_rsl_ul_meas_enc(struct gsm_meas_rep_unidir *mru, bool dtxd_used, + uint8_t *buf) +{ + buf[0] = dtxd_used ? (1 << 6) : 0; + buf[0] |= (mru->full.rx_lev & 0x3f); + buf[1] = (mru->sub.rx_lev & 0x3f); + buf[2] = ((mru->full.rx_qual & 7) << 3) | (mru->sub.rx_qual & 7); + + return 3; +} + /* convert power class to dBm according to GSM TS 05.05 */ unsigned int ms_class_gmsk_dbm(enum gsm_band band, int class) { diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 834e5d6..1e2d323 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -92,6 +92,8 @@ gsm0808_create_sapi_reject; gsm0808_prepend_dtap_header;
+gsm0858_rsl_ul_meas_enc; + gsm338_get_sms_alphabet;
gsm340_gen_oa;