ms: Add back pointer to BTS

Since more functionality will be moved to the GprsMs class, a pointer
to the current BTS object is added to allow access to configuration
data and other methods.

Sponsored-by: On-Waves ehf
This commit is contained in:
Jacob Erlbeck 2015-06-02 14:06:12 +02:00
parent befc760f86
commit 17214bb06d
6 changed files with 21 additions and 12 deletions

View File

@ -100,6 +100,7 @@ BTS::BTS()
: m_cur_fn(0)
, m_pollController(*this)
, m_sba(*this)
, m_ms_store(this)
{
memset(&m_bts, 0, sizeof(m_bts));
INIT_LLIST_HEAD(&m_bts.ul_tbfs);

View File

@ -64,7 +64,8 @@ void GprsMs::timeout(void *priv_)
}
}
GprsMs::GprsMs(uint32_t tlli) :
GprsMs::GprsMs(BTS *bts, uint32_t tlli) :
m_bts(bts),
m_cb(&gprs_default_cb),
m_ul_tbf(NULL),
m_dl_tbf(NULL),
@ -101,7 +102,7 @@ GprsMs::~GprsMs()
m_dl_tbf->set_ms(NULL);
m_dl_tbf = NULL;
}
m_llc_queue.clear(NULL);
m_llc_queue.clear(m_bts);
}
void* GprsMs::operator new(size_t size)

View File

@ -34,6 +34,8 @@ extern "C" {
#include <stdint.h>
#include <stddef.h>
struct BTS;
class GprsMs {
public:
struct Callback {
@ -50,7 +52,7 @@ public:
GprsMs * const m_ms;
};
GprsMs(uint32_t tlli);
GprsMs(BTS *bts, uint32_t tlli);
~GprsMs();
void set_callback(Callback *cb) {m_cb = cb;}
@ -100,6 +102,7 @@ protected:
void stop_timer();
private:
BTS *m_bts;
Callback * m_cb;
gprs_rlcmac_ul_tbf *m_ul_tbf;
gprs_rlcmac_dl_tbf *m_dl_tbf;

View File

@ -24,7 +24,8 @@
#include "tbf.h"
#include "gprs_debug.h"
GprsMsStorage::GprsMsStorage()
GprsMsStorage::GprsMsStorage(BTS *bts) :
m_bts(bts)
{
}
@ -86,7 +87,7 @@ GprsMs *GprsMsStorage::create_ms(uint32_t tlli, enum gprs_rlcmac_tbf_direction d
if (ms)
return ms;
ms = new GprsMs(0);
ms = new GprsMs(m_bts, 0);
if (dir == GPRS_RLCMAC_UL_TBF)
ms->set_tlli(tlli);

View File

@ -26,9 +26,11 @@
#include <stdint.h>
#include <stddef.h>
struct BTS;
class GprsMsStorage : public GprsMs::Callback {
public:
GprsMsStorage();
GprsMsStorage(BTS *bts);
~GprsMsStorage();
virtual void ms_idle(class GprsMs *);
@ -38,5 +40,6 @@ public:
GprsMs *create_ms(uint32_t tlli, enum gprs_rlcmac_tbf_direction dir);
private:
BTS *m_bts;
LListHead<GprsMs> m_list;
};

View File

@ -50,7 +50,7 @@ static void test_ms_state()
printf("=== start %s ===\n", __func__);
ms = new GprsMs(tlli);
ms = new GprsMs(NULL, tlli);
OSMO_ASSERT(ms->is_idle());
dl_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf);
@ -106,7 +106,7 @@ static void test_ms_callback()
printf("=== start %s ===\n", __func__);
ms = new GprsMs(tlli);
ms = new GprsMs(NULL, tlli);
ms->set_callback(&cb);
OSMO_ASSERT(ms->is_idle());
@ -175,7 +175,7 @@ static void test_ms_replace_tbf()
printf("=== start %s ===\n", __func__);
ms = new GprsMs(tlli);
ms = new GprsMs(NULL, tlli);
ms->set_callback(&cb);
OSMO_ASSERT(ms->is_idle());
@ -242,7 +242,7 @@ static void test_ms_change_tlli()
printf("=== start %s ===\n", __func__);
ms = new GprsMs(start_tlli);
ms = new GprsMs(NULL, start_tlli);
OSMO_ASSERT(ms->is_idle());
@ -334,7 +334,7 @@ static void test_ms_storage()
gprs_rlcmac_ul_tbf *ul_tbf;
GprsMs *ms, *ms_tmp;
GprsMsStorage store;
GprsMsStorage store(NULL);
printf("=== start %s ===\n", __func__);
@ -423,7 +423,7 @@ static void test_ms_timeout()
printf("=== start %s ===\n", __func__);
ms = new GprsMs(tlli);
ms = new GprsMs(NULL, tlli);
ms->set_callback(&cb);
ms->set_timeout(1);