diff options
Diffstat (limited to 'src/sms_send.c')
-rw-r--r-- | src/sms_send.c | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/src/sms_send.c b/src/sms_send.c index 8ed7ebb..3933786 100644 --- a/src/sms_send.c +++ b/src/sms_send.c @@ -224,8 +224,25 @@ static int do_send(int fd, struct send_options *options, int argc, char **argv) printf("preparing for send...\n"); } + //LE910-SVG SMS SEND WORKAROUND + if (!strcmp(Global.core.model, "LE910-SVG")) { + log_info("setting text mode for LE910-SVG"); + tmp = atcmd_plus_cmgf_write(fd, SMS_TEXT_MODE); + if (tmp < 0) { + log_error("failed to set text mode for sending with LE910-SVG"); + return false; + } + } + if (options->cmgw_first) { - tmp = pdu_encode(buf, sizeof(buf), &pdu); + if (isCdmaTypeModel()) { + log_debug("using CDMA pdu encoding for cmgw"); + tmp = pdu_encode_cdma(buf, sizeof(buf), &pdu); + } + else { + log_debug("using GSM pdu encoding for cmgw"); + tmp = pdu_encode(buf, sizeof(buf), &pdu); + } if (tmp < 0) { log_error("pdu encode failed"); return false; @@ -235,7 +252,13 @@ static int do_send(int fd, struct send_options *options, int argc, char **argv) printf("writing message to memory\n"); } - mem_index = atcmd_plus_cmgw_write(fd, buf, pdu.msg_len); + //LE910-SVG SMS SEND WORKAROUND + if (!strcmp(Global.core.model, "LE910-SVG")) { + mem_index = atcmd_plus_cmgw_write_text(fd, NULL, SMS_ADDR_UNSPEC, NULL, pdu.user_data, pdu.user_data_len); + } + else { + mem_index = atcmd_plus_cmgw_write(fd, buf, pdu.msg_len); + } if (mem_index < 0) { log_error("write message to memory failed"); return false; @@ -275,14 +298,27 @@ static int do_send(int fd, struct send_options *options, int argc, char **argv) continue; } } else { - tmp = pdu_encode(buf, sizeof(buf), &pdu); + if (isCdmaTypeModel()) { + log_debug("using CDMA pdu encoding for cmgs"); + tmp = pdu_encode_cdma(buf, sizeof(buf), &pdu); + } + else { + log_debug("using GSM pdu encoding for cmgs"); + tmp = pdu_encode(buf, sizeof(buf), &pdu); + } if (tmp < 0) { printf("sending message to %s failed\n", argv[i]); failed++; continue; } - tmp = atcmd_plus_cmgs_write(fd, buf, pdu.msg_len); + //LE910-SVG SMS SEND WORKAROUND + if (!strcmp(Global.core.model, "LE910-SVG")) { + tmp = atcmd_plus_cmgs_write_text(fd, pdu.addr.addr, pdu.user_data, pdu.user_data_len); + } + else { + tmp = atcmd_plus_cmgs_write(fd, buf, pdu.msg_len); + } if (tmp < 0) { printf("sending message to %s failed\n", argv[i]); failed++; |