aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2020-11-01 22:22:56 +0100
committerPhilipp Maier <pmaier@sysmocom.de>2020-11-27 16:02:45 +0100
commit33dfe2bcec8f18f31239fa4c6c48c92f3e42cbe9 (patch)
treec1af871bd5ed0ea42810639680ccc34102ee82b4 /include
parentdef24f0d9af2463a5ef557d35f23abd5b4d07120 (diff)
l1sap: add repeated downlink FACCH
3GPP TS 44.006, section 10 describes a method how the downlink FACCH transmission can be repeated to increase transmission reliability. Change-Id: I72f0cf7eaaef9f80fc35e752c90ae0e2d24d0c75 Depends: libosmocore I6dda239e9cd7033297bed1deb5eb1d9f87b8433f Related: OS#4796 SYS#5114
Diffstat (limited to 'include')
-rw-r--r--include/osmo-bts/gsm_data.h12
-rw-r--r--include/osmo-bts/l1sap.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index 7670508a..47a6db82 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -156,6 +156,11 @@ enum lchan_rel_act_kind {
LCHAN_REL_ACT_REACT, /* remove once auto-activation hack is removed from opstart_compl() */
};
+struct gsm_rep_facch {
+ struct msgb *msg;
+ uint32_t fn;
+};
+
struct gsm_lchan {
/* The TS that we're part of */
struct gsm_bts_trx_ts *ts;
@@ -272,6 +277,10 @@ struct gsm_lchan {
} dtx;
uint8_t last_cmr;
uint32_t last_fn;
+
+ /* SLOT #0 and #1 to store FACCH for repetition */
+ struct gsm_rep_facch rep_facch[2];
+
} tch;
/* 3GPP TS 48.058 ยง 9.3.37: [0; 255] ok, -1 means invalid*/
@@ -314,6 +323,9 @@ struct gsm_lchan {
/* ECU (Error Concealment Unit) state */
struct osmo_ecu_state *ecu_state;
+
+ struct abis_rsl_osmo_rep_acch_cap repeated_acch_capability;
+ bool repeated_dl_facch_active;
};
static inline uint8_t lchan_get_ta(const struct gsm_lchan *lchan)
diff --git a/include/osmo-bts/l1sap.h b/include/osmo-bts/l1sap.h
index 1fcf78cc..85fe5487 100644
--- a/include/osmo-bts/l1sap.h
+++ b/include/osmo-bts/l1sap.h
@@ -144,4 +144,7 @@ int bts_check_for_first_ciphrd(struct gsm_lchan *lchan,
int is_ccch_for_agch(struct gsm_bts_trx *trx, uint32_t fn);
+void repeated_dl_facch_active_decision(struct gsm_lchan *lchan,
+ const uint8_t *l3, size_t l3_len);
+
#endif /* L1SAP_H */