From 055f7b6598627078478fac4830abb313208b773d Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 3 Jun 2010 02:47:26 +0000 Subject: [PATCH] Fixed sending messages on the Openmoko Freerunner with the latest GSM firmware --- src/modem.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modem.c b/src/modem.c index 33555f4..5c899e2 100644 --- a/src/modem.c +++ b/src/modem.c @@ -480,7 +480,7 @@ int gsm_modem_send_message(GSMModem * gsmm, char const * number, break; } addr = _number_to_address(number); - len2 = sizeof(cmd2) + 2 + strlen(addr ? addr : "") + sizeof(pid) + len2 = 2 + sizeof(cmd2) + 2 + strlen(addr ? addr : "") + sizeof(pid) + sizeof(dcs) + sizeof(vp) + 2 + strlen(data ? data : "") + 1; buf2 = malloc(len2); len1 = sizeof(cmd1) + 4; @@ -496,9 +496,13 @@ int gsm_modem_send_message(GSMModem * gsmm, char const * number, } if(number[0] == '+') number++; - snprintf(buf2, len2, "%s%02lX%s%s%s%s%02lX%s\x1a", cmd2, strlen(number), + snprintf(buf2, len2, "%s%s%02lX%s%s%s%s%02lX%s\x1a", gsmm->quirks + & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU ? "00" : "", + cmd2, strlen(number), addr, pid, dcs, vp, length, data); len2 = strlen(buf2); + if(gsmm->quirks & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU) + len2 -= 2; snprintf(buf1, len1, "%s%lu", cmd1, (len2 - 1) / 2); free(addr); free(data);