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