aboutsummaryrefslogtreecommitdiffstats
path: root/src/pcu_main.cpp
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2012-07-12 09:18:42 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2012-07-13 13:46:25 +0200
commitebde64f258b5e522ad47399c034751d2e9421f90 (patch)
tree04f2662dbdba85eae75969af462a3fd0a20d7ee6 /src/pcu_main.cpp
parent1294256d65aeda9f37a20d0edae28a78b89bcf0f (diff)
logging: Add vty to allow definition/storage of debug levels
Note: This requires new libosomocore that allows to compile VTY headers with C++.
Diffstat (limited to 'src/pcu_main.cpp')
-rw-r--r--src/pcu_main.cpp46
1 files changed, 44 insertions, 2 deletions
diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp
index 6c30c1e4..2a01b9b0 100644
--- a/src/pcu_main.cpp
+++ b/src/pcu_main.cpp
@@ -25,15 +25,26 @@
#include <gprs_debug.h>
#include <unistd.h>
#include <getopt.h>
+extern "C" {
+#include "pcu_vty.h"
+#include <osmocom/vty/telnet_interface.h>
+#include <osmocom/vty/logging.h>
+}
struct gprs_rlcmac_bts *gprs_rlcmac_bts;
extern struct gprs_nsvc *nsvc;
uint16_t spoof_mcc = 0, spoof_mnc = 0;
+static int config_given = 0;
+static const char *config_file = "osmo-pcu.cfg";
+extern struct vty_app_info pcu_vty_info;
+void *tall_pcu_ctx;
static void print_help()
{
printf( "Some useful options:\n"
" -h --help this text\n"
+ " -c --config-file Specify the filename of the config "
+ "file\n"
" -m --mcc MCC use given MCC instead of value "
"provided by BTS\n"
" -n --mnc MNC use given MNC instead of value "
@@ -48,12 +59,13 @@ static void handle_options(int argc, char **argv)
int option_idx = 0, c;
static const struct option long_options[] = {
{ "help", 0, 0, 'h' },
+ { "config-file", 1, 0, 'c' },
{ "mcc", 1, 0, 'm' },
{ "mnc", 1, 0, 'n' },
{ 0, 0, 0, 0 }
};
- c = getopt_long(argc, argv, "hm:n:",
+ c = getopt_long(argc, argv, "hc:m:n:",
long_options, &option_idx);
if (c == -1)
break;
@@ -63,6 +75,10 @@ static void handle_options(int argc, char **argv)
print_help();
exit(0);
break;
+ case 'c':
+ config_file = strdup(optarg);
+ config_given = 1;
+ break;
case 'm':
spoof_mcc = atoi(optarg);
break;
@@ -82,7 +98,12 @@ int main(int argc, char *argv[])
struct gprs_rlcmac_bts *bts;
int rc;
- bts = gprs_rlcmac_bts = talloc_zero(NULL, struct gprs_rlcmac_bts);
+ tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context");
+ if (!tall_pcu_ctx)
+ return -ENOMEM;
+
+ bts = gprs_rlcmac_bts = talloc_zero(tall_pcu_ctx,
+ struct gprs_rlcmac_bts);
if (!gprs_rlcmac_bts)
return -ENOMEM;
gprs_rlcmac_bts->initial_cs = 1;
@@ -99,12 +120,32 @@ int main(int argc, char *argv[])
osmo_init_logging(&gprs_log_info);
+ vty_init(&pcu_vty_info);
+ pcu_vty_init(&gprs_log_info);
+
handle_options(argc, argv);
if ((!!spoof_mcc) + (!!spoof_mnc) == 1) {
fprintf(stderr, "--mcc and --mnc must be specified "
"together.\n");
exit(0);
}
+
+ rc = vty_read_config_file(config_file, NULL);
+ if (rc < 0 && config_given) {
+ fprintf(stderr, "Failed to parse the config file: '%s'\n",
+ config_file);
+ exit(1);
+ }
+ if (rc < 0)
+ fprintf(stderr, "No config file: '%s' Using default config.\n",
+ config_file);
+
+ rc = telnet_init(tall_pcu_ctx, NULL, 4240);
+ if (rc < 0) {
+ fprintf(stderr, "Error initializing telnet\n");
+ exit(1);
+ }
+
rc = pcu_l1if_open();
if (rc < 0)
@@ -121,6 +162,7 @@ int main(int argc, char *argv[])
pcu_l1if_close();
talloc_free(gprs_rlcmac_bts);
+ talloc_free(tall_pcu_ctx);
return 0;
}