diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp index 765be3b..ac2d4d7 100644 --- a/vibrator/cs40l26/Vibrator.cpp +++ b/vibrator/cs40l26/Vibrator.cpp @@ -422,7 +422,7 @@ ndk::ScopedAStatus Vibrator::off() { mHwApi->clearTrigBtn(mInputFd, &mFfEffects[mActiveId], mActiveId); } else { - ALOGV("Vibrator is already off"); + ALOGV("Off: Vibrator is already off"); } mActiveId = -1; @@ -1370,10 +1370,12 @@ void Vibrator::waitForComplete(std::shared_ptr &&callback) { (!mHwApi->eraseOwtEffect(mInputFd, mActiveId, &mFfEffects))) { ALOGE("Failed to clean up the composed effect %d", mActiveId); } - - mHwApi->clearTrigBtn(mInputFd, &mFfEffects[mActiveId], mActiveId); - - mActiveId = -1; + if (mActiveId >= 0) { + mHwApi->clearTrigBtn(mInputFd, &mFfEffects[mActiveId], mActiveId); + mActiveId = -1; + } else { + ALOGV("waitForComplete: Vibrator is already off"); + } } if (callback) { diff --git a/vibrator/cs40l26/VibratorManager.cpp b/vibrator/cs40l26/VibratorManager.cpp index 3552c2f..64dbe67 100644 --- a/vibrator/cs40l26/VibratorManager.cpp +++ b/vibrator/cs40l26/VibratorManager.cpp @@ -89,7 +89,7 @@ ndk::ScopedAStatus VibratorManager::prepareSynced(const std::vector &id ATRACE_NAME("VibratorManager::prepareSynced"); if (!mGPIOStatus) { - ALOGE("GetVibrator: GPIO status error"); + ALOGE("prepareSynced: GPIO status error"); return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE); } @@ -111,10 +111,14 @@ ndk::ScopedAStatus VibratorManager::prepareSynced(const std::vector &id auto &[vib, ext] = mVibrators.at(id); auto callback = sp::make(); - ext->prepareSynced(callback); - - mSyncContext.emplace_back(id, callback->getFuture()); + if (ext->prepareSynced(callback).isOk()) { + mSyncContext.emplace_back(id, callback->getFuture()); + } else { + ALOGV("prepareSynced: Fail"); + return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE); + } } + ALOGV("prepareSynced: Done"); if (mHwApi->initGPIO()) { return ndk::ScopedAStatus::ok(); } else { @@ -126,6 +130,7 @@ ndk::ScopedAStatus VibratorManager::prepareSynced(const std::vector &id ndk::ScopedAStatus VibratorManager::triggerSynced( const std::shared_ptr &callback) { ATRACE_NAME("VibratorManager::triggerSynced"); + ALOGV("TriggerSynced"); if (isBusy()) { ALOGE("TriggerSynced isBusy"); return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE); @@ -159,6 +164,7 @@ ndk::ScopedAStatus VibratorManager::triggerSynced( ndk::ScopedAStatus VibratorManager::cancelSynced() { ATRACE_NAME("VibratorManager::cancelSynced"); + ALOGV("Do cancelSynced"); mHwApi->setTrigger(false); { std::shared_lock lock(mContextMutex);