add seperate interface for MUX to query BSR procedure

- this is also intented to make MUX RAT-agnostic
master
Andre Puschmann 8 years ago
parent f26969db8b
commit 20a004a768

@ -230,6 +230,31 @@ public:
}; };
//BSR interface for MUX
class bsr_interface_mux
{
public:
typedef enum {
LONG_BSR,
SHORT_BSR,
TRUNC_BSR
} bsr_format_t;
typedef struct {
bsr_format_t format;
uint32_t buff_size[4];
} bsr_t;
/* MUX calls BSR to check if it can fit a BSR into PDU */
virtual bool need_to_send_bsr_on_ul_grant(uint32_t grant_size, bsr_t *bsr) = 0;
/* MUX calls BSR to let it generate a padding BSR if there is space in PDU */
virtual bool generate_padding_bsr(uint32_t nof_padding_bytes, bsr_t *bsr) = 0;
/* MAX calls BSR to set the Tx TTI */
virtual void set_tx_tti(uint32_t tti) = 0;
};
/** MAC interface /** MAC interface
* *

@ -57,7 +57,7 @@ class mux
public: public:
mux(); mux();
void reset(); void reset();
void init(rlc_interface_mac *rlc, srslte::log *log_h, bsr_proc *bsr_procedure, phr_proc *phr_procedure_); void init(rlc_interface_mac *rlc, srslte::log *log_h, bsr_interface_mux *bsr_procedure, phr_proc *phr_procedure_);
bool is_pending_any_sdu(); bool is_pending_any_sdu();
bool is_pending_sdu(uint32_t lcid); bool is_pending_sdu(uint32_t lcid);
@ -94,7 +94,7 @@ private:
srslte::log *log_h; srslte::log *log_h;
rlc_interface_mac *rlc; rlc_interface_mac *rlc;
bsr_proc *bsr_procedure; bsr_interface_mux *bsr_procedure;
phr_proc *phr_procedure; phr_proc *phr_procedure;
uint16_t pending_crnti_ce; uint16_t pending_crnti_ce;

@ -37,7 +37,7 @@
namespace srsue { namespace srsue {
class bsr_proc : public srslte::timer_callback class bsr_proc : public srslte::timer_callback, public bsr_interface_mux
{ {
public: public:
bsr_proc(); bsr_proc();
@ -48,18 +48,6 @@ public:
void set_priority(uint32_t lcid, uint32_t priority); void set_priority(uint32_t lcid, uint32_t priority);
void timer_expired(uint32_t timer_id); void timer_expired(uint32_t timer_id);
uint32_t get_buffer_state(); uint32_t get_buffer_state();
typedef enum {
LONG_BSR,
SHORT_BSR,
TRUNC_BSR
} bsr_format_t;
typedef struct {
bsr_format_t format;
uint32_t buff_size[4];
} bsr_t;
bool need_to_send_bsr_on_ul_grant(uint32_t grant_size, bsr_t *bsr); bool need_to_send_bsr_on_ul_grant(uint32_t grant_size, bsr_t *bsr);
bool generate_padding_bsr(uint32_t nof_padding_bytes, bsr_t *bsr); bool generate_padding_bsr(uint32_t nof_padding_bytes, bsr_t *bsr);
bool need_to_send_sr(uint32_t tti); bool need_to_send_sr(uint32_t tti);

@ -51,7 +51,7 @@ mux::mux() : pdu_msg(MAX_NOF_SUBHEADERS)
msg3_flush(); msg3_flush();
} }
void mux::init(rlc_interface_mac *rlc_, srslte::log *log_h_, bsr_proc *bsr_procedure_, phr_proc *phr_procedure_) void mux::init(rlc_interface_mac *rlc_, srslte::log *log_h_, bsr_interface_mux *bsr_procedure_, phr_proc *phr_procedure_)
{ {
log_h = log_h_; log_h = log_h_;
rlc = rlc_; rlc = rlc_;

Loading…
Cancel
Save