diff options
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | src/atcmd.c | 20 | ||||
-rw-r--r-- | src/atcmd.h | 1 |
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); |