diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-06-21 16:17:15 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-06-21 16:17:15 +0200 |
commit | e441d9c36174037f50245a0dc47c4ec41b3b5421 (patch) | |
tree | f9b959c66f18c33fc472ed08a129d3471c216755 /openbsc/include/openbsc | |
parent | 2cf161be08795be4a074ba2b50fdd81ad1f4c35e (diff) |
switch to dynamically allocated BTS and TRX data structures
This makes it much easier to do run-time configuration using the vty
interface.
Diffstat (limited to 'openbsc/include/openbsc')
-rw-r--r-- | openbsc/include/openbsc/gsm_data.h | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h index f300d31bb..9b4cf9df3 100644 --- a/openbsc/include/openbsc/gsm_data.h +++ b/openbsc/include/openbsc/gsm_data.h @@ -46,8 +46,6 @@ enum gsm_chreq_reason_t { #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -#define GSM_MAX_BTS 8 -#define BTS_MAX_TRX 8 #define TRX_NR_TS 8 #define TS_MAX_LCHAN 8 @@ -216,6 +214,9 @@ struct gsm_bts_trx_ts { /* One TRX in a BTS */ struct gsm_bts_trx { + /* list header in bts->trx_list */ + struct llist_head list; + struct gsm_bts *bts; /* number of this TRX in the BTS */ u_int8_t nr; @@ -297,6 +298,9 @@ struct gsm_envabtse { /* One BTS */ struct gsm_bts { + /* list header in net->bts_list */ + struct llist_head list; + struct gsm_network *network; /* number of ths BTS in network */ u_int8_t nr; @@ -351,7 +355,7 @@ struct gsm_bts { /* transceivers */ int num_trx; - struct gsm_bts_trx trx[BTS_MAX_TRX+1]; + struct llist_head trx_list; }; struct gsm_network { @@ -367,8 +371,7 @@ struct gsm_network { struct llist_head trans_list; unsigned int num_bts; - /* private lists */ - struct gsm_bts bts[GSM_MAX_BTS+1]; + struct llist_head bts_list; }; #define SMS_HDR_SIZE 128 @@ -382,9 +385,14 @@ struct gsm_sms { char text[SMS_TEXT_SIZE]; }; -struct gsm_network *gsm_network_init(unsigned int num_bts, enum gsm_bts_type bts_type, - u_int16_t country_code, u_int16_t network_code, +struct gsm_network *gsm_network_init(u_int16_t country_code, u_int16_t network_code, int (*mncc_recv)(struct gsm_network *, int, void *)); +struct gsm_bts *gsm_bts_alloc(struct gsm_network *net, enum gsm_bts_type type, + u_int8_t tsc, u_int8_t bsic); +struct gsm_bts_trx *gsm_bts_trx_alloc(struct gsm_bts *bts); + +struct gsm_bts *gsm_bts_num(struct gsm_network *net, int num); +struct gsm_bts_trx *gsm_bts_trx_num(struct gsm_bts *bts, int num); const char *gsm_pchan_name(enum gsm_phys_chan_config c); const char *gsm_lchan_name(enum gsm_chan_t c); |