aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2022-11-01 01:09:11 +0700
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2022-11-01 01:09:20 +0700
commit8ec66a7f58d51f3d607403b3a4e82d62533e7a2d (patch)
treea993f16dad2aab4be54acb295eeaf8698dab600f
parentc33ff98d39b00c50dfef8def65f161a87e7f96c6 (diff)
osmo-bts-trx: drop ul_amr_fn_is_cmi() / dl_amr_fn_is_cmi()
The scheduler is now using the lookup tables instead of these functions. The only part using them is the AMR unit test. Change-Id: I1a9c80dd12252e7befe9c9bc8e8f7ee8648b5465
-rw-r--r--src/osmo-bts-trx/sched_utils.h77
-rw-r--r--tests/amr/amr_test.c122
-rw-r--r--tests/amr/amr_test.ok152
3 files changed, 1 insertions, 350 deletions
diff --git a/src/osmo-bts-trx/sched_utils.h b/src/osmo-bts-trx/sched_utils.h
index f76e49bb..95f4a77f 100644
--- a/src/osmo-bts-trx/sched_utils.h
+++ b/src/osmo-bts-trx/sched_utils.h
@@ -22,9 +22,6 @@
#pragma once
#include <stdint.h>
-#include <errno.h>
-#include <stdbool.h>
-#include <osmo-bts/scheduler.h>
extern void *tall_bts_ctx;
@@ -36,77 +33,3 @@ static inline uint16_t compute_ber10k(int n_bits_total, int n_errors)
else
return 10000 * n_errors / n_bits_total;
}
-
-/*! determine whether an uplink AMR block is CMI according to 3GPP TS 45.009.
- * \param[in] fn_begin frame number of the beginning of the block.
- * \returns true in case of CMI; false otherwise. */
-static inline bool ul_amr_fn_is_cmi(uint32_t fn_begin)
-{
- switch (fn_begin % 26) {
- /*! See also: 3GPP TS 45.009, section 3.2.1.3 Transmitter/Receiver Synchronisation */
- /* valid for AHS subslot 0 and AFS: */
- case 0:
- case 8:
- case 17:
- /* valid for AHS subslot 1: */
- case 1:
- case 9:
- case 18:
- return true;
- break;
- /* Complementary values for sanity check */
- /* valid for AHS subslot 0 and AFS: */
- case 4:
- case 13:
- case 21:
- /* valid for AHS subslot 1: */
- case 5:
- case 14:
- case 22:
- return false;
- break;
- default:
- LOGP(DL1P, LOGL_DEBUG,
- "uplink frame number fn_begin=%u does not mark the beginning of a voice block!\n", fn_begin);
- OSMO_ASSERT(false);
- return false;
- break;
- }
-}
-
-/*! determine the whether a downlink AMR block is CMI according to 3GPP TS 45.009.
- * \param[in] fn_begin frame number of the beginning of the block.
- * \returns true in case of CMI; false otherwise. */
-static inline bool dl_amr_fn_is_cmi(uint32_t fn_begin)
-{
- switch (fn_begin % 26) {
- /*! See also: 3GPP TS 45.009, section 3.2.1.3 Transmitter/Receiver Synchronisation */
- /* valid for AHS subslot 0 and AFS: */
- case 4:
- case 13:
- case 21:
- /* valid for AHS subslot 1: */
- case 5:
- case 14:
- case 22:
- return true;
- break;
- /* Complementary values for sanity check */
- /* valid for AHS subslot 0 and AFS: */
- case 0:
- case 8:
- case 17:
- /* valid for AHS subslot 1: */
- case 1:
- case 9:
- case 18:
- return false;
- break;
- default:
- LOGP(DL1P, LOGL_DEBUG,
- "downlink frame number fn_begin=%u does not mark the beginning of a voice block!\n", fn_begin);
- OSMO_ASSERT(false);
- return false;
- break;
- }
-}
diff --git a/tests/amr/amr_test.c b/tests/amr/amr_test.c
index 480ff73d..0fc58e76 100644
--- a/tests/amr/amr_test.c
+++ b/tests/amr/amr_test.c
@@ -27,126 +27,7 @@
#include <stdlib.h>
#include <stdio.h>
-#include "../../src/osmo-bts-trx/sched_utils.h"
-
-struct amr_cmi_test_data {
- /* Frame number that marks the beginning of the voice block */
- uint32_t gsm_fn;
- /* In uplink: True, when the voice block is a CMI block, false otherwise. */
- /* In downlink: False, when the voice block is a CMI block, true otherwise. */
- bool is_cmi;
-};
-
-/* The behavior of AHS in subslot 0 and AFS is the same */
-static const struct amr_cmi_test_data testvec_ahs_h0_and_afs[] = {
- { 0, true },
- { 4, false },
- { 8, true },
- { 13, false },
- { 17, true },
- { 21, false },
- { 26, true },
- { 30, false },
- { 34, true },
- { 39, false },
- { 43, true },
- { 47, false },
- { 52, true },
- { 56, false },
- { 60, true },
- { 65, false },
- { 69, true },
- { 73, false },
- { 78, true },
- { 82, false },
- { 86, true },
- { 91, false },
- { 95, true },
- { 99, false },
-};
-
-static const struct amr_cmi_test_data testvec_ahs_h1[] = {
- { 1, true },
- { 5, false },
- { 9, true },
- { 14, false },
- { 18, true },
- { 22, false },
- { 27, true },
- { 31, false },
- { 35, true },
- { 40, false },
- { 44, true },
- { 48, false },
- { 53, true },
- { 57, false },
- { 61, true },
- { 66, false },
- { 70, true },
- { 74, false },
- { 79, true },
- { 83, false },
- { 87, true },
- { 92, false },
- { 96, true },
- { 100, false },
-};
-
-static void test_amr_cmi_sched(void)
-{
- unsigned int i;
- bool res;
-
- printf("AMR transmission phase (CMI) in relation to GSM FN:\n");
-
- for (i = 0; i < ARRAY_SIZE(testvec_ahs_h0_and_afs); i++) {
- res = ul_amr_fn_is_cmi(testvec_ahs_h0_and_afs[i].gsm_fn);
- printf("Uplink, AMR AHS on HR subslot 0: fn_begin=%u, CMI=%u\n", testvec_ahs_h0_and_afs[i].gsm_fn, res);
- OSMO_ASSERT(res == testvec_ahs_h0_and_afs[i].is_cmi);
- }
-
- printf("\n");
-
- for (i = 0; i < ARRAY_SIZE(testvec_ahs_h0_and_afs); i++) {
- res = dl_amr_fn_is_cmi(testvec_ahs_h0_and_afs[i].gsm_fn);
- printf("Downlink, AMR AHS on HR subslot 0: fn_begin=%u, CMI=%u\n", testvec_ahs_h0_and_afs[i].gsm_fn, res);
- OSMO_ASSERT(res == !testvec_ahs_h0_and_afs[i].is_cmi);
- }
-
- printf("\n");
- printf("\n");
-
- for (i = 0; i < ARRAY_SIZE(testvec_ahs_h1); i++) {
- res = ul_amr_fn_is_cmi(testvec_ahs_h1[i].gsm_fn);
- printf("Uplink, AMR AHS on HR subslot 1: fn_begin=%u, CMI=%u\n", testvec_ahs_h1[i].gsm_fn, res);
- OSMO_ASSERT(res == testvec_ahs_h1[i].is_cmi);
- }
-
- printf("\n");
-
- for (i = 0; i < ARRAY_SIZE(testvec_ahs_h1); i++) {
- res = dl_amr_fn_is_cmi(testvec_ahs_h1[i].gsm_fn);
- printf("Downlink, AMR AHS on HR subslot 1: fn_begin=%u, CMI=%u\n", testvec_ahs_h1[i].gsm_fn, res);
- OSMO_ASSERT(res == !testvec_ahs_h1[i].is_cmi);
- }
-
- printf("\n");
- printf("\n");
-
- for (i = 0; i < ARRAY_SIZE(testvec_ahs_h0_and_afs); i++) {
- res = ul_amr_fn_is_cmi(testvec_ahs_h0_and_afs[i].gsm_fn);
- printf("Uplink, AMR AFS: fn_begin=%u, CMI=%u\n", testvec_ahs_h0_and_afs[i].gsm_fn, res);
- OSMO_ASSERT(res == testvec_ahs_h0_and_afs[i].is_cmi);
- }
-
- printf("\n");
-
- for (i = 0; i < ARRAY_SIZE(testvec_ahs_h0_and_afs); i++) {
- res = dl_amr_fn_is_cmi(testvec_ahs_h0_and_afs[i].gsm_fn);
- printf("Downlink, AMR AFS: fn_begin=%u, CMI=%u\n", testvec_ahs_h0_and_afs[i].gsm_fn, res);
- OSMO_ASSERT(res == !testvec_ahs_h0_and_afs[i].is_cmi);
- }
-}
+#include <errno.h>
static void test_amr_parse_mr_conf(void)
{
@@ -185,7 +66,6 @@ int main(int argc, char **argv)
log_set_print_level(osmo_stderr_target, 1);
log_set_use_color(osmo_stderr_target, 0);
- test_amr_cmi_sched();
test_amr_parse_mr_conf();
return EXIT_SUCCESS;
}
diff --git a/tests/amr/amr_test.ok b/tests/amr/amr_test.ok
index f0d1830e..921e8b9e 100644
--- a/tests/amr/amr_test.ok
+++ b/tests/amr/amr_test.ok
@@ -1,155 +1,3 @@
-AMR transmission phase (CMI) in relation to GSM FN:
-Uplink, AMR AHS on HR subslot 0: fn_begin=0, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=4, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=8, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=13, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=17, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=21, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=26, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=30, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=34, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=39, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=43, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=47, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=52, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=56, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=60, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=65, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=69, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=73, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=78, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=82, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=86, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=91, CMI=0
-Uplink, AMR AHS on HR subslot 0: fn_begin=95, CMI=1
-Uplink, AMR AHS on HR subslot 0: fn_begin=99, CMI=0
-
-Downlink, AMR AHS on HR subslot 0: fn_begin=0, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=4, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=8, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=13, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=17, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=21, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=26, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=30, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=34, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=39, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=43, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=47, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=52, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=56, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=60, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=65, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=69, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=73, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=78, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=82, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=86, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=91, CMI=1
-Downlink, AMR AHS on HR subslot 0: fn_begin=95, CMI=0
-Downlink, AMR AHS on HR subslot 0: fn_begin=99, CMI=1
-
-
-Uplink, AMR AHS on HR subslot 1: fn_begin=1, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=5, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=9, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=14, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=18, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=22, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=27, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=31, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=35, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=40, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=44, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=48, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=53, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=57, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=61, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=66, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=70, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=74, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=79, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=83, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=87, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=92, CMI=0
-Uplink, AMR AHS on HR subslot 1: fn_begin=96, CMI=1
-Uplink, AMR AHS on HR subslot 1: fn_begin=100, CMI=0
-
-Downlink, AMR AHS on HR subslot 1: fn_begin=1, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=5, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=9, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=14, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=18, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=22, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=27, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=31, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=35, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=40, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=44, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=48, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=53, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=57, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=61, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=66, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=70, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=74, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=79, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=83, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=87, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=92, CMI=1
-Downlink, AMR AHS on HR subslot 1: fn_begin=96, CMI=0
-Downlink, AMR AHS on HR subslot 1: fn_begin=100, CMI=1
-
-
-Uplink, AMR AFS: fn_begin=0, CMI=1
-Uplink, AMR AFS: fn_begin=4, CMI=0
-Uplink, AMR AFS: fn_begin=8, CMI=1
-Uplink, AMR AFS: fn_begin=13, CMI=0
-Uplink, AMR AFS: fn_begin=17, CMI=1
-Uplink, AMR AFS: fn_begin=21, CMI=0
-Uplink, AMR AFS: fn_begin=26, CMI=1
-Uplink, AMR AFS: fn_begin=30, CMI=0
-Uplink, AMR AFS: fn_begin=34, CMI=1
-Uplink, AMR AFS: fn_begin=39, CMI=0
-Uplink, AMR AFS: fn_begin=43, CMI=1
-Uplink, AMR AFS: fn_begin=47, CMI=0
-Uplink, AMR AFS: fn_begin=52, CMI=1
-Uplink, AMR AFS: fn_begin=56, CMI=0
-Uplink, AMR AFS: fn_begin=60, CMI=1
-Uplink, AMR AFS: fn_begin=65, CMI=0
-Uplink, AMR AFS: fn_begin=69, CMI=1
-Uplink, AMR AFS: fn_begin=73, CMI=0
-Uplink, AMR AFS: fn_begin=78, CMI=1
-Uplink, AMR AFS: fn_begin=82, CMI=0
-Uplink, AMR AFS: fn_begin=86, CMI=1
-Uplink, AMR AFS: fn_begin=91, CMI=0
-Uplink, AMR AFS: fn_begin=95, CMI=1
-Uplink, AMR AFS: fn_begin=99, CMI=0
-
-Downlink, AMR AFS: fn_begin=0, CMI=0
-Downlink, AMR AFS: fn_begin=4, CMI=1
-Downlink, AMR AFS: fn_begin=8, CMI=0
-Downlink, AMR AFS: fn_begin=13, CMI=1
-Downlink, AMR AFS: fn_begin=17, CMI=0
-Downlink, AMR AFS: fn_begin=21, CMI=1
-Downlink, AMR AFS: fn_begin=26, CMI=0
-Downlink, AMR AFS: fn_begin=30, CMI=1
-Downlink, AMR AFS: fn_begin=34, CMI=0
-Downlink, AMR AFS: fn_begin=39, CMI=1
-Downlink, AMR AFS: fn_begin=43, CMI=0
-Downlink, AMR AFS: fn_begin=47, CMI=1
-Downlink, AMR AFS: fn_begin=52, CMI=0
-Downlink, AMR AFS: fn_begin=56, CMI=1
-Downlink, AMR AFS: fn_begin=60, CMI=0
-Downlink, AMR AFS: fn_begin=65, CMI=1
-Downlink, AMR AFS: fn_begin=69, CMI=0
-Downlink, AMR AFS: fn_begin=73, CMI=1
-Downlink, AMR AFS: fn_begin=78, CMI=0
-Downlink, AMR AFS: fn_begin=82, CMI=1
-Downlink, AMR AFS: fn_begin=86, CMI=0
-Downlink, AMR AFS: fn_begin=91, CMI=1
-Downlink, AMR AFS: fn_begin=95, CMI=0
-Downlink, AMR AFS: fn_begin=99, CMI=1
amr_parse_mr_conf() <- 20 a5 0d 46 52 54
amr_parse_mr_conf() -> num_modes=4
Mode[0] = 0/13/4