mobile_app: fix some configuration r/w bugs

Submitted by Вадим Яницкий on Jan. 1, 2016, 4:35 p.m.

Details

Message ID CAPEnp=YayPNQijpG8y3B=NP0KEDOSTZHSJYTU6XcTUVKaG=K7g@mail.gmail.com
State New
Headers show

Commit Message

Вадим Яницкий Jan. 1, 2016, 4:35 p.m.
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:
 {
@@ -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)

Patch hide | download patch | download mbox

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)