diff options
Diffstat (limited to 'include/osmo-bts/scheduler_backend.h')
-rw-r--r-- | include/osmo-bts/scheduler_backend.h | 88 |
1 files changed, 38 insertions, 50 deletions
diff --git a/include/osmo-bts/scheduler_backend.h b/include/osmo-bts/scheduler_backend.h index d7139008..820cca78 100644 --- a/include/osmo-bts/scheduler_backend.h +++ b/include/osmo-bts/scheduler_backend.h @@ -1,20 +1,18 @@ #pragma once -#define LOGL1S(subsys, level, l1t, tn, chan, fn, fmt, args ...) \ +#define LOGL1S(subsys, level, l1ts, chan, fn, fmt, args ...) \ LOGP(subsys, level, "%s %s %s: " fmt, \ gsm_fn_as_gsmtime_str(fn), \ - gsm_ts_name(&(l1t)->trx->ts[tn]), \ + gsm_ts_name((l1ts)->ts), \ chan >=0 ? trx_chan_desc[chan].name : "", ## args) -typedef int trx_sched_rts_func(struct l1sched_trx *l1t, uint8_t tn, - uint32_t fn, enum trx_chan_type chan); +/* Logging helper adding context from trx_{ul,dl}_burst_{ind,req} */ +#define LOGL1SB(subsys, level, l1ts, b, fmt, args ...) \ + LOGL1S(subsys, level, l1ts, (b)->chan, (b)->fn, fmt, ## args) -typedef ubit_t *trx_sched_dl_func(struct l1sched_trx *l1t, uint8_t tn, - uint32_t fn, enum trx_chan_type chan, - uint8_t bid, uint16_t *nbits); - -typedef int trx_sched_ul_func(struct l1sched_trx *l1t, enum trx_chan_type chan, - uint8_t bid, const struct trx_ul_burst_ind *bi); +typedef int trx_sched_rts_func(const struct l1sched_ts *l1ts, const struct trx_dl_burst_req *br); +typedef int trx_sched_dl_func(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); +typedef int trx_sched_ul_func(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi); struct trx_chan_desc { /*! \brief Human-readable name */ @@ -36,50 +34,40 @@ struct trx_chan_desc { }; extern const struct trx_chan_desc trx_chan_desc[_TRX_CHAN_MAX]; -extern const ubit_t _sched_tsc[8][26]; -extern const ubit_t _sched_egprs_tsc[8][78]; -const ubit_t _sched_fcch_burst[148]; -const ubit_t _sched_sch_train[64]; +extern const ubit_t _sched_dummy_burst[]; +extern const ubit_t _sched_train_seq_gmsk_nb[4][8][26]; +extern const ubit_t _sched_train_seq_8psk_nb[8][78]; +extern const ubit_t _sched_train_seq_gmsk_sb[64]; -struct msgb *_sched_dequeue_prim(struct l1sched_trx *l1t, int8_t tn, uint32_t fn, - enum trx_chan_type chan); +struct msgb *_sched_dequeue_prim(struct l1sched_ts *l1ts, const struct trx_dl_burst_req *br); -int _sched_compose_ph_data_ind(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t *l2, - uint8_t l2_len, float rssi, +int _sched_compose_ph_data_ind(struct l1sched_ts *l1ts, uint32_t fn, + enum trx_chan_type chan, + const uint8_t *data, size_t data_len, + uint16_t ber10k, float rssi, int16_t ta_offs_256bits, int16_t link_qual_cb, - uint16_t ber10k, enum osmo_ph_pres_info_type presence_info); -int _sched_compose_tch_ind(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t *tch, uint8_t tch_len); +int _sched_compose_tch_ind(struct l1sched_ts *l1ts, uint32_t fn, + enum trx_chan_type chan, + const uint8_t *data, size_t data_len, + uint16_t ber10k, float rssi, + int16_t ta_offs_256bits, int16_t link_qual_cb, + uint8_t is_sub); + +int tx_fcch_fn(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); +int tx_sch_fn(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); +int tx_data_fn(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); +int tx_pdtch_fn(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); +int tx_tchf_fn(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); +int tx_tchh_fn(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); -ubit_t *tx_idle_fn(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t bid, uint16_t *nbits); -ubit_t *tx_fcch_fn(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t bid, uint16_t *nbits); -ubit_t *tx_sch_fn(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t bid, uint16_t *nbits); -ubit_t *tx_data_fn(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t bid, uint16_t *nbits); -ubit_t *tx_pdtch_fn(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t bid, uint16_t *nbits); -ubit_t *tx_tchf_fn(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t bid, uint16_t *nbits); -ubit_t *tx_tchh_fn(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn, - enum trx_chan_type chan, uint8_t bid, uint16_t *nbits); -int rx_rach_fn(struct l1sched_trx *l1t, enum trx_chan_type chan, - uint8_t bid, const struct trx_ul_burst_ind *bi); -int rx_data_fn(struct l1sched_trx *l1t, enum trx_chan_type chan, - uint8_t bid, const struct trx_ul_burst_ind *bi); -int rx_pdtch_fn(struct l1sched_trx *l1t, enum trx_chan_type chan, - uint8_t bid, const struct trx_ul_burst_ind *bi); -int rx_tchf_fn(struct l1sched_trx *l1t, enum trx_chan_type chan, - uint8_t bid, const struct trx_ul_burst_ind *bi); -int rx_tchh_fn(struct l1sched_trx *l1t, enum trx_chan_type chan, - uint8_t bid, const struct trx_ul_burst_ind *bi); +int rx_rach_fn(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi); +int rx_data_fn(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi); +int rx_pdtch_fn(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi); +int rx_tchf_fn(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi); +int rx_tchh_fn(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi); -const ubit_t *_sched_dl_burst(struct l1sched_trx *l1t, uint8_t tn, - uint32_t fn, uint16_t *nbits); -int _sched_rts(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn); -void _sched_act_rach_det(struct l1sched_trx *l1t, uint8_t tn, uint8_t ss, int activate); +void _sched_dl_burst(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br); +int _sched_rts(const struct l1sched_ts *l1ts, uint32_t fn); +void _sched_act_rach_det(struct gsm_bts_trx *trx, uint8_t tn, uint8_t ss, int activate); |