diff options
-rw-r--r-- | include/osmo-bts/l1sap.h | 1 | ||||
-rw-r--r-- | src/common/l1sap.c | 6 | ||||
-rw-r--r-- | src/osmo-bts-litecell15/l1_if.c | 8 | ||||
-rw-r--r-- | src/osmo-bts-octphy/l1_if.c | 8 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/l1_if.c | 8 |
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; |