aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/include
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-02-12 11:57:20 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-03-03 16:19:10 +0100
commit6a2d8985bfd6d9c6e6c0f541aca0e1590a753709 (patch)
tree0d4a67c5e353ee9eef47477893b8e89fc54c3ed5 /openbsc/include
parentc6794eed1dbe726b23c60e96e214ec1a1fbf6b51 (diff)
cscn: rename msc_api
Diffstat (limited to 'openbsc/include')
-rw-r--r--openbsc/include/openbsc/msc_ifaces.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/msc_ifaces.h b/openbsc/include/openbsc/msc_ifaces.h
new file mode 100644
index 000000000..ace6ea11d
--- /dev/null
+++ b/openbsc/include/openbsc/msc_ifaces.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include <osmocom/core/msgb.h>
+#include <openbsc/gsm_data.h>
+
+/* This callback structure allows linking specific components without having to
+ * include entire infrastructures of external libraries. For example, a unit
+ * test does not need to link against external ASN1 libraries if it is never
+ * going to encode actual outgoing messages. It is up to each building scope to
+ * plug meaningful sending/receiving callback functions, or to have mere dummy
+ * implementations. */
+struct msc_api {
+
+ struct {
+ /* libmsc calls this to send out messages to an A-interface */
+ int (*tx)(struct msgb *msg, uint8_t sapi);
+ } a;
+
+ struct {
+ /* libmsc calls this to send out messages to an Iu-interface */
+ int (*tx)(struct msgb *msg, uint8_t sapi);
+ } iu;
+};
+
+/* TODO does this belong to openbsc/gsm_04_08.h ?? */
+int msc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg,
+ uint16_t chosen_channel);
+
+/* Depending on conn->via_iface (A or IuCS), submit msg to the proper link api. */
+extern int msc_submit_dtap(struct gsm_subscriber_connection *conn,
+ struct msgb *msg);