From e40b9637ea9f166ed4e574550c05b429b1099e39 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Thu, 31 Oct 2019 15:38:30 +0100 Subject: [PATCH] gsm: gsm_utils: Fix return type of API ms_class_gmsk_dbm() and add unit tests Only known user of API is in osmocom-bb and it compiles fine after the change. Related: OS#4244 Change-Id: Ia10345008b3aca50b30482ef3b852b03eca71995 --- include/osmocom/gsm/gsm_utils.h | 3 +-- src/gsm/gsm_utils.c | 4 ++-- tests/gsm0408/gsm0408_test.c | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/include/osmocom/gsm/gsm_utils.h b/include/osmocom/gsm/gsm_utils.h index 38a3f6e08..de6343487 100644 --- a/include/osmocom/gsm/gsm_utils.h +++ b/include/osmocom/gsm/gsm_utils.h @@ -115,8 +115,7 @@ int gsm_septet_encode(uint8_t *result, const char *data); uint8_t gsm_get_octet_len(const uint8_t sept_len); int gsm_7bit_decode_n_hdr(char *decoded, size_t n, const uint8_t *user_data, uint8_t length, uint8_t ud_hdr_ind); -unsigned int ms_class_gmsk_dbm(enum gsm_band band, int ms_class); - +int ms_class_gmsk_dbm(enum gsm_band band, int ms_class); int ms_pwr_ctl_lvl(enum gsm_band band, unsigned int dbm); int ms_pwr_dbm(enum gsm_band band, uint8_t lvl); diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index 365920fa5..ae77a9dca 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -501,8 +501,8 @@ size_t gsm0858_rsl_ul_meas_enc(struct gsm_meas_rep_unidir *mru, bool dtxd_used, /*! Convert power class to dBm according to GSM TS 05.05 * \param[in] band GSM frequency band * \param[in] class GSM power class - * \returns maximum transmit power of power class in dBm */ -unsigned int ms_class_gmsk_dbm(enum gsm_band band, int class) + * \returns maximum transmit power of power class in dBm, negative on error */ +int ms_class_gmsk_dbm(enum gsm_band band, int class) { switch (band) { case GSM_BAND_450: diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c index 2488024a7..96178237c 100644 --- a/tests/gsm0408/gsm0408_test.c +++ b/tests/gsm0408/gsm0408_test.c @@ -1136,6 +1136,7 @@ static void test_si_range_helpers() static void test_power_ctrl() { int8_t rc8; + int rc; rc8 = osmo_gsm48_rfpowercap2powerclass(GSM_BAND_850, 0x00); VERIFY(rc8, ==, 1); @@ -1153,6 +1154,25 @@ static void test_power_ctrl() VERIFY(rc8, <, 0); rc8 = osmo_gsm48_rfpowercap2powerclass(GSM_BAND_900, 0xf2); VERIFY(rc8, <, 0); + + rc = ms_class_gmsk_dbm(GSM_BAND_850, 0); + VERIFY(rc, <, 0); + rc = ms_class_gmsk_dbm(GSM_BAND_850, 1); + VERIFY(rc, ==, 43); + rc = ms_class_gmsk_dbm(GSM_BAND_900, 3); + VERIFY(rc, ==, 37); + rc = ms_class_gmsk_dbm(GSM_BAND_1800, 2); + VERIFY(rc, ==, 24); + rc = ms_class_gmsk_dbm(GSM_BAND_1800, 3); + VERIFY(rc, ==, 36); + rc = ms_class_gmsk_dbm(GSM_BAND_1900, 3); + VERIFY(rc, ==, 33); + rc = ms_class_gmsk_dbm(GSM_BAND_1900, 4); + VERIFY(rc, <, 0); + rc = ms_class_gmsk_dbm(GSM_BAND_900, 5); + VERIFY(rc, ==, 29); + rc = ms_class_gmsk_dbm(GSM_BAND_900, 6); + VERIFY(rc, <, 0); } int main(int argc, char **argv)