diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-09-06 20:08:58 +0200 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-03-16 15:32:32 +0100 |
commit | fbd19b52ae2892f53b62f4f6d508679d9e69affe (patch) | |
tree | 4e15994a4aba1381949eabb9dbc1bab06bee7913 | |
parent | 25aa8fe597d2bfc321ead3d0b2a64fb9398b12eb (diff) |
IuCS: cosmetic prep for msc_call_assignment()
Rename gsm48_cc_tx_call_proc() to gsm48_cc_tx_call_proc_and_assign() to mark
the place where the A-interface will send a BSSAP Assignment Request / where
the IuCS-interface will send a RAB Assignment Request.
Add function msc_call_assignment() to decide between A-iface and IuCS
assignment, to be implemented in subsequent commit.
Change-Id: I0695e233d57d13658793b0e63bb7c3ff224909a0
-rw-r--r-- | openbsc/include/openbsc/msc_ifaces.h | 1 | ||||
-rw-r--r-- | openbsc/src/libmsc/gsm_04_08.c | 11 | ||||
-rw-r--r-- | openbsc/src/libmsc/msc_ifaces.c | 6 |
3 files changed, 15 insertions, 3 deletions
diff --git a/openbsc/include/openbsc/msc_ifaces.h b/openbsc/include/openbsc/msc_ifaces.h index 0f2142a20..09d2487d6 100644 --- a/openbsc/include/openbsc/msc_ifaces.h +++ b/openbsc/include/openbsc/msc_ifaces.h @@ -47,3 +47,4 @@ int msc_gsm0808_tx_cipher_mode(struct gsm_subscriber_connection *conn, int ciphe const uint8_t *key, int len, int include_imeisv); int msc_tx_common_id(struct gsm_subscriber_connection *conn); +int msc_call_assignment(struct gsm_trans *trans); diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c index 9938c2862..e604c51d7 100644 --- a/openbsc/src/libmsc/gsm_04_08.c +++ b/openbsc/src/libmsc/gsm_04_08.c @@ -2011,11 +2011,12 @@ static int gsm48_cc_rx_call_conf(struct gsm_trans *trans, struct msgb *msg) &call_conf); } -static int gsm48_cc_tx_call_proc(struct gsm_trans *trans, void *arg) +static int gsm48_cc_tx_call_proc_and_assign(struct gsm_trans *trans, void *arg) { struct gsm_mncc *proceeding = arg; struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 CC PROC"); struct gsm48_hdr *gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh)); + int rc; gh->msg_type = GSM48_MT_CC_CALL_PROC; @@ -2031,7 +2032,11 @@ static int gsm48_cc_tx_call_proc(struct gsm_trans *trans, void *arg) if (proceeding->fields & MNCC_F_PROGRESS) gsm48_encode_progress(msg, 0, &proceeding->progress); - return gsm48_conn_sendmsg(msg, trans->conn, trans); + rc = gsm48_conn_sendmsg(msg, trans->conn, trans); + if (rc) + return rc; + + return msc_call_assignment(trans); } static int gsm48_cc_rx_alerting(struct gsm_trans *trans, struct msgb *msg) @@ -3111,7 +3116,7 @@ static struct downstate { } downstatelist[] = { /* mobile originating call establishment */ {SBIT(GSM_CSTATE_INITIATED), /* 5.2.1.2 */ - MNCC_CALL_PROC_REQ, gsm48_cc_tx_call_proc}, + MNCC_CALL_PROC_REQ, gsm48_cc_tx_call_proc_and_assign}, {SBIT(GSM_CSTATE_INITIATED) | SBIT(GSM_CSTATE_MO_CALL_PROC), /* 5.2.1.2 | 5.2.1.5 */ MNCC_ALERT_REQ, gsm48_cc_tx_alerting}, {SBIT(GSM_CSTATE_INITIATED) | SBIT(GSM_CSTATE_MO_CALL_PROC) | SBIT(GSM_CSTATE_CALL_DELIVERED), /* 5.2.1.2 | 5.2.1.6 | 5.2.1.6 */ diff --git a/openbsc/src/libmsc/msc_ifaces.c b/openbsc/src/libmsc/msc_ifaces.c index 85e293107..fde8c3619 100644 --- a/openbsc/src/libmsc/msc_ifaces.c +++ b/openbsc/src/libmsc/msc_ifaces.c @@ -25,6 +25,7 @@ #include <openbsc/msc_ifaces.h> #include <openbsc/iu.h> #include <openbsc/gsm_subscriber.h> +#include <openbsc/transaction.h> #include "../../bscconfig.h" @@ -100,3 +101,8 @@ int msc_tx_common_id(struct gsm_subscriber_connection *conn) return -ENOTSUP; #endif } + +int msc_call_assignment(struct gsm_trans *trans) +{ + return 0; +} |