improve test output for gsm0808_sc_cfg_from_gsm48_mr_cfg()

Improve the test output to make it easier to confirm that the fix in an
upcoming patch (I900fda192742fa8f6dd54e9131ef1704b14cc41a) is indeed
correct.

Spell out each S0-S15 mode along with the bitmask.
Rejigger the format of printing the mr_cfg flags, so that the AMR modes
line up vertically with the S0-S15 modes.

This clearly shows that the mr_cfg <-> s15_s0 conversion is wrong.
For example, in this test only 4k75 is enabled, yet we allow configs
featuring 6 other rates:

 Input:
  cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
      m4_75=1 ------- ------- ------- ------- ------- ------- -------
 Result (fr):
  S15-S0 = 0x5701 = 0b0101011100000001
  S0   4.75
  S8   4.75            5.90
  S9   4.75            5.90    6.70
  S10  4.75            5.90    6.70    7.40
  S12  4.75            5.90    6.70                    10.2
  S14  4.75            5.90                    7.95            12.2
 Result (hr):
  S15-S0 = 0x0701 = 0b0000011100000001
  S0   4.75
  S8   4.75            5.90
  S9   4.75            5.90    6.70
  S10  4.75            5.90    6.70    7.40

In this test, an s15_s0 featuring a configuration with 6k70 allowed does
not result in m6_70 == 1:

 Input:
  S15-S0 = 0x0c12 = 0b0000110000010010
  S1   4.75            5.90            7.40                    12.2
  S4                                   7.40
  S10  4.75            5.90    6.70    7.40
  S11  4.75            5.90    6.70    7.40
 Output:
  cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
      m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1

Almost every conversion contains errors like this.

Related: I900fda192742fa8f6dd54e9131ef1704b14cc41a
Change-Id: Iec7c491d9fadd37d9e43fbaac8e709c2029f8a8e
This commit is contained in:
Neels Hofmeyr 2022-09-07 00:37:08 +02:00 committed by neels
parent 593d20d637
commit f2c0fccb58
2 changed files with 462 additions and 418 deletions

View File

@ -2026,29 +2026,81 @@ static void test_gsm0808_enc_dec_cell_id_global_ps(void)
msgb_free(msg_cgi_ps); msgb_free(msg_cgi_ps);
} }
static void print_s15_s0(uint16_t s15_s0, bool full_rate)
{
int i;
printf(" S15-S0 = 0x%04x = 0b" OSMO_BIN_SPEC OSMO_BIN_SPEC "\n", s15_s0,
OSMO_BIN_PRINT(s15_s0 >> 8), OSMO_BIN_PRINT(s15_s0));
for (i = 0; i < 16; i++) {
uint8_t modes;
int m;
int space;
if (!(s15_s0 & (1 << i)))
continue;
space = 6;
if (i < 10)
space++;
printf(" S%d", i);
modes = gsm0808_amr_modes_from_cfg[full_rate ? 1 : 0][i];
if (!modes) {
printf(" (empty)\n");
continue;
}
for (m = 0; m < 8; m++) {
if (!(modes & (1 << m))) {
/* avoid whitespace at line ends -- accumulate whitespace width until there is
* non-whitespace to actually be printed.*/
space += 8;
continue;
}
printf("%*s", space, gsm0808_amr_mode_name(m));
space = 8;
}
printf("\n");
}
}
static void print_mr_cfg(const struct gsm48_multi_rate_conf *cfg)
{
printf(" cfg.smod=%u spare=%u icmi=%u nscb=%u ver=%u\n",
cfg->smod, cfg->spare, cfg->icmi, cfg->nscb, cfg->ver);
printf(" ");
#define PRINT_MODE_BIT(NAME) do { \
if (cfg->NAME) \
printf(" " #NAME "=1"); \
else \
printf(" -------"); \
} while (0)
PRINT_MODE_BIT(m4_75);
PRINT_MODE_BIT(m5_15);
PRINT_MODE_BIT(m5_90);
PRINT_MODE_BIT(m6_70);
PRINT_MODE_BIT(m7_40);
PRINT_MODE_BIT(m7_95);
PRINT_MODE_BIT(m10_2);
PRINT_MODE_BIT(m12_2);
printf("\n");
}
static void test_gsm0808_sc_cfg_from_gsm48_mr_cfg_single(struct gsm48_multi_rate_conf *cfg) static void test_gsm0808_sc_cfg_from_gsm48_mr_cfg_single(struct gsm48_multi_rate_conf *cfg)
{ {
uint16_t s15_s0; uint16_t s15_s0;
printf("Input:\n"); printf("Input:\n");
printf(" m4_75= %u smod= %u\n", cfg->m4_75, cfg->smod); print_mr_cfg(cfg);
printf(" m5_15= %u spare= %u\n", cfg->m5_15, cfg->spare);
printf(" m5_90= %u icmi= %u\n", cfg->m5_90, cfg->icmi);
printf(" m6_70= %u nscb= %u\n", cfg->m6_70, cfg->nscb);
printf(" m7_40= %u ver= %u\n", cfg->m7_40, cfg->ver);
printf(" m7_95= %u\n", cfg->m7_95);
printf(" m10_2= %u\n", cfg->m10_2);
printf(" m12_2= %u\n", cfg->m12_2);
s15_s0 = gsm0808_sc_cfg_from_gsm48_mr_cfg(cfg, true); s15_s0 = gsm0808_sc_cfg_from_gsm48_mr_cfg(cfg, true);
printf("Result (fr):\n"); printf("Result (fr):\n");
printf(" S15-S0 = %04x = 0b" OSMO_BIN_SPEC OSMO_BIN_SPEC "\n", s15_s0, print_s15_s0(s15_s0, true);
OSMO_BIN_PRINT(s15_s0 >> 8), OSMO_BIN_PRINT(s15_s0));
s15_s0 = gsm0808_sc_cfg_from_gsm48_mr_cfg(cfg, false); s15_s0 = gsm0808_sc_cfg_from_gsm48_mr_cfg(cfg, false);
printf("Result (hr):\n"); printf("Result (hr):\n");
printf(" S15-S0 = %04x = 0b" OSMO_BIN_SPEC OSMO_BIN_SPEC "\n", s15_s0, print_s15_s0(s15_s0, false);
OSMO_BIN_PRINT(s15_s0 >> 8), OSMO_BIN_PRINT(s15_s0));
printf("\n"); printf("\n");
} }
@ -2249,20 +2301,12 @@ static void test_gsm48_mr_cfg_from_gsm0808_sc_cfg_single(uint16_t s15_s0)
int rc; int rc;
printf("Input:\n"); printf("Input:\n");
printf(" S15-S0 = %04x = 0b" OSMO_BIN_SPEC OSMO_BIN_SPEC "\n", s15_s0, print_s15_s0(s15_s0, true);
OSMO_BIN_PRINT(s15_s0 >> 8), OSMO_BIN_PRINT(s15_s0));
rc = gsm48_mr_cfg_from_gsm0808_sc_cfg(&cfg, s15_s0); rc = gsm48_mr_cfg_from_gsm0808_sc_cfg(&cfg, s15_s0);
printf("Output:\n"); printf("Output:\n");
printf(" m4_75= %u smod= %u\n", cfg.m4_75, cfg.smod); print_mr_cfg(&cfg);
printf(" m5_15= %u spare= %u\n", cfg.m5_15, cfg.spare);
printf(" m5_90= %u icmi= %u\n", cfg.m5_90, cfg.icmi);
printf(" m6_70= %u nscb= %u\n", cfg.m6_70, cfg.nscb);
printf(" m7_40= %u ver= %u\n", cfg.m7_40, cfg.ver);
printf(" m7_95= %u\n", cfg.m7_95);
printf(" m10_2= %u\n", cfg.m10_2);
printf(" m12_2= %u\n", cfg.m12_2);
if (rc != 0) if (rc != 0)
printf(" Result invalid!\n"); printf(" Result invalid!\n");

View File

@ -87,549 +87,549 @@ test_gsm0808_enc_dec_cell_id_lac_and_ci: encoded: 05 05 01 04 23 02 35 (rc = 7)
test_gsm0808_enc_dec_cell_id_global: encoded: 05 08 00 21 63 54 23 42 04 23 (rc = 10) test_gsm0808_enc_dec_cell_id_global: encoded: 05 08 00 21 63 54 23 42 04 23 (rc = 10)
Testing gsm0808_sc_cfg_from_gsm48_mr_cfg(): Testing gsm0808_sc_cfg_from_gsm48_mr_cfg():
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- ------- -------
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Result (hr): Result (hr):
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Input: Input:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 m4_75=1 ------- ------- ------- ------- ------- ------- -------
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 5701 = 0b0101011100000001 S15-S0 = 0x5701 = 0b0101011100000001
S0 4.75
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0701 = 0b0000011100000001 S15-S0 = 0x0701 = 0b0000011100000001
S0 4.75
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 1 spare= 0 ------- m5_15=1 ------- ------- ------- ------- ------- -------
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Result (hr): Result (hr):
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- m5_90=1 ------- ------- ------- ------- -------
m5_90= 1 icmi= 0
m6_70= 0 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 5704 = 0b0101011100000100 S15-S0 = 0x5704 = 0b0101011100000100
S2 5.90
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0704 = 0b0000011100000100 S15-S0 = 0x0704 = 0b0000011100000100
S2 5.90
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- ------- m6_70=1 ------- ------- ------- -------
m5_90= 0 icmi= 0
m6_70= 1 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 1608 = 0b0001011000001000 S15-S0 = 0x1608 = 0b0001011000001000
S3 6.70
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
Result (hr): Result (hr):
S15-S0 = 0608 = 0b0000011000001000 S15-S0 = 0x0608 = 0b0000011000001000
S3 6.70
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- ------- ------- m7_40=1 ------- ------- -------
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 1 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 0410 = 0b0000010000010000 S15-S0 = 0x0410 = 0b0000010000010000
S4 7.40
S10 4.75 5.90 6.70 7.40
Result (hr): Result (hr):
S15-S0 = 0410 = 0b0000010000010000 S15-S0 = 0x0410 = 0b0000010000010000
S4 7.40
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- m7_95=1 ------- -------
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 0 ver= 0
m7_95= 1
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 4020 = 0b0100000000100000 S15-S0 = 0x4020 = 0b0100000000100000
S5 7.95
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0020 = 0b0000000000100000 S15-S0 = 0x0020 = 0b0000000000100000
S5 7.95
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- m10_2=1 -------
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 1
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 1040 = 0b0001000001000000 S15-S0 = 0x1040 = 0b0001000001000000
S6 10.2
S12 4.75 5.90 6.70 10.2
Result (hr): Result (hr):
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- ------- m12_2=1
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 0
m12_2= 1
Result (fr): Result (fr):
S15-S0 = 4080 = 0b0100000010000000 S15-S0 = 0x4080 = 0b0100000010000000
S7 12.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Input: Input:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 1 spare= 0 m4_75=1 m5_15=1 m5_90=1 m6_70=1 ------- ------- ------- -------
m5_90= 1 icmi= 0
m6_70= 1 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 570d = 0b0101011100001101 S15-S0 = 0x570d = 0b0101011100001101
S0 4.75
S2 5.90
S3 6.70
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 070d = 0b0000011100001101 S15-S0 = 0x070d = 0b0000011100001101
S0 4.75
S2 5.90
S3 6.70
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- ------- ------- m7_40=1 m7_95=1 m10_2=1 m12_2=1
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 1 ver= 0
m7_95= 1
m10_2= 1
m12_2= 1
Result (fr): Result (fr):
S15-S0 = 54f0 = 0b0101010011110000 S15-S0 = 0x54f0 = 0b0101010011110000
S4 7.40
S5 7.95
S6 10.2
S7 12.2
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0430 = 0b0000010000110000 S15-S0 = 0x0430 = 0b0000010000110000
S4 7.40
S5 7.95
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 ------- ------- m5_90=1 m6_70=1 ------- ------- m10_2=1 m12_2=1
m5_90= 1 icmi= 0
m6_70= 1 nscb= 0
m7_40= 0 ver= 0
m7_95= 0
m10_2= 1
m12_2= 1
Result (fr): Result (fr):
S15-S0 = 57cc = 0b0101011111001100 S15-S0 = 0x57cc = 0b0101011111001100
S2 5.90
S3 6.70
S6 10.2
S7 12.2
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 070c = 0b0000011100001100 S15-S0 = 0x070c = 0b0000011100001100
S2 5.90
S3 6.70
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 1 spare= 0 m4_75=1 m5_15=1 ------- ------- m7_40=1 m7_95=1 ------- -------
m5_90= 0 icmi= 0
m6_70= 0 nscb= 0
m7_40= 1 ver= 0
m7_95= 1
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 5731 = 0b0101011100110001 S15-S0 = 0x5731 = 0b0101011100110001
S0 4.75
S4 7.40
S5 7.95
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0731 = 0b0000011100110001 S15-S0 = 0x0731 = 0b0000011100110001
S0 4.75
S4 7.40
S5 7.95
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 1 spare= 0 ------- m5_15=1 ------- m6_70=1 ------- m7_95=1 ------- m12_2=1
m5_90= 0 icmi= 0
m6_70= 1 nscb= 0
m7_40= 0 ver= 0
m7_95= 1
m10_2= 0
m12_2= 1
Result (fr): Result (fr):
S15-S0 = 56a8 = 0b0101011010101000 S15-S0 = 0x56a8 = 0b0101011010101000
S3 6.70
S5 7.95
S7 12.2
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0628 = 0b0000011000101000 S15-S0 = 0x0628 = 0b0000011000101000
S3 6.70
S5 7.95
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- m10_2=1 -------
m5_90= 1 icmi= 0
m6_70= 0 nscb= 0
m7_40= 1 ver= 0
m7_95= 0
m10_2= 1
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 5755 = 0b0101011101010101 S15-S0 = 0x5755 = 0b0101011101010101
S0 4.75
S2 5.90
S4 7.40
S6 10.2
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0717 = 0b0000011100010111 S15-S0 = 0x0717 = 0b0000011100010111
S0 4.75
S1 4.75 5.90 7.40
S2 5.90
S4 7.40
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 1 spare= 0 m4_75=1 m5_15=1 m5_90=1 m6_70=1 m7_40=1 m7_95=1 m10_2=1 m12_2=1
m5_90= 1 icmi= 0
m6_70= 1 nscb= 0
m7_40= 1 ver= 0
m7_95= 1
m10_2= 1
m12_2= 1
Result (fr): Result (fr):
S15-S0 = 57ff = 0b0101011111111111 S15-S0 = 0x57ff = 0b0101011111111111
S0 4.75
S1 4.75 5.90 7.40 12.2
S2 5.90
S3 6.70
S4 7.40
S5 7.95
S6 10.2
S7 12.2
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 073f = 0b0000011100111111 S15-S0 = 0x073f = 0b0000011100111111
S0 4.75
S1 4.75 5.90 7.40
S2 5.90
S3 6.70
S4 7.40
S5 7.95
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 0
m6_70= 0 nscb= 0
m7_40= 1 ver= 0
m7_95= 0
m10_2= 0
m12_2= 1
Result (fr): Result (fr):
S15-S0 = 5797 = 0b0101011110010111 S15-S0 = 0x5797 = 0b0101011110010111
S0 4.75
S1 4.75 5.90 7.40 12.2
S2 5.90
S4 7.40
S7 12.2
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0717 = 0b0000011100010111 S15-S0 = 0x0717 = 0b0000011100010111
S0 4.75
S1 4.75 5.90 7.40
S2 5.90
S4 7.40
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Input: Input:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- -------
m5_90= 1 icmi= 0
m6_70= 0 nscb= 0
m7_40= 1 ver= 0
m7_95= 0
m10_2= 0
m12_2= 0
Result (fr): Result (fr):
S15-S0 = 5715 = 0b0101011100010101 S15-S0 = 0x5715 = 0b0101011100010101
S0 4.75
S2 5.90
S4 7.40
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S12 4.75 5.90 6.70 10.2
S14 4.75 5.90 7.95 12.2
Result (hr): Result (hr):
S15-S0 = 0717 = 0b0000011100010111 S15-S0 = 0x0717 = 0b0000011100010111
S0 4.75
S1 4.75 5.90 7.40
S2 5.90
S4 7.40
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
Testing gsm48_mr_cfg_from_gsm0808_sc_cfg(): Testing gsm48_mr_cfg_from_gsm0808_sc_cfg():
Input: Input:
S15-S0 = ff03 = 0b1111111100000011 S15-S0 = 0xff03 = 0b1111111100000011
S0 4.75
S1 4.75 5.90 7.40 12.2
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S11 (empty)
S12 4.75 5.90 6.70 10.2
S13 (empty)
S14 4.75 5.90 7.95 12.2
S15 (empty)
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- ------- -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 0
Result invalid! Result invalid!
Input: Input:
S15-S0 = ff06 = 0b1111111100000110 S15-S0 = 0xff06 = 0b1111111100000110
S1 4.75 5.90 7.40 12.2
S2 5.90
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S11 (empty)
S12 4.75 5.90 6.70 10.2
S13 (empty)
S14 4.75 5.90 7.95 12.2
S15 (empty)
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = 3e08 = 0b0011111000001000 S15-S0 = 0x3e08 = 0b0011111000001000
S3 6.70
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S11 (empty)
S12 4.75 5.90 6.70 10.2
S13 (empty)
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- m6_70=1 ------- ------- ------- -------
m5_90= 0 icmi= 1
m6_70= 1 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 0c12 = 0b0000110000010010 S15-S0 = 0x0c12 = 0b0000110000010010
S1 4.75 5.90 7.40 12.2
S4 7.40
S10 4.75 5.90 6.70 7.40
S11 (empty)
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = c020 = 0b1100000000100000 S15-S0 = 0xc020 = 0b1100000000100000
S5 7.95
S14 4.75 5.90 7.95 12.2
S15 (empty)
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- m7_95=1 ------- -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 1
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 3040 = 0b0011000001000000 S15-S0 = 0x3040 = 0b0011000001000000
S6 10.2
S12 4.75 5.90 6.70 10.2
S13 (empty)
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- m10_2=1 -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 1
m12_2= 0
Input: Input:
S15-S0 = c082 = 0b1100000010000010 S15-S0 = 0xc082 = 0b1100000010000010
S1 4.75 5.90 7.40 12.2
S7 12.2
S14 4.75 5.90 7.95 12.2
S15 (empty)
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = 0001 = 0b0000000000000001 S15-S0 = 0x0001 = 0b0000000000000001
S0 4.75
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- ------- ------- ------- ------- ------- -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 0002 = 0b0000000000000010 S15-S0 = 0x0002 = 0b0000000000000010
S1 4.75 5.90 7.40 12.2
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = 0004 = 0b0000000000000100 S15-S0 = 0x0004 = 0b0000000000000100
S2 5.90
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- m5_90=1 ------- ------- ------- ------- -------
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 0008 = 0b0000000000001000 S15-S0 = 0x0008 = 0b0000000000001000
S3 6.70
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- m6_70=1 ------- ------- ------- -------
m5_90= 0 icmi= 1
m6_70= 1 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 0010 = 0b0000000000010000 S15-S0 = 0x0010 = 0b0000000000010000
S4 7.40
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- m7_40=1 ------- ------- -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 0020 = 0b0000000000100000 S15-S0 = 0x0020 = 0b0000000000100000
S5 7.95
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- m7_95=1 ------- -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 1
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 0040 = 0b0000000001000000 S15-S0 = 0x0040 = 0b0000000001000000
S6 10.2
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- m10_2=1 -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 1
m12_2= 0
Input: Input:
S15-S0 = 0080 = 0b0000000010000000 S15-S0 = 0x0080 = 0b0000000010000000
S7 12.2
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- ------- m12_2=1
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = 0058 = 0b0000000001011000 S15-S0 = 0x0058 = 0b0000000001011000
S3 6.70
S4 7.40
S6 10.2
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- m6_70=1 m7_40=1 ------- m10_2=1 -------
m5_90= 0 icmi= 1
m6_70= 1 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 1
m12_2= 0
Input: Input:
S15-S0 = 0021 = 0b0000000000100001 S15-S0 = 0x0021 = 0b0000000000100001
S0 4.75
S5 7.95
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- ------- ------- ------- m7_95=1 ------- -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 1
m10_2= 0
m12_2= 0
Input: Input:
S15-S0 = 0084 = 0b0000000010000100 S15-S0 = 0x0084 = 0b0000000010000100
S2 5.90
S7 12.2
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- m5_90=1 ------- ------- ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = 0086 = 0b0000000010000110 S15-S0 = 0x0086 = 0b0000000010000110
S1 4.75 5.90 7.40 12.2
S2 5.90
S7 12.2
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Input: Input:
S15-S0 = 000a = 0b0000000000001010 S15-S0 = 0x000a = 0b0000000000001010
S1 4.75 5.90 7.40 12.2
S3 6.70
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Result invalid! Result invalid!
Input: Input:
S15-S0 = 0079 = 0b0000000001111001 S15-S0 = 0x0079 = 0b0000000001111001
S0 4.75
S3 6.70
S4 7.40
S5 7.95
S6 10.2
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- ------- m6_70=1 m7_40=1 m7_95=1 ------- -------
m5_90= 0 icmi= 1
m6_70= 1 nscb= 0
m7_40= 1 ver= 1
m7_95= 1
m10_2= 0
m12_2= 0
Result invalid! Result invalid!
Input: Input:
S15-S0 = 0000 = 0b0000000000000000 S15-S0 = 0x0000 = 0b0000000000000000
Output: Output:
m4_75= 0 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 ------- ------- ------- ------- ------- ------- ------- -------
m5_90= 0 icmi= 1
m6_70= 0 nscb= 0
m7_40= 0 ver= 1
m7_95= 0
m10_2= 0
m12_2= 0
Result invalid! Result invalid!
Input: Input:
S15-S0 = ffff = 0b1111111111111111 S15-S0 = 0xffff = 0b1111111111111111
S0 4.75
S1 4.75 5.90 7.40 12.2
S2 5.90
S3 6.70
S4 7.40
S5 7.95
S6 10.2
S7 12.2
S8 4.75 5.90
S9 4.75 5.90 6.70
S10 4.75 5.90 6.70 7.40
S11 (empty)
S12 4.75 5.90 6.70 10.2
S13 (empty)
S14 4.75 5.90 7.95 12.2
S15 (empty)
Output: Output:
m4_75= 1 smod= 0 cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1
m5_15= 0 spare= 0 m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1
m5_90= 1 icmi= 1
m6_70= 0 nscb= 0
m7_40= 1 ver= 1
m7_95= 0
m10_2= 0
m12_2= 1
Result invalid! Result invalid!