summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/atcmd.c20
-rw-r--r--src/atcmd.h1
2 files changed, 21 insertions, 0 deletions
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);