aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-virtual
diff options
context:
space:
mode:
Diffstat (limited to 'src/osmo-bts-virtual')
-rw-r--r--src/osmo-bts-virtual/Makefile.am4
-rw-r--r--src/osmo-bts-virtual/include/virtphy/common_util.h51
-rw-r--r--src/osmo-bts-virtual/l1_if.c76
-rw-r--r--src/osmo-bts-virtual/shared/common_util.c44
4 files changed, 98 insertions, 77 deletions
diff --git a/src/osmo-bts-virtual/Makefile.am b/src/osmo-bts-virtual/Makefile.am
index ac22d8e..b250335 100644
--- a/src/osmo-bts-virtual/Makefile.am
+++ b/src/osmo-bts-virtual/Makefile.am
@@ -2,7 +2,9 @@ AM_CFLAGS = -Wall -fno-strict-aliasing $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS
AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(OPENBSC_INCDIR) -Iinclude
COMMON_LDADD = $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS) $(LIBOSMOVTY_LIBS) $(LIBOSMOTRAU_LIBS) $(LIBOSMOABIS_LIBS) $(LIBOSMOCTRL_LIBS) $(ORTP_LIBS)
+CFLAGS = -g -O0
+
bin_PROGRAMS = osmo-bts-virtual
-osmo_bts_virtual_SOURCES = main.c bts_model.c virtualbts_vty.c scheduler_virtbts.c l1_if.c shared/virtual_um.c shared/osmo_mcast_sock.c
+osmo_bts_virtual_SOURCES = main.c bts_model.c virtualbts_vty.c scheduler_virtbts.c l1_if.c shared/virtual_um.c shared/osmo_mcast_sock.c shared/common_util.c
osmo_bts_virtual_LDADD = $(top_builddir)/src/common/libbts.a $(top_builddir)/src/common/libl1sched.a $(COMMON_LDADD)
diff --git a/src/osmo-bts-virtual/include/virtphy/common_util.h b/src/osmo-bts-virtual/include/virtphy/common_util.h
new file mode 100644
index 0000000..672ff93
--- /dev/null
+++ b/src/osmo-bts-virtual/include/virtphy/common_util.h
@@ -0,0 +1,51 @@
+/*
+ * Utility function used both in osmo bts virt and osmocom bb virt.
+ */
+
+#pragma once
+
+#include <osmocom/core/gsmtap.h>
+#include <osmocom/gsm/rsl.h>
+
+#define LID_SACCH 0x40
+#define LID_DEDIC 0x00
+
+/*! \brief convert GSMTAP channel type to RSL channel number
+ * \param[in] gsmtap_chantype GSMTAP channel type
+ * \param[out] rsl_chantype rsl channel type
+ * \param[out] rsl_chantype rsl link id
+ *
+ * Mapping from gsmtap channel:
+ * GSMTAP_CHANNEL_UNKNOWN * 0x00
+ * GSMTAP_CHANNEL_BCCH * 0x01
+ * GSMTAP_CHANNEL_CCCH * 0x02
+ * GSMTAP_CHANNEL_RACH * 0x03
+ * GSMTAP_CHANNEL_AGCH * 0x04
+ * GSMTAP_CHANNEL_PCH * 0x05
+ * GSMTAP_CHANNEL_SDCCH * 0x06
+ * GSMTAP_CHANNEL_SDCCH4 * 0x07
+ * GSMTAP_CHANNEL_SDCCH8 * 0x08
+ * GSMTAP_CHANNEL_TCH_F * 0x09
+ * GSMTAP_CHANNEL_TCH_H * 0x0a
+ * GSMTAP_CHANNEL_PACCH * 0x0b
+ * GSMTAP_CHANNEL_CBCH52 * 0x0c
+ * GSMTAP_CHANNEL_PDCH * 0x0d
+ * GSMTAP_CHANNEL_PTCCH * 0x0e
+ * GSMTAP_CHANNEL_CBCH51 * 0x0f
+ * to rsl channel type:
+ * RSL_CHAN_NR_MASK * 0xf8
+ * RSL_CHAN_NR_1 * * 0x08
+ * RSL_CHAN_Bm_ACCHs * 0x08
+ * RSL_CHAN_Lm_ACCHs * 0x10
+ * RSL_CHAN_SDCCH4_ACCH * 0x20
+ * RSL_CHAN_SDCCH8_ACCH * 0x40
+ * RSL_CHAN_BCCH * * 0x80
+ * RSL_CHAN_RACH * * 0x88
+ * RSL_CHAN_PCH_AGCH * 0x90
+ * RSL_CHAN_OSMO_PDCH * 0xc0
+ * and logical channel link id:
+ * LID_SACCH * * 0x40
+ * LID_DEDIC * * 0x00
+ */
+void chantype_gsmtap2rsl(uint8_t gsmtap_chantype, uint8_t *rsl_chantype,
+ uint8_t *link_id);
diff --git a/src/osmo-bts-virtual/l1_if.c b/src/osmo-bts-virtual/l1_if.c
index c049140..160528d 100644
--- a/src/osmo-bts-virtual/l1_if.c
+++ b/src/osmo-bts-virtual/l1_if.c
@@ -44,82 +44,6 @@
extern int vbts_sched_start(struct gsm_bts *bts);
-/*! \brief convert GSMTAP channel type to RSL channel number
- * \param[in] gsmtap_chantype GSMTAP channel type
- * \param[out] rsl_chantype rsl channel type
- * \param[out] rsl_chantype rsl link id
- *
- * Mapping from gsmtap channel:
- * GSMTAP_CHANNEL_UNKNOWN * 0x00
- * GSMTAP_CHANNEL_BCCH * 0x01
- * GSMTAP_CHANNEL_CCCH * 0x02
- * GSMTAP_CHANNEL_RACH * 0x03
- * GSMTAP_CHANNEL_AGCH * 0x04
- * GSMTAP_CHANNEL_PCH * 0x05
- * GSMTAP_CHANNEL_SDCCH * 0x06
- * GSMTAP_CHANNEL_SDCCH4 * 0x07
- * GSMTAP_CHANNEL_SDCCH8 * 0x08
- * GSMTAP_CHANNEL_TCH_F * 0x09
- * GSMTAP_CHANNEL_TCH_H * 0x0a
- * GSMTAP_CHANNEL_PACCH * 0x0b
- * GSMTAP_CHANNEL_CBCH52 * 0x0c
- * GSMTAP_CHANNEL_PDCH * 0x0d
- * GSMTAP_CHANNEL_PTCCH * 0x0e
- * GSMTAP_CHANNEL_CBCH51 * 0x0f
- * to rsl channel type:
- * RSL_CHAN_NR_MASK * 0xf8
- * RSL_CHAN_NR_1 * * 0x08
- * RSL_CHAN_Bm_ACCHs * 0x08
- * RSL_CHAN_Lm_ACCHs * 0x10
- * RSL_CHAN_SDCCH4_ACCH * 0x20
- * RSL_CHAN_SDCCH8_ACCH * 0x40
- * RSL_CHAN_BCCH * * 0x80
- * RSL_CHAN_RACH * * 0x88
- * RSL_CHAN_PCH_AGCH * 0x90
- * RSL_CHAN_OSMO_PDCH * 0xc0
- * and logical channel link id:
- * LID_SACCH * * 0x40
- * LID_DEDIC * * 0x00
- *
- * TODO: move this to a library used by both ms and bts virt um
- */
-void chantype_gsmtap2rsl(uint8_t gsmtap_chantype, uint8_t *rsl_chantype,
- uint8_t *link_id)
-{
- // switch case with removed acch flag
- switch (gsmtap_chantype & ~GSMTAP_CHANNEL_ACCH & 0xff) {
- case GSMTAP_CHANNEL_TCH_F: // TCH/F, FACCH/F
- *rsl_chantype = RSL_CHAN_Bm_ACCHs;
- break;
- case GSMTAP_CHANNEL_TCH_H: // TCH/H, FACCH/H
- *rsl_chantype = RSL_CHAN_Lm_ACCHs;
- break;
- case GSMTAP_CHANNEL_SDCCH4: // SDCCH/4
- *rsl_chantype = RSL_CHAN_SDCCH4_ACCH;
- break;
- case GSMTAP_CHANNEL_SDCCH8: // SDCCH/8
- *rsl_chantype = RSL_CHAN_SDCCH8_ACCH;
- break;
- case GSMTAP_CHANNEL_BCCH: // BCCH
- *rsl_chantype = RSL_CHAN_BCCH;
- break;
- case GSMTAP_CHANNEL_RACH: // RACH
- *rsl_chantype = RSL_CHAN_RACH;
- break;
- case GSMTAP_CHANNEL_PCH: // PCH
- case GSMTAP_CHANNEL_AGCH: // AGCH
- *rsl_chantype = RSL_CHAN_PCH_AGCH;
- break;
- case GSMTAP_CHANNEL_PDCH:
- *rsl_chantype = GSMTAP_CHANNEL_PDCH;
- break;
- }
-
- *link_id = gsmtap_chantype & GSMTAP_CHANNEL_ACCH ?
- LID_SACCH : LID_DEDIC;
-
-}
-
/**
* Callback to handle incoming messages from the MS.
* The incoming message should be GSM_TAP encapsulated.
diff --git a/src/osmo-bts-virtual/shared/common_util.c b/src/osmo-bts-virtual/shared/common_util.c
new file mode 100644
index 0000000..49dea18
--- /dev/null
+++ b/src/osmo-bts-virtual/shared/common_util.c
@@ -0,0 +1,44 @@
+/*
+ * Utility function used both in osmo bts virt and osmocom bb virt.
+ */
+
+#include <osmocom/core/gsmtap.h>
+#include <osmocom/gsm/rsl.h>
+#include <virtphy/common_util.h>
+
+void chantype_gsmtap2rsl(uint8_t gsmtap_chantype, uint8_t *rsl_chantype,
+ uint8_t *link_id)
+{
+ // switch case with removed acch flag
+ switch (gsmtap_chantype & ~GSMTAP_CHANNEL_ACCH & 0xff) {
+ case GSMTAP_CHANNEL_TCH_F: // TCH/F, FACCH/F
+ *rsl_chantype = RSL_CHAN_Bm_ACCHs;
+ break;
+ case GSMTAP_CHANNEL_TCH_H: // TCH/H, FACCH/H
+ *rsl_chantype = RSL_CHAN_Lm_ACCHs;
+ break;
+ case GSMTAP_CHANNEL_SDCCH4: // SDCCH/4
+ *rsl_chantype = RSL_CHAN_SDCCH4_ACCH;
+ break;
+ case GSMTAP_CHANNEL_SDCCH8: // SDCCH/8
+ *rsl_chantype = RSL_CHAN_SDCCH8_ACCH;
+ break;
+ case GSMTAP_CHANNEL_BCCH: // BCCH
+ *rsl_chantype = RSL_CHAN_BCCH;
+ break;
+ case GSMTAP_CHANNEL_RACH: // RACH
+ *rsl_chantype = RSL_CHAN_RACH;
+ break;
+ case GSMTAP_CHANNEL_PCH: // PCH
+ case GSMTAP_CHANNEL_AGCH: // AGCH
+ *rsl_chantype = RSL_CHAN_PCH_AGCH;
+ break;
+ case GSMTAP_CHANNEL_PDCH:
+ *rsl_chantype = GSMTAP_CHANNEL_PDCH;
+ break;
+ }
+
+ *link_id = gsmtap_chantype & GSMTAP_CHANNEL_ACCH ? LID_SACCH :
+ LID_DEDIC;
+
+}