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

Commit 9423daf7 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Android (Google) Code Review
Browse files

Merge "Add opaque vendorExension fields to ProgramInfo and Properties structs."

parents a7901738 6849aa85
Loading
Loading
Loading
Loading
+60 −3
Original line number Diff line number Diff line
@@ -16,11 +16,13 @@

package android.hardware.radio;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.content.Context;
import android.os.Handler;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import java.util.List;
import java.util.Arrays;

@@ -108,10 +110,12 @@ public class RadioManager {
        private final int mNumAudioSources;
        private final boolean mIsCaptureSupported;
        private final BandDescriptor[] mBands;
        private final boolean mIsBgScanSupported;
        private final String mVendorExension;

        ModuleProperties(int id, int classId, String implementor, String product, String version,
                String serial, int numTuners, int numAudioSources, boolean isCaptureSupported,
                BandDescriptor[] bands) {
                BandDescriptor[] bands, boolean isBgScanSupported, String vendorExension) {
            mId = id;
            mClassId = classId;
            mImplementor = implementor;
@@ -122,6 +126,8 @@ public class RadioManager {
            mNumAudioSources = numAudioSources;
            mIsCaptureSupported = isCaptureSupported;
            mBands = bands;
            mIsBgScanSupported = isBgScanSupported;
            mVendorExension = vendorExension;
        }


@@ -206,7 +212,23 @@ public class RadioManager {
         * @hide FutureFeature
         */
        public boolean isBackgroundScanningSupported() {
            return false;
            return mIsBgScanSupported;
        }

        /**
         * Opaque vendor-specific string, passed from HAL without changes.
         * Format of this string can vary across vendors.
         *
         * It may be used for extra features, that's not supported by a platform,
         * for example: "preset-slots=6;ultra-hd-capable=false".
         *
         * Client application MUST verify vendor/product name from the
         * ModuleProperties class before doing any interpretation of this value.
         *
         * @hide FutureFeature
         */
        public @NonNull String getVendorExension() {
            return mVendorExension == null ? "" : mVendorExension;
        }

        /** List of descriptors for all bands supported by this module.
@@ -231,6 +253,8 @@ public class RadioManager {
            for (int i = 0; i < tmp.length; i++) {
                mBands[i] = (BandDescriptor) tmp[i];
            }
            mIsBgScanSupported = in.readInt() == 1;
            mVendorExension = in.readString();
        }

        public static final Parcelable.Creator<ModuleProperties> CREATOR
@@ -256,6 +280,8 @@ public class RadioManager {
            dest.writeInt(mNumAudioSources);
            dest.writeInt(mIsCaptureSupported ? 1 : 0);
            dest.writeParcelableArray(mBands, flags);
            dest.writeInt(mIsBgScanSupported ? 1 : 0);
            dest.writeString(mVendorExension);
        }

        @Override
@@ -271,6 +297,7 @@ public class RadioManager {
                    + ", mNumTuners=" + mNumTuners
                    + ", mNumAudioSources=" + mNumAudioSources
                    + ", mIsCaptureSupported=" + mIsCaptureSupported
                    + ", mIsBgScanSupported=" + mIsBgScanSupported
                    + ", mBands=" + Arrays.toString(mBands) + "]";
        }

@@ -288,6 +315,8 @@ public class RadioManager {
            result = prime * result + mNumAudioSources;
            result = prime * result + (mIsCaptureSupported ? 1 : 0);
            result = prime * result + Arrays.hashCode(mBands);
            result = prime * result + (mIsBgScanSupported ? 1 : 0);
            result = prime * result + ((mVendorExension == null) ? 0 : mVendorExension.hashCode());
            return result;
        }

@@ -330,6 +359,10 @@ public class RadioManager {
                return false;
            if (!Arrays.equals(mBands, other.getBands()))
                return false;
            if (mIsBgScanSupported != other.isBackgroundScanningSupported())
                return false;
            if (!TextUtils.equals(mVendorExension, other.mVendorExension))
                return false;
            return true;
        }
    }
@@ -1161,9 +1194,11 @@ public class RadioManager {
        private final int mFlags;
        private final int mSignalStrength;
        private final RadioMetadata mMetadata;
        private final String mVendorExension;

        ProgramInfo(int channel, int subChannel, boolean tuned, boolean stereo,
                boolean digital, int signalStrength, RadioMetadata metadata, int flags) {
                boolean digital, int signalStrength, RadioMetadata metadata, int flags,
                String vendorExension) {
            mChannel = channel;
            mSubChannel = subChannel;
            mTuned = tuned;
@@ -1172,6 +1207,7 @@ public class RadioManager {
            mFlags = flags;
            mSignalStrength = signalStrength;
            mMetadata = metadata;
            mVendorExension = vendorExension;
        }

        /** Main channel expressed in units according to band type.
@@ -1243,6 +1279,22 @@ public class RadioManager {
            return mMetadata;
        }

        /**
         * Opaque vendor-specific string, passed from HAL without changes.
         * Format of this string can vary across vendors.
         *
         * It may be used for extra features, that's not supported by a platform,
         * for example: "paid-service=true;bitrate=320kbps".
         *
         * Client application MUST verify vendor/product name from the
         * ModuleProperties class before doing any interpretation of this value.
         *
         * @hide FutureFeature
         */
        public @NonNull String getVendorExension() {
            return mVendorExension == null ? "" : mVendorExension;
        }

        private ProgramInfo(Parcel in) {
            mChannel = in.readInt();
            mSubChannel = in.readInt();
@@ -1256,6 +1308,7 @@ public class RadioManager {
                mMetadata = null;
            }
            mFlags = in.readInt();
            mVendorExension = in.readString();
        }

        public static final Parcelable.Creator<ProgramInfo> CREATOR
@@ -1284,6 +1337,7 @@ public class RadioManager {
                mMetadata.writeToParcel(dest, flags);
            }
            dest.writeInt(mFlags);
            dest.writeString(mVendorExension);
        }

        @Override
@@ -1312,6 +1366,7 @@ public class RadioManager {
            result = prime * result + mFlags;
            result = prime * result + mSignalStrength;
            result = prime * result + ((mMetadata == null) ? 0 : mMetadata.hashCode());
            result = prime * result + ((mVendorExension == null) ? 0 : mVendorExension.hashCode());
            return result;
        }

@@ -1341,6 +1396,8 @@ public class RadioManager {
                    return false;
            } else if (!mMetadata.equals(other.getMetadata()))
                return false;
            if (!TextUtils.equals(mVendorExension, other.mVendorExension))
                return false;
            return true;
        }
    }
+9 −4
Original line number Diff line number Diff line
@@ -326,13 +326,15 @@ static jint convertProgramInfoFromNative(JNIEnv *env,
    ALOGV("%s channel %d tuned %d", __FUNCTION__, nProgramInfo->channel, nProgramInfo->tuned);

    int flags = 0;  // TODO(b/32621193): pass from the HAL
    jstring jVendorExension = env->NewStringUTF("");  // TODO(b/32621193): pass from the HAL
    *jProgramInfo = env->NewObject(gRadioProgramInfoClass, gRadioProgramInfoCstor,
                                  nProgramInfo->channel, nProgramInfo->sub_channel,
                                  nProgramInfo->tuned, nProgramInfo->stereo,
                                  nProgramInfo->digital, nProgramInfo->signal_strength,
                                  jMetadata, flags);
                                  jMetadata, flags, jVendorExension);

    env->DeleteLocalRef(jMetadata);
    env->DeleteLocalRef(jVendorExension);
    return (jint)RADIO_STATUS_OK;
}

@@ -444,19 +446,22 @@ android_hardware_Radio_listModules(JNIEnv *env, jobject clazz,
        jstring jProduct = env->NewStringUTF(nModules[i].product);
        jstring jVersion = env->NewStringUTF(nModules[i].version);
        jstring jSerial = env->NewStringUTF(nModules[i].serial);
        bool isBgscanSupported = false;  // TODO(b/32621193): pass from the HAL
        jstring jVendorExension = env->NewStringUTF("");  // TODO(b/32621193): pass from the HAL
        jobject jModule = env->NewObject(gModulePropertiesClass, gModulePropertiesCstor,
                                               nModules[i].handle, nModules[i].class_id,
                                               jImplementor, jProduct, jVersion, jSerial,
                                               nModules[i].num_tuners,
                                               nModules[i].num_audio_sources,
                                               nModules[i].supports_capture,
                                               jBands);
                                               jBands, isBgscanSupported, jVendorExension);

        env->DeleteLocalRef(jImplementor);
        env->DeleteLocalRef(jProduct);
        env->DeleteLocalRef(jVersion);
        env->DeleteLocalRef(jSerial);
        env->DeleteLocalRef(jBands);
        env->DeleteLocalRef(jVendorExension);
        if (jModule == NULL) {
            continue;
        }
@@ -883,7 +888,7 @@ int register_android_hardware_Radio(JNIEnv *env)
    jclass modulePropertiesClass = FindClassOrDie(env, kModulePropertiesClassPathName);
    gModulePropertiesClass = MakeGlobalRefOrDie(env, modulePropertiesClass);
    gModulePropertiesCstor = GetMethodIDOrDie(env, modulePropertiesClass, "<init>",
            "(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZ[Landroid/hardware/radio/RadioManager$BandDescriptor;)V");
            "(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZ[Landroid/hardware/radio/RadioManager$BandDescriptor;ZLjava/lang/String;)V");

    jclass bandDescriptorClass = FindClassOrDie(env, kRadioBandDescriptorClassPathName);
    gRadioBandDescriptorClass = MakeGlobalRefOrDie(env, bandDescriptorClass);
@@ -933,7 +938,7 @@ int register_android_hardware_Radio(JNIEnv *env)
    jclass programInfoClass = FindClassOrDie(env, kRadioProgramInfoClassPathName);
    gRadioProgramInfoClass = MakeGlobalRefOrDie(env, programInfoClass);
    gRadioProgramInfoCstor = GetMethodIDOrDie(env, programInfoClass, "<init>",
            "(IIZZZILandroid/hardware/radio/RadioMetadata;I)V");
            "(IIZZZILandroid/hardware/radio/RadioMetadata;ILjava/lang/String;)V");

    jclass metadataClass = FindClassOrDie(env, kRadioMetadataClassPathName);
    gRadioMetadataClass = MakeGlobalRefOrDie(env, metadataClass);