This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/3168 to look at the new patch set (#2). Support for TS 04.14 conformance test commands Change-Id: Ib27edbfc8ccdedf00589ec715ced7bed435fa94c --- M openbsc/include/openbsc/Makefile.am A openbsc/include/openbsc/gsm_04_14.h M openbsc/src/libmsc/Makefile.am M openbsc/src/libmsc/gsm_04_08.c A openbsc/src/libmsc/gsm_04_14.c 5 files changed, 153 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/68/3168/2 diff --git a/openbsc/include/openbsc/Makefile.am b/openbsc/include/openbsc/Makefile.am index 2740a5d..db03caa 100644 --- a/openbsc/include/openbsc/Makefile.am +++ b/openbsc/include/openbsc/Makefile.am @@ -36,6 +36,7 @@ gprs_utils.h \ gsm_04_08.h \ gsm_04_11.h \ + gsm_04_14.h \ gsm_04_80.h \ gsm_data.h \ gsm_data_shared.h \ diff --git a/openbsc/include/openbsc/gsm_04_14.h b/openbsc/include/openbsc/gsm_04_14.h new file mode 100644 index 0000000..3cdbe04 --- /dev/null +++ b/openbsc/include/openbsc/gsm_04_14.h @@ -0,0 +1,15 @@ +#pragma once + +#include <osmocom/gsm/protocol/gsm_04_14.h> + +int gsm0414_tx_close_tch_loop_cmd(struct gsm_subscriber_connection *conn, + enum gsm414_tch_loop_mode loop_mode); +int gsm0414_tx_open_loop_cmd(struct gsm_subscriber_connection *conn); +int gsm0414_tx_act_emmi_cmd(struct gsm_subscriber_connection *conn); +int gsm0414_tx_test_interface(struct gsm_subscriber_connection *conn, + uint8_t tested_devs); +int gsm0414_tx_reset_ms_pos_store(struct gsm_subscriber_connection *conn, + uint8_t technology); + +int gsm0414_rcv_test(struct gsm_subscriber_connection *conn, + struct msgb *msg); diff --git a/openbsc/src/libmsc/Makefile.am b/openbsc/src/libmsc/Makefile.am index 9d966db..c219a35 100644 --- a/openbsc/src/libmsc/Makefile.am +++ b/openbsc/src/libmsc/Makefile.am @@ -27,6 +27,7 @@ db.c \ gsm_04_08.c \ gsm_04_11.c \ + gsm_04_14.c \ gsm_04_80.c \ gsm_subscriber.c \ mncc.c \ diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c index 89108e4..7e5267e 100644 --- a/openbsc/src/libmsc/gsm_04_08.c +++ b/openbsc/src/libmsc/gsm_04_08.c @@ -42,6 +42,7 @@ #include <openbsc/gsm_04_11.h> #include <openbsc/gsm_04_08.h> #include <openbsc/gsm_04_80.h> +#include <openbsc/gsm_04_14.h> #include <openbsc/abis_rsl.h> #include <openbsc/chan_alloc.h> #include <openbsc/paging.h> @@ -4027,6 +4028,9 @@ release_anchor(conn); rc = handle_rcv_ussd(conn, msg); break; + case GSM48_PDISC_TEST: + rc = gsm0414_rcv_test(conn, msg); + break; default: LOGP(DRLL, LOGL_NOTICE, "Unknown " "GSM 04.08 discriminator 0x%02x\n", pdisc); diff --git a/openbsc/src/libmsc/gsm_04_14.c b/openbsc/src/libmsc/gsm_04_14.c new file mode 100644 index 0000000..23de23e --- /dev/null +++ b/openbsc/src/libmsc/gsm_04_14.c @@ -0,0 +1,132 @@ +/* GSM MS Testing Layer 3 messages + * 3GPP TS 44.014 / GSM TS 04.14 */ + +/* (C) 2017 by Harald Welte <laforge at gnumonks.org> + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> + +#include "bscconfig.h" + +#include <openbsc/debug.h> +#include <openbsc/gsm_data.h> +#include <openbsc/gsm_subscriber.h> +#include <openbsc/gsm_04_08.h> +#include <openbsc/bsc_api.h> + +#include <osmocom/gsm/gsm48.h> +#include <osmocom/gsm/gsm_utils.h> +#include <osmocom/gsm/protocol/gsm_04_14.h> +#include <osmocom/gsm/tlv.h> +#include <osmocom/core/msgb.h> +#include <osmocom/core/talloc.h> +#include <osmocom/core/utils.h> + +static struct msgb *create_gsm0414_msg(uint8_t msg_type) +{ + struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.14"); + struct gsm48_hdr *gh; + + gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh) + 1); + gh->proto_discr = GSM48_PDISC_TEST; + gh->msg_type = msg_type; + return msg; +} + +static int gsm0414_conn_sendmsg(struct gsm_subscriber_connection *conn, struct msgb *msg) +{ + return gsm0808_submit_dtap(conn, msg, 0, 0); +} + +static int gsm0414_tx_simple(struct gsm_subscriber_connection *conn, uint8_t msg_type) +{ + struct msgb *msg = create_gsm0414_msg(msg_type); + + return gsm0414_conn_sendmsg(conn, msg); +} + + +/* Send a CLOSE_TCH_LOOOP_CMD according to Section 8.1 */ +int gsm0414_tx_close_tch_loop_cmd(struct gsm_subscriber_connection *conn, + enum gsm414_tch_loop_mode loop_mode) +{ + struct msgb *msg = create_gsm0414_msg(GSM414_MT_CLOSE_TCH_LOOP_CMD); + uint8_t subch; + + subch = (loop_mode << 1); + msgb_put_u8(msg, subch); + + msg->lchan = conn->lchan; + return gsm0414_conn_sendmsg(conn, msg); +} + +/* Send a OPEN_LOOP_CMD according to Section 8.3 */ +int gsm0414_tx_open_loop_cmd(struct gsm_subscriber_connection *conn) +{ + return gsm0414_tx_simple(conn, GSM414_MT_OPEN_LOOP_CMD); +} + +/* Send a ACT_EMMI_CMD according to Section 8.8 */ +int gsm0414_tx_act_emmi_cmd(struct gsm_subscriber_connection *conn) +{ + return gsm0414_tx_simple(conn, GSM414_MT_ACT_EMMI_CMD); +} + +/* Send a DEACT_EMMI_CMD according to Section 8.10 */ +int gsm0414_tx_deact_emmi_cmd(struct gsm_subscriber_connection *conn) +{ + return gsm0414_tx_simple(conn, GSM414_MT_DEACT_EMMI_CMD); +} + +/* Send a TEST_INTERFACE according to Section 8.11 */ +int gsm0414_tx_test_interface(struct gsm_subscriber_connection *conn, + uint8_t tested_devs) +{ + struct msgb *msg = create_gsm0414_msg(GSM414_MT_TEST_INTERFACE); + msgb_put_u8(msg, tested_devs); + return gsm0414_conn_sendmsg(conn, msg); +} + +/* Send a RESET_MS_POSITION_STORED according to Section 8.11 */ +int gsm0414_tx_reset_ms_pos_store(struct gsm_subscriber_connection *conn, + uint8_t technology) +{ + struct msgb *msg = create_gsm0414_msg(GSM414_MT_RESET_MS_POS_STORED); + msgb_put_u8(msg, technology); + return gsm0414_conn_sendmsg(conn, msg); +} + + + +/* Entry point for incoming GSM48_PDISC_TEST received from MS */ +int gsm0414_rcv_test(struct gsm_subscriber_connection *conn, + struct msgb *msg) +{ + struct gsm48_hdr *gh = msgb_l3(msg); + + if (msgb_l3len(msg) < sizeof(*gh)) + return -1; + + LOGP(DMM, LOGL_NOTICE, "%s: Received TEST class message '%s'\n", "FIXME", + get_value_string(gsm414_msgt_names, gh->msg_type)); + + return 0; +} -- To view, visit https://gerrit.osmocom.org/3168 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib27edbfc8ccdedf00589ec715ced7bed435fa94c Gerrit-PatchSet: 2 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder