diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2017-03-06 15:50:35 +0100 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2017-04-13 19:02:29 +0200 |
commit | 8e7a51d8c3d945e0cce34fc25170c98375978c7c (patch) | |
tree | 7674021ed515c26ebccf66973171a2fe066bf55d /src/osmo-bts-octphy | |
parent | 416ee3ec89baa14c6d3ee632556e00521f12368c (diff) |
octphy: add CBCH support
add Support for CBCH channels in osmo-bts-octphy
Change-Id: Ic5c8363b4dd8ba78ab22bd5527c08d1162331540
Diffstat (limited to 'src/osmo-bts-octphy')
-rw-r--r-- | src/osmo-bts-octphy/l1_if.c | 12 | ||||
-rw-r--r-- | src/osmo-bts-octphy/l1_oml.c | 8 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/osmo-bts-octphy/l1_if.c b/src/osmo-bts-octphy/l1_if.c index 0fc51fcc..b42fb3a7 100644 --- a/src/osmo-bts-octphy/l1_if.c +++ b/src/osmo-bts-octphy/l1_if.c @@ -43,6 +43,7 @@ #include <osmo-bts/logging.h> #include <osmo-bts/l1sap.h> #include <osmo-bts/handover.h> +#include <osmo-bts/cbch.h> #include "l1_if.h" #include "l1_oml.h" @@ -340,9 +341,11 @@ static uint8_t chan_nr_by_sapi(enum gsm_phys_chan_config pchan, cbits = 0x02 + subCh; break; case GSM_PCHAN_CCCH_SDCCH4: + case GSM_PCHAN_CCCH_SDCCH4_CBCH: cbits = 0x04 + subCh; break; case GSM_PCHAN_SDCCH8_SACCH8C: + case GSM_PCHAN_SDCCH8_SACCH8C_CBCH: cbits = 0x08 + subCh; break; default: @@ -353,9 +356,11 @@ static uint8_t chan_nr_by_sapi(enum gsm_phys_chan_config pchan, case cOCTVC1_GSM_SAPI_ENUM_SDCCH: switch (pchan) { case GSM_PCHAN_CCCH_SDCCH4: + case GSM_PCHAN_CCCH_SDCCH4_CBCH: cbits = 0x04 + subCh; break; case GSM_PCHAN_SDCCH8_SACCH8C: + case GSM_PCHAN_SDCCH8_SACCH8C_CBCH: cbits = 0x08 + subCh; break; default: @@ -918,6 +923,10 @@ static int handle_ph_readytosend_ind(struct octphy_hdl *fl1, (g_time.t1 << 7) | (g_time.t2 << 2) | (t3p >> 1); data_req->Data.abyDataContent[3] = (t3p & 1); break; + case cOCTVC1_GSM_SAPI_ENUM_CBCH: + rc = bts_cbch_get(bts, data_req->Data.abyDataContent, &g_time); + data_req->Data.ulDataLength = 23; /* GSM MAX BLK SIZE */ + break; case cOCTVC1_GSM_SAPI_ENUM_PRACH: #if 0 /* in case we decide to send an empty frame... */ @@ -1101,7 +1110,8 @@ static int handle_ph_rach_ind(struct octphy_hdl *fl1, l1sap->u.rach_ind.acc_delay = acc_delay; l1sap->u.rach_ind.fn = fn; if (!lchan || lchan->ts->pchan == GSM_PCHAN_CCCH || - lchan->ts->pchan == GSM_PCHAN_CCCH_SDCCH4) + lchan->ts->pchan == GSM_PCHAN_CCCH_SDCCH4 || + lchan->ts->pchan == GSM_PCHAN_CCCH_SDCCH4_CBCH) l1sap->u.rach_ind.chan_nr = 0x88; else l1sap->u.rach_ind.chan_nr = gsm_lchan2chan_nr(lchan); diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c index a68169e8..6857a5d1 100644 --- a/src/osmo-bts-octphy/l1_oml.c +++ b/src/osmo-bts-octphy/l1_oml.c @@ -64,6 +64,12 @@ static tOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM pchan_to_logChComb[_GSM_PCHA // TODO - watch out below two!!! [GSM_PCHAN_PDCH] = cOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM_PDTCHF_PACCHF_PTCCHF, [GSM_PCHAN_TCH_F_PDCH] = cOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM_PDTCHF_PACCHF_PTCCHF, +#ifdef cOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM_FCCH_SCH_BCCH_CCCH_SDCCH4_CBCH_SACCHC4 + [GSM_PCHAN_CCCH_SDCCH4_CBCH] = cOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM_FCCH_SCH_BCCH_CCCH_SDCCH4_CBCH_SACCHC4, +#endif +#ifdef cOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM_SDCCH8_CBCH_SACCHC8 + [GSM_PCHAN_SDCCH8_SACCH8C_CBCH] = cOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM_SDCCH8_CBCH_SACCHC8, +#endif [GSM_PCHAN_UNKNOWN] = cOCTVC1_GSM_LOGICAL_CHANNEL_COMBINATION_ENUM_EMPTY }; @@ -202,11 +208,13 @@ tOCTVC1_GSM_ID_SUB_CHANNEL_NB_ENUM lchan_to_GsmL1_SubCh_t(const struct gsm_lchan { switch (lchan->ts->pchan) { case GSM_PCHAN_CCCH_SDCCH4: + case GSM_PCHAN_CCCH_SDCCH4_CBCH: if (lchan->type == GSM_LCHAN_CCCH) return cOCTVC1_GSM_ID_SUB_CHANNEL_NB_ENUM_ALL; /* fall-through */ case GSM_PCHAN_TCH_H: case GSM_PCHAN_SDCCH8_SACCH8C: + case GSM_PCHAN_SDCCH8_SACCH8C_CBCH: return (tOCTVC1_GSM_ID_SUB_CHANNEL_NB_ENUM) lchan->nr; case GSM_PCHAN_NONE: case GSM_PCHAN_CCCH: |