lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

February 2023

  • 1 participants
  • 2601 discussions
Change in osmo-ccid-firmware[master]: add simple gangupdater for multiple octsim boards
by roh 15 Mar '25

15 Mar '25
roh has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/26896 ) Change subject: add simple gangupdater for multiple octsim boards ...................................................................... add simple gangupdater for multiple octsim boards Change-Id: Ic10572c121ac55586ec43126b63d69529757132b --- A contrib/flash_all_octsim.sh 1 file changed, 22 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/96/26896/1 diff --git a/contrib/flash_all_octsim.sh b/contrib/flash_all_octsim.sh new file mode 100644 index 0000000..4f4c89b --- /dev/null +++ b/contrib/flash_all_octsim.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# this script is to scan for octsim boards, sort them by usb path and call dfu-util on each to update the board +# basic flow +# - get usb path and serialno tupel from dfu-util -l +# - reformat and sort by usbpath, drop the usbpath (grep cut tr sort cut) +# - flash the boards + +# TODO: +# - error handling +# - filter dfu-util output and generate nice summary + +dfu-util -l \ + | grep "^Found" \ + | grep "\[1d50:6141\]" \ + | cut -d ' ' -f 8,13 \ + | tr -d ',' \ + | cut -d \" -f 2,4 \ + | tr \" ' ' \ + | sort \ + | cut -d ' ' -f 2 + | xargs -n 1 dfu-util -d 1d50:6141 -D sysmoOCTSIM.bin -R -p -- To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/26896 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ccid-firmware Gerrit-Branch: master Gerrit-Change-Id: Ic10572c121ac55586ec43126b63d69529757132b Gerrit-Change-Number: 26896 Gerrit-PatchSet: 1 Gerrit-Owner: roh <jsteiger(a)sysmocom.de> Gerrit-MessageType: newchange
2 2
0 0
[M] Change in libosmocore[master]: add gsm0808_amr_modes_from_cfg
by neels 01 Mar '23

01 Mar '23
neels has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/29473 ) Change subject: add gsm0808_amr_modes_from_cfg ...................................................................... add gsm0808_amr_modes_from_cfg Provide the definitions from 3GPP TS 28.062, Table 7.11.3.1.3-2 as generally usable API. Likely users: - upcoming patch to improve conversion between S0-S15 and MultiRate config, I900fda192742fa8f6dd54e9131ef1704b14cc41a - osmo-msc to figure out conversion between SDP AMR mode-set and 3GPP TS 48.008 Permitted Speech S0-S15. - osmo-bsc to choose AMR modes for channel activation from cfg / permitted speech from MSC. Related: SYS#5066 Change-Id: Icef7dd626d3d4641c66b8dd87e2047fc0ab547d1 --- M include/osmocom/gsm/protocol/gsm_08_08.h M src/gsm/gsm0808.c M src/gsm/libosmogsm.map 3 files changed, 143 insertions(+), 0 deletions(-) Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h index 5060915..88ac610 100644 --- a/include/osmocom/gsm/protocol/gsm_08_08.h +++ b/include/osmocom/gsm/protocol/gsm_08_08.h @@ -687,6 +687,29 @@ GSM0808_SC_CFG_AMR_12_2 = 0x0080, }; +/* Bit index of a mode as returned by gsm0808_amr_modes_from_cfg[]. + * Example: + * if (gsm0808_amr_modes_from_cfg[full_rate ? 1 : 0][9] & GSM0808_AMR_MODE_4_75) + * printf("S9 supports 4k75"); + */ +enum gsm0808_amr_mode { + GSM0808_AMR_MODE_4_75 = 0, + GSM0808_AMR_MODE_5_15, + GSM0808_AMR_MODE_5_90, + GSM0808_AMR_MODE_6_70, + GSM0808_AMR_MODE_7_40, + GSM0808_AMR_MODE_7_95, + GSM0808_AMR_MODE_10_2, + GSM0808_AMR_MODE_12_2, +}; +extern const struct value_string gsm0808_amr_mode_names[]; +static inline const char *gsm0808_amr_mode_name(enum gsm0808_amr_mode val) +{ + return get_value_string(gsm0808_amr_mode_names, val); +} + +extern const uint8_t gsm0808_amr_modes_from_cfg[2][16]; + /* 3GPP TS 48.008 3.2.2.103 Speech Codec List */ #define SPEECH_CODEC_MAXLEN 255 struct gsm0808_speech_codec_list { diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c index ec4c39b..e1768c1 100644 --- a/src/gsm/gsm0808.c +++ b/src/gsm/gsm0808.c @@ -2028,4 +2028,101 @@ { 0, NULL } }; +/* Convert one S0-S15 bit to its set of AMR modes, for HR AMR and FR AMR. + * This is 3GPP TS 28.062 Table 7.11.3.1.3-2: "Preferred Configurations", with some configurations removed as specified + * in 3GPP TS 48.008 3.2.2.103: + * + * FR_AMR is coded ‘0011’. + * S11, S13 and S15 are reserved and coded with zeroes. + * + * HR_AMR is coded ‘0100’. + * S6 - S7 and S11 – S15 are reserved and coded with zeroes. + * + * Meaning: for FR, exclude all Optimisation Mode configurations. + * For HR, exclude all that are not supported by HR AMR -- drop all that include at least one of + * 10.2 or 12.2. + * + * Also, for HR, drop 12.2k from S1. + * + * The first array dimension is 0 for half rate and 1 for full rate. + * The second array dimension is the configuration number (0..15) aka Sn. + * The values are bitmask combinations of (1 << GSM0808_AMR_MODE_nnnn). + * + * For example, accumulate all modes that are possible in a given my_s15_s0: + * + * uint8_t modes = 0; + * for (s_bit = 0; s_bit < 15; s_bit++) + * if (my_s15_s0 & (1 << s_bit)) + * modes |= gsm0808_amr_modes_from_cfg[full_rate ? 1 : 0][s_bit]; + * for (i = 0; i < 8; i++) + * if (modes & (1 << i)) + * printf(" %s", gsm0808_amr_mode_name(i)); + */ +const uint8_t gsm0808_amr_modes_from_cfg[2][16] = { +#define B(X) (1 << (GSM0808_AMR_MODE_##X)) + /* HR */ + { + /* Sn = modes */ + [0] = B(4_75), + [1] = B(4_75) | B(5_90) | B(7_40), + [2] = B(5_90), + [3] = B(6_70), + [4] = B(7_40), + [5] = B(7_95), + [6] = 0, + [7] = 0, + + [8] = B(4_75) | B(5_90), + [9] = B(4_75) | B(5_90) | B(6_70), + [10] = B(4_75) | B(5_90) | B(6_70) | B(7_40), + [11] = 0, + [12] = 0, + [13] = 0, + [14] = 0, + [15] = 0, + }, + /* FR */ + { + /* Sn = modes */ + [0] = B(4_75), + [1] = B(4_75) | B(5_90) | B(7_40) | B(12_2), + [2] = B(5_90), + [3] = B(6_70), + [4] = B(7_40), + [5] = B(7_95), + [6] = B(10_2), + [7] = B(12_2), + + [8] = B(4_75) | B(5_90), + [9] = B(4_75) | B(5_90) | B(6_70), + [10] = B(4_75) | B(5_90) | B(6_70) | B(7_40), + [11] = 0, + [12] = B(4_75) | B(5_90) | B(6_70) | B(10_2), + [13] = 0, + [14] = B(4_75) | B(5_90) | B(7_95) | B(12_2), + [15] = 0, + } +}; + +/* AMR mode names from GSM0808_AMR_MODE_*, for use with gsm0808_amr_modes_from_cfg. + * + * For example: + * printf("S9: "); + * uint8_t s9_modes = gsm0808_amr_modes_from_cfg[full_rate ? 1 : 0][9]; + * for (bit = 0; bit < 8; bit++) + * if (s9_modes & (1 << bit)) + * printf("%s,", gsm0808_amr_mode_name(bit)); + */ +const struct value_string gsm0808_amr_mode_names[] = { + { GSM0808_AMR_MODE_4_75, "4.75" }, + { GSM0808_AMR_MODE_5_15, "5.15" }, + { GSM0808_AMR_MODE_5_90, "5.90" }, + { GSM0808_AMR_MODE_6_70, "6.70" }, + { GSM0808_AMR_MODE_7_40, "7.40" }, + { GSM0808_AMR_MODE_7_95, "7.95" }, + { GSM0808_AMR_MODE_10_2, "10.2" }, + { GSM0808_AMR_MODE_12_2, "12.2" }, + {} +}; + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 21f8e15..6ad363f 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -252,6 +252,8 @@ gsm0808_speech_codec_from_chan_type; gsm0808_sc_cfg_from_gsm48_mr_cfg; gsm48_mr_cfg_from_gsm0808_sc_cfg; +gsm0808_amr_modes_from_cfg; +gsm0808_amr_mode_names; gsm0808_speech_codec_type_names; gsm0808_permitted_speech_names; gsm0808_chosen_enc_alg_names; -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/29473 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: Icef7dd626d3d4641c66b8dd87e2047fc0ab547d1 Gerrit-Change-Number: 29473 Gerrit-PatchSet: 4 Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[L] Change in libosmocore[master]: improve test output for gsm0808_sc_cfg_from_gsm48_mr_cfg()
by neels 01 Mar '23

01 Mar '23
neels has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/29474 ) Change subject: improve test output for gsm0808_sc_cfg_from_gsm48_mr_cfg() ...................................................................... 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 --- M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 2 files changed, 517 insertions(+), 418 deletions(-) Approvals: neels: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index d7c278f..501b743 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -2026,29 +2026,81 @@ 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) { uint16_t s15_s0; printf("Input:\n"); - printf(" m4_75= %u smod= %u\n", cfg->m4_75, cfg->smod); - 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); + print_mr_cfg(cfg); s15_s0 = gsm0808_sc_cfg_from_gsm48_mr_cfg(cfg, true); printf("Result (fr):\n"); - printf(" S15-S0 = %04x = 0b" OSMO_BIN_SPEC OSMO_BIN_SPEC "\n", s15_s0, - OSMO_BIN_PRINT(s15_s0 >> 8), OSMO_BIN_PRINT(s15_s0)); + print_s15_s0(s15_s0, true); s15_s0 = gsm0808_sc_cfg_from_gsm48_mr_cfg(cfg, false); printf("Result (hr):\n"); - printf(" S15-S0 = %04x = 0b" OSMO_BIN_SPEC OSMO_BIN_SPEC "\n", s15_s0, - OSMO_BIN_PRINT(s15_s0 >> 8), OSMO_BIN_PRINT(s15_s0)); + print_s15_s0(s15_s0, false); printf("\n"); } @@ -2249,20 +2301,12 @@ int rc; printf("Input:\n"); - printf(" S15-S0 = %04x = 0b" OSMO_BIN_SPEC OSMO_BIN_SPEC "\n", s15_s0, - OSMO_BIN_PRINT(s15_s0 >> 8), OSMO_BIN_PRINT(s15_s0)); + print_s15_s0(s15_s0, true); rc = gsm48_mr_cfg_from_gsm0808_sc_cfg(&cfg, s15_s0); printf("Output:\n"); - printf(" m4_75= %u smod= %u\n", cfg.m4_75, cfg.smod); - 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); + print_mr_cfg(&cfg); if (rc != 0) printf(" Result invalid!\n"); diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 8f91eb1..2329fcd 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -87,549 +87,549 @@ 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(): Input: - m4_75= 0 smod= 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 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- ------- ------- ------- ------- ------- ------- Result (fr): - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Result (hr): - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Input: - m4_75= 1 smod= 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 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + m4_75=1 ------- ------- ------- ------- ------- ------- ------- 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): - 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: - m4_75= 0 smod= 0 - m5_15= 1 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 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- m5_15=1 ------- ------- ------- ------- ------- ------- Result (fr): - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Result (hr): - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Input: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 0 ver= 0 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- m5_90=1 ------- ------- ------- ------- ------- 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): - 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: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 0 - m6_70= 1 nscb= 0 - m7_40= 0 ver= 0 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- ------- m6_70=1 ------- ------- ------- ------- 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): - 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: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 0 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- ------- ------- m7_40=1 ------- ------- ------- Result (fr): - S15-S0 = 0410 = 0b0000010000010000 + S15-S0 = 0x0410 = 0b0000010000010000 + S4 7.40 + S10 4.75 5.90 6.70 7.40 Result (hr): - S15-S0 = 0410 = 0b0000010000010000 + S15-S0 = 0x0410 = 0b0000010000010000 + S4 7.40 + S10 4.75 5.90 6.70 7.40 Input: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 0 ver= 0 - m7_95= 1 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- ------- ------- ------- m7_95=1 ------- ------- Result (fr): - S15-S0 = 4020 = 0b0100000000100000 + S15-S0 = 0x4020 = 0b0100000000100000 + S5 7.95 + S14 4.75 5.90 7.95 12.2 Result (hr): - S15-S0 = 0020 = 0b0000000000100000 + S15-S0 = 0x0020 = 0b0000000000100000 + S5 7.95 Input: - m4_75= 0 smod= 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= 1 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- ------- ------- ------- ------- m10_2=1 ------- Result (fr): - S15-S0 = 1040 = 0b0001000001000000 + S15-S0 = 0x1040 = 0b0001000001000000 + S6 10.2 + S12 4.75 5.90 6.70 10.2 Result (hr): - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Input: - m4_75= 0 smod= 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= 1 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- ------- ------- ------- ------- ------- m12_2=1 Result (fr): - S15-S0 = 4080 = 0b0100000010000000 + S15-S0 = 0x4080 = 0b0100000010000000 + S7 12.2 + S14 4.75 5.90 7.95 12.2 Result (hr): - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Input: - m4_75= 1 smod= 0 - m5_15= 1 spare= 0 - m5_90= 1 icmi= 0 - m6_70= 1 nscb= 0 - m7_40= 0 ver= 0 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + m4_75=1 m5_15=1 m5_90=1 m6_70=1 ------- ------- ------- ------- 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): - 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: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 0 - m7_95= 1 - m10_2= 1 - m12_2= 1 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- ------- ------- m7_40=1 m7_95=1 m10_2=1 m12_2=1 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): - S15-S0 = 0430 = 0b0000010000110000 + S15-S0 = 0x0430 = 0b0000010000110000 + S4 7.40 + S5 7.95 + S10 4.75 5.90 6.70 7.40 Input: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 0 - m6_70= 1 nscb= 0 - m7_40= 0 ver= 0 - m7_95= 0 - m10_2= 1 - m12_2= 1 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- ------- m5_90=1 m6_70=1 ------- ------- m10_2=1 m12_2=1 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): - 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: - m4_75= 1 smod= 0 - m5_15= 1 spare= 0 - m5_90= 0 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 0 - m7_95= 1 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + m4_75=1 m5_15=1 ------- ------- m7_40=1 m7_95=1 ------- ------- 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): - 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: - m4_75= 0 smod= 0 - m5_15= 1 spare= 0 - m5_90= 0 icmi= 0 - m6_70= 1 nscb= 0 - m7_40= 0 ver= 0 - m7_95= 1 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + ------- m5_15=1 ------- m6_70=1 ------- m7_95=1 ------- m12_2=1 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): - 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 0 - m7_95= 0 - m10_2= 1 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- m10_2=1 ------- 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): - 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: - m4_75= 1 smod= 0 - m5_15= 1 spare= 0 - m5_90= 1 icmi= 0 - m6_70= 1 nscb= 0 - m7_40= 1 ver= 0 - m7_95= 1 - m10_2= 1 - m12_2= 1 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=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 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): - 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 0 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 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): - 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 0 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 0 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=0 nscb=0 ver=0 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- ------- 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): - 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(): 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 Input: - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Output: - m4_75= 0 smod= 0 - 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 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- ------- ------- ------- ------- Result invalid! 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 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: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 1 nscb= 0 - m7_40= 0 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- m6_70=1 ------- ------- ------- ------- 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 Input: - S15-S0 = c020 = 0b1100000000100000 + S15-S0 = 0xc020 = 0b1100000000100000 + S5 7.95 + S14 4.75 5.90 7.95 12.2 + S15 (empty) Output: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 0 ver= 1 - m7_95= 1 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- ------- m7_95=1 ------- ------- Input: - S15-S0 = 3040 = 0b0011000001000000 + S15-S0 = 0x3040 = 0b0011000001000000 + S6 10.2 + S12 4.75 5.90 6.70 10.2 + S13 (empty) Output: - m4_75= 0 smod= 0 - 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= 1 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- ------- ------- m10_2=1 ------- 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 Input: - S15-S0 = 0001 = 0b0000000000000001 + S15-S0 = 0x0001 = 0b0000000000000001 + S0 4.75 Output: - m4_75= 1 smod= 0 - 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 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- ------- ------- ------- ------- ------- ------- Input: - S15-S0 = 0002 = 0b0000000000000010 + S15-S0 = 0x0002 = 0b0000000000000010 + S1 4.75 5.90 7.40 12.2 Output: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 Input: - S15-S0 = 0004 = 0b0000000000000100 + S15-S0 = 0x0004 = 0b0000000000000100 + S2 5.90 Output: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 0 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- m5_90=1 ------- ------- ------- ------- ------- Input: - S15-S0 = 0008 = 0b0000000000001000 + S15-S0 = 0x0008 = 0b0000000000001000 + S3 6.70 Output: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 1 nscb= 0 - m7_40= 0 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- m6_70=1 ------- ------- ------- ------- Input: - S15-S0 = 0010 = 0b0000000000010000 + S15-S0 = 0x0010 = 0b0000000000010000 + S4 7.40 Output: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- m7_40=1 ------- ------- ------- Input: - S15-S0 = 0020 = 0b0000000000100000 + S15-S0 = 0x0020 = 0b0000000000100000 + S5 7.95 Output: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 0 ver= 1 - m7_95= 1 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- ------- m7_95=1 ------- ------- Input: - S15-S0 = 0040 = 0b0000000001000000 + S15-S0 = 0x0040 = 0b0000000001000000 + S6 10.2 Output: - m4_75= 0 smod= 0 - 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= 1 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- ------- ------- m10_2=1 ------- Input: - S15-S0 = 0080 = 0b0000000010000000 + S15-S0 = 0x0080 = 0b0000000010000000 + S7 12.2 Output: - m4_75= 0 smod= 0 - 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= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- ------- ------- ------- m12_2=1 Input: - S15-S0 = 0058 = 0b0000000001011000 + S15-S0 = 0x0058 = 0b0000000001011000 + S3 6.70 + S4 7.40 + S6 10.2 Output: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 1 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 1 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- m6_70=1 m7_40=1 ------- m10_2=1 ------- Input: - S15-S0 = 0021 = 0b0000000000100001 + S15-S0 = 0x0021 = 0b0000000000100001 + S0 4.75 + S5 7.95 Output: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 0 ver= 1 - m7_95= 1 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- ------- ------- ------- m7_95=1 ------- ------- Input: - S15-S0 = 0084 = 0b0000000010000100 + S15-S0 = 0x0084 = 0b0000000010000100 + S2 5.90 + S7 12.2 Output: - m4_75= 0 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 0 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- m5_90=1 ------- ------- ------- ------- m12_2=1 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 Input: - S15-S0 = 000a = 0b0000000000001010 + S15-S0 = 0x000a = 0b0000000000001010 + S1 4.75 5.90 7.40 12.2 + S3 6.70 Output: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 Result invalid! 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 0 icmi= 1 - m6_70= 1 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 1 - m10_2= 0 - m12_2= 0 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- ------- m6_70=1 m7_40=1 m7_95=1 ------- ------- Result invalid! Input: - S15-S0 = 0000 = 0b0000000000000000 + S15-S0 = 0x0000 = 0b0000000000000000 Output: - m4_75= 0 smod= 0 - 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 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + ------- ------- ------- ------- ------- ------- ------- ------- Result invalid! 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: - m4_75= 1 smod= 0 - m5_15= 0 spare= 0 - m5_90= 1 icmi= 1 - m6_70= 0 nscb= 0 - m7_40= 1 ver= 1 - m7_95= 0 - m10_2= 0 - m12_2= 1 + cfg.smod=0 spare=0 icmi=1 nscb=0 ver=1 + m4_75=1 ------- m5_90=1 ------- m7_40=1 ------- ------- m12_2=1 Result invalid! -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/29474 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: Iec7c491d9fadd37d9e43fbaac8e709c2029f8a8e Gerrit-Change-Number: 29474 Gerrit-PatchSet: 4 Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in osmo-pcu[master]: bts: add IMMEDIATE ASSIGNMENT via PCH transmission
by fixeria 28 Feb '23

28 Feb '23
Attention is currently required from: neels, pespin, dexter. fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/31145 ) Change subject: bts: add IMMEDIATE ASSIGNMENT via PCH transmission ...................................................................... Patch Set 18: (1 comment) File src/bts.cpp: https://gerrit.osmocom.org/c/osmo-pcu/+/31145/comment/684db5eb_79093fbe PS17, Line 1134: pcu_l1if_tx_pch(bts, immediate_assignment, plen, ms_paging_group(tbf_ms(tbf))); > > ... PCU will become incompatible with osmo-bts […] Here is the BTS side patch: https://gerrit.osmocom.org/c/osmo-bts/+/31600 [WIP]. Let me know if you need me to help with the TTCN-3 stuff - there we will need backwards compatibility. -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/31145 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: I2a78651593323e8b9627c39918d949a33497b70f Gerrit-Change-Number: 31145 Gerrit-PatchSet: 18 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Tue, 28 Feb 2023 21:24:29 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de> Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-bts[master]: paging_add_imm_ass(): remove meaningless from_pcu argument
by fixeria 28 Feb '23

28 Feb '23
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/31599 ) Change subject: paging_add_imm_ass(): remove meaningless from_pcu argument ...................................................................... paging_add_imm_ass(): remove meaningless from_pcu argument A request to send an Immediate Assignment over the PCH (not AGCH) is always coming from the PCU. It's used for DL TBF assignment. Change-Id: If4b0aa01532ab65b96201ff8829e724c67df6993 --- M include/osmo-bts/paging.h M src/common/paging.c M src/common/pcu_sock.c 3 files changed, 18 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/99/31599/1 diff --git a/include/osmo-bts/paging.h b/include/osmo-bts/paging.h index ef1fc93..fb50323 100644 --- a/include/osmo-bts/paging.h +++ b/include/osmo-bts/paging.h @@ -36,8 +36,8 @@ const uint8_t *identity_lv, uint8_t chan_needed); /* Add an IMM.ASS message to the paging queue */ -int paging_add_imm_ass(struct paging_state *ps, const uint8_t *data, - uint8_t len, bool from_pcu); +int paging_add_imm_ass(struct paging_state *ps, + const uint8_t *data, uint8_t len); /* generate paging message for given gsm time */ int paging_gen_msg(struct paging_state *ps, uint8_t *out_buf, struct gsm_time *gt, diff --git a/src/common/paging.c b/src/common/paging.c index 54d7263..26ba9b0 100644 --- a/src/common/paging.c +++ b/src/common/paging.c @@ -268,8 +268,8 @@ } /* Add an IMM.ASS message to the paging queue */ -int paging_add_imm_ass(struct paging_state *ps, const uint8_t *data, - uint8_t len, bool from_pcu) +int paging_add_imm_ass(struct paging_state *ps, + const uint8_t *data, uint8_t len) { struct llist_head *group_q; struct paging_record *pr; @@ -277,7 +277,7 @@ check_congestion(ps); - if (ps->cs_priority_active && from_pcu) { + if (ps->cs_priority_active) { LOGP(DPAG, LOGL_NOTICE, "Dropping paging for PS, queue congested (%u)\n", ps->num_paging); rate_ctr_inc2(ps->bts->ctrs, BTS_CTR_PAGING_DROP_PS); diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c index 8f8b3af..bdf5958 100644 --- a/src/common/pcu_sock.c +++ b/src/common/pcu_sock.c @@ -681,7 +681,7 @@ switch (data_req->sapi) { case PCU_IF_SAPI_PCH: - paging_add_imm_ass(bts->paging_state, data_req->data, data_req->len, true); + paging_add_imm_ass(bts->paging_state, data_req->data, data_req->len); break; case PCU_IF_SAPI_AGCH: msg = msgb_alloc(data_req->len, "pcu_agch"); -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/31599 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: If4b0aa01532ab65b96201ff8829e724c67df6993 Gerrit-Change-Number: 31599 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmo-bts[master]: pcuif_proto: version 11: rework sending IMM ASS over PCH
by fixeria 28 Feb '23

28 Feb '23
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/31600 ) Change subject: pcuif_proto: version 11: rework sending IMM ASS over PCH ...................................................................... pcuif_proto: version 11: rework sending IMM ASS over PCH Change-Id: I1a8246f6d16d4595182432c1920afd3c5eae5079 Related: OS#5198 --- M include/osmo-bts/paging.h M include/osmo-bts/pcu_if.h M include/osmo-bts/pcuif_proto.h M src/common/paging.c M src/common/pcu_sock.c 5 files changed, 52 insertions(+), 40 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/00/31600/1 diff --git a/include/osmo-bts/paging.h b/include/osmo-bts/paging.h index fb50323..ff1d1a5 100644 --- a/include/osmo-bts/paging.h +++ b/include/osmo-bts/paging.h @@ -37,7 +37,8 @@ /* Add an IMM.ASS message to the paging queue */ int paging_add_imm_ass(struct paging_state *ps, - const uint8_t *data, uint8_t len); + uint32_t tlli, uint16_t imsi, + const uint8_t *data); /* generate paging message for given gsm time */ int paging_gen_msg(struct paging_state *ps, uint8_t *out_buf, struct gsm_time *gt, diff --git a/include/osmo-bts/pcu_if.h b/include/osmo-bts/pcu_if.h index 6cdc682..83b20d5 100644 --- a/include/osmo-bts/pcu_if.h +++ b/include/osmo-bts/pcu_if.h @@ -21,7 +21,7 @@ int pcu_tx_time_ind(uint32_t fn); int pcu_tx_interf_ind(const struct gsm_bts_trx *trx, uint32_t fn); int pcu_tx_pag_req(const uint8_t *identity_lv, uint8_t chan_needed); -int pcu_tx_pch_data_cnf(uint32_t fn, uint8_t *data, uint8_t len); +int pcu_tx_pch_data_cnf(uint32_t fn, uint32_t tlli); int pcu_tx_susp_req(struct gsm_lchan *lchan, uint32_t tlli, const uint8_t *ra_id, uint8_t cause); int pcu_sock_send(struct gsm_network *net, struct msgb *msg); diff --git a/include/osmo-bts/pcuif_proto.h b/include/osmo-bts/pcuif_proto.h index 0fece48..ca4d5d2 100644 --- a/include/osmo-bts/pcuif_proto.h +++ b/include/osmo-bts/pcuif_proto.h @@ -6,7 +6,7 @@ #define PCU_SOCK_DEFAULT "/tmp/pcu_bts" -#define PCU_IF_VERSION 0x0a +#define PCU_IF_VERSION 0x0b #define TXT_MAX_LEN 128 /* msg_type */ @@ -16,7 +16,6 @@ #define PCU_IF_MSG_SUSP_REQ 0x03 /* BTS forwards GPRS SUSP REQ to PCU */ #define PCU_IF_MSG_APP_INFO_REQ 0x04 /* BTS asks PCU to transmit APP INFO via PACCH */ #define PCU_IF_MSG_RTS_REQ 0x10 /* ready to send request */ -#define PCU_IF_MSG_DATA_CNF_DT 0x11 /* confirm (with direct tlli) */ #define PCU_IF_MSG_RACH_IND 0x22 /* receive RACH */ #define PCU_IF_MSG_INFO_IND 0x32 /* retrieve BTS info */ #define PCU_IF_MSG_ACT_REQ 0x40 /* activate/deactivate PDCH */ @@ -86,19 +85,12 @@ int16_t lqual_cb; /* !< \brief Link quality in centiBel */ } __attribute__ ((packed)); -/* data confirmation with direct tlli (instead of raw mac block with tlli) */ -struct gsm_pcu_if_data_cnf_dt { +/* data confirmation with TLLI */ +struct gsm_pcu_if_data_cnf { uint8_t sapi; + uint8_t spare[3]; uint32_t tlli; uint32_t fn; - uint16_t arfcn; - uint8_t trx_nr; - uint8_t ts_nr; - uint8_t block_nr; - int8_t rssi; - uint16_t ber10k; /* !< \brief BER in units of 0.01% */ - int16_t ta_offs_qbits; /* !< \brief Burst TA Offset in quarter bits */ - int16_t lqual_cb; /* !< \brief Link quality in centiBel */ } __attribute__ ((packed)); struct gsm_pcu_if_rts_req { @@ -229,6 +221,17 @@ uint8_t data[0]; } __attribute__ ((packed)); +/* Container for sending a (confirmed) IMMEDIATE ASSIGNMENT message via PCH. + * This structure is included in DATA.req with PCU_IF_SAPI_PCH. */ +struct gsm_pcu_if_pch_data { + /* TLLI as reference for confirmation */ + uint32_t tlli; + /* IMSI % 1000 for paging group calcilation */ + uint16_t imsi; + /* GSM MAC block (with RR Immediate Assignment message) */ + uint8_t data[0]; +} __attribute__ ((packed)); + struct gsm_pcu_if { /* context based information */ uint8_t msg_type; /* message type */ @@ -237,8 +240,7 @@ union { struct gsm_pcu_if_data data_req; - struct gsm_pcu_if_data data_cnf; - struct gsm_pcu_if_data_cnf_dt data_cnf_dt; + struct gsm_pcu_if_data_cnf data_cnf; struct gsm_pcu_if_data data_ind; struct gsm_pcu_if_susp_req susp_req; struct gsm_pcu_if_rts_req rts_req; diff --git a/src/common/paging.c b/src/common/paging.c index 26ba9b0..12123aa 100644 --- a/src/common/paging.c +++ b/src/common/paging.c @@ -63,6 +63,7 @@ } paging; struct { uint8_t msg[GSM_MACBLOCK_LEN]; + uint32_t tlli; /* used for confirmation */ } imm_ass; } u; }; @@ -269,11 +270,12 @@ /* Add an IMM.ASS message to the paging queue */ int paging_add_imm_ass(struct paging_state *ps, - const uint8_t *data, uint8_t len) + uint32_t tlli, uint16_t imsi, + const uint8_t *data) { struct llist_head *group_q; struct paging_record *pr; - uint16_t imsi, paging_group; + uint16_t paging_group; check_congestion(ps); @@ -284,15 +286,6 @@ return -ENOSPC; } - if (len != GSM_MACBLOCK_LEN + 3) { - LOGP(DPAG, LOGL_ERROR, "IMM.ASS invalid length %d\n", len); - return -EINVAL; - } - len -= 3; - - imsi = 100 * ((*(data++)) - '0'); - imsi += 10 * ((*(data++)) - '0'); - imsi += (*(data++)) - '0'; paging_group = gsm0502_calc_paging_group(&ps->chan_desc, imsi); group_q = &ps->paging_queue[paging_group]; @@ -301,9 +294,10 @@ if (!pr) return -ENOMEM; pr->type = PAGING_RECORD_IMM_ASS; + pr->u.imm_ass.tlli = tlli; - LOGP(DPAG, LOGL_INFO, "Add IMM.ASS to queue (group=%u)\n", - paging_group); + LOGP(DPAG, LOGL_INFO, "Add IMM.ASS to queue (pgroup=%u, tlli=0x%04x)\n", + paging_group, tlli); memcpy(pr->u.imm_ass.msg, data, GSM_MACBLOCK_LEN); /* enqueue the new message to the HEAD of the queue */ @@ -633,8 +627,7 @@ /* get message and free record */ memcpy(out_buf, pr[num_pr]->u.imm_ass.msg, GSM_MACBLOCK_LEN); - pcu_tx_pch_data_cnf(gt->fn, pr[num_pr]->u.imm_ass.msg, - GSM_MACBLOCK_LEN); + pcu_tx_pch_data_cnf(gt->fn, pr[num_pr]->u.imm_ass.tlli); talloc_free(pr[num_pr]); return GSM_MACBLOCK_LEN; } diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c index bdf5958..7c20e5f 100644 --- a/src/common/pcu_sock.c +++ b/src/common/pcu_sock.c @@ -621,13 +621,12 @@ return pcu_sock_send(&bts_gsmnet, msg); } -int pcu_tx_pch_data_cnf(uint32_t fn, uint8_t *data, uint8_t len) +int pcu_tx_pch_data_cnf(uint32_t fn, uint32_t tlli) { struct gsm_network *net = &bts_gsmnet; struct gsm_bts *bts; struct msgb *msg; struct gsm_pcu_if *pcu_prim; - struct gsm_pcu_if_data *data_cnf; /* FIXME: allow multiple BTS */ bts = llist_entry(net->bts_list.next, struct gsm_bts, list); @@ -638,12 +637,11 @@ if (!msg) return -ENOMEM; pcu_prim = (struct gsm_pcu_if *) msg->data; - data_cnf = &pcu_prim->u.data_cnf; - - data_cnf->sapi = PCU_IF_SAPI_PCH; - data_cnf->fn = fn; - memcpy(data_cnf->data, data, len); - data_cnf->len = len; + pcu_prim->u.data_cnf = (struct gsm_pcu_if_data_cnf) { + .sapi = PCU_IF_SAPI_PCH, + .tlli = tlli, + .fn = fn, + }; return pcu_sock_send(&bts_gsmnet, msg); } @@ -681,8 +679,16 @@ switch (data_req->sapi) { case PCU_IF_SAPI_PCH: - paging_add_imm_ass(bts->paging_state, data_req->data, data_req->len); + { + const struct gsm_pcu_if_pch_data *pd = (void *)&data_req->data; + if (OSMO_UNLIKELY(data_req->len != (sizeof(*pd) + GSM_MACBLOCK_LEN))) { + LOGP(DPCU, LOGL_ERROR, "Rx malformed DATA.req for PCH\n"); + rc = -EINVAL; + break; + } + rc = paging_add_imm_ass(bts->paging_state, pd->tlli, pd->imsi, &pd->data[0]); break; + } case PCU_IF_SAPI_AGCH: msg = msgb_alloc(data_req->len, "pcu_agch"); if (!msg) { -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/31600 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I1a8246f6d16d4595182432c1920afd3c5eae5079 Gerrit-Change-Number: 31600 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmo-pcu[master]: bts: add IMMEDIATE ASSIGNMENT via PCH transmission
by fixeria 28 Feb '23

28 Feb '23
Attention is currently required from: neels, pespin, dexter. fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/31145 ) Change subject: bts: add IMMEDIATE ASSIGNMENT via PCH transmission ...................................................................... Patch Set 18: Code-Review-1 (1 comment) File include/osmocom/pcu/pcuif_proto.h: https://gerrit.osmocom.org/c/osmo-pcu/+/31145/comment/39be9e40_3c907ecb PS17, Line 280: uint8_t pgroup[3]; Wait a minute, I am confused by this field. It's named `pgroup`, so that means it's supposed to contain a paging group, right? But in reality it's just the last three digits of the IMSI converted to ASCII. For some reason in osmo-pcu we convert these last three digits to ASCII, and then in osmo-bts (see `paging_add_imm_ass()`) we convert three ASCII bytes back to an integer add feed to `gsm0502_calc_paging_group()`. > I think this would then make using the struct at the BSC side more complicated I haven't looked at the BSC's implementation of the relevant part, but I don't see how using ASCII instead of plain integers simplifies things either. > The thing is that this value ends up at extract_paging_group and this function does a str_to_imsi(imsi_digit_buf) with the value ... So by sending a plain integer stored in `uint16_t` here we actually eliminate the need for `str_to_imsi()`. > If we can feed gsm0502_calc_paging_group() the pgroup value from here directly then we can use an uint16_t. I am pretty sure we can, why not. To summarize: * I see no reason for using ASCII to carry the last three digits of IMSI, * so let's just send plain integer here, directly from `ms_paging_group()`. * I agree with Pau that we should simply use `uint16_t`. * Name the field `imsi`, it's not a paging group itself. -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/31145 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: I2a78651593323e8b9627c39918d949a33497b70f Gerrit-Change-Number: 31145 Gerrit-PatchSet: 18 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Tue, 28 Feb 2023 20:59:46 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmo-pcu[master]: bts: add IMMEDIATE ASSIGNMENT via PCH transmission
by fixeria 28 Feb '23

28 Feb '23
Attention is currently required from: neels, pespin, dexter. fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/31145 ) Change subject: bts: add IMMEDIATE ASSIGNMENT via PCH transmission ...................................................................... Patch Set 18: (4 comments) Commit Message: https://gerrit.osmocom.org/c/osmo-pcu/+/31145/comment/c681e679_fca4667c PS18, Line 7: bts: add IMMEDIATE ASSIGNMENT via PCH transmission The commit message contains nothing about bumping the PCUIF version. Such changes should definitely be reflected in the commit log, IMO. File include/osmocom/pcu/pcuif_proto.h: https://gerrit.osmocom.org/c/osmo-pcu/+/31145/comment/76c17bd0_245e4ec4 PS18, Line 43: PCU_IF_SAPI_PCH_DT Didn't we agree that in the new PCUIF version there will be only one way to send DL blocks over PCH and the message will always contain TLLI now. I remember Pau complaining that having several ways to do the same thing is a mess. My understanding is that there should be only `PCU_IF_SAPI_PCH` in the new version and it shall always contain a TLLI. Ah, now I see comments from Pau and your response about backwards compatibility. https://gerrit.osmocom.org/c/osmo-pcu/+/31145/comment/8fddec62_fdec130c PS18, Line 273: is send typo: is sent File src/bts.cpp: https://gerrit.osmocom.org/c/osmo-pcu/+/31145/comment/4ec80c15_17cafdc2 PS17, Line 1134: pcu_l1if_tx_pch(bts, immediate_assignment, plen, ms_paging_group(tbf_ms(tbf))); > ... PCU will become incompatible with osmo-bts Yes, this is expected and desired when you bump the PCUIF version. > As far as I remember we decided to add a deprecation warning and upgrade osmo-bts later. It was discussed *before* we came to a conclusion that bumping the PCUIF version is needed after all. The point was to prevent the user from running an old version of osmo-pcu, which does not support and ignores the new E1 configuration messages. > ... lets not get blocked by the BTS part and keep compatibility for now Ok, now I see the reason why you're keeping the old messages and backwards compatibility (nothing in the commit message explains that). But what would it take to get this implemented in osmo-bts? I can quickly help you with that, so we just bump the PCUIF version and be done with it. I think 1h would be enough for me to implement this on the BTS side. -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/31145 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: I2a78651593323e8b9627c39918d949a33497b70f Gerrit-Change-Number: 31145 Gerrit-PatchSet: 18 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Tue, 28 Feb 2023 19:10:34 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmocom-bb[master]: l1ctl_proto.h: explicitly assign message type values
by laforge 28 Feb '23

28 Feb '23
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/31331 ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: l1ctl_proto.h: explicitly assign message type values ...................................................................... l1ctl_proto.h: explicitly assign message type values Explicit is better than implicit. Having the message type values assigned explicitly allows rearranging messages in the middle without affecting the message type values following them. Change-Id: I1ec32289a24c5704ea0676b508cb12ee0b4890d7 --- M include/l1ctl_proto.h 1 file changed, 50 insertions(+), 40 deletions(-) Approvals: pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/l1ctl_proto.h b/include/l1ctl_proto.h index a15f905..7e415e9 100644 --- a/include/l1ctl_proto.h +++ b/include/l1ctl_proto.h @@ -21,48 +21,45 @@ #define __L1CTL_PROTO_H__ enum { - _L1CTL_NONE = 0, - L1CTL_FBSB_REQ, - L1CTL_FBSB_CONF, - L1CTL_DATA_IND, - L1CTL_RACH_REQ, - L1CTL_DM_EST_REQ, - L1CTL_DATA_REQ, - L1CTL_RESET_IND, - L1CTL_PM_REQ, /* power measurement */ - L1CTL_PM_CONF, /* power measurement */ - L1CTL_ECHO_REQ, - L1CTL_ECHO_CONF, - L1CTL_RACH_CONF, - L1CTL_RESET_REQ, - L1CTL_RESET_CONF, - L1CTL_DATA_CONF, - L1CTL_CCCH_MODE_REQ, - L1CTL_CCCH_MODE_CONF, - L1CTL_DM_REL_REQ, - L1CTL_PARAM_REQ, - L1CTL_DM_FREQ_REQ, - L1CTL_CRYPTO_REQ, - L1CTL_SIM_REQ, - L1CTL_SIM_CONF, - L1CTL_TCH_MODE_REQ, - L1CTL_TCH_MODE_CONF, - L1CTL_NEIGH_PM_REQ, - L1CTL_NEIGH_PM_IND, - L1CTL_TRAFFIC_REQ, - L1CTL_TRAFFIC_CONF, - L1CTL_TRAFFIC_IND, - L1CTL_BURST_IND, - + _L1CTL_NONE = 0x00, + L1CTL_FBSB_REQ = 0x01, + L1CTL_FBSB_CONF = 0x02, + L1CTL_DATA_IND = 0x03, + L1CTL_RACH_REQ = 0x04, + L1CTL_DM_EST_REQ = 0x05, + L1CTL_DATA_REQ = 0x06, + L1CTL_RESET_IND = 0x07, + L1CTL_PM_REQ = 0x08, /* power measurement */ + L1CTL_PM_CONF = 0x09, /* power measurement */ + L1CTL_ECHO_REQ = 0x0a, + L1CTL_ECHO_CONF = 0x0b, + L1CTL_RACH_CONF = 0x0c, + L1CTL_RESET_REQ = 0x0d, + L1CTL_RESET_CONF = 0x0e, + L1CTL_DATA_CONF = 0x0f, + L1CTL_CCCH_MODE_REQ = 0x10, + L1CTL_CCCH_MODE_CONF = 0x11, + L1CTL_DM_REL_REQ = 0x12, + L1CTL_PARAM_REQ = 0x13, + L1CTL_DM_FREQ_REQ = 0x14, + L1CTL_CRYPTO_REQ = 0x15, + L1CTL_SIM_REQ = 0x16, + L1CTL_SIM_CONF = 0x17, + L1CTL_TCH_MODE_REQ = 0x18, + L1CTL_TCH_MODE_CONF = 0x19, + L1CTL_NEIGH_PM_REQ = 0x1a, + L1CTL_NEIGH_PM_IND = 0x1b, + L1CTL_TRAFFIC_REQ = 0x1c, + L1CTL_TRAFFIC_CONF = 0x1d, + L1CTL_TRAFFIC_IND = 0x1e, + L1CTL_BURST_IND = 0x1f, /* configure TBF for uplink/downlink */ - L1CTL_TBF_CFG_REQ, - L1CTL_TBF_CFG_CONF, - - L1CTL_DATA_TBF_REQ, - L1CTL_DATA_TBF_CONF, - + L1CTL_TBF_CFG_REQ = 0x20, + L1CTL_TBF_CFG_CONF = 0x21, + L1CTL_DATA_TBF_REQ = 0x22, + L1CTL_DATA_TBF_CONF = 0x23, /* Extended (11-bit) RACH (see 3GPP TS 05.02, section 5.2.7) */ - L1CTL_EXT_RACH_REQ, + L1CTL_EXT_RACH_REQ = 0x24, }; enum ccch_mode { -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/31331 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I1ec32289a24c5704ea0676b508cb12ee0b4890d7 Gerrit-Change-Number: 31331 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in docker-playground[master]: docker kill: wait until containers are stopped
by fixeria 28 Feb '23

28 Feb '23
Attention is currently required from: osmith. fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/docker-playground/+/31598 ) Change subject: docker kill: wait until containers are stopped ...................................................................... Patch Set 2: Code-Review+2 (1 comment) File jenkins-common.sh: https://gerrit.osmocom.org/c/docker-playground/+/31598/comment/ac85a66a_930… PS2, Line 195: "$1" Might be a good idea to allow specifying several containers at once. Both kill and wait commands do support this. Can be achieved by using "$*" here. -- To view, visit https://gerrit.osmocom.org/c/docker-playground/+/31598 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Change-Id: I0242ece96541d8036ebbf8b0f498ebf231db26b5 Gerrit-Change-Number: 31598 Gerrit-PatchSet: 2 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Comment-Date: Tue, 28 Feb 2023 19:05:48 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • ...
  • 261
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.