Merge "Suppress showing "Invalid Validity Period-1" for sending messages"
This commit is contained in:
@@ -615,10 +615,12 @@ public final class SmsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (priority < 0x00 || priority > 0x03) {
|
if (priority < 0x00 || priority > 0x03) {
|
||||||
|
Log.e(TAG, "Invalid Priority " + priority);
|
||||||
priority = SMS_MESSAGE_PRIORITY_NOT_SPECIFIED;
|
priority = SMS_MESSAGE_PRIORITY_NOT_SPECIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validityPeriod < 0x05 || validityPeriod > 0x09b0a0) {
|
if (validityPeriod < 0x05 || validityPeriod > 0x09b0a0) {
|
||||||
|
Log.e(TAG, "Invalid Validity Period " + validityPeriod);
|
||||||
validityPeriod = SMS_MESSAGE_PERIOD_NOT_SPECIFIED;
|
validityPeriod = SMS_MESSAGE_PERIOD_NOT_SPECIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1174,10 +1176,12 @@ public final class SmsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (priority < 0x00 || priority > 0x03) {
|
if (priority < 0x00 || priority > 0x03) {
|
||||||
|
Log.e(TAG, "Invalid Priority " + priority);
|
||||||
priority = SMS_MESSAGE_PRIORITY_NOT_SPECIFIED;
|
priority = SMS_MESSAGE_PRIORITY_NOT_SPECIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validityPeriod < 0x05 || validityPeriod > 0x09b0a0) {
|
if (validityPeriod < 0x05 || validityPeriod > 0x09b0a0) {
|
||||||
|
Log.e(TAG, "Invalid Validity Period " + validityPeriod);
|
||||||
validityPeriod = SMS_MESSAGE_PERIOD_NOT_SPECIFIED;
|
validityPeriod = SMS_MESSAGE_PERIOD_NOT_SPECIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,14 +92,15 @@ public class SmsMessage extends SmsMessageBase {
|
|||||||
|
|
||||||
private int mVoiceMailCount = 0;
|
private int mVoiceMailCount = 0;
|
||||||
|
|
||||||
|
/** TP-Validity-Period-Format (TP-VPF). See TS 23.040, 9.2.3.3 */
|
||||||
private static final int VALIDITY_PERIOD_FORMAT_NONE = 0x00;
|
private static final int VALIDITY_PERIOD_FORMAT_NONE = 0x00;
|
||||||
private static final int VALIDITY_PERIOD_FORMAT_ENHANCED = 0x01;
|
private static final int VALIDITY_PERIOD_FORMAT_ENHANCED = 0x01;
|
||||||
private static final int VALIDITY_PERIOD_FORMAT_RELATIVE = 0x02;
|
private static final int VALIDITY_PERIOD_FORMAT_RELATIVE = 0x02;
|
||||||
private static final int VALIDITY_PERIOD_FORMAT_ABSOLUTE = 0x03;
|
private static final int VALIDITY_PERIOD_FORMAT_ABSOLUTE = 0x03;
|
||||||
|
|
||||||
//Validity Period min - 5 mins
|
// Validity Period min - 5 mins
|
||||||
private static final int VALIDITY_PERIOD_MIN = 5;
|
private static final int VALIDITY_PERIOD_MIN = 5;
|
||||||
//Validity Period max - 63 weeks
|
// Validity Period max - 63 weeks
|
||||||
private static final int VALIDITY_PERIOD_MAX = 635040;
|
private static final int VALIDITY_PERIOD_MAX = 635040;
|
||||||
|
|
||||||
private static final int INVALID_VALIDITY_PERIOD = -1;
|
private static final int INVALID_VALIDITY_PERIOD = -1;
|
||||||
@@ -194,20 +195,20 @@ public class SmsMessage extends SmsMessageBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Encoded Relative Validty Period Value from Validity period in mins.
|
* Gets Encoded Relative Validity Period Value from Validity period in mins.
|
||||||
*
|
*
|
||||||
* @param validityPeriod Validity period in mins.
|
* @param validityPeriod Validity period in mins.
|
||||||
*
|
*
|
||||||
* Refer specification 3GPP TS 23.040 V6.8.1 section 9.2.3.12.1.
|
* Refer specification 3GPP TS 23.040 V6.8.1 section 9.2.3.12.1.
|
||||||
* ||relValidityPeriod (TP-VP) || || validityPeriod ||
|
* ------------------------------------------------------------
|
||||||
*
|
* TP-VP | Validity period
|
||||||
* 0 to 143 ---> (TP-VP + 1) x 5 minutes
|
* (Relative format) | value
|
||||||
*
|
* ------------------------------------------------------------
|
||||||
* 144 to 167 ---> 12 hours + ((TP-VP -143) x 30 minutes)
|
* 0 to 143 | (TP-VP + 1) x 5 minutes
|
||||||
*
|
* 144 to 167 | 12 hours + ((TP-VP -143) x 30 minutes)
|
||||||
* 168 to 196 ---> (TP-VP - 166) x 1 day
|
* 168 to 196 | (TP-VP - 166) x 1 day
|
||||||
*
|
* 197 to 255 | (TP-VP - 192) x 1 week
|
||||||
* 197 to 255 ---> (TP-VP - 192) x 1 week
|
* ------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* @return relValidityPeriod Encoded Relative Validity Period Value.
|
* @return relValidityPeriod Encoded Relative Validity Period Value.
|
||||||
* @hide
|
* @hide
|
||||||
@@ -215,19 +216,16 @@ public class SmsMessage extends SmsMessageBase {
|
|||||||
public static int getRelativeValidityPeriod(int validityPeriod) {
|
public static int getRelativeValidityPeriod(int validityPeriod) {
|
||||||
int relValidityPeriod = INVALID_VALIDITY_PERIOD;
|
int relValidityPeriod = INVALID_VALIDITY_PERIOD;
|
||||||
|
|
||||||
if (validityPeriod < VALIDITY_PERIOD_MIN || validityPeriod > VALIDITY_PERIOD_MAX) {
|
if (validityPeriod >= VALIDITY_PERIOD_MIN) {
|
||||||
Rlog.e(LOG_TAG,"Invalid Validity Period" + validityPeriod);
|
if (validityPeriod <= 720) {
|
||||||
return relValidityPeriod;
|
relValidityPeriod = (validityPeriod / 5) - 1;
|
||||||
}
|
} else if (validityPeriod <= 1440) {
|
||||||
|
relValidityPeriod = ((validityPeriod - 720) / 30) + 143;
|
||||||
if (validityPeriod <= 720) {
|
} else if (validityPeriod <= 43200) {
|
||||||
relValidityPeriod = (validityPeriod / 5) - 1;
|
relValidityPeriod = (validityPeriod / 1440) + 166;
|
||||||
} else if (validityPeriod <= 1440) {
|
} else if (validityPeriod <= VALIDITY_PERIOD_MAX) {
|
||||||
relValidityPeriod = ((validityPeriod - 720) / 30) + 143;
|
relValidityPeriod = (validityPeriod / 10080) + 192;
|
||||||
} else if (validityPeriod <= 43200) {
|
}
|
||||||
relValidityPeriod = (validityPeriod / 1440) + 166;
|
|
||||||
} else if (validityPeriod <= 635040) {
|
|
||||||
relValidityPeriod = (validityPeriod / 10080) + 192;
|
|
||||||
}
|
}
|
||||||
return relValidityPeriod;
|
return relValidityPeriod;
|
||||||
}
|
}
|
||||||
@@ -337,17 +335,19 @@ public class SmsMessage extends SmsMessageBase {
|
|||||||
|
|
||||||
SubmitPdu ret = new SubmitPdu();
|
SubmitPdu ret = new SubmitPdu();
|
||||||
|
|
||||||
int validityPeriodFormat = VALIDITY_PERIOD_FORMAT_NONE;
|
int relativeValidityPeriod = getRelativeValidityPeriod(validityPeriod);
|
||||||
int relativeValidityPeriod = INVALID_VALIDITY_PERIOD;
|
|
||||||
|
|
||||||
// TP-Validity-Period-Format (TP-VPF) in 3GPP TS 23.040 V6.8.1 section 9.2.3.3
|
byte mtiByte = 0x01; // SMS-SUBMIT
|
||||||
//bit 4:3 = 10 - TP-VP field present - relative format
|
|
||||||
if((relativeValidityPeriod = getRelativeValidityPeriod(validityPeriod)) >= 0) {
|
if (header != null) {
|
||||||
validityPeriodFormat = VALIDITY_PERIOD_FORMAT_RELATIVE;
|
// Set TP-UDHI
|
||||||
|
mtiByte |= 0x40;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte mtiByte = (byte)(0x01 | (validityPeriodFormat << 0x03) |
|
if (relativeValidityPeriod != INVALID_VALIDITY_PERIOD) {
|
||||||
(header != null ? 0x40 : 0x00));
|
// Set TP-Validity-Period-Format (TP-VPF)
|
||||||
|
mtiByte |= VALIDITY_PERIOD_FORMAT_RELATIVE << 3;
|
||||||
|
}
|
||||||
|
|
||||||
ByteArrayOutputStream bo = getSubmitPduHead(
|
ByteArrayOutputStream bo = getSubmitPduHead(
|
||||||
scAddress, destinationAddress, mtiByte,
|
scAddress, destinationAddress, mtiByte,
|
||||||
@@ -419,8 +419,8 @@ public class SmsMessage extends SmsMessageBase {
|
|||||||
bo.write(0x08);
|
bo.write(0x08);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validityPeriodFormat == VALIDITY_PERIOD_FORMAT_RELATIVE) {
|
// TP-Validity-Period (TP-VP)
|
||||||
// ( TP-Validity-Period - relative format)
|
if (relativeValidityPeriod != INVALID_VALIDITY_PERIOD) {
|
||||||
bo.write(relativeValidityPeriod);
|
bo.write(relativeValidityPeriod);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1353,23 +1353,17 @@ public class SmsMessage extends SmsMessageBase {
|
|||||||
|
|
||||||
// TP-Validity-Period-Format
|
// TP-Validity-Period-Format
|
||||||
int validityPeriodLength = 0;
|
int validityPeriodLength = 0;
|
||||||
int validityPeriodFormat = ((firstByte>>3) & 0x3);
|
int validityPeriodFormat = ((firstByte >> 3) & 0x3);
|
||||||
if (0x0 == validityPeriodFormat) /* 00, TP-VP field not present*/
|
if (validityPeriodFormat == VALIDITY_PERIOD_FORMAT_NONE) {
|
||||||
{
|
|
||||||
validityPeriodLength = 0;
|
validityPeriodLength = 0;
|
||||||
}
|
} else if (validityPeriodFormat == VALIDITY_PERIOD_FORMAT_RELATIVE) {
|
||||||
else if (0x2 == validityPeriodFormat) /* 10, TP-VP: relative format*/
|
|
||||||
{
|
|
||||||
validityPeriodLength = 1;
|
validityPeriodLength = 1;
|
||||||
}
|
} else { // VALIDITY_PERIOD_FORMAT_ENHANCED or VALIDITY_PERIOD_FORMAT_ABSOLUTE
|
||||||
else /* other case, 11 or 01, TP-VP: absolute or enhanced format*/
|
|
||||||
{
|
|
||||||
validityPeriodLength = 7;
|
validityPeriodLength = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TP-Validity-Period is not used on phone, so just ignore it for now.
|
// TP-Validity-Period is not used on phone, so just ignore it for now.
|
||||||
while (validityPeriodLength-- > 0)
|
while (validityPeriodLength-- > 0) {
|
||||||
{
|
|
||||||
p.getByte();
|
p.getByte();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user