am 6d494f9c: Merge change 22093 into eclair

Merge commit '6d494f9c88084a10e9ba835508b58a139fc74bd3'

* commit '6d494f9c88084a10e9ba835508b58a139fc74bd3':
  cdma sms encoding tweaks and logging / debugging annotations.
This commit is contained in:
Tammo Spalink
2009-08-20 13:25:03 -07:00
committed by Android Git Automerger
3 changed files with 15 additions and 8 deletions

View File

@@ -67,6 +67,7 @@ import static android.telephony.SmsMessage.MessageClass;
*/
public class SmsMessage extends SmsMessageBase {
static final String LOG_TAG = "CDMA";
private final static Boolean DBG_SMS = false;
/**
* Status of a previously submitted SMS.
@@ -541,6 +542,7 @@ public class SmsMessage extends SmsMessageBase {
return;
}
mBearerData = BearerData.decode(mEnvelope.bearerData);
if (DBG_SMS) Log.d(LOG_TAG, "MT (decoded) BearerData = " + mBearerData);
messageRef = mBearerData.messageId;
if (mBearerData.userData != null) {
userData = mBearerData.userData.payload;
@@ -644,14 +646,14 @@ public class SmsMessage extends SmsMessageBase {
bearerData.reportReq = false;
bearerData.userData = userData;
bearerData.hasUserDataHeader = (userData.userDataHeader != null);
byte[] encodedBearerData = BearerData.encode(bearerData);
if (DBG_SMS) Log.d(LOG_TAG, "MO (encoded) BearerData = " + bearerData);
if (encodedBearerData == null) return null;
int teleservice = bearerData.hasUserDataHeader ?
SmsEnvelope.TELESERVICE_WEMT : SmsEnvelope.TELESERVICE_WMT;
byte[] encodedBearerData = BearerData.encode(bearerData);
if (encodedBearerData == null) return null;
SmsEnvelope envelope = new SmsEnvelope();
envelope.messageType = SmsEnvelope.MESSAGE_TYPE_POINT_TO_POINT;
envelope.teleService = teleservice;

View File

@@ -484,7 +484,7 @@ public final class BearerData {
Gsm7bitCodingResult result = new Gsm7bitCodingResult();
result.data = new byte[fullData.length - 1];
System.arraycopy(fullData, 1, result.data, 0, fullData.length - 1);
result.septets = fullData[0];
result.septets = fullData[0] & 0x00FF;
return result;
} catch (com.android.internal.telephony.EncodeException ex) {
throw new CodingException("7bit GSM encode failed: " + ex);
@@ -498,6 +498,7 @@ public final class BearerData {
int udhSeptets = ((udhBytes * 8) + 6) / 7;
Gsm7bitCodingResult gcr = encode7bitGsm(uData.payloadStr, udhSeptets, force);
uData.msgEncoding = UserData.ENCODING_GSM_7BIT_ALPHABET;
uData.msgEncodingSet = true;
uData.numFields = gcr.septets;
uData.payload = gcr.data;
uData.payload[0] = (byte)udhData.length;
@@ -512,6 +513,8 @@ public final class BearerData {
int udhCodeUnits = (udhBytes + 1) / 2;
int udhPadding = udhBytes % 2;
int payloadCodeUnits = payload.length / 2;
uData.msgEncoding = UserData.ENCODING_UNICODE_16;
uData.msgEncodingSet = true;
uData.numFields = udhCodeUnits + payloadCodeUnits;
uData.payload = new byte[uData.numFields * 2];
uData.payload[0] = (byte)udhData.length;
@@ -606,14 +609,16 @@ public final class BearerData {
* copies by passing outStream directly.
*/
encodeUserDataPayload(bData.userData);
bData.hasUserDataHeader = bData.userData.userDataHeader != null;
if (bData.userData.payload.length > SmsMessage.MAX_USER_DATA_BYTES) {
throw new CodingException("encoded user data too large (" +
bData.userData.payload.length +
" > " + SmsMessage.MAX_USER_DATA_BYTES + " bytes)");
}
/**
* XXX/TODO: figure out what the right answer is WRT padding bits
/*
* TODO(cleanup): figure out what the right answer is WRT paddingBits field
*
* userData.paddingBits = (userData.payload.length * 8) - (userData.numFields * 7);
* userData.paddingBits = 0; // XXX this seems better, but why?

View File

@@ -154,7 +154,7 @@ public class UserData {
builder.append("{ msgEncoding=" + (msgEncodingSet ? msgEncoding : "unset"));
builder.append(", msgType=" + msgType);
builder.append(", paddingBits=" + paddingBits);
builder.append(", numFields=" + (int)numFields);
builder.append(", numFields=" + numFields);
builder.append(", userDataHeader=" + userDataHeader);
builder.append(", payload='" + HexDump.toHexString(payload) + "'");
builder.append(", payloadStr='" + payloadStr + "'");