add LCID change API to UE interface, add method to reestablish single RLC bearer
This commit is contained in:
parent
352ea36246
commit
184539b87d
|
@ -240,6 +240,7 @@ public:
|
|||
virtual void reset() = 0;
|
||||
virtual void write_sdu(uint32_t lcid, srslte::byte_buffer_t *sdu, bool blocking = true) = 0;
|
||||
virtual void add_bearer(uint32_t lcid, srslte::srslte_pdcp_config_t cnfg = srslte::srslte_pdcp_config_t()) = 0;
|
||||
virtual void change_lcid(uint32_t old_lcid, uint32_t new_lcid) = 0;
|
||||
virtual void config_security(uint32_t lcid,
|
||||
uint8_t *k_enc_,
|
||||
uint8_t *k_int_,
|
||||
|
@ -273,10 +274,12 @@ class rlc_interface_rrc
|
|||
public:
|
||||
virtual void reset() = 0;
|
||||
virtual void reestablish() = 0;
|
||||
virtual void reestablish(uint32_t lcid) = 0;
|
||||
virtual void add_bearer(uint32_t lcid) = 0;
|
||||
virtual void add_bearer(uint32_t lcid, srslte::srslte_rlc_config_t cnfg) = 0;
|
||||
virtual void add_bearer_mrb(uint32_t lcid) = 0;
|
||||
virtual void del_bearer(uint32_t lcid) = 0;
|
||||
virtual void change_lcid(uint32_t old_lcid, uint32_t new_lcid) = 0;
|
||||
};
|
||||
|
||||
// RLC interface for PDCP
|
||||
|
|
|
@ -81,6 +81,7 @@ public:
|
|||
|
||||
// RRC interface
|
||||
void reestablish();
|
||||
void reestablish(uint32_t lcid);
|
||||
void reset();
|
||||
void empty_queue();
|
||||
void add_bearer(uint32_t lcid);
|
||||
|
|
|
@ -144,7 +144,7 @@ void rlc::get_metrics(rlc_metrics_t &m)
|
|||
pthread_rwlock_unlock(&rwlock);
|
||||
}
|
||||
|
||||
// A call to reestablish stops all lcids but does not delete the instances. The mapping lcid to rlc mode can not change
|
||||
// Reestablish all RLC bearer
|
||||
void rlc::reestablish()
|
||||
{
|
||||
pthread_rwlock_rdlock(&rwlock);
|
||||
|
@ -160,6 +160,18 @@ void rlc::reestablish()
|
|||
pthread_rwlock_unlock(&rwlock);
|
||||
}
|
||||
|
||||
// Reestablish a specific RLC bearer
|
||||
void rlc::reestablish(uint32_t lcid)
|
||||
{
|
||||
pthread_rwlock_rdlock(&rwlock);
|
||||
if (valid_lcid(lcid)) {
|
||||
rlc_array.at(lcid)->reestablish();
|
||||
} else {
|
||||
rlc_log->warning("RLC LCID %d doesn't exist. Deallocating SDU\n", lcid);
|
||||
}
|
||||
pthread_rwlock_unlock(&rwlock);
|
||||
}
|
||||
|
||||
// Resetting the RLC layer returns the object to the state after the call to init():
|
||||
// All LCIDs are removed, except SRB0
|
||||
void rlc::reset()
|
||||
|
|
Loading…
Reference in New Issue