All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/7] Fix Add check for return modem to avoid crash
@ 2010-03-31  9:50 Zhenhua Zhang
  2010-03-31  9:50 ` [PATCH 2/7] Add implementation for S3, S4, S5 command Zhenhua Zhang
  2010-03-31 13:41 ` [PATCH 1/7] Fix Add check for return modem to avoid crash Denis Kenzior
  0 siblings, 2 replies; 11+ messages in thread
From: Zhenhua Zhang @ 2010-03-31  9:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 577 bytes --]

---
 plugins/modemconf.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/plugins/modemconf.c b/plugins/modemconf.c
index cf0ee8b..e30fce6 100644
--- a/plugins/modemconf.c
+++ b/plugins/modemconf.c
@@ -138,6 +138,10 @@ static struct ofono_modem *create_modem(GKeyFile *keyfile, const char *group)
 		return NULL;
 
 	modem = ofono_modem_create(group, driver);
+	if (!modem) {
+		g_free(driver);
+		return NULL;
+	}
 
 	for (i = 0; setup_helpers[i].driver; i++) {
 		if (!g_strcmp0(driver, setup_helpers[i].driver))
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/7] Add implementation for S3, S4, S5 command
  2010-03-31  9:50 [PATCH 1/7] Fix Add check for return modem to avoid crash Zhenhua Zhang
@ 2010-03-31  9:50 ` Zhenhua Zhang
  2010-03-31  9:50   ` [PATCH 3/7] Add implementation for ATE and other basic command Zhenhua Zhang
  2010-03-31 13:41 ` [PATCH 1/7] Fix Add check for return modem to avoid crash Denis Kenzior
  1 sibling, 1 reply; 11+ messages in thread
From: Zhenhua Zhang @ 2010-03-31  9:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 3917 bytes --]

---
 gatchat/gatserver.c |  133 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 133 insertions(+), 0 deletions(-)

diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c
index f166df2..7d5c3c7 100644
--- a/gatchat/gatserver.c
+++ b/gatchat/gatserver.c
@@ -252,6 +252,130 @@ void g_at_server_send_info(GAtServer *server, const char *line, gboolean last)
 	send_common(server, buf, len);
 }
 
+static gboolean get_result_value(GAtServer *server, GAtResult *result,
+						const char *command,
+						int min, int max, int *value)
+{
+	GAtResultIter iter;
+	int val;
+	char prefix[10];
+
+	if (command[0] != 'S')
+		return FALSE;
+
+	sprintf(prefix, "%s=", command);
+
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, prefix))
+		return FALSE;
+
+	if (!g_at_result_iter_next_number(&iter, &val))
+		return FALSE;
+
+	if (val < min || val > max)
+		return FALSE;
+
+	*value = val;
+
+	return TRUE;
+}
+
+static void set_s_value(GAtServer *server, const char *prefix, int val)
+{
+	switch (prefix[1]) {
+	case '3':
+		server->v250.s3 = val;
+		break;
+	case '4':
+		server->v250.s4 = val;
+		break;
+	case '5':
+		server->v250.s5 = val;
+		break;
+	default:
+		break;
+	}
+}
+
+static int get_s_value(GAtServer *server, const char *prefix)
+{
+	int val = 0;
+
+	switch (prefix[1]) {
+	case '3':
+		val = server->v250.s3;
+		break;
+	case '4':
+		val = server->v250.s4;
+		break;
+	case '5':
+		val = server->v250.s5;
+		break;
+	default:
+		break;
+	}
+
+	return val;
+}
+
+static void s_template_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data, const char *prefix,
+					int min, int max)
+{
+	GAtServer *server = user_data;
+	char buf[20];
+	int val;
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		if (!get_result_value(server, result, prefix, min, max, &val)) {
+			g_at_server_send_final(server,
+						G_AT_SERVER_RESULT_ERROR);
+			return;
+		}
+
+		set_s_value(server, prefix, val);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		val = get_s_value(server, prefix);
+		sprintf(buf, "%03d", val);
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		sprintf(buf, "%s: (%d-%d)", prefix, min, max);
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void at_s3_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	s_template_cb(type, result, user_data, "S3", 0, 127);
+}
+
+static void at_s4_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	s_template_cb(type, result, user_data, "S4", 0, 127);
+}
+
+static void at_s5_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	s_template_cb(type, result, user_data, "S5", 0, 127);
+}
+
 static inline gboolean is_extended_command_prefix(const char c)
 {
 	switch (c) {
@@ -947,6 +1071,13 @@ static void at_notify_node_destroy(gpointer data)
 	g_free(node);
 }
 
+static void basic_command_register(GAtServer *server)
+{
+	g_at_server_register(server, "S3", at_s3_cb, server, NULL);
+	g_at_server_register(server, "S4", at_s4_cb, server, NULL);
+	g_at_server_register(server, "S5", at_s5_cb, server, NULL);
+}
+
 GAtServer *g_at_server_new(GIOChannel *io)
 {
 	GAtServer *server;
@@ -985,6 +1116,8 @@ GAtServer *g_at_server_new(GIOChannel *io)
 				received_data, server,
 				(GDestroyNotify)read_watcher_destroy_notify);
 
+	basic_command_register(server);
+
 	return server;
 
 error:
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/7] Add implementation for ATE and other basic command
  2010-03-31  9:50 ` [PATCH 2/7] Add implementation for S3, S4, S5 command Zhenhua Zhang
@ 2010-03-31  9:50   ` Zhenhua Zhang
  2010-03-31  9:50     ` [PATCH 4/7] Add Repeat last command support Zhenhua Zhang
  0 siblings, 1 reply; 11+ messages in thread
From: Zhenhua Zhang @ 2010-03-31  9:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 5038 bytes --]

---
 gatchat/gatserver.c |  162 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 158 insertions(+), 4 deletions(-)

diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c
index 7d5c3c7..5206a12 100644
--- a/gatchat/gatserver.c
+++ b/gatchat/gatserver.c
@@ -260,10 +260,10 @@ static gboolean get_result_value(GAtServer *server, GAtResult *result,
 	int val;
 	char prefix[10];
 
-	if (command[0] != 'S')
-		return FALSE;
-
-	sprintf(prefix, "%s=", command);
+	if (command[0] == 'S')
+		sprintf(prefix, "%s=", command);
+	else
+		strcpy(prefix, command);
 
 	g_at_result_iter_init(&iter, result);
 
@@ -376,6 +376,154 @@ static void at_s5_cb(GAtServerRequestType type, GAtResult *result,
 	s_template_cb(type, result, user_data, "S5", 0, 127);
 }
 
+static void set_v250_value(GAtServer *server, const char *prefix, int val)
+{
+	if (prefix[0] == '&') {
+		switch (prefix[1]) {
+		case 'C':
+			server->v250.c109 = val;
+			break;
+		case 'D':
+			server->v250.c108 = val;
+			break;
+		default:
+			break;
+		}
+	} else {
+		switch (prefix[0]) {
+		case 'E':
+			server->v250.echo = val;
+			break;
+		case 'Q':
+			server->v250.quiet = val;
+			break;
+		case 'V':
+			server->v250.is_v1 = val;
+			break;
+		case 'X':
+			server->v250.res_format = val;
+			break;
+		}
+	}
+}
+
+static int get_v250_value(GAtServer *server, const char *prefix)
+{
+	int val = 0;
+
+	if (prefix[0] == '&') {
+		switch (prefix[1]) {
+		case 'C':
+			val = server->v250.c109;
+			break;
+		case 'D':
+			val = server->v250.c108;
+			break;
+		default:
+			break;
+		}
+	} else {
+		switch (prefix[0]) {
+		case 'E':
+			val = server->v250.echo;
+			break;
+		case 'Q':
+			val = server->v250.quiet;
+			break;
+		case 'V':
+			val = server->v250.is_v1;
+			break;
+		case 'X':
+			val = server->v250.res_format;
+			break;
+		default:
+			break;
+		}
+	}
+
+	return val;
+}
+
+static void at_template_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data, const char *prefix,
+					int min, int max, int deftval)
+{
+	GAtServer *server = user_data;
+	char buf[20];
+	int val;
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		if (!get_result_value(server, result, prefix, min, max, &val)) {
+			g_at_server_send_final(server,
+						G_AT_SERVER_RESULT_ERROR);
+			return;
+		}
+
+		set_v250_value(server, prefix, val);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		val = get_v250_value(server, prefix);
+		sprintf(buf, "%s: %d", prefix, val);
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		sprintf(buf, "%s: (%d-%d)", prefix, min, max);
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+
+	case G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY:
+		set_v250_value(server, prefix, deftval);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void at_e_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	at_template_cb(type, result, user_data, "E", 0, 1, 1);
+}
+
+static void at_q_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	at_template_cb(type, result, user_data, "Q", 0, 1, 0);
+}
+
+static void at_v_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	at_template_cb(type, result, user_data, "V", 0, 1, 1);
+}
+
+static void at_x_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	at_template_cb(type, result, user_data, "X", 0, 4, 4);
+}
+
+static void at_c109_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	at_template_cb(type, result, user_data, "&C", 0, 1, 1);
+}
+
+static void at_c108_cb(GAtServerRequestType type, GAtResult *result,
+					gpointer user_data)
+{
+	at_template_cb(type, result, user_data, "&D", 0, 2, 2);
+}
+
 static inline gboolean is_extended_command_prefix(const char c)
 {
 	switch (c) {
@@ -1076,6 +1224,12 @@ static void basic_command_register(GAtServer *server)
 	g_at_server_register(server, "S3", at_s3_cb, server, NULL);
 	g_at_server_register(server, "S4", at_s4_cb, server, NULL);
 	g_at_server_register(server, "S5", at_s5_cb, server, NULL);
+	g_at_server_register(server, "E", at_e_cb, server, NULL);
+	g_at_server_register(server, "Q", at_q_cb, server, NULL);
+	g_at_server_register(server, "V", at_v_cb, server, NULL);
+	g_at_server_register(server, "X", at_x_cb, server, NULL);
+	g_at_server_register(server, "&C", at_c109_cb, server, NULL);
+	g_at_server_register(server, "&D", at_c108_cb, server, NULL);
 }
 
 GAtServer *g_at_server_new(GIOChannel *io)
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 4/7] Add Repeat last command support
  2010-03-31  9:50   ` [PATCH 3/7] Add implementation for ATE and other basic command Zhenhua Zhang
@ 2010-03-31  9:50     ` Zhenhua Zhang
  2010-03-31  9:50       ` [PATCH 5/7] Fix echo command back even if don't process it Zhenhua Zhang
  0 siblings, 1 reply; 11+ messages in thread
From: Zhenhua Zhang @ 2010-03-31  9:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 648 bytes --]

---
 gatchat/gatserver.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c
index 5206a12..4796b71 100644
--- a/gatchat/gatserver.c
+++ b/gatchat/gatserver.c
@@ -996,8 +996,13 @@ static void new_bytes(GAtServer *p)
 		}
 
 		case PARSER_RESULT_REPEAT_LAST:
-			/* TODO */
-			g_at_server_send_final(p, G_AT_SERVER_RESULT_ERROR);
+			p->cur_pos = 0;
+
+			if (p->last_line)
+				server_parse_line(p);
+			else
+				g_at_server_send_final(p,
+						G_AT_SERVER_RESULT_OK);
 			ring_buffer_drain(p->read_buf, p->read_so_far);
 			break;
 
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 5/7] Fix echo command back even if don't process it
  2010-03-31  9:50     ` [PATCH 4/7] Add Repeat last command support Zhenhua Zhang
@ 2010-03-31  9:50       ` Zhenhua Zhang
  2010-03-31  9:50         ` [PATCH 6/7] Add test implementation to support SMS Zhenhua Zhang
  2010-03-31 13:40         ` [PATCH 5/7] Fix echo command back even if don't process it Denis Kenzior
  0 siblings, 2 replies; 11+ messages in thread
From: Zhenhua Zhang @ 2010-03-31  9:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1025 bytes --]

---
 gatchat/gatserver.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c
index 4796b71..a47d46c 100644
--- a/gatchat/gatserver.c
+++ b/gatchat/gatserver.c
@@ -1050,19 +1050,19 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
 
 		read_count++;
 
+		if (rbytes == 0)
+			break;
+
+		if (server->v250.echo)
+			send_common(server, (char *)buf, rbytes);
+
 		/* Ignore incoming bytes when processing a command line */
 		if (server->processing_cmdline)
 			continue;
 
 		total_read += rbytes;
-
-		if (rbytes > 0) {
-			if (server->v250.echo)
-				send_common(server, (char *)buf, rbytes);
-
-			ring_buffer_write_advance(server->read_buf, rbytes);
-		}
-	} while (err == G_IO_ERROR_NONE && rbytes > 0 &&
+		ring_buffer_write_advance(server->read_buf, rbytes);
+	} while (err == G_IO_ERROR_NONE &&
 					read_count < server->max_read_attempts);
 
 	if (total_read > 0)
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 6/7] Add test implementation to support SMS
  2010-03-31  9:50       ` [PATCH 5/7] Fix echo command back even if don't process it Zhenhua Zhang
@ 2010-03-31  9:50         ` Zhenhua Zhang
  2010-03-31  9:50           ` [PATCH 7/7] Add test implementation for CPBS Zhenhua Zhang
  2010-03-31 13:42           ` [PATCH 6/7] Add test implementation to support SMS Denis Kenzior
  2010-03-31 13:40         ` [PATCH 5/7] Fix echo command back even if don't process it Denis Kenzior
  1 sibling, 2 replies; 11+ messages in thread
From: Zhenhua Zhang @ 2010-03-31  9:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 6341 bytes --]

---
 gatchat/test-server.c |  177 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 177 insertions(+), 0 deletions(-)

diff --git a/gatchat/test-server.c b/gatchat/test-server.c
index 425e353..916198b 100644
--- a/gatchat/test-server.c
+++ b/gatchat/test-server.c
@@ -192,6 +192,175 @@ error:
 	g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
 }
 
+static void cpin_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		g_at_server_send_info(server, "+CPIN: READY", TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void cimi_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY:
+		g_at_server_send_info(server, "246813579", TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void csms_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		g_at_server_send_info(server, "+CSMS: 0,1,1,1", TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		g_at_server_send_info(server, "+CSMS: (0)", TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void cmgf_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		g_at_server_send_info(server, "+CMGF: 0", TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		g_at_server_send_info(server, "+CMGF: (0,1)", TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void cpms_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+	char buf[2048];
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		sprintf(buf, "+CPMS: (\"SM\",\"ME\"),(\"SM\",\"ME\"),(\"SM\")");
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void cnmi_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+	char buf[2048];
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		sprintf(buf, "+CNMI: (0,1,2,3),(0,1),(0,1,2),(0),(0,1)");
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void cscs_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+	char buf[2048];
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		sprintf(buf, "+CSCS: \"GSM\",\"IRA\",\"UCS2\"");
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
+static void cmgl_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
 static void add_handler(GAtServer *server)
 {
 	g_at_server_set_debug(server, server_debug, "Server");
@@ -200,6 +369,14 @@ static void add_handler(GAtServer *server)
 	g_at_server_register(server, "+CGMR", cgmr_cb, server, NULL);
 	g_at_server_register(server, "+CGSN", cgsn_cb, server, NULL);
 	g_at_server_register(server, "+CFUN", cfun_cb, server, NULL);
+	g_at_server_register(server, "+CPIN", cpin_cb, server, NULL);
+	g_at_server_register(server, "+CIMI", cimi_cb, server, NULL);
+	g_at_server_register(server, "+CSMS", csms_cb, server, NULL);
+	g_at_server_register(server, "+CMGF", cmgf_cb, server, NULL);
+	g_at_server_register(server, "+CPMS", cpms_cb, server, NULL);
+	g_at_server_register(server, "+CNMI", cnmi_cb, server, NULL);
+	g_at_server_register(server, "+CSCS", cscs_cb, server, NULL);
+	g_at_server_register(server, "+CMGL", cmgl_cb, server, NULL);
 }
 
 static void server_destroy(gpointer user)
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 7/7] Add test implementation for CPBS
  2010-03-31  9:50         ` [PATCH 6/7] Add test implementation to support SMS Zhenhua Zhang
@ 2010-03-31  9:50           ` Zhenhua Zhang
  2010-03-31 13:42             ` Denis Kenzior
  2010-03-31 13:42           ` [PATCH 6/7] Add test implementation to support SMS Denis Kenzior
  1 sibling, 1 reply; 11+ messages in thread
From: Zhenhua Zhang @ 2010-03-31  9:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1552 bytes --]

---
 gatchat/test-server.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/gatchat/test-server.c b/gatchat/test-server.c
index 916198b..f170d88 100644
--- a/gatchat/test-server.c
+++ b/gatchat/test-server.c
@@ -361,6 +361,29 @@ static void cmgl_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
 	}
 }
 
+static void cpbs_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+	GAtServer *server = user;
+	char buf[2048];
+
+	switch (type) {
+	case G_AT_SERVER_REQUEST_TYPE_SET:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_QUERY:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+		sprintf(buf, "+CPBS: (\"FD\",\"SM\",\"SN\")");
+		g_at_server_send_info(server, buf, TRUE);
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+		break;
+	default:
+		g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+		break;
+	}
+}
+
 static void add_handler(GAtServer *server)
 {
 	g_at_server_set_debug(server, server_debug, "Server");
@@ -377,6 +400,7 @@ static void add_handler(GAtServer *server)
 	g_at_server_register(server, "+CNMI", cnmi_cb, server, NULL);
 	g_at_server_register(server, "+CSCS", cscs_cb, server, NULL);
 	g_at_server_register(server, "+CMGL", cmgl_cb, server, NULL);
+	g_at_server_register(server, "+CPBS", cpbs_cb, server, NULL);
 }
 
 static void server_destroy(gpointer user)
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 5/7] Fix echo command back even if don't process it
  2010-03-31  9:50       ` [PATCH 5/7] Fix echo command back even if don't process it Zhenhua Zhang
  2010-03-31  9:50         ` [PATCH 6/7] Add test implementation to support SMS Zhenhua Zhang
@ 2010-03-31 13:40         ` Denis Kenzior
  1 sibling, 0 replies; 11+ messages in thread
From: Denis Kenzior @ 2010-03-31 13:40 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 218 bytes --]

Hi Zhenhua,

> ---
>  gatchat/gatserver.c |   16 ++++++++--------
>  1 files changed, 8 insertions(+), 8 deletions(-)
> 

Patches 2-5 have been applied with some simplifications afterwards.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/7] Fix Add check for return modem to avoid crash
  2010-03-31  9:50 [PATCH 1/7] Fix Add check for return modem to avoid crash Zhenhua Zhang
  2010-03-31  9:50 ` [PATCH 2/7] Add implementation for S3, S4, S5 command Zhenhua Zhang
@ 2010-03-31 13:41 ` Denis Kenzior
  1 sibling, 0 replies; 11+ messages in thread
From: Denis Kenzior @ 2010-03-31 13:41 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 169 bytes --]

Hi Zhenhua,

> ---
>  plugins/modemconf.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)

I fixed in a slightly simpler way.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 6/7] Add test implementation to support SMS
  2010-03-31  9:50         ` [PATCH 6/7] Add test implementation to support SMS Zhenhua Zhang
  2010-03-31  9:50           ` [PATCH 7/7] Add test implementation for CPBS Zhenhua Zhang
@ 2010-03-31 13:42           ` Denis Kenzior
  1 sibling, 0 replies; 11+ messages in thread
From: Denis Kenzior @ 2010-03-31 13:42 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 225 bytes --]

Hi Zhenhua,

> ---
>  gatchat/test-server.c |  177
>  +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 177
>  insertions(+), 0 deletions(-)

Patch looks good and has been applied.

Thanks,
-Denis

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 7/7] Add test implementation for CPBS
  2010-03-31  9:50           ` [PATCH 7/7] Add test implementation for CPBS Zhenhua Zhang
@ 2010-03-31 13:42             ` Denis Kenzior
  0 siblings, 0 replies; 11+ messages in thread
From: Denis Kenzior @ 2010-03-31 13:42 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 195 bytes --]

Hi Zhenhua,

> ---
>  gatchat/test-server.c |   24 ++++++++++++++++++++++++
>  1 files changed, 24 insertions(+), 0 deletions(-)

Patch looks good and has been applied.

Thanks,
-Denis

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2010-03-31 13:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-31  9:50 [PATCH 1/7] Fix Add check for return modem to avoid crash Zhenhua Zhang
2010-03-31  9:50 ` [PATCH 2/7] Add implementation for S3, S4, S5 command Zhenhua Zhang
2010-03-31  9:50   ` [PATCH 3/7] Add implementation for ATE and other basic command Zhenhua Zhang
2010-03-31  9:50     ` [PATCH 4/7] Add Repeat last command support Zhenhua Zhang
2010-03-31  9:50       ` [PATCH 5/7] Fix echo command back even if don't process it Zhenhua Zhang
2010-03-31  9:50         ` [PATCH 6/7] Add test implementation to support SMS Zhenhua Zhang
2010-03-31  9:50           ` [PATCH 7/7] Add test implementation for CPBS Zhenhua Zhang
2010-03-31 13:42             ` Denis Kenzior
2010-03-31 13:42           ` [PATCH 6/7] Add test implementation to support SMS Denis Kenzior
2010-03-31 13:40         ` [PATCH 5/7] Fix echo command back even if don't process it Denis Kenzior
2010-03-31 13:41 ` [PATCH 1/7] Fix Add check for return modem to avoid crash Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.