Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1df5e2c authored by Jordan Liu's avatar Jordan Liu
Browse files

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
Merged-In: I98f79fbb384881de5cb65fa7fe7a08b3f5b2e272
parent 6e7e6c5b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -7247,7 +7247,7 @@ package android.telephony {
  public abstract class CellBroadcastService extends android.app.Service {
    ctor public CellBroadcastService();
    method @CallSuper @NonNull public android.os.IBinder onBind(@Nullable android.content.Intent);
    method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[]);
    method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[], int);
    method public abstract void onGsmCellBroadcastSms(int, @NonNull byte[]);
    field public static final String CELL_BROADCAST_SERVICE_INTERFACE = "android.telephony.CellBroadcastService";
  }
+11 −5
Original line number Diff line number Diff line
@@ -23,6 +23,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.
@@ -71,9 +72,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, @NonNull byte[] message);
    public abstract void onCdmaCellBroadcastSms(int slotIndex, @NonNull byte[] bearerData,
            @CdmaSmsCbProgramData.Category int serviceCategory);

    /**
     * If overriding this method, call through to the super method for any unknown actions.
@@ -105,11 +108,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);
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -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);
}
+16 −3
Original line number Diff line number Diff line
@@ -19,17 +19,17 @@ package com.android.internal.telephony.cdma;
import static com.android.internal.telephony.TelephonyProperties.PROPERTY_OPERATOR_IDP_STRING;

import android.content.res.Resources;
import android.os.Parcel;
import android.os.SystemProperties;
import android.telephony.PhoneNumberUtils;
import android.telephony.Rlog;
import android.telephony.SmsCbLocation;
import android.telephony.SmsCbMessage;
import android.telephony.cdma.CdmaSmsCbProgramData;
import android.telephony.Rlog;
import android.text.TextUtils;
import android.util.Log;

import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import com.android.internal.telephony.Sms7BitEncodingTranslator;
import com.android.internal.telephony.SmsAddress;
import com.android.internal.telephony.SmsConstants;
import com.android.internal.telephony.SmsHeader;
@@ -43,7 +43,6 @@ import com.android.internal.telephony.cdma.sms.UserData;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.util.BitwiseInputStream;
import com.android.internal.util.HexDump;
import com.android.internal.telephony.Sms7BitEncodingTranslator;

import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
@@ -880,6 +879,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}
     */
+6 −6
Original line number Diff line number Diff line
@@ -58,17 +58,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