* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox