jolly has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmocom-bb/+/41359?usp=email )


Change subject: Add ER-GSM band support to all relevant applications
......................................................................

Add ER-GSM band support to all relevant applications

ER-GSM band expands the R-GSM band by additional 15 channels.

Mobile application allows to turn on or off the support of these 15
channels. ER-GSM band is supported by default.

Change-Id: I71baa3317df685cf6479b6e20e6ae078911aa24f
---
M src/host/layer23/include/osmocom/bb/common/settings.h
M src/host/layer23/include/osmocom/bb/common/support.h
M src/host/layer23/src/common/settings.c
M src/host/layer23/src/common/support.c
M src/host/layer23/src/common/sysinfo.c
M src/host/layer23/src/misc/bcch_scan.c
M src/host/layer23/src/misc/cell_log.c
M src/host/layer23/src/mobile/gsm48_rr.c
M src/host/layer23/src/mobile/vty_interface.c
M src/shared/libosmocore/src/gsm/gsm_utils.c
M src/target/firmware/apps/rssi/main.c
11 files changed, 33 insertions(+), 21 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/59/41359/1

diff --git a/src/host/layer23/include/osmocom/bb/common/settings.h 
b/src/host/layer23/include/osmocom/bb/common/settings.h
index 1d3e53d..6b40120 100644
--- a/src/host/layer23/include/osmocom/bb/common/settings.h
+++ b/src/host/layer23/include/osmocom/bb/common/settings.h
@@ -239,6 +239,7 @@
        uint8_t                 p_gsm;
        uint8_t                 e_gsm;
        uint8_t                 r_gsm;
+       uint8_t                 er_gsm;
        uint8_t                 dcs;
        uint8_t                 gsm_850;
        uint8_t                 pcs;
diff --git a/src/host/layer23/include/osmocom/bb/common/support.h 
b/src/host/layer23/include/osmocom/bb/common/support.h
index b0c71f5..3dcfcab 100644
--- a/src/host/layer23/include/osmocom/bb/common/support.h
+++ b/src/host/layer23/include/osmocom/bb/common/support.h
@@ -49,6 +49,7 @@
        uint8_t p_gsm;
        uint8_t e_gsm;
        uint8_t r_gsm;
+       uint8_t er_gsm;
        uint8_t dcs;
        uint8_t gsm_850;
        uint8_t pcs;
diff --git a/src/host/layer23/src/common/settings.c 
b/src/host/layer23/src/common/settings.c
index 6bc5634..c09aba5 100644
--- a/src/host/layer23/src/common/settings.c
+++ b/src/host/layer23/src/common/settings.c
@@ -95,6 +95,7 @@
        set->p_gsm = sup->p_gsm;
        set->e_gsm = sup->e_gsm;
        set->r_gsm = sup->r_gsm;
+       set->er_gsm = sup->er_gsm;
        set->dcs = sup->dcs;
        set->class_900 = sup->class_900;
        set->class_dcs = sup->class_dcs;
@@ -182,6 +183,9 @@
        if (set->r_gsm)
                for(i = 955; i <= 974; i++)
                        set->freq_map[i >> 3] |= (1 << (i & 7));
+       if (set->er_gsm)
+               for(i = 940; i <= 954; i++)
+                       set->freq_map[i >> 3] |= (1 << (i & 7));

        return 0;
 }
diff --git a/src/host/layer23/src/common/support.c 
b/src/host/layer23/src/common/support.c
index a31b456..8bf034b 100644
--- a/src/host/layer23/src/common/support.c
+++ b/src/host/layer23/src/common/support.c
@@ -62,6 +62,7 @@
        sup->p_gsm = 1; /* P-GSM */
        sup->e_gsm = 1; /* E-GSM */
        sup->r_gsm = 1; /* R-GSM */
+       sup->er_gsm = 1; /* ER-GSM */
        sup->dcs = 1;
        sup->gsm_850 = 1;
        sup->pcs = 1;
@@ -113,7 +114,7 @@
        { 306, 340, 15, 0 }, /* GSM 480 */
        { 438, 511, 25, 0 },
        { 128, 251, 30, 0 }, /* GSM 850 */
-       { 955, 124, 30, 0 }, /* P,E,R GSM */
+       { 940, 124, 30, 0 }, /* P,E,(E)R GSM */
        { 512, 885, 40, 0 }, /* DCS 1800 */
        { 1024, 1322, 40, 0 }, /* PCS 1900 */
        { 0, 0, 0, 0 }
@@ -130,10 +131,11 @@

        print(priv, "Supported features of MS '%s':\n", sup->ms->name);
        print(priv, " Phase %d mobile station\n", sup->rev_lev + 1);
+       print(priv, " ER-GSM        : %s\n", SUP_SET(er_gsm));
        print(priv, " R-GSM        : %s\n", SUP_SET(r_gsm));
        print(priv, " E-GSM        : %s\n", SUP_SET(e_gsm));
        print(priv, " P-GSM        : %s\n", SUP_SET(p_gsm));
-       if (set->r_gsm || set->e_gsm || set->p_gsm)
+       if (set->er_gsm || set->r_gsm || set->e_gsm || set->p_gsm)
                print(priv, " GSM900 Class : %d\n", set->class_900);
        print(priv, " DCS 1800     : %s\n", SUP_SET(dcs));
        if (set->dcs)
diff --git a/src/host/layer23/src/common/sysinfo.c 
b/src/host/layer23/src/common/sysinfo.c
index efbc519..1046e78 100644
--- a/src/host/layer23/src/common/sysinfo.c
+++ b/src/host/layer23/src/common/sysinfo.c
@@ -399,7 +399,7 @@
 #if 0
        /* only Bit map 0 format for P-GSM */
        if ((cd[0] & 0xc0 & mask) != 0x00 &&
-           (set->p_gsm && !set->e_gsm && !set->r_gsm && !set->dcs))
+           (set->p_gsm && !set->e_gsm && !set->er_gsm && !set->r_gsm && 
!set->dcs))
                return 0;
 #endif

diff --git a/src/host/layer23/src/misc/bcch_scan.c 
b/src/host/layer23/src/misc/bcch_scan.c
index 69df043..a2381d6 100644
--- a/src/host/layer23/src/misc/bcch_scan.c
+++ b/src/host/layer23/src/misc/bcch_scan.c
@@ -264,7 +264,7 @@
                switch (fps.fps_state) {
                case FPS_S_PM_GSM900:
                        fps.fps_state = FPS_S_PM_EGSM900;
-                       return l1ctl_tx_pm_req_range(ms, 955, 1023);
+                       return l1ctl_tx_pm_req_range(ms, 940, 1023);
                case FPS_S_PM_EGSM900:
                        fps.fps_state = FPS_S_PM_GSM1800;
                        return l1ctl_tx_pm_req_range(ms, 512, 885);
diff --git a/src/host/layer23/src/misc/cell_log.c 
b/src/host/layer23/src/misc/cell_log.c
index ed4d74d..3e0ae9c 100644
--- a/src/host/layer23/src/misc/cell_log.c
+++ b/src/host/layer23/src/misc/cell_log.c
@@ -59,7 +59,7 @@
 };

 /* ranges of bands */
-static uint16_t basic_band_range[][2] = {{0, 124}, {512, 885}, {955, 1023}, 
{0, 0}};
+static uint16_t basic_band_range[][2] = {{0, 124}, {512, 885}, {940, 1023}, 
{0, 0}};
 uint16_t (*band_range)[][2] = &basic_band_range;

 #define INFO_FLG_PM    1
diff --git a/src/host/layer23/src/mobile/gsm48_rr.c 
b/src/host/layer23/src/mobile/gsm48_rr.c
index c04193c..be0889f 100644
--- a/src/host/layer23/src/mobile/gsm48_rr.c
+++ b/src/host/layer23/src/mobile/gsm48_rr.c
@@ -1284,12 +1284,12 @@
        else
                bitvec_set_bit(&bv, ZERO);
        /* band 2 supported */
-       if (set->e_gsm || set->r_gsm)
+       if (set->e_gsm || set->r_gsm || set->er_gsm)
                bitvec_set_bit(&bv, ONE);
        else
                bitvec_set_bit(&bv, ZERO);
        /* band 1 supported */
-       if (set->p_gsm && !(set->e_gsm || set->r_gsm))
+       if (set->p_gsm && !(set->e_gsm || set->r_gsm || set->er_gsm))
                bitvec_set_bit(&bv, ONE);
        else
                bitvec_set_bit(&bv, ZERO);
@@ -1311,15 +1311,15 @@
        else
                bitvec_set_bit(&bv, ZERO);
        /* radio capability */
-       if (!set->dcs && !set->p_gsm && !(set->e_gsm || set->r_gsm)) {
-               /* Fig. 10.5.7 / TS 24.0008: none of dcs, p, e, r */
+       if (!set->dcs && !set->p_gsm && !(set->e_gsm || set->r_gsm || 
set->er_gsm)) {
+               /* Fig. 10.5.7 / TS 24.0008: none of dcs, p, e, (e)r */
        } else
-       if (set->dcs && !set->p_gsm && !(set->e_gsm || set->r_gsm)) {
+       if (set->dcs && !set->p_gsm && !(set->e_gsm || set->r_gsm || 
set->er_gsm)) {
                /* dcs only */
                bitvec_set_uint(&bv, 0, 4);
                bitvec_set_uint(&bv, set->class_dcs, 4);
        } else
-       if (set->dcs && (set->p_gsm || (set->e_gsm || set->r_gsm))) {
+       if (set->dcs && (set->p_gsm || (set->e_gsm || set->r_gsm || 
set->er_gsm))) {
                /* dcs */
                bitvec_set_uint(&bv, set->class_dcs, 4);
                /* low band */
@@ -1332,7 +1332,7 @@
        /* These octets above shall be included according to GSM 04.08 Version 
5.3.0. */
        minimum_len = (bv.cur_bit + 7) >> 3;
        /* r support */
-       if (set->r_gsm) {
+       if (set->r_gsm || set->er_gsm) {
                bitvec_set_bit(&bv, ONE);
                bitvec_set_uint(&bv, set->class_900, 3);
        } else {
@@ -1388,7 +1388,7 @@
        if (set->edge_psk_sup) {
                bitvec_set_bit(&bv, ONE);
                bitvec_set_bit(&bv, set->edge_psk_uplink == 1);
-               if (set->p_gsm || (set->e_gsm || set->r_gsm)) {
+               if (set->p_gsm || (set->e_gsm || set->r_gsm || set->er_gsm)) {
                        bitvec_set_bit(&bv, ONE);
                        bitvec_set_uint(&bv, set->class_900_edge, 2);
                } else {
@@ -1469,7 +1469,7 @@
        cm->a5_1 = !set->a5_1;
        cm->es_ind = sup->es_ind;
        cm->rev_lev = sup->rev_lev;
-       cm->fc = (set->r_gsm || set->e_gsm);
+       cm->fc = (set->er_gsm || set->r_gsm || set->e_gsm);
        cm->vgcs = sup->vgcs;
        cm->vbs = sup->vbs;
        cm->sm_cap = set->sms_ptp;
@@ -1511,7 +1511,7 @@
        gsm48_rr_enc_cm2(ms, &cc->cm2, rr->cd_now.arfcn);

        /* classmark 3 */
-       if (set->dcs || set->pcs || set->e_gsm || set->r_gsm || set->gsm_850
+       if (set->dcs || set->pcs || set->e_gsm || set->r_gsm || set->er_gsm || 
set->gsm_850
         || set->a5_7 || set->a5_6 || set->a5_5 || set->a5_4
         || sup->ms_sup
         || sup->ucs2_treat
diff --git a/src/host/layer23/src/mobile/vty_interface.c 
b/src/host/layer23/src/mobile/vty_interface.c
index eb582d3..b5b3128 100644
--- a/src/host/layer23/src/mobile/vty_interface.c
+++ b/src/host/layer23/src/mobile/vty_interface.c
@@ -1569,12 +1569,13 @@
        SUP_WRITE(p_gsm, "p-gsm");
        SUP_WRITE(e_gsm, "e-gsm");
        SUP_WRITE(r_gsm, "r-gsm");
+       SUP_WRITE(er_gsm, "er-gsm");
        SUP_WRITE(gsm_850, "gsm-850");
        SUP_WRITE(gsm_480, "gsm-480");
        SUP_WRITE(gsm_450, "gsm-450");
        SUP_WRITE(dcs, "dcs");
        SUP_WRITE(pcs, "pcs");
-       if (sup->r_gsm || sup->e_gsm || sup->p_gsm)
+       if (sup->er_gsm || sup->r_gsm || sup->e_gsm || sup->p_gsm)
                if (!l23_vty_hide_default || sup->class_900 != set->class_900)
                        vty_out(vty, "  class-900 %d%s", set->class_900,
                                VTY_NEWLINE);
@@ -2470,6 +2471,7 @@
 SUP_EN_DI(p_gsm, "p-gsm", "P-GSM (900)", 1);
 SUP_EN_DI(e_gsm, "e-gsm", "E-GSM (850)", 1);
 SUP_EN_DI(r_gsm, "r-gsm", "R-GSM (850)", 1);
+SUP_EN_DI(er_gsm, "er-gsm", "ER-GSM (850)", 1);
 SUP_EN_DI(dcs, "dcs", "DCS (1800)", 1);
 SUP_EN_DI(gsm_850, "gsm-850", "GSM 850", 1);
 SUP_EN_DI(pcs, "pcs", "PCS (1900)", 1);
@@ -3111,6 +3113,8 @@
        install_element(SUPPORT_NODE, &cfg_ms_sup_di_e_gsm_cmd);
        install_element(SUPPORT_NODE, &cfg_ms_sup_en_r_gsm_cmd);
        install_element(SUPPORT_NODE, &cfg_ms_sup_di_r_gsm_cmd);
+       install_element(SUPPORT_NODE, &cfg_ms_sup_en_er_gsm_cmd);
+       install_element(SUPPORT_NODE, &cfg_ms_sup_di_er_gsm_cmd);
        install_element(SUPPORT_NODE, &cfg_ms_sup_en_dcs_cmd);
        install_element(SUPPORT_NODE, &cfg_ms_sup_di_dcs_cmd);
        install_element(SUPPORT_NODE, &cfg_ms_sup_en_gsm_850_cmd);
diff --git a/src/shared/libosmocore/src/gsm/gsm_utils.c 
b/src/shared/libosmocore/src/gsm/gsm_utils.c
index 4b170df..66d5abb 100644
--- a/src/shared/libosmocore/src/gsm/gsm_utils.c
+++ b/src/shared/libosmocore/src/gsm/gsm_utils.c
@@ -481,7 +481,7 @@
                return GSM_BAND_1900;
        else if (arfcn <= 124)
                return GSM_BAND_900;
-       else if (arfcn >= 955 && arfcn <= 1023)
+       else if (arfcn >= 940 && arfcn <= 1023)
                return GSM_BAND_900;
        else if (arfcn >= 128 && arfcn <= 251)
                return GSM_BAND_850;
@@ -517,8 +517,8 @@
                /* Primary GSM + ARFCN 0 of E-GSM */
                freq10_ul = 8900 + 2 * arfcn;
                freq10_dl = freq10_ul + 450;
-       } else if (arfcn >= 955 && arfcn <= 1023) {
-               /* E-GSM and R-GSM */
+       } else if (arfcn >= 940 && arfcn <= 1023) {
+               /* E-GSM and R-GSM and ER-GSM */
                freq10_ul = 8900 + 2 * (arfcn - 1024);
                freq10_dl = freq10_ul + 450;
        } else if (arfcn >= 128 && arfcn <= 251) {
diff --git a/src/target/firmware/apps/rssi/main.c 
b/src/target/firmware/apps/rssi/main.c
index b407caf..b424f13 100644
--- a/src/target/firmware/apps/rssi/main.c
+++ b/src/target/firmware/apps/rssi/main.c
@@ -79,8 +79,8 @@
        int min, max, prev, next, freq_ul, freq_dl;
 } bands[] = {
         { 128, 251, 124, 512, 8242, 8692 }, /* GSM 850 */
-        { 955, 124, 885, 128, 8762, 9212 }, /* P,E,R GSM */
-        { 512, 885, 251, 955, 17102, 18052 }, /* DCS 1800 */
+        { 940, 124, 885, 128, 8732, 9182 }, /* P,E,(E)R GSM */
+        { 512, 885, 251, 940, 17102, 18052 }, /* DCS 1800 */
        { 0, 0, 0, 0, 0, 0},
 };


--
To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/41359?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I71baa3317df685cf6479b6e20e6ae078911aa24f
Gerrit-Change-Number: 41359
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <[email protected]>

Reply via email to