aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-octphy
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2017-03-06 15:50:35 +0100
committerPhilipp Maier <pmaier@sysmocom.de>2017-04-13 19:02:29 +0200
commit8e7a51d8c3d945e0cce34fc25170c98375978c7c (patch)
tree7674021ed515c26ebccf66973171a2fe066bf55d /src/osmo-bts-octphy
parent416ee3ec89baa14c6d3ee632556e00521f12368c (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.c12
-rw-r--r--src/osmo-bts-octphy/l1_oml.c8
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: