aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2016-11-28 23:26:50 +0100
committerAlexander Couzens <lynxis@fe80.eu>2016-11-28 23:26:50 +0100
commit95db69b7702a13b70cb5e796b06232a6a041bbed (patch)
tree2a96657150fc1af5e04dcd90c2c123177aadae8a
parentf710c89c439c8f5912f49444f55714c31f50ed33 (diff)
libbsc: add chreq type for CHREQ_T_PDCH_ONE_PHASE & CHREQ_T_PDCH_TWO_PHASE
When using a BSC located PCU the BSC must understand PDCH requests. Change-Id: Ie7f4ed000cf1b40d269873cf0ddf5ff9f5bbc18a
-rw-r--r--openbsc/include/openbsc/gsm_data.h2
-rw-r--r--openbsc/src/libbsc/gsm_04_08_utils.c18
2 files changed, 16 insertions, 4 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 70c08c326..d8ecc51c0 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -338,7 +338,7 @@ struct gsm_network {
enum rrlp_mode mode;
} rrlp;
- enum gsm_chan_t ctype_by_chreq[16];
+ enum gsm_chan_t ctype_by_chreq[18];
/* Use a TCH for handling requests of type paging any */
int pag_any_tch;
diff --git a/openbsc/src/libbsc/gsm_04_08_utils.c b/openbsc/src/libbsc/gsm_04_08_utils.c
index 46df10827..c8e455231 100644
--- a/openbsc/src/libbsc/gsm_04_08_utils.c
+++ b/openbsc/src/libbsc/gsm_04_08_utils.c
@@ -75,8 +75,12 @@ static const struct chreq chreq_type_neci1[] = {
{ 0x67, 0xff, CHREQ_T_LMU },
{ 0x60, 0xf9, CHREQ_T_RESERVED_SDCCH },
{ 0x61, 0xfb, CHREQ_T_RESERVED_SDCCH },
- { 0x63, 0xff, CHREQ_T_RESERVED_SDCCH },
- { 0x7f, 0xff, CHREQ_T_RESERVED_IGNORE },
+ { 0x63, 0xff, CHREQ_T_RESERVED_SDCCH },
+ { 0x70, 0xf8, CHREQ_T_PDCH_TWO_PHASE },
+ { 0x78, 0xfc, CHREQ_T_PDCH_ONE_PHASE },
+ { 0x79, 0xfa, CHREQ_T_PDCH_ONE_PHASE },
+ { 0x7a, 0xf9, CHREQ_T_PDCH_ONE_PHASE },
+ { 0x7f, 0xf, CHREQ_T_RESERVED_IGNORE },
};
/* If SYSTEM INFORMATION TYPE 4 NECI bit == 0 */
@@ -92,7 +96,11 @@ static const struct chreq chreq_type_neci0[] = {
{ 0x67, 0xff, CHREQ_T_LMU },
{ 0x60, 0xf9, CHREQ_T_RESERVED_SDCCH },
{ 0x61, 0xfb, CHREQ_T_RESERVED_SDCCH },
- { 0x63, 0xff, CHREQ_T_RESERVED_SDCCH },
+ { 0x63, 0xff, CHREQ_T_RESERVED_SDCCH },
+ { 0x70, 0xf8, CHREQ_T_PDCH_TWO_PHASE },
+ { 0x78, 0xfc, CHREQ_T_PDCH_ONE_PHASE },
+ { 0x79, 0xfa, CHREQ_T_PDCH_ONE_PHASE },
+ { 0x7a, 0xf9, CHREQ_T_PDCH_ONE_PHASE },
{ 0x7f, 0xff, CHREQ_T_RESERVED_IGNORE },
};
@@ -112,6 +120,8 @@ static const enum gsm_chan_t ctype_by_chreq[] = {
[CHREQ_T_PAG_R_TCH_FH] = GSM_LCHAN_TCH_F,
[CHREQ_T_LMU] = GSM_LCHAN_SDCCH,
[CHREQ_T_RESERVED_SDCCH] = GSM_LCHAN_SDCCH,
+ [CHREQ_T_PDCH_ONE_PHASE] = GSM_LCHAN_PDTCH,
+ [CHREQ_T_PDCH_TWO_PHASE] = GSM_LCHAN_PDTCH,
[CHREQ_T_RESERVED_IGNORE] = GSM_LCHAN_UNKNOWN,
};
@@ -130,6 +140,8 @@ static const enum gsm_chreq_reason_t reason_by_chreq[] = {
[CHREQ_T_PAG_R_TCH_F] = GSM_CHREQ_REASON_PAG,
[CHREQ_T_PAG_R_TCH_FH] = GSM_CHREQ_REASON_PAG,
[CHREQ_T_LMU] = GSM_CHREQ_REASON_OTHER,
+ [CHREQ_T_PDCH_ONE_PHASE] = GSM_CHREQ_REASON_PBCH,
+ [CHREQ_T_PDCH_TWO_PHASE] = GSM_CHREQ_REASON_PBCH,
[CHREQ_T_RESERVED_SDCCH] = GSM_CHREQ_REASON_OTHER,
[CHREQ_T_RESERVED_IGNORE] = GSM_CHREQ_REASON_OTHER,
};