aboutsummaryrefslogtreecommitdiffstats
path: root/src/bts.cpp
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-10-17 19:41:11 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-10-30 21:20:45 +0100
commitb6acfdaa24851e1aa95bfc4611709737aaafa5f1 (patch)
tree77ccb6c9ba4d387381fd82e3768189a6e7a334a7 /src/bts.cpp
parent67ed34eedb59320095396ff2f65f360c046d88c5 (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.cpp45
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;
+}