fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmocom-bb/+/35662?usp=email )

 (

1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted 
one.
 )Change subject: mobile: VTY: make soft-UART parameters configurable
......................................................................

mobile: VTY: make soft-UART parameters configurable

Change-Id: I48bb58aaf1101fbc0e58db3fb1100927e506ede2
Related: OS#4396
---
M src/host/layer23/include/osmocom/bb/common/settings.h
M src/host/layer23/src/common/settings.c
M src/host/layer23/src/mobile/mnccms.c
M src/host/layer23/src/mobile/vty_interface.c
4 files changed, 156 insertions(+), 4 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  fixeria: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve




diff --git a/src/host/layer23/include/osmocom/bb/common/settings.h 
b/src/host/layer23/include/osmocom/bb/common/settings.h
index ecebae8..a1c9b3e 100644
--- a/src/host/layer23/include/osmocom/bb/common/settings.h
+++ b/src/host/layer23/include/osmocom/bb/common/settings.h
@@ -136,6 +136,12 @@
        enum data_call_type             type;
        enum data_call_rate             rate;
        enum gsm48_bcap_transp          transp;
+
+       /* async call parameters */
+       bool                            is_async;
+       unsigned int                    nr_stop_bits;
+       unsigned int                    nr_data_bits;
+       enum gsm48_bcap_parity          parity;
 };

 struct gsm_settings {
diff --git a/src/host/layer23/src/common/settings.c 
b/src/host/layer23/src/common/settings.c
index 6ffb095..bc5d115 100644
--- a/src/host/layer23/src/common/settings.c
+++ b/src/host/layer23/src/common/settings.c
@@ -139,6 +139,12 @@
                .type = DATA_CALL_TYPE_ISDN,
                .rate = DATA_CALL_RATE_V110_9600,
                .transp = GSM48_BCAP_TR_TRANSP,
+
+               /* async call parameters (8-N-1) */
+               .is_async = true,
+               .nr_stop_bits = 1,
+               .nr_data_bits = 8,
+               .parity = GSM48_BCAP_PAR_NONE,
        };

        return 0;
diff --git a/src/host/layer23/src/mobile/mnccms.c 
b/src/host/layer23/src/mobile/mnccms.c
index 4bdb845..fa3b284 100644
--- a/src/host/layer23/src/mobile/mnccms.c
+++ b/src/host/layer23/src/mobile/mnccms.c
@@ -217,11 +217,11 @@
                        /* TODO: make these fields configurable via *set */
                        .rate_adaption = GSM48_BCAP_RA_V110_X30,
                        .sig_access = GSM48_BCAP_SA_I440_I450,
-                       .async = 1,
+                       .async = cp->is_async,
                        .transp = cp->transp,
-                       .nr_data_bits = 8,
-                       .parity = GSM48_BCAP_PAR_NONE,
-                       .nr_stop_bits = 1,
+                       .nr_data_bits = cp->nr_data_bits,
+                       .nr_stop_bits = cp->nr_stop_bits,
+                       .parity = cp->parity,
                        /* .user_rate is set below */
                        /* .interm_rate is set below */
                },
diff --git a/src/host/layer23/src/mobile/vty_interface.c 
b/src/host/layer23/src/mobile/vty_interface.c
index 05a20e4..4c2263a 100644
--- a/src/host/layer23/src/mobile/vty_interface.c
+++ b/src/host/layer23/src/mobile/vty_interface.c
@@ -756,6 +756,119 @@
        return CMD_SUCCESS;
 }

+DEFUN(call_params_data_sync_async,
+      call_params_data_sync_async_cmd,
+      CALL_PARAMS_DATA_CMD " (sync|async)",
+      CALL_PARAMS_DATA_CMD_DESC
+      "Synchronous connection (always used for FAX calls)\n"
+      "Asynchronous connection (does not apply to FAX calls)\n")
+{
+       struct osmocom_ms *ms;
+       struct gsm_settings *set;
+       struct data_call_params *cp;
+
+       ms = l23_vty_get_ms(argv[0], vty);
+       if (!ms)
+               return CMD_WARNING;
+       set = &ms->settings;
+       cp = &set->call_params.data;
+
+       cp->is_async = (argv[1][0] == 'a');
+
+       return CMD_SUCCESS;
+}
+
+#define CALL_PARAMS_DATA_ASYNC_CMD \
+       CALL_PARAMS_DATA_CMD " async"
+#define CALL_PARAMS_DATA_ASYNC_CMD_DESC \
+       CALL_PARAMS_DATA_CMD_DESC \
+       "Asynchronous connection params (does not apply to FAX calls)\n"
+
+DEFUN(call_params_data_async_nr_stop_bits,
+      call_params_data_async_nr_stop_bits_cmd,
+      CALL_PARAMS_DATA_ASYNC_CMD " nr-stop-bits <1-2>",
+      CALL_PARAMS_DATA_ASYNC_CMD_DESC
+      "Number of stop bits (soft-UART config)\n"
+      "Number of stop bits (default: 1)\n")
+{
+       struct osmocom_ms *ms;
+       struct gsm_settings *set;
+       struct data_call_params *cp;
+
+       ms = l23_vty_get_ms(argv[0], vty);
+       if (!ms)
+               return CMD_WARNING;
+       set = &ms->settings;
+       cp = &set->call_params.data;
+
+       cp->nr_stop_bits = atoi(argv[1]);
+
+       return CMD_SUCCESS;
+}
+
+DEFUN(call_params_data_async_nr_data_bits,
+      call_params_data_async_nr_data_bits_cmd,
+      CALL_PARAMS_DATA_ASYNC_CMD " nr-data-bits <7-8>",
+      CALL_PARAMS_DATA_ASYNC_CMD_DESC
+      "Number of data bits (soft-UART config)\n"
+      "Number of data bits (default: 8)\n")
+{
+       struct osmocom_ms *ms;
+       struct gsm_settings *set;
+       struct data_call_params *cp;
+
+       ms = l23_vty_get_ms(argv[0], vty);
+       if (!ms)
+               return CMD_WARNING;
+       set = &ms->settings;
+       cp = &set->call_params.data;
+
+       cp->nr_data_bits = atoi(argv[1]);
+
+       return CMD_SUCCESS;
+}
+
+static const struct value_string async_parity_names[] = {
+       { GSM48_BCAP_PAR_NONE,          "none" },
+       { GSM48_BCAP_PAR_EVEN,          "even" },
+       { GSM48_BCAP_PAR_ODD,           "odd" },
+       { GSM48_BCAP_PAR_ONE,           "mark" },
+       { GSM48_BCAP_PAR_ZERO,          "space" },
+       { 0, NULL }
+};
+
+static const struct value_string async_parity_descs[] = {
+       { GSM48_BCAP_PAR_NONE,          "No parity bit (default)" },
+       { GSM48_BCAP_PAR_EVEN,          "Even parity" },
+       { GSM48_BCAP_PAR_ODD,           "Odd parity" },
+       { GSM48_BCAP_PAR_ONE,           "Always 1" },
+       { GSM48_BCAP_PAR_ZERO,          "Always 0" },
+       { 0, NULL }
+};
+
+DEFUN(call_params_data_async_parity,
+      call_params_data_async_parity_cmd,
+      CALL_PARAMS_DATA_ASYNC_CMD /* generated */,
+      CALL_PARAMS_DATA_ASYNC_CMD_DESC /* generated */)
+{
+       struct osmocom_ms *ms;
+       struct gsm_settings *set;
+       struct data_call_params *cp;
+       int val;
+
+       ms = l23_vty_get_ms(argv[0], vty);
+       if (!ms)
+               return CMD_WARNING;
+       set = &ms->settings;
+       cp = &set->call_params.data;
+
+       val = get_string_value(async_parity_names, argv[1]);
+       OSMO_ASSERT(val >= 0); /* should not happen */
+       cp->parity = (enum gsm48_bcap_parity)val;
+
+       return CMD_SUCCESS;
+}
+
 DEFUN(sms, sms_cmd, "sms MS_NAME NUMBER .LINE",
        "Send an SMS\nName of MS (see \"show ms\")\nPhone number to send SMS "
        "(Use digits '0123456789*#abc', and '+' to dial international)\n"
@@ -2766,6 +2879,19 @@
 {
        int rc;

+       call_params_data_async_parity_cmd.string =
+               vty_cmd_string_from_valstr(NULL,
+                                          async_parity_names,
+                                          CALL_PARAMS_DATA_ASYNC_CMD
+                                          " parity (", "|", ")", 0);
+
+       call_params_data_async_parity_cmd.doc =
+               vty_cmd_string_from_valstr(NULL,
+                                          async_parity_descs,
+                                          CALL_PARAMS_DATA_ASYNC_CMD_DESC
+                                          "Parity mode (soft-UART config)\n",
+                                          "\n", "", 0);
+
        if ((rc = l23_vty_init(config_write, l23_vty_signal_cb)) < 0)
                return rc;

@@ -2792,6 +2918,10 @@
        install_element(ENABLE_NODE, &call_params_data_type_cmd);
        install_element(ENABLE_NODE, &call_params_data_rate_cmd);
        install_element(ENABLE_NODE, &call_params_data_ce_cmd);
+       install_element(ENABLE_NODE, &call_params_data_sync_async_cmd);
+       install_element(ENABLE_NODE, &call_params_data_async_nr_stop_bits_cmd);
+       install_element(ENABLE_NODE, &call_params_data_async_nr_data_bits_cmd);
+       install_element(ENABLE_NODE, &call_params_data_async_parity_cmd);
        install_element(ENABLE_NODE, &sms_cmd);
        install_element(ENABLE_NODE, &service_cmd);
        install_element(ENABLE_NODE, &vgcs_enter_cmd);

--
To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/35662?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I48bb58aaf1101fbc0e58db3fb1100927e506ede2
Gerrit-Change-Number: 35662
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>
Gerrit-MessageType: merged

Reply via email to