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");
                 }