summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.in2
-rw-r--r--src/atcmd.c20
-rw-r--r--src/atcmd.h1
3 files changed, 22 insertions, 1 deletions
diff --git a/configure.in b/configure.in
index 430967d..065ac86 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
AC_INIT([src/sms_main.c])
-AM_INIT_AUTOMAKE([sms-utils], [0.0.3])
+AM_INIT_AUTOMAKE([sms-utils], [0.0.4])
AM_CONFIG_HEADER([config.h])
AC_PROG_CC
diff --git a/src/atcmd.c b/src/atcmd.c
index 76372d2..aad15e9 100644
--- a/src/atcmd.c
+++ b/src/atcmd.c
@@ -611,6 +611,21 @@ int atcmd_v_write(int fd, int mode)
return 0;
}
+int atcmd_q_write(int fd, int mode)
+{
+ char buf[ATCMD_LINE_SIZE];
+ int tmp;
+
+ atcmd_writeline(fd, "ATQ%d", mode);
+ tmp = atcmd_expect_line(fd, buf, sizeof(buf), "OK");
+ if (tmp <= 0) {
+ log_debug("expected OK but it was not received");
+ return -1;
+ }
+
+ return 0;
+}
+
int atcmd_plus_cmgf_write(int fd, int mode)
{
char buf[ATCMD_LINE_SIZE];
@@ -1099,6 +1114,11 @@ int atcmd_init(int fd, int read_timeout)
{
int tmp;
+ tmp = atcmd_q_write(fd, 0);
+ if (tmp < 0) {
+ return tmp;
+ }
+
tmp = atcmd_v_write(fd, 1);
if (tmp < 0) {
return tmp;
diff --git a/src/atcmd.h b/src/atcmd.h
index d9a53a0..de6eeee 100644
--- a/src/atcmd.h
+++ b/src/atcmd.h
@@ -59,6 +59,7 @@ int atcmd_response_foreach_line(int fd, atcmd_response_callback_t call, void *pr
int atcmd_e_write(int fd, int mode);
int atcmd_v_write(int fd, int mode);
+int atcmd_q_write(int fd, int mode);
int atcmd_plus_cmgf_write(int fd, int mode);
int atcmd_plus_cmgw_write(int fd, const char *msg, size_t msg_len);
int atcmd_plus_cmgs_write(int fd, const char *msg, size_t msg_len);