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

Commit 2475e38c authored by Eric Laurent's avatar Eric Laurent
Browse files

SoundTriggerHelper: handle media server death

Retry to attach sound trigger module when startRecognition() is called.

Bug: 17373746.
Change-Id: I5b2f806b6cab47741d345be1cde73a84f5a62590
parent 9ed0292a
Loading
Loading
Loading
Loading
+13 −3
Original line number Original line Diff line number Diff line
@@ -67,7 +67,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {
    final ModuleProperties moduleProperties;
    final ModuleProperties moduleProperties;


    /** The properties for the DSP module */
    /** The properties for the DSP module */
    private final SoundTriggerModule mModule;
    private SoundTriggerModule mModule;
    private final Object mLock = new Object();
    private final Object mLock = new Object();
    private final Context mContext;
    private final Context mContext;
    private final TelephonyManager mTelephonyManager;
    private final TelephonyManager mTelephonyManager;
@@ -105,7 +105,6 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {
        } else {
        } else {
            // TODO: Figure out how to determine which module corresponds to the DSP hardware.
            // TODO: Figure out how to determine which module corresponds to the DSP hardware.
            moduleProperties = modules.get(0);
            moduleProperties = modules.get(0);
            mModule = SoundTrigger.attachModule(moduleProperties.id, this, null);
        }
        }
    }
    }


@@ -155,10 +154,17 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {
                mIsPowerSaveMode = mPowerManager.isPowerSaveMode();
                mIsPowerSaveMode = mPowerManager.isPowerSaveMode();
            }
            }


            if (moduleProperties == null || mModule == null) {
            if (moduleProperties == null) {
                Slog.w(TAG, "Attempting startRecognition without the capability");
                Slog.w(TAG, "Attempting startRecognition without the capability");
                return STATUS_ERROR;
                return STATUS_ERROR;
            }
            }
            if (mModule == null) {
                mModule = SoundTrigger.attachModule(moduleProperties.id, this, null);
                if (mModule == null) {
                    Slog.w(TAG, "startRecognition cannot attach to sound trigger module");
                    return STATUS_ERROR;
                }
            }


            if (mCurrentSoundModelHandle != INVALID_VALUE
            if (mCurrentSoundModelHandle != INVALID_VALUE
                    && !soundModel.uuid.equals(mCurrentSoundModelUuid)) {
                    && !soundModel.uuid.equals(mCurrentSoundModelUuid)) {
@@ -446,6 +452,10 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {
            Slog.w(TAG, "RemoteException in onError", e);
            Slog.w(TAG, "RemoteException in onError", e);
        } finally {
        } finally {
            internalClearStateLocked();
            internalClearStateLocked();
            if (mModule != null) {
                mModule.detach();
                mModule = null;
            }
        }
        }
    }
    }