aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-05-27 18:26:29 +0200
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-06-05 00:34:36 +0200
commit0686ae612834c329546c2f65d04283685ec790ad (patch)
tree9d6d6b9268ebad97407768b0efc55ff08178bc32 /include
parentd9daa3fd9ea2744de371190632b05b149feb4773 (diff)
[VAMOS] Implement the concept of 'shadow' timeslots
Diffstat (limited to 'include')
-rw-r--r--include/osmo-bts/bts_trx.h1
-rw-r--r--include/osmo-bts/gsm_data.h13
-rw-r--r--include/osmo-bts/l1sap.h9
3 files changed, 21 insertions, 2 deletions
diff --git a/include/osmo-bts/bts_trx.h b/include/osmo-bts/bts_trx.h
index d4c3f390..f033573f 100644
--- a/include/osmo-bts/bts_trx.h
+++ b/include/osmo-bts/bts_trx.h
@@ -48,6 +48,7 @@ static inline struct gsm_bts_trx *gsm_bts_bb_trx_get_trx(struct gsm_bts_bb_trx *
struct gsm_bts_trx *gsm_bts_trx_alloc(struct gsm_bts *bts);
struct gsm_bts_trx *gsm_bts_trx_num(const struct gsm_bts *bts, int num);
+void gsm_bts_trx_init_shadow_ts(struct gsm_bts_trx *trx);
char *gsm_trx_name(const struct gsm_bts_trx *trx);
const char *gsm_trx_unit_id(struct gsm_bts_trx *trx);
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index 93eb2f06..6ce5c3b7 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -463,6 +463,13 @@ struct gsm_bts_trx_ts {
/* Implementation specific structure(s) */
void *priv;
+ /* VAMOS specific fields */
+ struct {
+ /* NULL if BTS_FEAT_VAMOS is not set */
+ struct gsm_bts_trx_ts *peer;
+ bool is_shadow;
+ } vamos;
+
struct gsm_lchan lchan[TS_MAX_LCHAN];
};
@@ -515,6 +522,12 @@ char *gsm_ts_and_pchan_name(const struct gsm_bts_trx_ts *ts);
void gsm_lchan_name_update(struct gsm_lchan *lchan);
const char *gsm_lchans_name(enum gsm_lchan_state s);
+#define GSM_TS_NAME_FMT \
+ "bts=%u,trx=%u,ts=%u" "%s"
+#define GSM_TS_NAME_ARGS(ts) \
+ (ts)->trx->bts->nr, (ts)->trx->nr, (ts)->nr, \
+ (ts)->vamos.is_shadow ? ",shadow" : ""
+
static inline char *gsm_lchan_name(const struct gsm_lchan *lchan)
{
return lchan->name;
diff --git a/include/osmo-bts/l1sap.h b/include/osmo-bts/l1sap.h
index fe774312..f78d1143 100644
--- a/include/osmo-bts/l1sap.h
+++ b/include/osmo-bts/l1sap.h
@@ -19,9 +19,11 @@
#define L1SAP_IS_LINK_SACCH(link_id) \
((link_id & 0xC0) == LID_SACCH)
#define L1SAP_IS_CHAN_TCHF(chan_nr) \
- ((chan_nr & 0xf8) == RSL_CHAN_Bm_ACCHs)
+ ((chan_nr & 0xf8) == RSL_CHAN_Bm_ACCHs || \
+ (chan_nr & 0xf8) == RSL_CHAN_OSMO_VAMOS_Bm_ACCHs)
#define L1SAP_IS_CHAN_TCHH(chan_nr) \
- ((chan_nr & 0xf0) == RSL_CHAN_Lm_ACCHs)
+ ((chan_nr & 0xf0) == RSL_CHAN_Lm_ACCHs || \
+ (chan_nr & 0xf0) == RSL_CHAN_OSMO_VAMOS_Lm_ACCHs)
#define L1SAP_IS_CHAN_SDCCH4(chan_nr) \
((chan_nr & 0xe0) == RSL_CHAN_SDCCH4_ACCH)
#define L1SAP_IS_CHAN_SDCCH8(chan_nr) \
@@ -37,6 +39,9 @@
#define L1SAP_IS_CHAN_CBCH(chan_nr) \
((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH4) \
|| ((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH8)
+#define L1SAP_IS_CHAN_VAMOS(chan_nr) \
+ ((chan_nr & 0xf8) == RSL_CHAN_OSMO_VAMOS_Bm_ACCHs || \
+ (chan_nr & 0xf0) == RSL_CHAN_OSMO_VAMOS_Lm_ACCHs)
/* rach type from ra */
#define L1SAP_IS_PACKET_RACH(ra) ((ra & 0xf0) == 0x70 && (ra & 0x0f) != 0x0f)