Add vendor.qti.qcril.am@1.0 as used on Pixel 2 XL
diff --git a/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java b/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java
index ecc1a07..5c69742 100644
--- a/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java
+++ b/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java
@@ -10,9 +10,6 @@
 import android.os.UEventObserver;
 import android.os.SystemProperties;
 
-import vendor.qti.hardware.radio.am.V1_0.IQcRilAudioCallback;
-import vendor.qti.hardware.radio.am.V1_0.IQcRilAudio;
-
 public class Service extends android.app.Service {
 	AudioManager audioManager;
 	@Override public void onCreate() {
@@ -24,14 +21,25 @@
 			public void run() {
 				android.util.Log.d("PHH", "Hello");
 				try {
-					service = IQcRilAudio.getService("slot1");
+					vendor.qti.hardware.radio.am.V1_0.IQcRilAudio service;
+					service = vendor.qti.hardware.radio.am.V1_0.IQcRilAudio.getService("slot1");
 					service.setCallback(cb);
-
-					service = IQcRilAudio.getService("slot2");
+				} catch(Exception e) {}
+				try {
+					vendor.qti.hardware.radio.am.V1_0.IQcRilAudio service;
+					service = vendor.qti.hardware.radio.am.V1_0.IQcRilAudio.getService("slot2");
 					service.setCallback(cb);
-				} catch(Exception e) {
-					android.util.Log.d("PHH", "Failed setting callback", e);
-				}
+				} catch(Exception e) {}
+				try {
+					vendor.qti.qcril.am.V1_0.IQcRilAudio service;
+					service = vendor.qti.qcril.am.V1_0.IQcRilAudio.getService("slot1");
+					service.setCallback(cb2);
+				} catch(Exception e) {}
+				try {
+					vendor.qti.qcril.am.V1_0.IQcRilAudio service;
+					service = vendor.qti.qcril.am.V1_0.IQcRilAudio.getService("slot2");
+					service.setCallback(cb2);
+				} catch(Exception e) {}
                 if(fp.contains("OnePlus6")) {
                     try {
                         (new UEventObserver() {
@@ -66,8 +74,31 @@
         }.start();
     }
 
-    IQcRilAudio service;
-    IQcRilAudioCallback cb = new IQcRilAudioCallback.Stub() {
+    vendor.qti.hardware.radio.am.V1_0.IQcRilAudioCallback cb = new vendor.qti.hardware.radio.am.V1_0.IQcRilAudioCallback.Stub() {
+        @Override
+        public String getParameters(String parameter) {
+            android.util.Log.d("PHH", "Got getParameters " + parameter);
+            try {
+                return AudioSystem.getParameters(parameter);
+            } catch(Exception e) {
+                android.util.Log.d("PHH", "Failed getting parameters");
+            }
+            return "";
+        }
+
+        @Override
+        public int setParameters(String parameters) {
+            android.util.Log.d("PHH", "Got setParameters " + parameters);
+            try {
+                AudioSystem.setParameters(parameters);
+            } catch(Exception e) {
+                android.util.Log.d("PHH", "Failed setting parameters");
+            }
+            return 0;
+        }
+    };
+
+    vendor.qti.qcril.am.V1_0.IQcRilAudioCallback cb2 = new vendor.qti.qcril.am.V1_0.IQcRilAudioCallback.Stub() {
         @Override
         public String getParameters(String parameter) {
             android.util.Log.d("PHH", "Got getParameters " + parameter);
diff --git a/Qualcomm/QtiAudio/src/vendor/qti/qcril/am/V1_0/IQcRilAudio.java b/Qualcomm/QtiAudio/src/vendor/qti/qcril/am/V1_0/IQcRilAudio.java
new file mode 100644
index 0000000..7bd3bd1
--- /dev/null
+++ b/Qualcomm/QtiAudio/src/vendor/qti/qcril/am/V1_0/IQcRilAudio.java
@@ -0,0 +1,490 @@
+package vendor.qti.qcril.am.V1_0;
+
+public interface IQcRilAudio extends android.hidl.base.V1_0.IBase {
+    public static final String kInterfaceName = "vendor.qti.qcril.am@1.0::IQcRilAudio";
+
+    /* package private */ static IQcRilAudio asInterface(android.os.IHwBinder binder) {
+        if (binder == null) {
+            return null;
+        }
+
+        android.os.IHwInterface iface =
+                binder.queryLocalInterface(kInterfaceName);
+
+        if ((iface != null) && (iface instanceof IQcRilAudio)) {
+            return (IQcRilAudio)iface;
+        }
+
+        IQcRilAudio proxy = new IQcRilAudio.Proxy(binder);
+
+        try {
+            for (String descriptor : proxy.interfaceChain()) {
+                if (descriptor.equals(kInterfaceName)) {
+                    return proxy;
+                }
+            }
+        } catch (android.os.RemoteException e) {
+        }
+
+        return null;
+    }
+
+    public static IQcRilAudio castFrom(android.os.IHwInterface iface) {
+        return (iface == null) ? null : IQcRilAudio.asInterface(iface.asBinder());
+    }
+
+    @Override
+    public android.os.IHwBinder asBinder();
+
+    public static IQcRilAudio getService(String serviceName) throws android.os.RemoteException {
+        return IQcRilAudio.asInterface(android.os.HwBinder.getService("vendor.qti.qcril.am@1.0::IQcRilAudio",serviceName));
+    }
+
+    public static IQcRilAudio getService() throws android.os.RemoteException {
+        return IQcRilAudio.asInterface(android.os.HwBinder.getService("vendor.qti.qcril.am@1.0::IQcRilAudio","default"));
+    }
+
+    void setCallback(IQcRilAudioCallback iQcRilAudioCallback)
+        throws android.os.RemoteException;
+    void setError(int error)
+        throws android.os.RemoteException;
+    java.util.ArrayList<String> interfaceChain()
+        throws android.os.RemoteException;
+    String interfaceDescriptor()
+        throws android.os.RemoteException;
+    java.util.ArrayList<byte[/* 32 */]> getHashChain()
+        throws android.os.RemoteException;
+    void setHALInstrumentation()
+        throws android.os.RemoteException;
+    boolean linkToDeath(android.os.IHwBinder.DeathRecipient recipient, long cookie)
+        throws android.os.RemoteException;
+    void ping()
+        throws android.os.RemoteException;
+    android.hidl.base.V1_0.DebugInfo getDebugInfo()
+        throws android.os.RemoteException;
+    void notifySyspropsChanged()
+        throws android.os.RemoteException;
+    boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient recipient)
+        throws android.os.RemoteException;
+
+    public static final class Proxy implements IQcRilAudio {
+        private android.os.IHwBinder mRemote;
+
+        public Proxy(android.os.IHwBinder remote) {
+            mRemote = java.util.Objects.requireNonNull(remote);
+        }
+
+        @Override
+        public android.os.IHwBinder asBinder() {
+            return mRemote;
+        }
+
+        @Override
+        public String toString() {
+            try {
+                return this.interfaceDescriptor() + "@Proxy";
+            } catch (android.os.RemoteException ex) {
+                /* ignored; handled below. */
+            }
+            return "[class or subclass of " + IQcRilAudio.kInterfaceName + "]@Proxy";
+        }
+
+        // Methods from ::vendor::qti::qcril::am::V1_0::IQcRilAudio follow.
+        @Override
+        public void setCallback(IQcRilAudioCallback iQcRilAudioCallback)
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(IQcRilAudio.kInterfaceName);
+            _hidl_request.writeStrongBinder(iQcRilAudioCallback == null ? null : iQcRilAudioCallback.asBinder());
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(1 /* setCallback */, _hidl_request, _hidl_reply, android.os.IHwBinder.FLAG_ONEWAY);
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public void setError(int error)
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(IQcRilAudio.kInterfaceName);
+            _hidl_request.writeInt32(error);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(2 /* setError */, _hidl_request, _hidl_reply, android.os.IHwBinder.FLAG_ONEWAY);
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        // Methods from ::android::hidl::base::V1_0::IBase follow.
+        @Override
+        public java.util.ArrayList<String> interfaceChain()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256067662 /* interfaceChain */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                java.util.ArrayList<String> _hidl_out_descriptors = _hidl_reply.readStringVector();
+                return _hidl_out_descriptors;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public String interfaceDescriptor()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256136003 /* interfaceDescriptor */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                String _hidl_out_descriptor = _hidl_reply.readString();
+                return _hidl_out_descriptor;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public java.util.ArrayList<byte[/* 32 */]> getHashChain()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256398152 /* getHashChain */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                java.util.ArrayList<byte[/* 32 */]> _hidl_out_hashchain =  new java.util.ArrayList<byte[/* 32 */]>();
+                {
+                    android.os.HwBlob _hidl_blob = _hidl_reply.readBuffer(16 /* size */);
+                    {
+                        int _hidl_vec_size = _hidl_blob.getInt32(0 /* offset */ + 8 /* offsetof(hidl_vec<T>, mSize) */);
+                        android.os.HwBlob childBlob = _hidl_reply.readEmbeddedBuffer(
+                                _hidl_vec_size * 32,_hidl_blob.handle(),
+                                0 /* offset */ + 0 /* offsetof(hidl_vec<T>, mBuffer) */,true /* nullable */);
+
+                        _hidl_out_hashchain.clear();
+                        for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; ++_hidl_index_0) {
+                            final byte[/* 32 */] _hidl_vec_element = new byte[32];
+                            {
+                                long _hidl_array_offset_1 = _hidl_index_0 * 32;
+                                for (int _hidl_index_1_0 = 0; _hidl_index_1_0 < 32; ++_hidl_index_1_0) {
+                                    _hidl_vec_element[_hidl_index_1_0] = childBlob.getInt8(_hidl_array_offset_1);
+                                    _hidl_array_offset_1 += 1;
+                                }
+                            }
+                            _hidl_out_hashchain.add(_hidl_vec_element);
+                        }
+                    }
+                }
+                return _hidl_out_hashchain;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public void setHALInstrumentation()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256462420 /* setHALInstrumentation */, _hidl_request, _hidl_reply, android.os.IHwBinder.FLAG_ONEWAY);
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public boolean linkToDeath(android.os.IHwBinder.DeathRecipient recipient, long cookie)
+                throws android.os.RemoteException {
+            return mRemote.linkToDeath(recipient, cookie);
+        }
+        @Override
+        public void ping()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256921159 /* ping */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public android.hidl.base.V1_0.DebugInfo getDebugInfo()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(257049926 /* getDebugInfo */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                android.hidl.base.V1_0.DebugInfo _hidl_out_info = new android.hidl.base.V1_0.DebugInfo();
+                _hidl_out_info.readFromParcel(_hidl_reply);
+                return _hidl_out_info;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public void notifySyspropsChanged()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(257120595 /* notifySyspropsChanged */, _hidl_request, _hidl_reply, android.os.IHwBinder.FLAG_ONEWAY);
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient recipient)
+                throws android.os.RemoteException {
+            return mRemote.unlinkToDeath(recipient);
+        }
+    }
+
+    public static abstract class Stub extends android.os.HwBinder implements IQcRilAudio {
+        @Override
+        public android.os.IHwBinder asBinder() {
+            return this;
+        }
+
+        @Override
+        public final java.util.ArrayList<String> interfaceChain() {
+            return new java.util.ArrayList<String>(java.util.Arrays.asList(
+                    IQcRilAudio.kInterfaceName,
+                    android.hidl.base.V1_0.IBase.kInterfaceName));
+        }
+
+        @Override
+        public final String interfaceDescriptor() {
+            return IQcRilAudio.kInterfaceName;
+
+        }
+
+        @Override
+        public final java.util.ArrayList<byte[/* 32 */]> getHashChain() {
+            return new java.util.ArrayList<byte[/* 32 */]>(java.util.Arrays.asList(
+                    new byte[/* 32 */]{82,124,73,19,-39,-73,105,27,-122,26,21,28,-31,97,-125,53,-78,-16,31,83,-75,-74,-11,-65,-9,-8,-85,76,124,-116,-77,-9} /* 527c4913d9b7691b861a151ce1618335b2f01f53b5b6f5bff7f8ab4c7c8cb3f7 */,
+                    new byte[/* 32 */]{-67,-38,-74,24,77,122,52,109,-90,-96,125,-64,-126,-116,-15,-102,105,111,76,-86,54,17,-59,31,46,20,86,90,20,-76,15,-39} /* bddab6184d7a346da6a07dc0828cf19a696f4caa3611c51f2e14565a14b40fd9 */));
+
+        }
+
+        @Override
+        public final void setHALInstrumentation() {
+
+        }
+
+        @Override
+        public final boolean linkToDeath(android.os.IHwBinder.DeathRecipient recipient, long cookie) {
+            return true;
+        }
+
+        @Override
+        public final void ping() {
+            return;
+
+        }
+
+        @Override
+        public final android.hidl.base.V1_0.DebugInfo getDebugInfo() {
+            android.hidl.base.V1_0.DebugInfo info = new android.hidl.base.V1_0.DebugInfo();
+            info.pid = -1;
+            info.ptr = 0;
+            info.arch = android.hidl.base.V1_0.DebugInfo.Architecture.UNKNOWN;return info;
+        }
+
+        @Override
+        public final void notifySyspropsChanged() {
+            android.os.SystemProperties.reportSyspropChanged();
+        }
+
+        @Override
+        public final boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient recipient) {
+            return true;
+
+        }
+
+        @Override
+        public android.os.IHwInterface queryLocalInterface(String descriptor) {
+            if (kInterfaceName.equals(descriptor)) {
+                return this;
+            }
+            return null;
+        }
+
+        public void registerAsService(String serviceName) throws android.os.RemoteException {
+            registerService(serviceName);
+        }
+
+        @Override
+        public String toString() {
+            return this.interfaceDescriptor() + "@Stub";
+        }
+
+        @Override
+        public void onTransact(int _hidl_code, android.os.HwParcel _hidl_request, final android.os.HwParcel _hidl_reply, int _hidl_flags)
+                throws android.os.RemoteException {
+            switch (_hidl_code) {
+                case 1 /* setCallback */:
+                {
+                    _hidl_request.enforceInterface(IQcRilAudio.kInterfaceName);
+
+                    IQcRilAudioCallback iQcRilAudioCallback = IQcRilAudioCallback.asInterface(_hidl_request.readStrongBinder());
+                    setCallback(iQcRilAudioCallback);
+                    break;
+                }
+
+                case 2 /* setError */:
+                {
+                    _hidl_request.enforceInterface(IQcRilAudio.kInterfaceName);
+
+                    int error = _hidl_request.readInt32();
+                    setError(error);
+                    break;
+                }
+
+                case 256067662 /* interfaceChain */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    java.util.ArrayList<String> _hidl_out_descriptors = interfaceChain();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.writeStringVector(_hidl_out_descriptors);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256131655 /* debug */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256136003 /* interfaceDescriptor */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    String _hidl_out_descriptor = interfaceDescriptor();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.writeString(_hidl_out_descriptor);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256398152 /* getHashChain */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    java.util.ArrayList<byte[/* 32 */]> _hidl_out_hashchain = getHashChain();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    {
+                        android.os.HwBlob _hidl_blob = new android.os.HwBlob(16 /* size */);
+                        {
+                            int _hidl_vec_size = _hidl_out_hashchain.size();
+                            _hidl_blob.putInt32(0 /* offset */ + 8 /* offsetof(hidl_vec<T>, mSize) */, _hidl_vec_size);
+                            _hidl_blob.putBool(0 /* offset */ + 12 /* offsetof(hidl_vec<T>, mOwnsBuffer) */, false);
+                            android.os.HwBlob childBlob = new android.os.HwBlob((int)(_hidl_vec_size * 32));
+                            for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; ++_hidl_index_0) {
+                                {
+                                    long _hidl_array_offset_1 = _hidl_index_0 * 32;
+                                    for (int _hidl_index_1_0 = 0; _hidl_index_1_0 < 32; ++_hidl_index_1_0) {
+                                        childBlob.putInt8(_hidl_array_offset_1, _hidl_out_hashchain.get(_hidl_index_0)[_hidl_index_1_0]);
+                                        _hidl_array_offset_1 += 1;
+                                    }
+                                }
+                            }
+                            _hidl_blob.putBlob(0 /* offset */ + 0 /* offsetof(hidl_vec<T>, mBuffer) */, childBlob);
+                        }
+                        _hidl_reply.writeBuffer(_hidl_blob);
+                    }
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256462420 /* setHALInstrumentation */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    setHALInstrumentation();
+                    break;
+                }
+
+                case 256660548 /* linkToDeath */:
+                {
+                break;
+                }
+
+                case 256921159 /* ping */:
+                {
+                break;
+                }
+
+                case 257049926 /* getDebugInfo */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    android.hidl.base.V1_0.DebugInfo _hidl_out_info = getDebugInfo();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_out_info.writeToParcel(_hidl_reply);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 257120595 /* notifySyspropsChanged */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    notifySyspropsChanged();
+                    break;
+                }
+
+                case 257250372 /* unlinkToDeath */:
+                {
+                break;
+                }
+
+            }
+        }
+    }
+}
diff --git a/Qualcomm/QtiAudio/src/vendor/qti/qcril/am/V1_0/IQcRilAudioCallback.java b/Qualcomm/QtiAudio/src/vendor/qti/qcril/am/V1_0/IQcRilAudioCallback.java
new file mode 100644
index 0000000..5be09c3
--- /dev/null
+++ b/Qualcomm/QtiAudio/src/vendor/qti/qcril/am/V1_0/IQcRilAudioCallback.java
@@ -0,0 +1,504 @@
+package vendor.qti.qcril.am.V1_0;
+
+public interface IQcRilAudioCallback extends android.hidl.base.V1_0.IBase {
+    public static final String kInterfaceName = "vendor.qti.qcril.am@1.0::IQcRilAudioCallback";
+
+    /* package private */ static IQcRilAudioCallback asInterface(android.os.IHwBinder binder) {
+        if (binder == null) {
+            return null;
+        }
+
+        android.os.IHwInterface iface =
+                binder.queryLocalInterface(kInterfaceName);
+
+        if ((iface != null) && (iface instanceof IQcRilAudioCallback)) {
+            return (IQcRilAudioCallback)iface;
+        }
+
+        IQcRilAudioCallback proxy = new IQcRilAudioCallback.Proxy(binder);
+
+        try {
+            for (String descriptor : proxy.interfaceChain()) {
+                if (descriptor.equals(kInterfaceName)) {
+                    return proxy;
+                }
+            }
+        } catch (android.os.RemoteException e) {
+        }
+
+        return null;
+    }
+
+    public static IQcRilAudioCallback castFrom(android.os.IHwInterface iface) {
+        return (iface == null) ? null : IQcRilAudioCallback.asInterface(iface.asBinder());
+    }
+
+    @Override
+    public android.os.IHwBinder asBinder();
+
+    public static IQcRilAudioCallback getService(String serviceName) throws android.os.RemoteException {
+        return IQcRilAudioCallback.asInterface(android.os.HwBinder.getService("vendor.qti.qcril.am@1.0::IQcRilAudioCallback",serviceName));
+    }
+
+    public static IQcRilAudioCallback getService() throws android.os.RemoteException {
+        return IQcRilAudioCallback.asInterface(android.os.HwBinder.getService("vendor.qti.qcril.am@1.0::IQcRilAudioCallback","default"));
+    }
+
+    String getParameters(String str)
+        throws android.os.RemoteException;
+    int setParameters(String str)
+        throws android.os.RemoteException;
+    java.util.ArrayList<String> interfaceChain()
+        throws android.os.RemoteException;
+    String interfaceDescriptor()
+        throws android.os.RemoteException;
+    java.util.ArrayList<byte[/* 32 */]> getHashChain()
+        throws android.os.RemoteException;
+    void setHALInstrumentation()
+        throws android.os.RemoteException;
+    boolean linkToDeath(android.os.IHwBinder.DeathRecipient recipient, long cookie)
+        throws android.os.RemoteException;
+    void ping()
+        throws android.os.RemoteException;
+    android.hidl.base.V1_0.DebugInfo getDebugInfo()
+        throws android.os.RemoteException;
+    void notifySyspropsChanged()
+        throws android.os.RemoteException;
+    boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient recipient)
+        throws android.os.RemoteException;
+
+    public static final class Proxy implements IQcRilAudioCallback {
+        private android.os.IHwBinder mRemote;
+
+        public Proxy(android.os.IHwBinder remote) {
+            mRemote = java.util.Objects.requireNonNull(remote);
+        }
+
+        @Override
+        public android.os.IHwBinder asBinder() {
+            return mRemote;
+        }
+
+        @Override
+        public String toString() {
+            try {
+                return this.interfaceDescriptor() + "@Proxy";
+            } catch (android.os.RemoteException ex) {
+                /* ignored; handled below. */
+            }
+            return "[class or subclass of " + IQcRilAudioCallback.kInterfaceName + "]@Proxy";
+        }
+
+        // Methods from ::vendor::qti::qcril::am::V1_0::IQcRilAudioCallback follow.
+        @Override
+        public String getParameters(String str)
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(IQcRilAudioCallback.kInterfaceName);
+            _hidl_request.writeString(str);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(1 /* getParameters */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                String _hidl_out_result = _hidl_reply.readString();
+                return _hidl_out_result;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public int setParameters(String str)
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(IQcRilAudioCallback.kInterfaceName);
+            _hidl_request.writeString(str);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(2 /* setParameters */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                int _hidl_out_success = _hidl_reply.readInt32();
+                return _hidl_out_success;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        // Methods from ::android::hidl::base::V1_0::IBase follow.
+        @Override
+        public java.util.ArrayList<String> interfaceChain()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256067662 /* interfaceChain */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                java.util.ArrayList<String> _hidl_out_descriptors = _hidl_reply.readStringVector();
+                return _hidl_out_descriptors;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public String interfaceDescriptor()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256136003 /* interfaceDescriptor */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                String _hidl_out_descriptor = _hidl_reply.readString();
+                return _hidl_out_descriptor;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public java.util.ArrayList<byte[/* 32 */]> getHashChain()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256398152 /* getHashChain */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                java.util.ArrayList<byte[/* 32 */]> _hidl_out_hashchain =  new java.util.ArrayList<byte[/* 32 */]>();
+                {
+                    android.os.HwBlob _hidl_blob = _hidl_reply.readBuffer(16 /* size */);
+                    {
+                        int _hidl_vec_size = _hidl_blob.getInt32(0 /* offset */ + 8 /* offsetof(hidl_vec<T>, mSize) */);
+                        android.os.HwBlob childBlob = _hidl_reply.readEmbeddedBuffer(
+                                _hidl_vec_size * 32,_hidl_blob.handle(),
+                                0 /* offset */ + 0 /* offsetof(hidl_vec<T>, mBuffer) */,true /* nullable */);
+
+                        _hidl_out_hashchain.clear();
+                        for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; ++_hidl_index_0) {
+                            final byte[/* 32 */] _hidl_vec_element = new byte[32];
+                            {
+                                long _hidl_array_offset_1 = _hidl_index_0 * 32;
+                                for (int _hidl_index_1_0 = 0; _hidl_index_1_0 < 32; ++_hidl_index_1_0) {
+                                    _hidl_vec_element[_hidl_index_1_0] = childBlob.getInt8(_hidl_array_offset_1);
+                                    _hidl_array_offset_1 += 1;
+                                }
+                            }
+                            _hidl_out_hashchain.add(_hidl_vec_element);
+                        }
+                    }
+                }
+                return _hidl_out_hashchain;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public void setHALInstrumentation()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256462420 /* setHALInstrumentation */, _hidl_request, _hidl_reply, android.os.IHwBinder.FLAG_ONEWAY);
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public boolean linkToDeath(android.os.IHwBinder.DeathRecipient recipient, long cookie)
+                throws android.os.RemoteException {
+            return mRemote.linkToDeath(recipient, cookie);
+        }
+        @Override
+        public void ping()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(256921159 /* ping */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public android.hidl.base.V1_0.DebugInfo getDebugInfo()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(257049926 /* getDebugInfo */, _hidl_request, _hidl_reply, 0 /* flags */);
+                _hidl_reply.verifySuccess();
+                _hidl_request.releaseTemporaryStorage();
+
+                android.hidl.base.V1_0.DebugInfo _hidl_out_info = new android.hidl.base.V1_0.DebugInfo();
+                _hidl_out_info.readFromParcel(_hidl_reply);
+                return _hidl_out_info;
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public void notifySyspropsChanged()
+                throws android.os.RemoteException {
+            android.os.HwParcel _hidl_request = new android.os.HwParcel();
+            _hidl_request.writeInterfaceToken(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+            android.os.HwParcel _hidl_reply = new android.os.HwParcel();
+            try {
+                mRemote.transact(257120595 /* notifySyspropsChanged */, _hidl_request, _hidl_reply, android.os.IHwBinder.FLAG_ONEWAY);
+                _hidl_request.releaseTemporaryStorage();
+            } finally {
+                _hidl_reply.release();
+            }
+        }
+
+        @Override
+        public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient recipient)
+                throws android.os.RemoteException {
+            return mRemote.unlinkToDeath(recipient);
+        }
+    }
+
+    public static abstract class Stub extends android.os.HwBinder implements IQcRilAudioCallback {
+        @Override
+        public android.os.IHwBinder asBinder() {
+            return this;
+        }
+
+        @Override
+        public final java.util.ArrayList<String> interfaceChain() {
+            return new java.util.ArrayList<String>(java.util.Arrays.asList(
+                    IQcRilAudioCallback.kInterfaceName,
+                    android.hidl.base.V1_0.IBase.kInterfaceName));
+        }
+
+        @Override
+        public final String interfaceDescriptor() {
+            return IQcRilAudioCallback.kInterfaceName;
+
+        }
+
+        @Override
+        public final java.util.ArrayList<byte[/* 32 */]> getHashChain() {
+            return new java.util.ArrayList<byte[/* 32 */]>(java.util.Arrays.asList(
+                    new byte[/* 32 */]{22,71,-88,81,-45,-109,-85,-22,53,113,-87,-70,-10,95,-8,67,61,-23,36,43,97,41,40,122,-128,-85,108,-33,4,101,-120,-97} /* 1647a851d393abea3571a9baf65ff8433de9242b6129287a80ab6cdf0465889f */,
+                    new byte[/* 32 */]{-67,-38,-74,24,77,122,52,109,-90,-96,125,-64,-126,-116,-15,-102,105,111,76,-86,54,17,-59,31,46,20,86,90,20,-76,15,-39} /* bddab6184d7a346da6a07dc0828cf19a696f4caa3611c51f2e14565a14b40fd9 */));
+
+        }
+
+        @Override
+        public final void setHALInstrumentation() {
+
+        }
+
+        @Override
+        public final boolean linkToDeath(android.os.IHwBinder.DeathRecipient recipient, long cookie) {
+            return true;
+        }
+
+        @Override
+        public final void ping() {
+            return;
+
+        }
+
+        @Override
+        public final android.hidl.base.V1_0.DebugInfo getDebugInfo() {
+            android.hidl.base.V1_0.DebugInfo info = new android.hidl.base.V1_0.DebugInfo();
+            info.pid = -1;
+            info.ptr = 0;
+            info.arch = android.hidl.base.V1_0.DebugInfo.Architecture.UNKNOWN;return info;
+        }
+
+        @Override
+        public final void notifySyspropsChanged() {
+            android.os.SystemProperties.reportSyspropChanged();
+        }
+
+        @Override
+        public final boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient recipient) {
+            return true;
+
+        }
+
+        @Override
+        public android.os.IHwInterface queryLocalInterface(String descriptor) {
+            if (kInterfaceName.equals(descriptor)) {
+                return this;
+            }
+            return null;
+        }
+
+        public void registerAsService(String serviceName) throws android.os.RemoteException {
+            registerService(serviceName);
+        }
+
+        @Override
+        public String toString() {
+            return this.interfaceDescriptor() + "@Stub";
+        }
+
+        @Override
+        public void onTransact(int _hidl_code, android.os.HwParcel _hidl_request, final android.os.HwParcel _hidl_reply, int _hidl_flags)
+                throws android.os.RemoteException {
+            switch (_hidl_code) {
+                case 1 /* getParameters */:
+                {
+                    _hidl_request.enforceInterface(IQcRilAudioCallback.kInterfaceName);
+
+                    String str = _hidl_request.readString();
+                    String _hidl_out_result = getParameters(str);
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.writeString(_hidl_out_result);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 2 /* setParameters */:
+                {
+                    _hidl_request.enforceInterface(IQcRilAudioCallback.kInterfaceName);
+
+                    String str = _hidl_request.readString();
+                    int _hidl_out_success = setParameters(str);
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.writeInt32(_hidl_out_success);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256067662 /* interfaceChain */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    java.util.ArrayList<String> _hidl_out_descriptors = interfaceChain();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.writeStringVector(_hidl_out_descriptors);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256131655 /* debug */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256136003 /* interfaceDescriptor */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    String _hidl_out_descriptor = interfaceDescriptor();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_reply.writeString(_hidl_out_descriptor);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256398152 /* getHashChain */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    java.util.ArrayList<byte[/* 32 */]> _hidl_out_hashchain = getHashChain();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    {
+                        android.os.HwBlob _hidl_blob = new android.os.HwBlob(16 /* size */);
+                        {
+                            int _hidl_vec_size = _hidl_out_hashchain.size();
+                            _hidl_blob.putInt32(0 /* offset */ + 8 /* offsetof(hidl_vec<T>, mSize) */, _hidl_vec_size);
+                            _hidl_blob.putBool(0 /* offset */ + 12 /* offsetof(hidl_vec<T>, mOwnsBuffer) */, false);
+                            android.os.HwBlob childBlob = new android.os.HwBlob((int)(_hidl_vec_size * 32));
+                            for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; ++_hidl_index_0) {
+                                {
+                                    long _hidl_array_offset_1 = _hidl_index_0 * 32;
+                                    for (int _hidl_index_1_0 = 0; _hidl_index_1_0 < 32; ++_hidl_index_1_0) {
+                                        childBlob.putInt8(_hidl_array_offset_1, _hidl_out_hashchain.get(_hidl_index_0)[_hidl_index_1_0]);
+                                        _hidl_array_offset_1 += 1;
+                                    }
+                                }
+                            }
+                            _hidl_blob.putBlob(0 /* offset */ + 0 /* offsetof(hidl_vec<T>, mBuffer) */, childBlob);
+                        }
+                        _hidl_reply.writeBuffer(_hidl_blob);
+                    }
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 256462420 /* setHALInstrumentation */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    setHALInstrumentation();
+                    break;
+                }
+
+                case 256660548 /* linkToDeath */:
+                {
+                break;
+                }
+
+                case 256921159 /* ping */:
+                {
+                break;
+                }
+
+                case 257049926 /* getDebugInfo */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    android.hidl.base.V1_0.DebugInfo _hidl_out_info = getDebugInfo();
+                    _hidl_reply.writeStatus(android.os.HwParcel.STATUS_SUCCESS);
+                    _hidl_out_info.writeToParcel(_hidl_reply);
+                    _hidl_reply.send();
+                    break;
+                }
+
+                case 257120595 /* notifySyspropsChanged */:
+                {
+                    _hidl_request.enforceInterface(android.hidl.base.V1_0.IBase.kInterfaceName);
+
+                    notifySyspropsChanged();
+                    break;
+                }
+
+                case 257250372 /* unlinkToDeath */:
+                {
+                break;
+                }
+
+            }
+        }
+    }
+}