summaryrefslogtreecommitdiffstats
path: root/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h')
-rw-r--r--src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h b/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h
new file mode 100644
index 00000000..ff54e785
--- /dev/null
+++ b/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h
@@ -0,0 +1,64 @@
+#pragma once
+
+#include <stdint.h>
+
+struct osmo_fsm_inst;
+struct l1sched_state;
+struct l1gprs_state;
+struct msgb;
+
+struct trxcon_inst {
+ struct osmo_fsm_inst *fi;
+ unsigned int id;
+
+ /* Logging context for sched and l1c */
+ const char *log_prefix;
+
+ /* GSMTAP instance (optional) */
+ struct gsmtap_inst *gsmtap;
+
+ /* The L1 scheduler */
+ struct l1sched_state *sched;
+ /* GPRS state (MAC layer) */
+ struct l1gprs_state *gprs;
+
+ /* PHY interface (e.g. TRXC/TRXD) */
+ void *phyif;
+ /* L2 interface (e.g. L1CTL) */
+ void *l2if;
+
+ /* State specific data of trxcon_fsm */
+ void *fi_data;
+
+ /* L1 parameters */
+ struct {
+ uint16_t band_arfcn;
+ uint8_t tx_power;
+ uint8_t tsc; /* only valid for DCCH/PDCH */
+ int8_t ta;
+ } l1p;
+
+ /* PHY specific quirks */
+ struct {
+ /* FBSB timeout extension (in TDMA FNs) */
+ unsigned int fbsb_extend_fns;
+ } phy_quirks;
+};
+
+enum trxcon_log_cat {
+ TRXCON_LOGC_FSM, /* trxcon_fsm */
+ TRXCON_LOGC_L1C, /* L1CTL control */
+ TRXCON_LOGC_L1D, /* L1CTL data */
+ TRXCON_LOGC_SCHC, /* l1sched control */
+ TRXCON_LOGC_SCHD, /* l1sched data */
+ TRXCON_LOGC_GPRS, /* l1gprs logging */
+};
+
+void trxcon_set_log_cfg(const int *logc, unsigned int logc_num);
+
+struct trxcon_inst *trxcon_inst_alloc(void *ctx, unsigned int id);
+void trxcon_inst_free(struct trxcon_inst *trxcon);
+
+int trxcon_l1ctl_receive(struct trxcon_inst *trxcon, struct msgb *msg);
+int trxcon_l1ctl_send(struct trxcon_inst *trxcon, struct msgb *msg);
+void trxcon_l1ctl_close(struct trxcon_inst *trxcon);