All pastes #796921 Raw Edit

don't reissue sms init all the t

public diff v1 · immutable
#796921 ·published 2007-11-25 16:01 UTC
rendered paste body
Only reinitialise our network subscriptions when we're getting registered,not on every registration state change.Increase lgsm usock reveice buffer size to account for commands like +CLAC.Miscellaneous fixes.---commit 2348a36aab65548915c098866ce6584d564d9a47tree 7bc1f632211fe9f822c50f5ed4de7a2b0e9cbca0parent 56535ca5e8d1798232c33fee5b377b2cbd2cda49author Andrzej Zaborowski <balrog@zabor.org> Wed, 31 Oct 2007 22:00:10 +0100committer Andrzej Zaborowski <balrog@zabor.org> Wed, 31 Oct 2007 22:00:10 +0100 src/gsmd/uart.c              |   12 +++++++----- src/gsmd/unsolicited.c       |   12 ++++++------ src/gsmd/vendor_ti.c         |    2 +- src/libgsmd/lgsm_internals.h |    2 +- 4 files changed, 15 insertions(+), 13 deletions(-)diff --git a/src/gsmd/uart.c b/src/gsmd/uart.cindex 22a4a5c..e2cac6f 100644--- a/src/gsmd/uart.c+++ b/src/gsmd/uart.c@@ -73,25 +73,27 @@ int set_baudrate(int fd, int baudrate, int hwflow) 	} 	if (bd == 0) 		return -EINVAL;-	+ 	i = tcgetattr(fd, &ti); 	if (i < 0)-		return i;+		return -errno; 	 	i = cfsetispeed(&ti, B0); 	if (i < 0)-		return i;+		return -errno; 	 	i = cfsetospeed(&ti, bd); 	if (i < 0)-		return i;+		return -errno; 	+	ti.c_cflag &= CSTOPB | CSIZE | PARENB;+	ti.c_cflag |= CS8 | CREAD; 	if (hwflow) 		ti.c_cflag |= CRTSCTS; 	else 		ti.c_cflag &= ~CRTSCTS; -	return tcsetattr(fd, 0, &ti);+	return tcsetattr(fd, 0, &ti) ? -errno : 0; }  static int uart_select_cb(int fd, unsigned int what, void *data)diff --git a/src/gsmd/unsolicited.c b/src/gsmd/unsolicited.cindex 032c3b0..39faf56 100644--- a/src/gsmd/unsolicited.c+++ b/src/gsmd/unsolicited.c@@ -147,6 +147,7 @@ static int creg_parse(char *buf, int len, const char *param, 	const char *comma = strchr(param, ','); 	struct gsmd_ucmd *ucmd; 	struct gsmd_evt_auxdata *aux;+	int prev_registered = gsmd->dev_state.registered; 	int state; 	char *end; @@ -161,6 +162,11 @@ static int creg_parse(char *buf, int len, const char *param, 		(aux->u.netreg.state == GSMD_NETREG_REG_HOME || 		 aux->u.netreg.state == GSMD_NETREG_REG_ROAMING); +	/* Intialise things that depend on network registration */+	if (gsmd->dev_state.registered && !prev_registered) {+		sms_cb_network_init(gsmd);+	}+ 	/* Notify clients */ 	ucmd = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_NETREG, 			sizeof(struct gsmd_evt_auxdata));@@ -179,12 +185,6 @@ static int creg_parse(char *buf, int len, const char *param, 	} else 		aux->u.netreg.lac = aux->u.netreg.ci = 0; -	/* Intialise things that depend on network registration */-	if (aux->u.netreg.state == GSMD_NETREG_REG_HOME ||-			aux->u.netreg.state == GSMD_NETREG_REG_ROAMING) {-		sms_cb_network_init(gsmd);-	}- 	return usock_evt_send(gsmd, ucmd, GSMD_EVT_NETREG); } diff --git a/src/gsmd/vendor_ti.c b/src/gsmd/vendor_ti.cindex d270fb1..95e80ca 100644--- a/src/gsmd/vendor_ti.c+++ b/src/gsmd/vendor_ti.c@@ -221,7 +221,7 @@ static const struct gsmd_unsolicit ticalypso_unsolicit[] = { 	{ "%CSQ",	&csq_parse },	/* Signal Quality */ 	{ "%CPRI",	&cpri_parse },	/* Ciphering Indication */ 	{ "%CPI",	&cpi_parse },	/* Call Progress Information */-	{ "%CTZV",	&ctzv_parse },	/* network time and data */+	{ "%CTZV",	&ctzv_parse },	/* Network time and date */  	/* FIXME: parse all the below and generate the respective events */ diff --git a/src/libgsmd/lgsm_internals.h b/src/libgsmd/lgsm_internals.hindex f1b1a23..c2000f0 100644--- a/src/libgsmd/lgsm_internals.h+++ b/src/libgsmd/lgsm_internals.h@@ -8,7 +8,7 @@ struct lgsm_handle { 	int fd; 	lgsm_msg_handler *handler[__NUM_GSMD_MSGS]; 	enum lgsm_netreg_state netreg_state;-	char usock_fifo[1024];+	char usock_fifo[4096]; 	int usock_len; };