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

Commit f89ea7a5 authored by Wink Saville's avatar Wink Saville Committed by Android (Google) Code Review
Browse files

Merge "Change getLteOnCdmaModeStatic to dynamically determine its result." into honeycomb-LTE

parents 5c8caba2 fe071d3d
Loading
Loading
Loading
Loading
+62 −3
Original line number Diff line number Diff line
@@ -26,6 +26,11 @@ import android.os.SystemProperties;
import android.util.Config;
import android.util.Log;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * {@hide}
 */
@@ -794,6 +799,34 @@ public abstract class BaseCommands implements CommandsInterface {
    protected void onRadioAvailable() {
    }

    /**
     * The contents of the /proc/cmdline file
     */
    private static String getProcCmdLine()
    {
        String cmdline = "";
        FileInputStream is = null;
        try {
            is = new FileInputStream("/proc/cmdline");
            byte [] buffer = new byte[2048];
            int count = is.read(buffer);
            if (count > 0) {
                cmdline = new String(buffer, 0, count);
            }
        } catch (IOException e) {
            Log.d(LOG_TAG, "No /proc/cmdline exception=" + e);
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
        Log.d(LOG_TAG, "/proc/cmdline=" + cmdline);
        return cmdline;
    }

    /**
     * {@inheritDoc}
     */
@@ -802,6 +835,17 @@ public abstract class BaseCommands implements CommandsInterface {
        return getLteOnCdmaModeStatic();
    }

    /** Kernel command line */
    private static final String sKernelCmdLine = getProcCmdLine();

    /** Pattern for selecting the product type from the kernel command line */
    private static final Pattern sProductTypePattern =
        Pattern.compile("\\sproduct_type\\s*=\\s*(\\w+)");

    /** The ProductType used for LTE on CDMA devices */
    private static final String sLteOnCdmaProductType =
        SystemProperties.get(TelephonyProperties.PROPERTY_LTE_ON_CDMA_PRODUCT_TYPE, "");

    /**
     * Return if the current radio is LTE on CDMA. This
     * is a tri-state return value as for a period of time
@@ -811,9 +855,24 @@ public abstract class BaseCommands implements CommandsInterface {
     * or {@link Phone#LTE_ON_CDMA_TRUE}
     */
    public static int getLteOnCdmaModeStatic() {
        int retVal = SystemProperties.getInt(TelephonyProperties.PROPERTY_NETWORK_LTE_ON_CDMA,
                Phone.LTE_ON_CDMA_FALSE);
        Log.d(LOG_TAG, "getLteOnCdmaMode=" + retVal);
        int retVal;
        String productType;

        Matcher matcher = sProductTypePattern.matcher(sKernelCmdLine);
        if (matcher.find()) {
            productType = matcher.group(1);
            if (sLteOnCdmaProductType.equals(productType)) {
                retVal = Phone.LTE_ON_CDMA_TRUE;
            } else {
                retVal = Phone.LTE_ON_CDMA_FALSE;
            }
        } else {
            retVal = Phone.LTE_ON_CDMA_FALSE;
            productType = "";
        }

        Log.d(LOG_TAG, "getLteOnCdmaMode=" + retVal + " product_type='" + productType +
                "' lteOnCdmaProductType='" + sLteOnCdmaProductType + "'");
        return retVal;
    }
}
+5 −3
Original line number Diff line number Diff line
@@ -72,10 +72,12 @@ public interface TelephonyProperties
     */
    static final String PROPERTY_OPERATOR_ISO_COUNTRY = "gsm.operator.iso-country";

    /** 'true' if device supports both LTE and CDMA mode of operation.
     *  Availability: Set only on devices supporting LTE and CDMA.
    /**
     * The contents of this property is the value of the kernel command line
     * product_type variable that corresponds to a product that supports LTE on CDMA.
     * {@see BaseCommands#getLteOnCdmaMode()}
     */
    static final String PROPERTY_NETWORK_LTE_ON_CDMA = "telephony.lte_on_cdma";
    static final String PROPERTY_LTE_ON_CDMA_PRODUCT_TYPE = "telephony.lteOnCdmaProductType";

    static final String CURRENT_ACTIVE_PHONE = "gsm.current.phone-type";