summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake Hamby <jhamby@google.com>2013-02-04 22:13:02 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2013-02-04 22:13:02 +0000
commit6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15 (patch)
treec664306cbd2b2d9e3a96aff381b825dacc6db838
parent9e00abc65a29e51683e5cc55e848c6a05ac109a3 (diff)
parenta028d57ae657c29873abd1ba6969f6e4ce835eba (diff)
downloadandroid_packages_apps_CellBroadcastReceiver-6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15.tar.gz
android_packages_apps_CellBroadcastReceiver-6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15.tar.bz2
android_packages_apps_CellBroadcastReceiver-6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15.zip
Merge "CB: Add CDMA CMAS"
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java40
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java25
2 files changed, 49 insertions, 16 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
index a321d1be..4258e5cf 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
@@ -27,6 +27,7 @@ import android.telephony.SmsManager;
import android.text.TextUtils;
import android.util.Log;
+import com.android.internal.telephony.cdma.sms.SmsEnvelope;
import com.android.internal.telephony.gsm.SmsCbConstants;
import static com.android.cellbroadcastreceiver.CellBroadcastReceiver.DBG;
@@ -47,6 +48,9 @@ public class CellBroadcastConfigService extends IntentService {
static final String ACTION_ENABLE_CHANNELS = "ACTION_ENABLE_CHANNELS";
+ static final String EMERGENCY_BROADCAST_RANGE_GSM =
+ "ro.cb.gsm.emergencyids";
+
public CellBroadcastConfigService() {
super(TAG); // use class name for worker thread name
}
@@ -84,7 +88,11 @@ public class CellBroadcastConfigService extends IntentService {
// 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);
+ if (CellBroadcastReceiver.phoneIsCdma()) {
+ manager.enableCellBroadcast(SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT);
+ } else {
+ manager.enableCellBroadcast(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL);
+ }
}
/**
@@ -99,7 +107,9 @@ public class CellBroadcastConfigService extends IntentService {
}
// Check for system property defining the emergency channel ranges to enable
- String emergencyIdRange = SystemProperties.get("ro.cellbroadcast.emergencyids");
+ String emergencyIdRange = (CellBroadcastReceiver.phoneIsCdma()) ?
+ "" : SystemProperties.get(EMERGENCY_BROADCAST_RANGE_GSM);
+
if (TextUtils.isEmpty(emergencyIdRange)) {
return false;
}
@@ -132,9 +142,11 @@ public class CellBroadcastConfigService extends IntentService {
try {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Resources res = getResources();
+ boolean isCdma = CellBroadcastReceiver.phoneIsCdma();
// Check for system property defining the emergency channel ranges to enable
- String emergencyIdRange = SystemProperties.get("ro.cellbroadcast.emergencyids");
+ String emergencyIdRange = isCdma ?
+ "" : SystemProperties.get(EMERGENCY_BROADCAST_RANGE_GSM);
boolean enableEmergencyAlerts = prefs.getBoolean(
CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, true);
@@ -147,6 +159,15 @@ public class CellBroadcastConfigService extends IntentService {
if (DBG) log("enabling emergency cell broadcast channels");
if (!TextUtils.isEmpty(emergencyIdRange)) {
setChannelRange(manager, emergencyIdRange, true);
+ } else if (isCdma){
+ // No emergency channel system property, enable all emergency channels
+ manager.enableCellBroadcastRange(
+ SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT,
+ SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE);
+
+ // CMAS Presidential must be on.
+ manager.enableCellBroadcast(
+ SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT);
} else {
// No emergency channel system property, enable all emergency channels
manager.enableCellBroadcastRange(
@@ -163,6 +184,15 @@ public class CellBroadcastConfigService extends IntentService {
if (DBG) log("disabling emergency cell broadcast channels");
if (!TextUtils.isEmpty(emergencyIdRange)) {
setChannelRange(manager, emergencyIdRange, false);
+ } else if (isCdma) {
+ // No emergency channel system property, disable all emergency channels
+ manager.disableCellBroadcastRange(
+ SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT,
+ SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE);
+
+ // CMAS Presidential must be on.
+ manager.enableCellBroadcast(
+ SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT);
} else {
// No emergency channel system property, disable all emergency channels
// except for CMAS Presidential (See 3GPP TS 22.268 Section 6.2)
@@ -176,7 +206,9 @@ public class CellBroadcastConfigService extends IntentService {
if (DBG) log("disabled emergency cell broadcast channels");
}
- if (enableChannel50Alerts) {
+ if (isCdma) {
+ if (DBG) log("channel 50 is not aplicable for cdma");
+ } else if (enableChannel50Alerts) {
if (DBG) log("enabling cell broadcast channel 50");
manager.enableCellBroadcast(50);
if (DBG) log("enabled cell broadcast channel 50");
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
index 94d71790..ac5b1d89 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
@@ -49,6 +49,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
startConfigService(context);
} else if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)) {
boolean airplaneModeOn = intent.getBooleanExtra("state", false);
+ if (DBG) log("airplaneModeOn: " + airplaneModeOn);
if (!airplaneModeOn) {
startConfigService(context);
}
@@ -62,7 +63,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
intent.setClass(context, CellBroadcastAlertService.class);
context.startService(intent);
} else {
- Log.e(TAG, "ignoring unprivileged action received " + action);
+ loge("ignoring unprivileged action received " + action);
}
} else if (Telephony.Sms.Intents.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION
.equals(action)) {
@@ -72,10 +73,10 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
if (programDataList != null) {
handleCdmaSmsCbProgramData(context, programDataList);
} else {
- Log.e(TAG, "SCPD intent received with no program_data_list");
+ loge("SCPD intent received with no program_data_list");
}
} else {
- Log.e(TAG, "ignoring unprivileged action received " + action);
+ loge("ignoring unprivileged action received " + action);
}
} else {
Log.w(TAG, "onReceive() unexpected action " + action);
@@ -113,7 +114,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
break;
default:
- Log.e(TAG, "Ignoring unknown SCPD operation " + programData.getOperation());
+ loge("Ignoring unknown SCPD operation " + programData.getOperation());
}
}
}
@@ -155,19 +156,15 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
* @param context the broadcast receiver context
*/
static void startConfigService(Context context) {
- if (phoneIsCdma()) {
- if (DBG) log("CDMA phone detected; doing nothing");
- } else {
- Intent serviceIntent = new Intent(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS,
- null, context, CellBroadcastConfigService.class);
- context.startService(serviceIntent);
- }
+ Intent serviceIntent = new Intent(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS,
+ null, context, CellBroadcastConfigService.class);
+ context.startService(serviceIntent);
}
/**
* @return true if the phone is a CDMA phone type
*/
- private static boolean phoneIsCdma() {
+ static boolean phoneIsCdma() {
boolean isCdma = false;
try {
ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
@@ -183,4 +180,8 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
private static void log(String msg) {
Log.d(TAG, msg);
}
+
+ private static void loge(String msg) {
+ Log.e(TAG, msg);
+ }
}