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
This commit is contained in:
parent
c33ff98d39
commit
8ec66a7f58
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue