summaryrefslogtreecommitdiff
path: root/src/sms_send.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sms_send.c')
-rw-r--r--src/sms_send.c44
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++;