diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-17 19:41:11 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-30 21:20:45 +0100 |
commit | b6acfdaa24851e1aa95bfc4611709737aaafa5f1 (patch) | |
tree | 77ccb6c9ba4d387381fd82e3768189a6e7a334a7 /src/bts.cpp | |
parent | 67ed34eedb59320095396ff2f65f360c046d88c5 (diff) |
bts: Introduce a singleton for the BTS and use it in the code
Compared to the previous code there will be a branch to get the
global pointer so the code will be slightly slower than the previous
version but it allows us to start creating objects but still use
the code from C. It is best approach I have found so far.
One downside of C++ is that by default talloc will not be used
(unless we override the new operator to use talloc. Right now
we need to memset the C data structure by hand. The benefit of
enforcing a better structure should is more important though.
Diffstat (limited to 'src/bts.cpp')
-rw-r--r-- | src/bts.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/bts.cpp b/src/bts.cpp new file mode 100644 index 00000000..0609a5fe --- /dev/null +++ b/src/bts.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2013 by Holger Hans Peter Freyther + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <bts.h> +#include <string.h> + +static BTS s_bts; + +BTS* BTS::main_bts() +{ + return &s_bts; +} + +struct gprs_rlcmac_bts *BTS::bts_data() +{ + return &m_bts; +} + +struct gprs_rlcmac_bts *bts_main_data() +{ + return BTS::main_bts()->bts_data(); +} + +BTS::BTS() +{ + memset(&m_bts, 0, sizeof(m_bts)); + m_bts.bts = this; +} |