summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPablo Neira Ayuso2011-06-09 15:06:11 +0200
committerPablo Neira Ayuso2011-06-14 18:47:09 +0200
commit96e81280617112d5f683b5c78c010fd4843e2af0 (patch)
tree090f956d2bbfdea91da1ecd5d04e4e2eb02fb47b /tests
parentsrc: add support for logging infrastructure in libosmo-abis (diff)
downloadlibosmo-abis-96e81280617112d5f683b5c78c010fd4843e2af0.tar.gz
libosmo-abis-96e81280617112d5f683b5c78c010fd4843e2af0.tar.xz
libosmo-abis-96e81280617112d5f683b5c78c010fd4843e2af0.zip
input: ipaccess: add preliminary BTS-side for A-bis over IP
This patch adds the BTS-side for the ip.access driver for A-bis over IP communications. This patch adds one example under test/ so you can test the existing BSC and BTS sides over ip.access. Still incomplete, it requires to allow to register some callback in the BTS side to perform some action once we receive some message. This will come in next updates.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am7
-rw-r--r--tests/e1inp_ipa_bts_test.c90
2 files changed, 95 insertions, 2 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c9986fd..c27342d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -2,9 +2,12 @@ INCLUDES = $(all_includes) -I$(top_srcdir)/include
AM_CFLAGS=-Wall -g $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(COVERAGE_CFLAGS)
AM_LDFLAGS = $(COVERAGE_LDFLAGS)
-noinst_PROGRAMS = e1inp_ipa_bsc_test
+noinst_PROGRAMS = e1inp_ipa_bsc_test e1inp_ipa_bts_test
e1inp_ipa_bsc_test_SOURCES = e1inp_ipa_bsc_test.c
-
e1inp_ipa_bsc_test_LDADD = $(top_builddir)/src/libosmoabis.la \
$(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS)
+
+e1inp_ipa_bts_test_SOURCES = e1inp_ipa_bts_test.c
+e1inp_ipa_bts_test_LDADD = $(top_builddir)/src/libosmoabis.la \
+ $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS)
diff --git a/tests/e1inp_ipa_bts_test.c b/tests/e1inp_ipa_bts_test.c
new file mode 100644
index 0000000..bf6cf16
--- /dev/null
+++ b/tests/e1inp_ipa_bts_test.c
@@ -0,0 +1,90 @@
+#include <stdio.h>
+#include <talloc.h>
+#include <osmocom/abis/abis.h>
+#include <osmocom/abis/e1_input.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/application.h>
+
+static void *tall_test;
+
+static int sign_link_up(struct msgb *msg, struct e1inp_line *line)
+{
+ printf("ID_RESP received, create sign link.\n");
+ return 0;
+}
+
+static int sign_link(struct msgb *msg, struct e1inp_sign_link *link)
+{
+ printf("OML/RSL data received\n");
+ return 0;
+}
+
+static int error(struct msgb *msg, int error)
+{
+ printf("error, malformed message\n");
+ return 0;
+}
+
+#define DBTSTEST OSMO_LOG_SS_APPS
+
+struct log_info_cat bts_test_cat[] = {
+ [DBTSTEST] = {
+ .name = "DBTSTEST",
+ .description = "BTS-mode test",
+ .color = "\033[1;35m",
+ .enabled = 1, .loglevel = LOGL_NOTICE,
+ },
+};
+
+const struct log_info bts_test_log_info = {
+ .filter_fn = NULL,
+ .cat = bts_test_cat,
+ .num_cat = ARRAY_SIZE(bts_test_cat),
+};
+
+int main(void)
+{
+ struct e1inp_line *line;
+
+ tall_test = talloc_named_const(NULL, 1, "e1inp_test");
+ libosmo_abis_init(tall_test);
+
+ osmo_init_logging(&bts_test_log_info);
+
+ struct e1inp_line_ops ops = {
+ .sign_link_up = sign_link_up,
+ .sign_link = sign_link,
+ .error = error,
+ };
+
+#define LINENR 0
+
+ line = e1inp_line_create(LINENR, "ipa", &ops);
+ if (line == NULL) {
+ LOGP(DBTSTEST, LOGL_ERROR, "problem enabling E1 line\n");
+ exit(EXIT_FAILURE);
+ }
+
+ /*
+ * Depending if this is a real or virtual E1 lines:
+ * - real (ISDN): create signal link for OML and RSL before line up.
+ * - vitual (INET): we create it in signal_link_up(...) callback.
+ *
+ * The signal link is created via e1inp_sign_link_create(...)
+ *
+ * See e1_reconfig_trx and e1_reconfig_bts in libbsc/e1_config.c,
+ * it explains how this is done with ISDN.
+ */
+
+ if (e1inp_line_update(line, E1INP_LINE_R_BTS) < 0) {
+ LOGP(DBTSTEST, LOGL_ERROR, "problem enabling E1 line\n");
+ exit(EXIT_FAILURE);
+ }
+
+ LOGP(DBTSTEST, LOGL_NOTICE, "entering main loop\n");
+
+ while (1) {
+ osmo_select_main(0);
+ }
+ return 0;
+}