am 9e00abc6: Merge "CB: Turn on CMAS Presidential"
* commit '9e00abc65a29e51683e5cc55e848c6a05ac109a3':
CB: Turn on CMAS Presidential
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
index 3c6eea4..41764af 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
@@ -54,12 +54,14 @@
}
private static void setChannelRange(SmsManager manager, String ranges, boolean enable) {
+ if (DBG)log("setChannelRange: " + ranges);
+
try {
for (String channelRange : ranges.split(",")) {
int dashIndex = channelRange.indexOf('-');
if (dashIndex != -1) {
- int startId = Integer.decode(channelRange.substring(0, dashIndex));
- int endId = Integer.decode(channelRange.substring(dashIndex + 1));
+ int startId = Integer.decode(channelRange.substring(0, dashIndex).trim());
+ int endId = Integer.decode(channelRange.substring(dashIndex + 1).trim());
if (enable) {
if (DBG) log("enabling emergency IDs " + startId + '-' + endId);
manager.enableCellBroadcastRange(startId, endId);
@@ -68,7 +70,7 @@
manager.disableCellBroadcastRange(startId, endId);
}
} else {
- int messageId = Integer.decode(channelRange);
+ int messageId = Integer.decode(channelRange.trim());
if (enable) {
if (DBG) log("enabling emergency message ID " + messageId);
manager.enableCellBroadcast(messageId);
@@ -81,6 +83,10 @@
} catch (NumberFormatException e) {
Log.e(TAG, "Number Format Exception parsing emergency channel range", e);
}
+
+ // Make sure CMAS Presidential is enabled (See 3GPP TS 22.268 Section 6.2).
+ if (DBG) log("setChannelRange: enabling CMAS Presidential");
+ manager.enableCellBroadcast(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL);
}
/**
@@ -104,13 +110,13 @@
for (String channelRange : emergencyIdRange.split(",")) {
int dashIndex = channelRange.indexOf('-');
if (dashIndex != -1) {
- int startId = Integer.decode(channelRange.substring(0, dashIndex));
- int endId = Integer.decode(channelRange.substring(dashIndex + 1));
+ int startId = Integer.decode(channelRange.substring(0, dashIndex).trim());
+ int endId = Integer.decode(channelRange.substring(dashIndex + 1).trim());
if (messageId >= startId && messageId <= endId) {
return true;
}
} else {
- int emergencyMessageId = Integer.decode(channelRange);
+ int emergencyMessageId = Integer.decode(channelRange.trim());
if (emergencyMessageId == messageId) {
return true;
}
@@ -154,6 +160,10 @@
manager.enableCellBroadcastRange(
SmsCbConstants.MESSAGE_ID_PWS_FIRST_IDENTIFIER,
SmsCbConstants.MESSAGE_ID_PWS_LAST_IDENTIFIER);
+
+ // CMAS Presidential must be on (See 3GPP TS 22.268 Section 6.2).
+ manager.enableCellBroadcast(
+ SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL);
}
if (DBG) log("enabled emergency cell broadcast channels");
} else {
@@ -163,9 +173,13 @@
setChannelRange(manager, emergencyIdRange, false);
} else {
// No emergency channel system property, disable all emergency channels
+ // except for CMAS Presidential (See 3GPP TS 22.268 Section 6.2)
manager.disableCellBroadcastRange(
SmsCbConstants.MESSAGE_ID_PWS_FIRST_IDENTIFIER,
SmsCbConstants.MESSAGE_ID_PWS_LAST_IDENTIFIER);
+
+ manager.enableCellBroadcast(
+ SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL);
}
if (DBG) log("disabled emergency cell broadcast channels");
}