aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmo-bts/l1sap.h1
-rw-r--r--src/common/l1sap.c6
-rw-r--r--src/osmo-bts-litecell15/l1_if.c8
-rw-r--r--src/osmo-bts-octphy/l1_if.c8
-rw-r--r--src/osmo-bts-sysmo/l1_if.c8
5 files changed, 16 insertions, 15 deletions
diff --git a/include/osmo-bts/l1sap.h b/include/osmo-bts/l1sap.h
index 4568b7ed..3225a60f 100644
--- a/include/osmo-bts/l1sap.h
+++ b/include/osmo-bts/l1sap.h
@@ -23,6 +23,7 @@
#define L1SAP_IS_CHAN_RACH(chan_nr) ((chan_nr & 0xf8) == 0x88)
#define L1SAP_IS_CHAN_AGCH_PCH(chan_nr) ((chan_nr & 0xf8) == 0x90)
#define L1SAP_IS_CHAN_PDCH(chan_nr) ((chan_nr & 0xf8) == 0xc0)
+#define L1SAP_IS_CHAN_CBCH(chan_nr) ((chan_nr & 0xf8) == 0xc8)
/* rach type from ra */
#define L1SAP_IS_PACKET_RACH(ra) ((ra & 0xf0) == 0x70 && (ra & 0x0f) != 0x0f)
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 55b4a4bb..b29fcc71 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -53,6 +53,7 @@
#include <osmo-bts/power_control.h>
#include <osmo-bts/msg_utils.h>
#include <osmo-bts/pcuif_proto.h>
+#include <osmo-bts/cbch.h>
struct gsm_lchan *get_lchan_by_chan_nr(struct gsm_bts_trx *trx,
unsigned int chan_nr)
@@ -265,6 +266,8 @@ static int gsmtap_ph_data(struct osmo_phsap_prim *l1sap, uint8_t *chan_type,
*chan_type = GSMTAP_CHANNEL_PCH;
else
*chan_type = GSMTAP_CHANNEL_AGCH;
+ } else if (L1SAP_IS_CHAN_CBCH(chan_nr)) {
+ *chan_type = GSMTAP_CHANNEL_CBCH51;
} else if (L1SAP_IS_CHAN_PDCH(chan_nr)) {
*chan_type = GSMTAP_CHANNEL_PDTCH;
}
@@ -737,6 +740,9 @@ static int l1sap_ph_rts_ind(struct gsm_bts_trx *trx,
memcpy(p, si, GSM_MACBLOCK_LEN);
else
memcpy(p, fill_frame, GSM_MACBLOCK_LEN);
+ } else if (L1SAP_IS_CHAN_CBCH(chan_nr)) {
+ p = msgb_put(msg, GSM_MACBLOCK_LEN);
+ bts_cbch_get(trx->bts, p, &g_time);
} else if (!(chan_nr & 0x80)) { /* only TCH/F, TCH/H, SDCCH/4 and SDCCH/8 have C5 bit cleared */
lchan = get_active_lchan_by_chan_nr(trx, chan_nr);
if (!lchan) {
diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c
index f582bf2c..82299ff4 100644
--- a/src/osmo-bts-litecell15/l1_if.c
+++ b/src/osmo-bts-litecell15/l1_if.c
@@ -50,7 +50,6 @@
#include <osmo-bts/measurement.h>
#include <osmo-bts/pcu_if.h>
#include <osmo-bts/handover.h>
-#include <osmo-bts/cbch.h>
#include <osmo-bts/bts_model.h>
#include <osmo-bts/l1sap.h>
#include <osmo-bts/msg_utils.h>
@@ -700,6 +699,9 @@ static uint8_t chan_nr_by_sapi(struct gsm_bts_trx_ts *ts,
case GsmL1_Sapi_Bcch:
cbits = 0x10;
break;
+ case GsmL1_Sapi_Cbch:
+ cbits = 0xc8; /* Osmocom extension for CBCH via L1SAP */
+ break;
case GsmL1_Sapi_Sacch:
switch(pchan) {
case GSM_PCHAN_TCH_F:
@@ -867,10 +869,6 @@ static int handle_ph_readytosend_ind(struct lc15l1_hdl *fl1,
case GsmL1_Sapi_Prach:
goto empty_frame;
break;
- case GsmL1_Sapi_Cbch:
- /* get them from bts->si_buf[] */
- bts_cbch_get(bts, msu_param->u8Buffer, &g_time);
- break;
default:
memcpy(msu_param->u8Buffer, fill_frame, GSM_MACBLOCK_LEN);
break;
diff --git a/src/osmo-bts-octphy/l1_if.c b/src/osmo-bts-octphy/l1_if.c
index 91ef07b9..35d0aa33 100644
--- a/src/osmo-bts-octphy/l1_if.c
+++ b/src/osmo-bts-octphy/l1_if.c
@@ -43,7 +43,6 @@
#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"
@@ -357,6 +356,9 @@ static uint8_t chan_nr_by_sapi(struct gsm_bts_trx_ts *ts,
case cOCTVC1_GSM_SAPI_ENUM_BCCH:
cbits = 0x10;
break;
+ case cOCTVC1_GSM_SAPI_ENUM_CBCH:
+ cbits = 0xc8; /* Osmocom extension for CBCH via L1SAP */
+ break;
case cOCTVC1_GSM_SAPI_ENUM_SACCH:
switch (pchan) {
case GSM_PCHAN_TCH_F:
@@ -1017,10 +1019,6 @@ 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... */
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index 1321fe66..c0b42b42 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -46,7 +46,6 @@
#include <osmo-bts/measurement.h>
#include <osmo-bts/pcu_if.h>
#include <osmo-bts/handover.h>
-#include <osmo-bts/cbch.h>
#include <osmo-bts/bts_model.h>
#include <osmo-bts/l1sap.h>
#include <osmo-bts/msg_utils.h>
@@ -697,6 +696,9 @@ static uint8_t chan_nr_by_sapi(struct gsm_bts_trx_ts *ts,
case GsmL1_Sapi_Bcch:
cbits = 0x10;
break;
+ case GsmL1_Sapi_Cbch:
+ cbits = 0xc8; /* Osmocom extension for CBCH via L1SAP */
+ break;
case GsmL1_Sapi_Sacch:
switch(pchan) {
case GSM_PCHAN_TCH_F:
@@ -864,10 +866,6 @@ static int handle_ph_readytosend_ind(struct femtol1_hdl *fl1,
case GsmL1_Sapi_Prach:
goto empty_frame;
break;
- case GsmL1_Sapi_Cbch:
- /* get them from bts->si_buf[] */
- bts_cbch_get(bts, msu_param->u8Buffer, &g_time);
- break;
default:
memcpy(msu_param->u8Buffer, fill_frame, GSM_MACBLOCK_LEN);
break;