From 6d64fc657f0d547d6222ff3f7358d14fdd76c378 Mon Sep 17 00:00:00 2001 From: Jordan Liu Date: Mon, 7 Oct 2019 13:10:14 -0700 Subject: [PATCH] Pass bearerData and serviceCategory to CB module for CDMA CDMA cell broadcast messages require the bearer data and service category to be passed along for parsing. This CL updates the AIDL interface so this info can be passed. Bug: 135956699 Test: manual Change-Id: I98f79fbb384881de5cb65fa7fe7a08b3f5b2e272 --- api/system-current.txt | 2 +- .../android/telephony/CellBroadcastService.java | 16 +++++++++++----- .../android/telephony/ICellBroadcastService.aidl | 2 +- .../internal/telephony/cdma/SmsMessage.java | 14 ++++++++++++++ .../internal/telephony/cdma/sms/SmsEnvelope.java | 12 ++++++------ 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 8ed79a3f23386..39ed832f452b1 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7308,7 +7308,7 @@ package android.telephony { public abstract class CellBroadcastService extends android.app.Service { ctor public CellBroadcastService(); method @CallSuper public android.os.IBinder onBind(android.content.Intent); - method public abstract void onCdmaCellBroadcastSms(int, byte[]); + method public abstract void onCdmaCellBroadcastSms(int, byte[], int); method public abstract void onGsmCellBroadcastSms(int, byte[]); field public static final String CELL_BROADCAST_SERVICE_INTERFACE = "android.telephony.CellBroadcastService"; } diff --git a/telephony/java/android/telephony/CellBroadcastService.java b/telephony/java/android/telephony/CellBroadcastService.java index d5e447e6c73d4..46eb9df8bdad9 100644 --- a/telephony/java/android/telephony/CellBroadcastService.java +++ b/telephony/java/android/telephony/CellBroadcastService.java @@ -21,6 +21,7 @@ import android.annotation.SystemApi; import android.app.Service; import android.content.Intent; import android.os.IBinder; +import android.telephony.cdma.CdmaSmsCbProgramData; /** * A service which exposes the cell broadcast handling module to the system. @@ -69,9 +70,11 @@ public abstract class CellBroadcastService extends Service { /** * Handle a CDMA cell broadcast SMS message forwarded from the system. * @param slotIndex the index of the slot which received the message - * @param message the SMS PDU + * @param bearerData the CDMA SMS bearer data + * @param serviceCategory the CDMA SCPT service category */ - public abstract void onCdmaCellBroadcastSms(int slotIndex, byte[] message); + public abstract void onCdmaCellBroadcastSms(int slotIndex, byte[] bearerData, + @CdmaSmsCbProgramData.Category int serviceCategory); /** * If overriding this method, call through to the super method for any unknown actions. @@ -102,11 +105,14 @@ public abstract class CellBroadcastService extends Service { /** * Handle a CDMA cell broadcast SMS. * @param slotIndex the index of the slot which received the broadcast - * @param message the SMS message PDU + * @param bearerData the CDMA SMS bearer data + * @param serviceCategory the CDMA SCPT service category */ @Override - public void handleCdmaCellBroadcastSms(int slotIndex, byte[] message) { - CellBroadcastService.this.onCdmaCellBroadcastSms(slotIndex, message); + public void handleCdmaCellBroadcastSms(int slotIndex, byte[] bearerData, + int serviceCategory) { + CellBroadcastService.this.onCdmaCellBroadcastSms(slotIndex, bearerData, + serviceCategory); } } } diff --git a/telephony/java/android/telephony/ICellBroadcastService.aidl b/telephony/java/android/telephony/ICellBroadcastService.aidl index eff64a2e35baa..bcd6cc546eedf 100644 --- a/telephony/java/android/telephony/ICellBroadcastService.aidl +++ b/telephony/java/android/telephony/ICellBroadcastService.aidl @@ -28,5 +28,5 @@ interface ICellBroadcastService { oneway void handleGsmCellBroadcastSms(int slotId, in byte[] message); /** @see android.telephony.CellBroadcastService#onCdmaCellBroadcastSms */ - oneway void handleCdmaCellBroadcastSms(int slotId, in byte[] message); + oneway void handleCdmaCellBroadcastSms(int slotId, in byte[] bearerData, int serviceCategory); } diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java index 4654437fb49c8..b357fa43008fe 100644 --- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java +++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java @@ -899,6 +899,20 @@ public class SmsMessage extends SmsMessageBase { bData.priority, null, bData.cmasWarningInfo, subId); } + /** + * @return the bearer data byte array + */ + public byte[] getEnvelopeBearerData() { + return mEnvelope.bearerData; + } + + /** + * @return the 16-bit CDMA SCPT service category + */ + public @CdmaSmsCbProgramData.Category int getEnvelopeServiceCategory() { + return mEnvelope.serviceCategory; + } + /** * {@inheritDoc} */ diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java b/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java index 2787b2451470f..c924ab350dc63 100644 --- a/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java +++ b/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java @@ -57,17 +57,17 @@ public final class SmsEnvelope { // CMAS alert service category assignments, see 3GPP2 C.R1001 table 9.3.3-1 public static final int SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT = - CdmaSmsCbProgramData.CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT; + CdmaSmsCbProgramData.CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT; // = 4096 public static final int SERVICE_CATEGORY_CMAS_EXTREME_THREAT = - CdmaSmsCbProgramData.CATEGORY_CMAS_EXTREME_THREAT; + CdmaSmsCbProgramData.CATEGORY_CMAS_EXTREME_THREAT; // = 4097 public static final int SERVICE_CATEGORY_CMAS_SEVERE_THREAT = - CdmaSmsCbProgramData.CATEGORY_CMAS_SEVERE_THREAT; + CdmaSmsCbProgramData.CATEGORY_CMAS_SEVERE_THREAT; // = 4098 public static final int SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = - CdmaSmsCbProgramData.CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY; + CdmaSmsCbProgramData.CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY; // = 4099 public static final int SERVICE_CATEGORY_CMAS_TEST_MESSAGE = - CdmaSmsCbProgramData.CATEGORY_CMAS_TEST_MESSAGE; + CdmaSmsCbProgramData.CATEGORY_CMAS_TEST_MESSAGE; // = 4100 public static final int SERVICE_CATEGORY_CMAS_LAST_RESERVED_VALUE = - CdmaSmsCbProgramData.CATEGORY_CMAS_LAST_RESERVED_VALUE; + CdmaSmsCbProgramData.CATEGORY_CMAS_LAST_RESERVED_VALUE; // = 4351 /** * Provides the type of a SMS message like point to point, broadcast or acknowledge