diff --git a/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml
index da6c7a7..5b97dd8 100644
--- a/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml
+++ b/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml
@@ -59,7 +59,7 @@
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
-
diff --git a/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml
index 416d4ab..fb54198 100644
--- a/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml
+++ b/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml
@@ -59,7 +59,7 @@
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
-
-
diff --git a/device-felix.mk b/device-felix.mk
index d0909c7..502a614 100644
--- a/device-felix.mk
+++ b/device-felix.mk
@@ -40,7 +40,7 @@ include device/google/gs201/device-shipping-common.mk
$(call soong_config_set,fp_hal_feature,pixel_product, product_a)
include device/google/felix/vibrator/cs40l26/device.mk
include device/google/gs-common/bcmbt/bluetooth.mk
-include device/google/gs-common/display/dump_second_display.mk
+include device/google/gs-common/display/dump_exynos_second_display.mk
include device/google/gs-common/touch/gti/predump_gti_dual.mk
include device/google/gs-common/touch/stm/predump_stm6.mk
ifeq ($(filter factory_felix, $(TARGET_PRODUCT)),)
@@ -116,7 +116,7 @@ PRODUCT_PACKAGES += \
SHARED_MODEM_PLATFORM_VENDOR := lassen
# Shared Modem Platform
-include device/google/gs-common/modem/shared_modem_platform/shared_modem_platform.mk
+include device/google/gs-common/modem/modem_svc_sit/shared_modem_platform.mk
# SecureElement
PRODUCT_PACKAGES += \
@@ -433,12 +433,16 @@ PRODUCT_COPY_FILES += \
# LE Audio Unicast Allowlist
PRODUCT_PRODUCT_PROPERTIES += \
- persist.bluetooth.leaudio.allow_list=SM-R510,WF-1000XM5
+ persist.bluetooth.leaudio.allow_list=SM-R510,WF-1000XM5,SM-R630
# Bluetooth EWP test tool
PRODUCT_PACKAGES_DEBUG += \
ewp_tool
+# Disable Bluetooth HAP by default
+PRODUCT_PRODUCT_PROPERTIES += \
+ bluetooth.profile.hap.enabled_by_default=false
+
# Enable DeviceAsWebcam support
PRODUCT_VENDOR_PROPERTIES += \
ro.usb.uvc.enabled=true
diff --git a/device_framework_matrix_product_felix.xml b/device_framework_matrix_product_felix.xml
index 492724d..3ac3995 100644
--- a/device_framework_matrix_product_felix.xml
+++ b/device_framework_matrix_product_felix.xml
@@ -1,7 +1,7 @@
com.google.hardware.pixel.display
- 13
+ 13-14
IDisplay
secondary
diff --git a/powerhint.json b/powerhint.json
index 1a5bb71..a827cdb 100644
--- a/powerhint.json
+++ b/powerhint.json
@@ -194,6 +194,54 @@
],
"ResetOnInit": true
},
+ {
+ "Name": "TAUclampMinOnNiceEnable",
+ "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_enable",
+ "Values": [
+ "1",
+ "0"
+ ],
+ "ResetOnInit": true
+ },
+ {
+ "Name": "TAUclampMinOnNiceHighValue",
+ "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_value",
+ "Values": [
+ "765",
+ "0"
+ ],
+ "ResetOnInit": true
+ },
+ {
+ "Name": "TAUclampMinOnNiceMidValue",
+ "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_value",
+ "Values": [
+ "600",
+ "590",
+ "0"
+ ],
+ "ResetOnInit": true
+ },
+ {
+ "Name": "TAUclampMinOnNiceHighPrio",
+ "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_prio",
+ "Values": [
+ "110",
+ "119",
+ "120"
+ ],
+ "ResetOnInit": true
+ },
+ {
+ "Name": "TAUclampMinOnNiceMidPrio",
+ "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_prio",
+ "Values": [
+ "128",
+ "139",
+ "130"
+ ],
+ "ResetOnInit": true
+ },
{
"Name": "FGUClampBoost",
"Path": "/proc/vendor_sched/groups/fg/uclamp_min",
@@ -286,6 +334,35 @@
],
"ResetOnInit": true
},
+ {
+ "Name": "TAAutoPreferFit",
+ "Path": "/proc/vendor_sched/groups/ta/auto_prefer_fit",
+ "Values": [
+ "1",
+ "0"
+ ],
+ "ResetOnInit": true
+ },
+ {
+ "Name": "TAPreferredIdleMaskMid",
+ "Path": "/proc/vendor_sched/groups/ta/preferred_idle_mask_mid",
+ "Values": [
+ "0x3f",
+ "0xf0",
+ "0xff"
+ ],
+ "ResetOnInit": true
+ },
+ {
+ "Name": "TAPreferredIdleMaskLow",
+ "Path": "/proc/vendor_sched/groups/ta/preferred_idle_mask_low",
+ "Values": [
+ "0x3f",
+ "0xf0",
+ "0xff"
+ ],
+ "ResetOnInit": true
+ },
{
"Name": "FGPreferIdle",
"Path": "/proc/vendor_sched/groups/fg/prefer_idle",
@@ -314,14 +391,6 @@
],
"ResetOnInit": true
},
- {
- "Name": "NewlyIdleBalancer",
- "Path": "/proc/vendor_sched/idle_balancer",
- "Values": [
- "0",
- "1"
- ]
- },
{
"Name": "DisplayWakeup",
"Path": "/sys/devices/platform/1c240000.drmdecon/early_wakeup",
@@ -780,6 +849,54 @@
"Duration": 5000,
"Value": "0"
},
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAAutoPreferFit",
+ "Duration": 5000,
+ "Value": "1"
+ },
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAPreferredIdleMaskMid",
+ "Duration": 5000,
+ "Value": "0x3f"
+ },
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAPreferredIdleMaskLow",
+ "Duration": 5000,
+ "Value": "0x3f"
+ },
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAUclampMinOnNiceEnable",
+ "Duration": 5000,
+ "Value": "1"
+ },
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAUclampMinOnNiceHighValue",
+ "Duration": 5000,
+ "Value": "765"
+ },
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAUclampMinOnNiceHighPrio",
+ "Duration": 5000,
+ "Value": "110"
+ },
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAUclampMinOnNiceMidValue",
+ "Duration": 5000,
+ "Value": "590"
+ },
+ {
+ "PowerHint": "LAUNCH",
+ "Node": "TAUclampMinOnNiceMidPrio",
+ "Duration": 5000,
+ "Value": "139"
+ },
{
"PowerHint": "LAUNCH",
"Type": "DoHint",
@@ -879,24 +996,30 @@
"Duration": 5000,
"Value": "0"
},
- {
- "PowerHint": "CPU_LOAD_RESET",
- "Node": "GPUMinFreq",
- "Duration": 50,
- "Value": "302000"
- },
{
"PowerHint": "DISPLAY_INACTIVE",
"Node": "MemFreq",
"Duration": 0,
"Value": "421000"
},
+ {
+ "PowerHint": "CPU_LOAD_RESET",
+ "Node": "GPUMinFreq",
+ "Duration": 50,
+ "Value": "302000"
+ },
{
"PowerHint": "CPU_LOAD_RESET",
"Node": "MemFreq",
"Duration": 33,
"Value": "1014000"
},
+ {
+ "PowerHint": "CPU_LOAD_RESET",
+ "Node": "TAPreferHighCap",
+ "Duration": 33,
+ "Value": "1"
+ },
{
"PowerHint": "CAMERA_LAUNCH",
"Node": "MemFreq",
@@ -1377,12 +1500,6 @@
"Duration": 0,
"Value": "0"
},
- {
- "PowerHint": "CAMERA_STREAMING_EXTREME",
- "Node": "NewlyIdleBalancer",
- "Duration": 0,
- "Value": "0"
- },
{
"PowerHint": "CAMERA_STREAMING_HIGH",
"Node": "PMU_POLL",
@@ -1497,12 +1614,6 @@
"Duration": 0,
"Value": "0"
},
- {
- "PowerHint": "CAMERA_STREAMING_HIGH",
- "Node": "NewlyIdleBalancer",
- "Duration": 0,
- "Value": "0"
- },
{
"PowerHint": "CAMERA_STREAMING_STANDARD",
"Node": "PowerHALCameraRunning",
@@ -1599,12 +1710,6 @@
"Duration": 0,
"Value": "0"
},
- {
- "PowerHint": "CAMERA_STREAMING_STANDARD",
- "Node": "NewlyIdleBalancer",
- "Duration": 0,
- "Value": "0"
- },
{
"PowerHint": "CAMERA_STREAMING_LOW",
"Node": "PowerHALCameraRunning",
@@ -1665,12 +1770,6 @@
"Duration": 0,
"Value": "0"
},
- {
- "PowerHint": "CAMERA_STREAMING_LOW",
- "Node": "NewlyIdleBalancer",
- "Duration": 0,
- "Value": "0"
- },
{
"PowerHint": "CAMERA_MULTI_CAM_STREAMING",
"Node": "CPUBigClusterMaxFreq",
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index 989a868..c75c66e 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -181,4 +181,6 @@
false: firmware roaming will not be affected. -->
true
+
+ false
diff --git a/vibrator/common/HardwareBase.cpp b/vibrator/common/HardwareBase.cpp
index 583caaa..1059b90 100644
--- a/vibrator/common/HardwareBase.cpp
+++ b/vibrator/common/HardwareBase.cpp
@@ -29,6 +29,13 @@ namespace android {
namespace hardware {
namespace vibrator {
+void HwApiBase::recordEvent(const char *func, const std::string &value) {
+ std::lock_guard lock(mRecordsMutex);
+ mRecords.emplace_back(std::make_unique>
+ (HwApiBase::RecordType::EVENT, func, value, nullptr));
+ mRecords.pop_front();
+}
+
HwApiBase::HwApiBase() {
mPathPrefix = std::getenv("HWAPI_PATH_PREFIX") ?: "";
if (mPathPrefix.empty()) {
diff --git a/vibrator/common/HardwareBase.h b/vibrator/common/HardwareBase.h
index 0296390..d2102cb 100644
--- a/vibrator/common/HardwareBase.h
+++ b/vibrator/common/HardwareBase.h
@@ -39,6 +39,7 @@ using ::android::base::unique_fd;
class HwApiBase {
private:
using NamesMap = std::map;
+ enum class RecordType { EVENT, HWAPI };
class RecordInterface {
public:
@@ -48,12 +49,16 @@ class HwApiBase {
template
class Record : public RecordInterface {
public:
- Record(const char *func, const T &value, const std::ios *stream)
- : mFunc(func), mValue(value), mStream(stream),
+ Record(const RecordType &type, const char *func, const T &value, const std::ios *stream)
+ : mType(type),
+ mFunc(func),
+ mValue(value),
+ mStream(stream),
mTp(std::chrono::system_clock::system_clock::now()) {}
std::string toString(const NamesMap &names) override;
private:
+ const RecordType mType;
const char *mFunc;
const T mValue;
const std::ios *mStream;
@@ -66,6 +71,7 @@ class HwApiBase {
public:
HwApiBase();
void debug(int fd);
+ void recordEvent(const char *func, const std::string &value);
protected:
void saveName(const std::string &name, const std::ios *stream);
@@ -176,7 +182,7 @@ bool HwApiBase::poll(const T &value, std::istream *stream, const int32_t timeout
template
void HwApiBase::record(const char *func, const T &value, const std::ios *stream) {
std::lock_guard lock(mRecordsMutex);
- mRecords.emplace_back(std::make_unique>(func, value, stream));
+ mRecords.emplace_back(std::make_unique>(RecordType::HWAPI, func, value, stream));
mRecords.pop_front();
}
@@ -188,10 +194,18 @@ std::string HwApiBase::Record::toString(const NamesMap &names) {
struct tm buf;
auto lTime = localtime_r(&lTp, &buf);
- ret << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') << std::setw(3)
- << (std::chrono::duration_cast(mTp.time_since_epoch()) % 1000)
- .count()
- << " " << mFunc << " '" << names.at(mStream) << "' = '" << mValue << "'";
+ if (mType == RecordType::EVENT) {
+ ret << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') << std::setw(3)
+ << (std::chrono::duration_cast(mTp.time_since_epoch()) %
+ 1000).count()
+ << " | " << "IVibrator::" << mFunc << " | " << mValue;
+ } else {
+ ret << " \t" << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0')
+ << std::setw(3)
+ << (std::chrono::duration_cast(mTp.time_since_epoch()) %
+ 1000).count()
+ << " " << mFunc << " '" << names.at(mStream) << "' = '" << mValue << "'";
+ }
return ret.str();
}
diff --git a/vibrator/cs40l26/Hardware.h b/vibrator/cs40l26/Hardware.h
index e4dd344..acd0c6c 100644
--- a/vibrator/cs40l26/Hardware.h
+++ b/vibrator/cs40l26/Hardware.h
@@ -287,6 +287,10 @@ class HwApi : public Vibrator::HwApi, private HwApiBase {
return true;
}
+ void recordEvent(const char *func, const std::string &value) override {
+ HwApiBase::recordEvent(func, value);
+ }
+
void debug(int fd) override { HwApiBase::debug(fd); }
private:
diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp
index 36d8e8c..cabaf71 100644
--- a/vibrator/cs40l26/Vibrator.cpp
+++ b/vibrator/cs40l26/Vibrator.cpp
@@ -45,6 +45,24 @@ namespace aidl {
namespace android {
namespace hardware {
namespace vibrator {
+
+#define RECORD(fmt, ...) { \
+ this->mHwApiDef->recordEvent(__func__, StringPrintf(fmt, ##__VA_ARGS__)); \
+ if (this->mIsDual) { \
+ this->mHwApiDual->recordEvent(__func__, StringPrintf(fmt, ##__VA_ARGS__)); \
+ } \
+}
+
+#define RECORD_COMPOSE(...) \
+ std::string effectString = ""; \
+ for (auto &effect : composite) { \
+ effectString += effect.toString() + ", "; \
+ } \
+ this->mHwApiDef->recordEvent(__func__, effectString.c_str()); \
+ if (this->mIsDual) { \
+ this->mHwApiDual->recordEvent(__func__, effectString.c_str()); \
+ } \
+
static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_COMP = 2044; // (COMPOSE_SIZE_MAX + 1) * 8 + 4
static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_PWLE = 2302;
@@ -195,7 +213,6 @@ enum vibe_state {
VIBE_STATE_ASP,
};
-std::mutex mActiveId_mutex; // protects mActiveId
class DspMemChunk {
private:
@@ -461,6 +478,7 @@ Vibrator::Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr h
if ((mHwApiDual != nullptr) && (mHwCalDual != nullptr))
mIsDual = true;
+ RECORD("mIsDual = %d", mIsDual);
// ==================INPUT Devices== Base =================
const char *inputEventName = std::getenv("INPUT_EVENT_NAME");
const char *inputEventPathName = std::getenv("INPUT_EVENT_PATH");
@@ -816,6 +834,8 @@ ndk::ScopedAStatus Vibrator::off() {
bool ret{true};
const std::scoped_lock lock(mActiveId_mutex);
+ RECORD("mActiveId = %d", mActiveId);
+
if (mActiveId >= 0) {
ALOGD("Off: Stop the active effect: %d", mActiveId);
/* Stop the active effect. */
@@ -858,6 +878,7 @@ ndk::ScopedAStatus Vibrator::on(int32_t timeoutMs,
const std::shared_ptr &callback) {
ATRACE_NAME("Vibrator::on");
ALOGD("Vibrator::on");
+ RECORD("timeoutMs = %d", timeoutMs);
if (timeoutMs > MAX_TIME_MS) {
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
@@ -883,6 +904,8 @@ ndk::ScopedAStatus Vibrator::perform(Effect effect, EffectStrength strength,
int32_t *_aidl_return) {
ATRACE_NAME("Vibrator::perform");
ALOGD("Vibrator::perform");
+ RECORD("effect = %s, strength = %s",
+ toString(effect).c_str(), toString(strength).c_str());
return performEffect(effect, strength, callback, _aidl_return);
}
@@ -964,6 +987,8 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector &composi
const std::shared_ptr &callback) {
ATRACE_NAME("Vibrator::compose");
ALOGD("Vibrator::compose");
+ RECORD_COMPOSE(composite);
+
uint16_t size;
uint16_t nextEffectDelay;
@@ -1319,6 +1344,17 @@ static void incrementIndex(int *index) {
*index += 1;
}
+Vibrator::~Vibrator() {
+ if (isUnderExternalControl()) {
+ ALOGD("Disabling external control");
+ setExternalControl(false);
+ }
+ ALOGD("Turning off the vibrator");
+ off();
+ ALOGD("Waiting for mAsyncHandle to complete");
+ mAsyncHandle.wait();
+}
+
ndk::ScopedAStatus Vibrator::composePwle(const std::vector &composite,
const std::shared_ptr &callback) {
ATRACE_NAME("Vibrator::composePwle");
diff --git a/vibrator/cs40l26/Vibrator.h b/vibrator/cs40l26/Vibrator.h
index 6fc3a3d..b8e31de 100644
--- a/vibrator/cs40l26/Vibrator.h
+++ b/vibrator/cs40l26/Vibrator.h
@@ -16,6 +16,7 @@
#pragma once
#include
+#include
#include
#include
#include
@@ -29,6 +30,8 @@ namespace android {
namespace hardware {
namespace vibrator {
+using ::android::base::StringPrintf;
+
class Vibrator : public BnVibrator {
public:
// APIs for interfacing with the GPIO pin.
@@ -103,6 +106,8 @@ class Vibrator : public BnVibrator {
int *status) = 0;
// Erase OWT waveform
virtual bool eraseOwtEffect(int fd, int8_t effectIndex, std::vector *effect) = 0;
+ // Records IVibrator Event.
+ virtual void recordEvent(const char *func, const std::string &value) = 0;
// Emit diagnostic information to the given file.
virtual void debug(int fd) = 0;
};
@@ -148,6 +153,7 @@ class Vibrator : public BnVibrator {
Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr hwCalDefault,
std::unique_ptr hwApiDual, std::unique_ptr hwCalDual,
std::unique_ptr hwgpio);
+ virtual ~Vibrator();
// BnVibrator APIs
ndk::ScopedAStatus getCapabilities(int32_t *_aidl_return) override;
@@ -250,6 +256,7 @@ class Vibrator : public BnVibrator {
bool mConfigHapticAlsaDeviceDone{false};
bool mGPIOStatus;
bool mIsDual{false};
+ std::mutex mActiveId_mutex; // protects mActiveId
};
} // namespace vibrator
diff --git a/vibrator/cs40l26/tests/mocks.h b/vibrator/cs40l26/tests/mocks.h
index c521b02..a8bd753 100644
--- a/vibrator/cs40l26/tests/mocks.h
+++ b/vibrator/cs40l26/tests/mocks.h
@@ -58,6 +58,7 @@ class MockApi : public ::aidl::android::hardware::vibrator::Vibrator::HwApi {
bool(int fd, const uint8_t *owtData, const uint32_t numBytes, struct ff_effect *effect,
uint32_t *outEffectIndex, int *status));
MOCK_METHOD3(eraseOwtEffect, bool(int fd, int8_t effectIndex, std::vector *effect));
+ MOCK_METHOD2(recordEvent, void(const char *func, const std::string &value));
MOCK_METHOD1(debug, void(int fd));
~MockApi() override { destructor(); };
diff --git a/vibrator/cs40l26/tests/test-vibrator.cpp b/vibrator/cs40l26/tests/test-vibrator.cpp
index b9b5b3c..dbce7c5 100644
--- a/vibrator/cs40l26/tests/test-vibrator.cpp
+++ b/vibrator/cs40l26/tests/test-vibrator.cpp
@@ -295,7 +295,7 @@ class VibratorTest : public Test {
EXPECT_CALL(*mMockApi, setMinOnOffInterval(_)).Times(times);
EXPECT_CALL(*mMockApi, getHapticAlsaDevice(_, _)).Times(times);
EXPECT_CALL(*mMockApi, setHapticPcmAmp(_, _, _, _)).Times(times);
-
+ EXPECT_CALL(*mMockApi, recordEvent(_, _)).Times(times);
EXPECT_CALL(*mMockApi, debug(_)).Times(times);
EXPECT_CALL(*mMockCal, destructor()).Times(times);
@@ -335,11 +335,14 @@ TEST_F(VibratorTest, Constructor) {
EXPECT_CALL(*mMockApi, destructor()).WillOnce(DoDefault());
EXPECT_CALL(*mMockCal, destructor()).WillOnce(DoDefault());
EXPECT_CALL(*mMockGpio, destructor()).WillOnce(DoDefault());
-
+ // Mock calls for the VIbrator destructor.
+ EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault());
+ EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).WillOnce(DoDefault());
deleteVibrator(false);
createMock(&mockapi, &mockcal, &mockgpio);
+ EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault());
EXPECT_CALL(*mMockCal, getF0(_))
.InSequence(f0Seq)
.WillOnce(DoAll(SetArgReferee<0>(f0Val), Return(true)));
@@ -387,6 +390,9 @@ TEST_F(VibratorTest, on) {
Sequence s1, s2;
uint16_t duration = std::rand() + 1;
+ EXPECT_CALL(*mMockApi, recordEvent(_, _))
+ .InSequence(s1)
+ .WillRepeatedly(DoDefault());
EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).InSequence(s1).WillOnce(DoDefault());
EXPECT_CALL(*mMockApi, setFFEffect(_, _, duration + MAX_COLD_START_LATENCY_MS))
.InSequence(s2)
@@ -399,6 +405,7 @@ TEST_F(VibratorTest, on) {
TEST_F(VibratorTest, off) {
Sequence s1;
+ EXPECT_CALL(*mMockApi, recordEvent(_, _)).InSequence(s1).WillRepeatedly(DoDefault());
EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).InSequence(s1).WillOnce(DoDefault());
EXPECT_TRUE(mVibrator->off().isOk());
}
@@ -528,6 +535,8 @@ TEST_P(EffectsTest, perform) {
ExpectationSet eSetup;
Expectation eActivate, ePollHaptics, ePollStop, eEraseDone;
+ eSetup += EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault());
+
if (scale != EFFECT_SCALE.end()) {
EffectIndex index = EFFECT_INDEX.at(effect);
duration = EFFECT_DURATIONS[index];
@@ -664,6 +673,7 @@ TEST_P(ComposeTest, compose) {
return ndk::ScopedAStatus::ok();
};
+ eSetup += EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault());
eSetup += EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE))
.After(eSetup)
.WillOnce(DoDefault());