From ef354fdd634de93004fddd7966d70f70a1351ca8 Mon Sep 17 00:00:00 2001 From: jsh Date: Fri, 29 May 2009 16:13:48 -0700 Subject: [PATCH] Fix concat SMS for GSM. Bug 1883998: We only support sending 8-bit references for now. Bug 1885080: Also fix the GsmAlphabetTest, which started failing when SmsHeader was re-worked. --- .../android/internal/telephony/gsm/GsmSMSDispatcher.java | 8 +++++++- .../com/android/internal/telephony/GsmAlphabetTest.java | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java index 347b3afc7a96c..8bf5d1903cb5a 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java @@ -152,7 +152,13 @@ final class GsmSMSDispatcher extends SMSDispatcher { concatRef.refNumber = refNumber; concatRef.seqNumber = i + 1; // 1-based sequence concatRef.msgCount = msgCount; - concatRef.isEightBits = false; + // TODO: We currently set this to true since our messaging app will never + // send more than 255 parts (it converts the message to MMS well before that). + // However, we should support 3rd party messaging apps that might need 16-bit + // references + // Note: It's not sufficient to just flip this bit to true; it will have + // ripple effects (several calculations assume 8-bit ref). + concatRef.isEightBits = true; SmsHeader smsHeader = new SmsHeader(); smsHeader.concatRef = concatRef; diff --git a/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java b/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java index e2336f8832c99..3a9c5116f1605 100644 --- a/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java +++ b/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java @@ -41,7 +41,7 @@ public class GsmAlphabetTest extends TestCase { SmsHeader.toByteArray(header)); int septetCount = GsmAlphabet.countGsmSeptets(message, false); String parsedMessage = GsmAlphabet.gsm7BitPackedToString( - userData, SmsHeader.toByteArray(header).length+1, septetCount, 1); + userData, SmsHeader.toByteArray(header).length+2, septetCount, 1); assertEquals(message, parsedMessage); }