diff options
Diffstat (limited to 'src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h')
-rw-r--r-- | src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h | 64 |
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); |