From patchwork Sat Jan 2 19:14:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Vadim Yanitskiy X-Patchwork-Id: 562094 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.osmocom.org (tmp.osmocom.org [144.76.43.76]) by ozlabs.org (Postfix) with ESMTP id 1168B1402A8 for ; Sun, 3 Jan 2016 06:14:38 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=hQeAqsok; dkim-atps=neutral Received: from lists.osmocom.org (lists.osmocom.org [144.76.43.76]) by lists.osmocom.org (Postfix) with ESMTP id 6C304BE55; Sat, 2 Jan 2016 19:14:28 +0000 (UTC) X-Original-To: baseband-devel@lists.osmocom.org Delivered-To: baseband-devel@lists.osmocom.org Received: from mail-oi0-x22b.google.com (mail-oi0-x22b.google.com [IPv6:2607:f8b0:4003:c06::22b]) by lists.osmocom.org (Postfix) with ESMTP id 30824BE49 for ; Sat, 2 Jan 2016 19:14:24 +0000 (UTC) Received: by mail-oi0-x22b.google.com with SMTP id o62so231704244oif.3 for ; Sat, 02 Jan 2016 11:14:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=+mzgfgcvcRnKzN9DmaooEwVMY0HTi9wPBKp5HpkNOVQ=; b=hQeAqsokIi+56eIyDIAOuG/4rCIIE1vdv2ggf/op1v3BPIRa6lEl21wapRV7OHPlix hpoVtNvq2dv8GSq3wmAvwsR4mFbmtMcdCmu2TAvhfJZ0EHF+UdCvBj3WANUll33gUCsm vQkkd3I+5UouRkF6vFdjGxawjTcXm8SXRMPdwpUD7s0YDb+TPiLkq0IhR/n1Nlth5fh1 2qEg0I+N9jJutMGuitXNnrwqzpxW1UWF1mW9YeuJtH5VJVlWT8ljgRNLrQZl1pcj76Kl byJHGz0fnQgF6AlpLqmHOs+OPrOY+msGiA4WpsZYTrFrYSKQKvioCxr1MCwpARL+tMN1 LoQQ== MIME-Version: 1.0 X-Received: by 10.202.180.66 with SMTP id d63mr52753335oif.76.1451762063742; Sat, 02 Jan 2016 11:14:23 -0800 (PST) Received: by 10.202.198.148 with HTTP; Sat, 2 Jan 2016 11:14:23 -0800 (PST) In-Reply-To: References: Date: Sun, 3 Jan 2016 01:14:23 +0600 Message-ID: Subject: Re: [PATCH] mobile_app: fix some configuration r/w bugs From: =?UTF-8?B?0JLQsNC00LjQvCDQr9C90LjRhtC60LjQuQ==?= To: baseband-devel@lists.osmocom.org X-BeenThere: baseband-devel@lists.osmocom.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: OsmocomBB - open source GSM baseband firmware List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: baseband-devel-bounces@lists.osmocom.org Sender: "baseband-devel" Previous patch did not fixed one more bug: old code reads GPSD port with a colon. I have fixed it. Final patch version: { @@ -1075,7 +1075,7 @@ DEFUN(cfg_gps_host, cfg_gps_host_cmd, "gps host HOST:PORT", if (colon != NULL) { memcpy(g.gpsd_host, argv[0], colon - argv[0] - 1); g.gpsd_host[colon - argv[0]] = '\0'; - memcpy(g.gpsd_port, colon, strlen(colon)); + memcpy(g.gpsd_port, colon + 1, strlen(colon)); g.gpsd_port[strlen(colon)] = '\0'; } else { snprintf(g.gpsd_host, ARRAY_SIZE(g.gpsd_host), "%s", argv[0]); @@ -1499,8 +1499,7 @@ static int config_write(struct vty *vty) struct osmocom_ms *ms; #ifdef _HAVE_GPSD - vty_out(vty, "gpsd host %s%s", g.gpsd_host, VTY_NEWLINE); - vty_out(vty, "gpsd port %s%s", g.gpsd_port, VTY_NEWLINE); + vty_out(vty, "gpsd host %s:%s%s", g.gpsd_host, g.gpsd_port, VTY_NEWLINE); #endif vty_out(vty, "gps device %s%s", g.device, VTY_NEWLINE); if (g.baud) @@ -2822,7 +2821,7 @@ int ms_vty_init(void) install_element(ENABLE_NODE, &delete_forbidden_plmn_cmd); #ifdef _HAVE_GPSD - install_element(CONFIG_NODE, &cfg_gps_host_cmd); + install_element(CONFIG_NODE, &cfg_gpsd_host_cmd); #endif install_element(CONFIG_NODE, &cfg_gps_device_cmd); install_element(CONFIG_NODE, &cfg_gps_baud_cmd); 2016-01-01 22:35 GMT+06:00 Вадим Яницкий : > Happy New Year to all lists members! > > This patch fixes two bugs in mobile app: > 1) If SAP connection fails mobile app does not save the sap-socket param > in mobile.cfg. > 2) The write command saves two unreadable strings: > gpsd host HOST > gpsd port PORT > > instead of: > gpsd host HOST:PORT > > Patch source: > diff --git a/src/host/layer23/include/osmocom/bb/common/sap_interface.h > b/src/host/layer23/include/osmocom/bb/common/sap_interface.h > index bf19356..e4e64ce 100644 > --- a/src/host/layer23/include/osmocom/bb/common/sap_interface.h > +++ b/src/host/layer23/include/osmocom/bb/common/sap_interface.h > @@ -11,6 +11,7 @@ int osmosap_sapsocket(struct osmocom_ms *ms, const char > *path); > int osmosap_init(struct osmocom_ms *ms); > > enum osmosap_state { > + SAP_SOCKET_ERROR, > SAP_NOT_CONNECTED, > SAP_IDLE, > SAP_CONNECTION_UNDER_NEGOTIATION, > diff --git a/src/host/layer23/src/common/sap_interface.c > b/src/host/layer23/src/common/sap_interface.c > index a56f4f2..33bfa6c 100644 > --- a/src/host/layer23/src/common/sap_interface.c > +++ b/src/host/layer23/src/common/sap_interface.c > @@ -515,7 +515,8 @@ int sap_open(struct osmocom_ms *ms, const char > *socket_path) > rc = connect(ms->sap_wq.bfd.fd, (struct sockaddr *) &local, > sizeof(local)); > if (rc < 0) { > fprintf(stderr, "Failed to connect to '%s'\n", local.sun_path); > - set->sap_socket_path[0] = 0; > + // set->sap_socket_path[0] = 0; > + ms->sap_entity.sap_state == SAP_SOCKET_ERROR; > close(ms->sap_wq.bfd.fd); > return rc; > } > diff --git a/src/host/layer23/src/common/sim.c > b/src/host/layer23/src/common/sim.c > index 8e8d7bf..df9fbd2 100644 > --- a/src/host/layer23/src/common/sim.c > +++ b/src/host/layer23/src/common/sim.c > @@ -188,7 +188,7 @@ static int sim_apdu_send(struct osmocom_ms *ms, > uint8_t *data, uint16_t length) > > /* adding SAP client support > * it makes more sense to do it here then in L1CTL */ > - if(ms->settings.sap_socket_path[0] == 0) { > + if(ms->sap_entity.sap_state == SAP_SOCKET_ERROR) { > LOGP(DSIM, LOGL_INFO, "Using built-in SIM reader\n"); > l1ctl_tx_sim_req(ms, data, length); > } else { > diff --git a/src/host/layer23/src/mobile/vty_interface.c > b/src/host/layer23/src/mobile/vty_interface.c > index 5782a17..9ac2221 100644 > --- a/src/host/layer23/src/mobile/vty_interface.c > +++ b/src/host/layer23/src/mobile/vty_interface.c > @@ -1067,7 +1067,7 @@ DEFUN(cfg_no_gps_enable, cfg_no_gps_enable_cmd, "no > gps enable", > } > > #ifdef _HAVE_GPSD > -DEFUN(cfg_gps_host, cfg_gps_host_cmd, "gps host HOST:PORT", > +DEFUN(cfg_gps_host, cfg_gps_host_cmd, "gpsd host HOST:PORT", > "GPS receiver\nSelect gpsd host and port\n" > "IP and port (optional) of the host running gpsd") > { > @@ -1499,8 +1499,7 @@ static int config_write(struct vty *vty) > struct osmocom_ms *ms; > > #ifdef _HAVE_GPSD > - vty_out(vty, "gpsd host %s%s", g.gpsd_host, VTY_NEWLINE); > - vty_out(vty, "gpsd port %s%s", g.gpsd_port, VTY_NEWLINE); > + vty_out(vty, "gpsd host %s:%s%s", g.gpsd_host, g.gpsd_port, > VTY_NEWLINE); > #endif > vty_out(vty, "gps device %s%s", g.device, VTY_NEWLINE); > if (g.baud) > > diff --git a/src/host/layer23/include/osmocom/bb/common/sap_interface.h b/src/host/layer23/include/osmocom/bb/common/sap_interface.h index bf19356..e4e64ce 100644 --- a/src/host/layer23/include/osmocom/bb/common/sap_interface.h +++ b/src/host/layer23/include/osmocom/bb/common/sap_interface.h @@ -11,6 +11,7 @@ int osmosap_sapsocket(struct osmocom_ms *ms, const char *path); int osmosap_init(struct osmocom_ms *ms); enum osmosap_state { + SAP_SOCKET_ERROR, SAP_NOT_CONNECTED, SAP_IDLE, SAP_CONNECTION_UNDER_NEGOTIATION, diff --git a/src/host/layer23/src/common/sap_interface.c b/src/host/layer23/src/common/sap_interface.c index a56f4f2..33bfa6c 100644 --- a/src/host/layer23/src/common/sap_interface.c +++ b/src/host/layer23/src/common/sap_interface.c @@ -515,7 +515,8 @@ int sap_open(struct osmocom_ms *ms, const char *socket_path) rc = connect(ms->sap_wq.bfd.fd, (struct sockaddr *) &local, sizeof(local)); if (rc < 0) { fprintf(stderr, "Failed to connect to '%s'\n", local.sun_path); - set->sap_socket_path[0] = 0; + // set->sap_socket_path[0] = 0; + ms->sap_entity.sap_state == SAP_SOCKET_ERROR; close(ms->sap_wq.bfd.fd); return rc; } diff --git a/src/host/layer23/src/common/sim.c b/src/host/layer23/src/common/sim.c index 8e8d7bf..df9fbd2 100644 --- a/src/host/layer23/src/common/sim.c +++ b/src/host/layer23/src/common/sim.c @@ -188,7 +188,7 @@ static int sim_apdu_send(struct osmocom_ms *ms, uint8_t *data, uint16_t length) /* adding SAP client support * it makes more sense to do it here then in L1CTL */ - if(ms->settings.sap_socket_path[0] == 0) { + if(ms->sap_entity.sap_state == SAP_SOCKET_ERROR) { LOGP(DSIM, LOGL_INFO, "Using built-in SIM reader\n"); l1ctl_tx_sim_req(ms, data, length); } else { diff --git a/src/host/layer23/src/mobile/vty_interface.c b/src/host/layer23/src/mobile/vty_interface.c index 5782a17..fd0fd0c 100644 --- a/src/host/layer23/src/mobile/vty_interface.c +++ b/src/host/layer23/src/mobile/vty_interface.c @@ -1067,7 +1067,7 @@ DEFUN(cfg_no_gps_enable, cfg_no_gps_enable_cmd, "no gps enable", } #ifdef _HAVE_GPSD -DEFUN(cfg_gps_host, cfg_gps_host_cmd, "gps host HOST:PORT", +DEFUN(cfg_gpsd_host, cfg_gpsd_host_cmd, "gpsd host HOST:PORT", "GPS receiver\nSelect gpsd host and port\n" "IP and port (optional) of the host running gpsd")