aml_tz6_351400020 (13155446,com.google.android.go.tzdata6,com.google.android.tzdata6)
-----BEGIN PGP SIGNATURE----- iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCZ9i73wAKCRDorT+BmrEO eHetAKCPkChvFKirzr7wCwG+ez/86NakwgCfcM7RMQKs4PHcmAk6Nkw6YHaPKzU= =9k4J -----END PGP SIGNATURE----- gpgsig -----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgPpdpjxPACTIhnlvYz0GM4BR7FJ +rYv3jMbfxNKD3JvcAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQJ8s9TTvBFSXGcIvOw9xQkgZAf5Bk2hHPhuoDyqvGr9ASWMDjafMMJtc6GukOg8KkD GBKQ05mKsLQV9Yw4tFMwE= -----END SSH SIGNATURE----- Merge tag 'aml_tz6_351400020' into staging/lineage-23.0_merge-aml_tz6_351400020 aml_tz6_351400020 (13155446,com.google.android.go.tzdata6,com.google.android.tzdata6) # -----BEGIN PGP SIGNATURE----- # # iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCZ9i73wAKCRDorT+BmrEO # eHetAKCPkChvFKirzr7wCwG+ez/86NakwgCfcM7RMQKs4PHcmAk6Nkw6YHaPKzU= # =9k4J # -----END PGP SIGNATURE----- # gpg: Signature made Tue Mar 18 02:18:39 2025 EET # gpg: using DSA key 4340D13570EF945E83810964E8AD3F819AB10E78 # gpg: Good signature from "The Android Open Source Project <initial-contribution@android.com>" [ultimate] # By Chungkai Mei (4) and others # Via Android (Google) Code Review (10) and others * tag 'aml_tz6_351400020': Remove old unused VINTF manifest file Enable BQR vendor snoop log ADPF:felix: use tagged ADPF profile for SYSTEM_UI. ADPF:felix: remove unused adpf profiles. Hide LE audio toggle for ASHA device on F10 powerhint: Mask hints in AA and DISPLAY_IDLE Disable Bluetooth Hearing Access Profile default enable for F10 Enable open source multi akm for specific Broadcom project Change set preferred idle mask to top-app Backport autopreferfit for launch Revert "backport launch powerhint to felix" Update IDisplay to V13-V14 Felix HAL: Added RECORD_COMPOSE macro for composite effects. remove unused hint Felix HAL: Move mActiveId_mutex as a private member. Felix HAL: Add Destructor to the vibrator HAL. backport launch powerhint to felix display-dump: make display dump project-specific Felix HAL: Added IVibrator event logs in dumpsys. Change-Id: I6d4395f32a836828cba1a38fb3db90f9262abb82
This commit is contained in:
commit
b34ac9e6d4
14 changed files with 300 additions and 238 deletions
|
@ -27,6 +27,3 @@ PRODUCT_DEVICE := felix
|
||||||
PRODUCT_MODEL := AOSP on Felix
|
PRODUCT_MODEL := AOSP on Felix
|
||||||
PRODUCT_BRAND := Android
|
PRODUCT_BRAND := Android
|
||||||
PRODUCT_MANUFACTURER := Google
|
PRODUCT_MANUFACTURER := Google
|
||||||
|
|
||||||
DEVICE_MANIFEST_FILE := \
|
|
||||||
device/google/felix/manifest.xml
|
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
UartPort = /dev/ttySAC18
|
UartPort = /dev/ttySAC18
|
||||||
|
|
||||||
# Update BQR Event Mask property value
|
# Update BQR Event Mask property value
|
||||||
BqrEventMaskValueUpdate = 262238
|
BqrEventMaskValueUpdate = 295006
|
||||||
|
|
||||||
BtOpusEnabled = true
|
BtOpusEnabled = true
|
||||||
|
|
|
@ -40,7 +40,7 @@ include device/google/gs201/device-shipping-common.mk
|
||||||
$(call soong_config_set,fp_hal_feature,pixel_product, product_a)
|
$(call soong_config_set,fp_hal_feature,pixel_product, product_a)
|
||||||
include device/google/felix/vibrator/cs40l26/device.mk
|
include device/google/felix/vibrator/cs40l26/device.mk
|
||||||
include device/google/gs-common/bcmbt/bluetooth.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/gti/predump_gti_dual.mk
|
||||||
include device/google/gs-common/touch/stm/predump_stm6.mk
|
include device/google/gs-common/touch/stm/predump_stm6.mk
|
||||||
ifeq ($(filter factory_felix, $(TARGET_PRODUCT)),)
|
ifeq ($(filter factory_felix, $(TARGET_PRODUCT)),)
|
||||||
|
@ -411,10 +411,16 @@ PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
# Override BQR mask to enable LE Audio Choppy report
|
# Override BQR mask to enable LE Audio Choppy report
|
||||||
ifneq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
|
ifneq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
|
||||||
PRODUCT_PRODUCT_PROPERTIES += \
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
persist.bluetooth.bqr.event_mask=262238
|
persist.bluetooth.bqr.event_mask=295006 \
|
||||||
|
persist.bluetooth.bqr.vnd_quality_mask=29 \
|
||||||
|
persist.bluetooth.bqr.vnd_trace_mask=0 \
|
||||||
|
persist.bluetooth.vendor.btsnoop=true
|
||||||
else
|
else
|
||||||
PRODUCT_PRODUCT_PROPERTIES += \
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
persist.bluetooth.bqr.event_mask=94
|
persist.bluetooth.bqr.event_mask=295006 \
|
||||||
|
persist.bluetooth.bqr.vnd_quality_mask=16 \
|
||||||
|
persist.bluetooth.bqr.vnd_trace_mask=0 \
|
||||||
|
persist.bluetooth.vendor.btsnoop=false
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Bluetooth LE Audio CIS handover to SCO
|
# Bluetooth LE Audio CIS handover to SCO
|
||||||
|
@ -439,6 +445,14 @@ PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
PRODUCT_PACKAGES_ENG += \
|
PRODUCT_PACKAGES_ENG += \
|
||||||
ewp_tool
|
ewp_tool
|
||||||
|
|
||||||
|
# Disable Bluetooth HAP by default
|
||||||
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
bluetooth.profile.hap.enabled_by_default=false
|
||||||
|
|
||||||
|
# Disable Bluetooth LE Audio toggle for ASHA device
|
||||||
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
bluetooth.leaudio.toggle_visible_for_asha=false
|
||||||
|
|
||||||
# Enable DeviceAsWebcam support
|
# Enable DeviceAsWebcam support
|
||||||
PRODUCT_VENDOR_PROPERTIES += \
|
PRODUCT_VENDOR_PROPERTIES += \
|
||||||
ro.usb.uvc.enabled=true
|
ro.usb.uvc.enabled=true
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<compatibility-matrix version="1.0" type="framework" level="7">
|
<compatibility-matrix version="1.0" type="framework" level="7">
|
||||||
<hal format="aidl" optional="true">
|
<hal format="aidl" optional="true">
|
||||||
<name>com.google.hardware.pixel.display</name>
|
<name>com.google.hardware.pixel.display</name>
|
||||||
<version>13</version>
|
<version>13-14</version>
|
||||||
<interface>
|
<interface>
|
||||||
<name>IDisplay</name>
|
<name>IDisplay</name>
|
||||||
<instance>secondary</instance>
|
<instance>secondary</instance>
|
||||||
|
|
124
manifest.xml
124
manifest.xml
|
@ -1,124 +0,0 @@
|
||||||
<manifest version="1.0" type="device" target-level="5">
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.audio</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>7.1</version>
|
|
||||||
<interface>
|
|
||||||
<name>IDevicesFactory</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.audio.effect</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>7.0</version>
|
|
||||||
<interface>
|
|
||||||
<name>IEffectsFactory</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.soundtrigger</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>2.3</version>
|
|
||||||
<interface>
|
|
||||||
<name>ISoundTriggerHw</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.media.omx</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>1.0</version>
|
|
||||||
<interface>
|
|
||||||
<name>IOmx</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
<interface>
|
|
||||||
<name>IOmxStore</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.graphics.allocator</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>4.0</version>
|
|
||||||
<interface>
|
|
||||||
<name>IAllocator</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.graphics.composer</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>2.4</version>
|
|
||||||
<interface>
|
|
||||||
<name>IComposer</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.renderscript</name>
|
|
||||||
<transport arch="32+64">passthrough</transport>
|
|
||||||
<version>1.0</version>
|
|
||||||
<interface>
|
|
||||||
<name>IDevice</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format = "hidl">
|
|
||||||
<name>android.hardware.dumpstate</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>1.1</version>
|
|
||||||
<interface>
|
|
||||||
<name>IDumpstateDevice</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.bluetooth.audio</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>2.1</version>
|
|
||||||
<interface>
|
|
||||||
<name>IBluetoothAudioProvidersFactory</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.boot</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<fqname>@1.2::IBootControl/default</fqname>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.neuralnetworks</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<fqname>@1.3::IDevice/google-edgetpu</fqname>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>android.hardware.health</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>2.1</version>
|
|
||||||
<interface>
|
|
||||||
<name>IHealth</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="aidl">
|
|
||||||
<name>vendor.google.google_battery</name>
|
|
||||||
<version>3</version>
|
|
||||||
<interface>
|
|
||||||
<name>IGoogleBattery</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="hidl">
|
|
||||||
<name>vendor.google.whitechapel.audio.audioext</name>
|
|
||||||
<transport>hwbinder</transport>
|
|
||||||
<version>4.0</version>
|
|
||||||
<interface>
|
|
||||||
<name>IAudioExt</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<kernel target-level="6"/>
|
|
||||||
</manifest>
|
|
287
powerhint.json
287
powerhint.json
|
@ -194,6 +194,54 @@
|
||||||
],
|
],
|
||||||
"ResetOnInit": true
|
"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",
|
"Name": "FGUClampBoost",
|
||||||
"Path": "/proc/vendor_sched/groups/fg/uclamp_min",
|
"Path": "/proc/vendor_sched/groups/fg/uclamp_min",
|
||||||
|
@ -286,6 +334,35 @@
|
||||||
],
|
],
|
||||||
"ResetOnInit": true
|
"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",
|
"Name": "FGPreferIdle",
|
||||||
"Path": "/proc/vendor_sched/groups/fg/prefer_idle",
|
"Path": "/proc/vendor_sched/groups/fg/prefer_idle",
|
||||||
|
@ -314,14 +391,6 @@
|
||||||
],
|
],
|
||||||
"ResetOnInit": true
|
"ResetOnInit": true
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"Name": "NewlyIdleBalancer",
|
|
||||||
"Path": "/proc/vendor_sched/idle_balancer",
|
|
||||||
"Values": [
|
|
||||||
"0",
|
|
||||||
"1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"Name": "DisplayWakeup",
|
"Name": "DisplayWakeup",
|
||||||
"Path": "/sys/devices/platform/1c240000.drmdecon/early_wakeup",
|
"Path": "/sys/devices/platform/1c240000.drmdecon/early_wakeup",
|
||||||
|
@ -688,6 +757,26 @@
|
||||||
],
|
],
|
||||||
"DefaultIndex": 0,
|
"DefaultIndex": 0,
|
||||||
"ResetOnInit": true
|
"ResetOnInit": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "AAModeProperty",
|
||||||
|
"Path": "vendor.powerhal.mode.aa",
|
||||||
|
"Values": [
|
||||||
|
"1",
|
||||||
|
"0"
|
||||||
|
],
|
||||||
|
"ResetOnInit": true,
|
||||||
|
"Type": "Property"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "SYSTEM_UI_ADPF_PROFILES",
|
||||||
|
"Path": "<AdpfConfig>:SYSTEM_UI",
|
||||||
|
"Values": [
|
||||||
|
"SYSTEM_UI_PROFILE"
|
||||||
|
],
|
||||||
|
"DefaultIndex": 0,
|
||||||
|
"ResetOnInit": true,
|
||||||
|
"Type": "Event"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Actions": [
|
"Actions": [
|
||||||
|
@ -780,6 +869,54 @@
|
||||||
"Duration": 5000,
|
"Duration": 5000,
|
||||||
"Value": "0"
|
"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",
|
"PowerHint": "LAUNCH",
|
||||||
"Type": "DoHint",
|
"Type": "DoHint",
|
||||||
|
@ -1383,12 +1520,6 @@
|
||||||
"Duration": 0,
|
"Duration": 0,
|
||||||
"Value": "0"
|
"Value": "0"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"PowerHint": "CAMERA_STREAMING_EXTREME",
|
|
||||||
"Node": "NewlyIdleBalancer",
|
|
||||||
"Duration": 0,
|
|
||||||
"Value": "0"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"PowerHint": "CAMERA_STREAMING_HIGH",
|
"PowerHint": "CAMERA_STREAMING_HIGH",
|
||||||
"Node": "PMU_POLL",
|
"Node": "PMU_POLL",
|
||||||
|
@ -1503,12 +1634,6 @@
|
||||||
"Duration": 0,
|
"Duration": 0,
|
||||||
"Value": "0"
|
"Value": "0"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"PowerHint": "CAMERA_STREAMING_HIGH",
|
|
||||||
"Node": "NewlyIdleBalancer",
|
|
||||||
"Duration": 0,
|
|
||||||
"Value": "0"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"PowerHint": "CAMERA_STREAMING_STANDARD",
|
"PowerHint": "CAMERA_STREAMING_STANDARD",
|
||||||
"Node": "PowerHALCameraRunning",
|
"Node": "PowerHALCameraRunning",
|
||||||
|
@ -1605,12 +1730,6 @@
|
||||||
"Duration": 0,
|
"Duration": 0,
|
||||||
"Value": "0"
|
"Value": "0"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"PowerHint": "CAMERA_STREAMING_STANDARD",
|
|
||||||
"Node": "NewlyIdleBalancer",
|
|
||||||
"Duration": 0,
|
|
||||||
"Value": "0"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"PowerHint": "CAMERA_STREAMING_LOW",
|
"PowerHint": "CAMERA_STREAMING_LOW",
|
||||||
"Node": "PowerHALCameraRunning",
|
"Node": "PowerHALCameraRunning",
|
||||||
|
@ -1671,12 +1790,6 @@
|
||||||
"Duration": 0,
|
"Duration": 0,
|
||||||
"Value": "0"
|
"Value": "0"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"PowerHint": "CAMERA_STREAMING_LOW",
|
|
||||||
"Node": "NewlyIdleBalancer",
|
|
||||||
"Duration": 0,
|
|
||||||
"Value": "0"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"PowerHint": "CAMERA_MULTI_CAM_STREAMING",
|
"PowerHint": "CAMERA_MULTI_CAM_STREAMING",
|
||||||
"Node": "CPUBigClusterMaxFreq",
|
"Node": "CPUBigClusterMaxFreq",
|
||||||
|
@ -1961,6 +2074,12 @@
|
||||||
"Duration": 0,
|
"Duration": 0,
|
||||||
"Value": "1"
|
"Value": "1"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"PowerHint": "AUTOMOTIVE_PROJECTION",
|
||||||
|
"Node": "AAModeProperty",
|
||||||
|
"Duration": 0,
|
||||||
|
"Value": "1"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"PowerHint": "DISPLAY_IDLE",
|
"PowerHint": "DISPLAY_IDLE",
|
||||||
"Node": "FGPreferIdle",
|
"Node": "FGPreferIdle",
|
||||||
|
@ -1978,6 +2097,18 @@
|
||||||
"Type": "EndHint",
|
"Type": "EndHint",
|
||||||
"Value": "DISPLAY_UPDATE_IMMINENT"
|
"Value": "DISPLAY_UPDATE_IMMINENT"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"PowerHint": "DISPLAY_IDLE",
|
||||||
|
"Type": "MaskHint",
|
||||||
|
"Value":"DISPLAY_UPDATE_IMMINENT",
|
||||||
|
"EnableProperty": "vendor.powerhal.mode.aa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PowerHint": "DISPLAY_IDLE",
|
||||||
|
"Type": "MaskHint",
|
||||||
|
"Value":"CPU_LOAD_RESET",
|
||||||
|
"EnableProperty": "vendor.powerhal.mode.aa"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"PowerHint": "DISPLAY_UPDATE_IMMINENT",
|
"PowerHint": "DISPLAY_UPDATE_IMMINENT",
|
||||||
"Node": "DisplayWakeup",
|
"Node": "DisplayWakeup",
|
||||||
|
@ -2305,76 +2436,40 @@
|
||||||
"MaxRecordsNum": 300
|
"MaxRecordsNum": 300
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Name": "UiHighBoostWithoutPid",
|
"Name": "SYSTEM_UI_PROFILE",
|
||||||
"PID_On": false,
|
"PID_On": true,
|
||||||
"PID_Po": 0,
|
"PID_Po": 2.0,
|
||||||
"PID_Pu": 0,
|
"PID_Pu": 1.0,
|
||||||
"PID_I": 0,
|
"PID_I": 0.0,
|
||||||
"PID_I_Init": 0,
|
"PID_I_Init": 200,
|
||||||
"PID_I_High": 0,
|
"PID_I_High": 512,
|
||||||
"PID_I_Low": 0,
|
"PID_I_Low": -30,
|
||||||
"PID_Do": 0,
|
"PID_Do": 500.0,
|
||||||
"PID_Du": 0,
|
"PID_Du": 0.0,
|
||||||
"SamplingWindow_P": 1,
|
|
||||||
"SamplingWindow_I": 1,
|
|
||||||
"SamplingWindow_D": 1,
|
|
||||||
"UclampMin_On": true,
|
"UclampMin_On": true,
|
||||||
"UclampMin_Init": 250,
|
"UclampMin_Init": 232,
|
||||||
"UclampMin_High": 197,
|
"UclampMin_LoadUp": 730,
|
||||||
"UclampMin_Low": 197,
|
"UclampMin_LoadReset": 730,
|
||||||
|
"UclampMin_High": 480,
|
||||||
|
"UclampMin_Low": 2,
|
||||||
"UclampMax_EfficientBase": 500,
|
"UclampMax_EfficientBase": 500,
|
||||||
"UclampMax_EfficientOffset": 200,
|
"UclampMax_EfficientOffset": 200,
|
||||||
"ReportingRateLimitNs": 1,
|
|
||||||
"TargetTimeFactor": 1.0,
|
|
||||||
"StaleTimeFactor": 5.0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "UiLowBoostWithoutPid",
|
|
||||||
"PID_On": false,
|
|
||||||
"PID_Po": 0,
|
|
||||||
"PID_Pu": 0,
|
|
||||||
"PID_I": 0,
|
|
||||||
"PID_I_Init": 0,
|
|
||||||
"PID_I_High": 0,
|
|
||||||
"PID_I_Low": 0,
|
|
||||||
"PID_Do": 0,
|
|
||||||
"PID_Du": 0,
|
|
||||||
"SamplingWindow_P": 1,
|
"SamplingWindow_P": 1,
|
||||||
"SamplingWindow_I": 1,
|
"SamplingWindow_I": 0,
|
||||||
"SamplingWindow_D": 1,
|
"SamplingWindow_D": 1,
|
||||||
"UclampMin_On": true,
|
"ReportingRateLimitNs": 166666660,
|
||||||
"UclampMin_Init": 250,
|
|
||||||
"UclampMin_High": 53,
|
|
||||||
"UclampMin_Low": 53,
|
|
||||||
"UclampMax_EfficientBase": 500,
|
|
||||||
"UclampMax_EfficientOffset": 200,
|
|
||||||
"ReportingRateLimitNs": 1,
|
|
||||||
"TargetTimeFactor": 1.0,
|
"TargetTimeFactor": 1.0,
|
||||||
"StaleTimeFactor": 5.0
|
"StaleTimeFactor": 15.0,
|
||||||
},
|
"HeuristicBoost_On": true,
|
||||||
{
|
"HBoostModerateJankThreshold": 2,
|
||||||
"Name": "UiLowNoneBoost",
|
"HBoostOffMaxAvgDurRatio": 4.0,
|
||||||
"PID_On": false,
|
"HBoostSevereJankPidPu": 0.5,
|
||||||
"PID_Po": 0,
|
"HBoostSevereJankThreshold": 8,
|
||||||
"PID_Pu": 0,
|
"HBoostUclampMinCeilingRange": [480, 722],
|
||||||
"PID_I": 0,
|
"HBoostUclampMinFloorRange": [230, 410],
|
||||||
"PID_I_Init": 0,
|
"JankCheckTimeFactor": 1.2,
|
||||||
"PID_I_High": 0,
|
"LowFrameRateThreshold": 25,
|
||||||
"PID_I_Low": 0,
|
"MaxRecordsNum": 300
|
||||||
"PID_Do": 0,
|
|
||||||
"PID_Du": 0,
|
|
||||||
"SamplingWindow_P": 1,
|
|
||||||
"SamplingWindow_I": 1,
|
|
||||||
"SamplingWindow_D": 1,
|
|
||||||
"UclampMin_On": true,
|
|
||||||
"UclampMin_Init": 250,
|
|
||||||
"UclampMin_High": 0,
|
|
||||||
"UclampMin_Low": 0,
|
|
||||||
"UclampMax_EfficientBase": 500,
|
|
||||||
"UclampMax_EfficientOffset": 200,
|
|
||||||
"ReportingRateLimitNs": 1,
|
|
||||||
"TargetTimeFactor": 1.0,
|
|
||||||
"StaleTimeFactor": 5.0
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,13 @@ namespace android {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace vibrator {
|
namespace vibrator {
|
||||||
|
|
||||||
|
void HwApiBase::recordEvent(const char *func, const std::string &value) {
|
||||||
|
std::lock_guard<std::mutex> lock(mRecordsMutex);
|
||||||
|
mRecords.emplace_back(std::make_unique<Record<std::string>>
|
||||||
|
(HwApiBase::RecordType::EVENT, func, value, nullptr));
|
||||||
|
mRecords.pop_front();
|
||||||
|
}
|
||||||
|
|
||||||
HwApiBase::HwApiBase() {
|
HwApiBase::HwApiBase() {
|
||||||
mPathPrefix = std::getenv("HWAPI_PATH_PREFIX") ?: "";
|
mPathPrefix = std::getenv("HWAPI_PATH_PREFIX") ?: "";
|
||||||
if (mPathPrefix.empty()) {
|
if (mPathPrefix.empty()) {
|
||||||
|
|
|
@ -39,6 +39,7 @@ using ::android::base::unique_fd;
|
||||||
class HwApiBase {
|
class HwApiBase {
|
||||||
private:
|
private:
|
||||||
using NamesMap = std::map<const std::ios *, std::string>;
|
using NamesMap = std::map<const std::ios *, std::string>;
|
||||||
|
enum class RecordType { EVENT, HWAPI };
|
||||||
|
|
||||||
class RecordInterface {
|
class RecordInterface {
|
||||||
public:
|
public:
|
||||||
|
@ -48,12 +49,16 @@ class HwApiBase {
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class Record : public RecordInterface {
|
class Record : public RecordInterface {
|
||||||
public:
|
public:
|
||||||
Record(const char *func, const T &value, const std::ios *stream)
|
Record(const RecordType &type, const char *func, const T &value, const std::ios *stream)
|
||||||
: mFunc(func), mValue(value), mStream(stream),
|
: mType(type),
|
||||||
|
mFunc(func),
|
||||||
|
mValue(value),
|
||||||
|
mStream(stream),
|
||||||
mTp(std::chrono::system_clock::system_clock::now()) {}
|
mTp(std::chrono::system_clock::system_clock::now()) {}
|
||||||
std::string toString(const NamesMap &names) override;
|
std::string toString(const NamesMap &names) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
const RecordType mType;
|
||||||
const char *mFunc;
|
const char *mFunc;
|
||||||
const T mValue;
|
const T mValue;
|
||||||
const std::ios *mStream;
|
const std::ios *mStream;
|
||||||
|
@ -66,6 +71,7 @@ class HwApiBase {
|
||||||
public:
|
public:
|
||||||
HwApiBase();
|
HwApiBase();
|
||||||
void debug(int fd);
|
void debug(int fd);
|
||||||
|
void recordEvent(const char *func, const std::string &value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void saveName(const std::string &name, const std::ios *stream);
|
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 <typename T>
|
template <typename T>
|
||||||
void HwApiBase::record(const char *func, const T &value, const std::ios *stream) {
|
void HwApiBase::record(const char *func, const T &value, const std::ios *stream) {
|
||||||
std::lock_guard<std::mutex> lock(mRecordsMutex);
|
std::lock_guard<std::mutex> lock(mRecordsMutex);
|
||||||
mRecords.emplace_back(std::make_unique<Record<T>>(func, value, stream));
|
mRecords.emplace_back(std::make_unique<Record<T>>(RecordType::HWAPI, func, value, stream));
|
||||||
mRecords.pop_front();
|
mRecords.pop_front();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,10 +194,18 @@ std::string HwApiBase::Record<T>::toString(const NamesMap &names) {
|
||||||
struct tm buf;
|
struct tm buf;
|
||||||
auto lTime = localtime_r(&lTp, &buf);
|
auto lTime = localtime_r(&lTp, &buf);
|
||||||
|
|
||||||
ret << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') << std::setw(3)
|
if (mType == RecordType::EVENT) {
|
||||||
<< (std::chrono::duration_cast<std::chrono::milliseconds>(mTp.time_since_epoch()) % 1000)
|
ret << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') << std::setw(3)
|
||||||
.count()
|
<< (std::chrono::duration_cast<std::chrono::milliseconds>(mTp.time_since_epoch()) %
|
||||||
<< " " << mFunc << " '" << names.at(mStream) << "' = '" << mValue << "'";
|
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<std::chrono::milliseconds>(mTp.time_since_epoch()) %
|
||||||
|
1000).count()
|
||||||
|
<< " " << mFunc << " '" << names.at(mStream) << "' = '" << mValue << "'";
|
||||||
|
}
|
||||||
return ret.str();
|
return ret.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -287,6 +287,10 @@ class HwApi : public Vibrator::HwApi, private HwApiBase {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void recordEvent(const char *func, const std::string &value) override {
|
||||||
|
HwApiBase::recordEvent(func, value);
|
||||||
|
}
|
||||||
|
|
||||||
void debug(int fd) override { HwApiBase::debug(fd); }
|
void debug(int fd) override { HwApiBase::debug(fd); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -45,6 +45,24 @@ namespace aidl {
|
||||||
namespace android {
|
namespace android {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace vibrator {
|
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_COMP = 2044; // (COMPOSE_SIZE_MAX + 1) * 8 + 4
|
||||||
static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_PWLE = 2302;
|
static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_PWLE = 2302;
|
||||||
|
|
||||||
|
@ -195,7 +213,6 @@ enum vibe_state {
|
||||||
VIBE_STATE_ASP,
|
VIBE_STATE_ASP,
|
||||||
};
|
};
|
||||||
|
|
||||||
std::mutex mActiveId_mutex; // protects mActiveId
|
|
||||||
|
|
||||||
class DspMemChunk {
|
class DspMemChunk {
|
||||||
private:
|
private:
|
||||||
|
@ -461,6 +478,7 @@ Vibrator::Vibrator(std::unique_ptr<HwApi> hwApiDefault, std::unique_ptr<HwCal> h
|
||||||
if ((mHwApiDual != nullptr) && (mHwCalDual != nullptr))
|
if ((mHwApiDual != nullptr) && (mHwCalDual != nullptr))
|
||||||
mIsDual = true;
|
mIsDual = true;
|
||||||
|
|
||||||
|
RECORD("mIsDual = %d", mIsDual);
|
||||||
// ==================INPUT Devices== Base =================
|
// ==================INPUT Devices== Base =================
|
||||||
const char *inputEventName = std::getenv("INPUT_EVENT_NAME");
|
const char *inputEventName = std::getenv("INPUT_EVENT_NAME");
|
||||||
const char *inputEventPathName = std::getenv("INPUT_EVENT_PATH");
|
const char *inputEventPathName = std::getenv("INPUT_EVENT_PATH");
|
||||||
|
@ -816,6 +834,8 @@ ndk::ScopedAStatus Vibrator::off() {
|
||||||
bool ret{true};
|
bool ret{true};
|
||||||
const std::scoped_lock<std::mutex> lock(mActiveId_mutex);
|
const std::scoped_lock<std::mutex> lock(mActiveId_mutex);
|
||||||
|
|
||||||
|
RECORD("mActiveId = %d", mActiveId);
|
||||||
|
|
||||||
if (mActiveId >= 0) {
|
if (mActiveId >= 0) {
|
||||||
ALOGD("Off: Stop the active effect: %d", mActiveId);
|
ALOGD("Off: Stop the active effect: %d", mActiveId);
|
||||||
/* Stop the active effect. */
|
/* Stop the active effect. */
|
||||||
|
@ -858,6 +878,7 @@ ndk::ScopedAStatus Vibrator::on(int32_t timeoutMs,
|
||||||
const std::shared_ptr<IVibratorCallback> &callback) {
|
const std::shared_ptr<IVibratorCallback> &callback) {
|
||||||
ATRACE_NAME("Vibrator::on");
|
ATRACE_NAME("Vibrator::on");
|
||||||
ALOGD("Vibrator::on");
|
ALOGD("Vibrator::on");
|
||||||
|
RECORD("timeoutMs = %d", timeoutMs);
|
||||||
|
|
||||||
if (timeoutMs > MAX_TIME_MS) {
|
if (timeoutMs > MAX_TIME_MS) {
|
||||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||||
|
@ -883,6 +904,8 @@ ndk::ScopedAStatus Vibrator::perform(Effect effect, EffectStrength strength,
|
||||||
int32_t *_aidl_return) {
|
int32_t *_aidl_return) {
|
||||||
ATRACE_NAME("Vibrator::perform");
|
ATRACE_NAME("Vibrator::perform");
|
||||||
ALOGD("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);
|
return performEffect(effect, strength, callback, _aidl_return);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -964,6 +987,8 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector<CompositeEffect> &composi
|
||||||
const std::shared_ptr<IVibratorCallback> &callback) {
|
const std::shared_ptr<IVibratorCallback> &callback) {
|
||||||
ATRACE_NAME("Vibrator::compose");
|
ATRACE_NAME("Vibrator::compose");
|
||||||
ALOGD("Vibrator::compose");
|
ALOGD("Vibrator::compose");
|
||||||
|
RECORD_COMPOSE(composite);
|
||||||
|
|
||||||
uint16_t size;
|
uint16_t size;
|
||||||
uint16_t nextEffectDelay;
|
uint16_t nextEffectDelay;
|
||||||
|
|
||||||
|
@ -1319,6 +1344,17 @@ static void incrementIndex(int *index) {
|
||||||
*index += 1;
|
*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<PrimitivePwle> &composite,
|
ndk::ScopedAStatus Vibrator::composePwle(const std::vector<PrimitivePwle> &composite,
|
||||||
const std::shared_ptr<IVibratorCallback> &callback) {
|
const std::shared_ptr<IVibratorCallback> &callback) {
|
||||||
ATRACE_NAME("Vibrator::composePwle");
|
ATRACE_NAME("Vibrator::composePwle");
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <aidl/android/hardware/vibrator/BnVibrator.h>
|
#include <aidl/android/hardware/vibrator/BnVibrator.h>
|
||||||
|
#include <android-base/stringprintf.h>
|
||||||
#include <android-base/unique_fd.h>
|
#include <android-base/unique_fd.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <tinyalsa/asoundlib.h>
|
#include <tinyalsa/asoundlib.h>
|
||||||
|
@ -29,6 +30,8 @@ namespace android {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace vibrator {
|
namespace vibrator {
|
||||||
|
|
||||||
|
using ::android::base::StringPrintf;
|
||||||
|
|
||||||
class Vibrator : public BnVibrator {
|
class Vibrator : public BnVibrator {
|
||||||
public:
|
public:
|
||||||
// APIs for interfacing with the GPIO pin.
|
// APIs for interfacing with the GPIO pin.
|
||||||
|
@ -103,6 +106,8 @@ class Vibrator : public BnVibrator {
|
||||||
int *status) = 0;
|
int *status) = 0;
|
||||||
// Erase OWT waveform
|
// Erase OWT waveform
|
||||||
virtual bool eraseOwtEffect(int fd, int8_t effectIndex, std::vector<ff_effect> *effect) = 0;
|
virtual bool eraseOwtEffect(int fd, int8_t effectIndex, std::vector<ff_effect> *effect) = 0;
|
||||||
|
// Records IVibrator Event.
|
||||||
|
virtual void recordEvent(const char *func, const std::string &value) = 0;
|
||||||
// Emit diagnostic information to the given file.
|
// Emit diagnostic information to the given file.
|
||||||
virtual void debug(int fd) = 0;
|
virtual void debug(int fd) = 0;
|
||||||
};
|
};
|
||||||
|
@ -148,6 +153,7 @@ class Vibrator : public BnVibrator {
|
||||||
Vibrator(std::unique_ptr<HwApi> hwApiDefault, std::unique_ptr<HwCal> hwCalDefault,
|
Vibrator(std::unique_ptr<HwApi> hwApiDefault, std::unique_ptr<HwCal> hwCalDefault,
|
||||||
std::unique_ptr<HwApi> hwApiDual, std::unique_ptr<HwCal> hwCalDual,
|
std::unique_ptr<HwApi> hwApiDual, std::unique_ptr<HwCal> hwCalDual,
|
||||||
std::unique_ptr<HwGPIO> hwgpio);
|
std::unique_ptr<HwGPIO> hwgpio);
|
||||||
|
virtual ~Vibrator();
|
||||||
|
|
||||||
// BnVibrator APIs
|
// BnVibrator APIs
|
||||||
ndk::ScopedAStatus getCapabilities(int32_t *_aidl_return) override;
|
ndk::ScopedAStatus getCapabilities(int32_t *_aidl_return) override;
|
||||||
|
@ -250,6 +256,7 @@ class Vibrator : public BnVibrator {
|
||||||
bool mConfigHapticAlsaDeviceDone{false};
|
bool mConfigHapticAlsaDeviceDone{false};
|
||||||
bool mGPIOStatus;
|
bool mGPIOStatus;
|
||||||
bool mIsDual{false};
|
bool mIsDual{false};
|
||||||
|
std::mutex mActiveId_mutex; // protects mActiveId
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace vibrator
|
} // namespace vibrator
|
||||||
|
|
|
@ -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,
|
bool(int fd, const uint8_t *owtData, const uint32_t numBytes, struct ff_effect *effect,
|
||||||
uint32_t *outEffectIndex, int *status));
|
uint32_t *outEffectIndex, int *status));
|
||||||
MOCK_METHOD3(eraseOwtEffect, bool(int fd, int8_t effectIndex, std::vector<ff_effect> *effect));
|
MOCK_METHOD3(eraseOwtEffect, bool(int fd, int8_t effectIndex, std::vector<ff_effect> *effect));
|
||||||
|
MOCK_METHOD2(recordEvent, void(const char *func, const std::string &value));
|
||||||
MOCK_METHOD1(debug, void(int fd));
|
MOCK_METHOD1(debug, void(int fd));
|
||||||
|
|
||||||
~MockApi() override { destructor(); };
|
~MockApi() override { destructor(); };
|
||||||
|
|
|
@ -295,7 +295,7 @@ class VibratorTest : public Test {
|
||||||
EXPECT_CALL(*mMockApi, setMinOnOffInterval(_)).Times(times);
|
EXPECT_CALL(*mMockApi, setMinOnOffInterval(_)).Times(times);
|
||||||
EXPECT_CALL(*mMockApi, getHapticAlsaDevice(_, _)).Times(times);
|
EXPECT_CALL(*mMockApi, getHapticAlsaDevice(_, _)).Times(times);
|
||||||
EXPECT_CALL(*mMockApi, setHapticPcmAmp(_, _, _, _)).Times(times);
|
EXPECT_CALL(*mMockApi, setHapticPcmAmp(_, _, _, _)).Times(times);
|
||||||
|
EXPECT_CALL(*mMockApi, recordEvent(_, _)).Times(times);
|
||||||
EXPECT_CALL(*mMockApi, debug(_)).Times(times);
|
EXPECT_CALL(*mMockApi, debug(_)).Times(times);
|
||||||
|
|
||||||
EXPECT_CALL(*mMockCal, destructor()).Times(times);
|
EXPECT_CALL(*mMockCal, destructor()).Times(times);
|
||||||
|
@ -335,11 +335,14 @@ TEST_F(VibratorTest, Constructor) {
|
||||||
EXPECT_CALL(*mMockApi, destructor()).WillOnce(DoDefault());
|
EXPECT_CALL(*mMockApi, destructor()).WillOnce(DoDefault());
|
||||||
EXPECT_CALL(*mMockCal, destructor()).WillOnce(DoDefault());
|
EXPECT_CALL(*mMockCal, destructor()).WillOnce(DoDefault());
|
||||||
EXPECT_CALL(*mMockGpio, 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);
|
deleteVibrator(false);
|
||||||
|
|
||||||
createMock(&mockapi, &mockcal, &mockgpio);
|
createMock(&mockapi, &mockcal, &mockgpio);
|
||||||
|
|
||||||
|
EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault());
|
||||||
EXPECT_CALL(*mMockCal, getF0(_))
|
EXPECT_CALL(*mMockCal, getF0(_))
|
||||||
.InSequence(f0Seq)
|
.InSequence(f0Seq)
|
||||||
.WillOnce(DoAll(SetArgReferee<0>(f0Val), Return(true)));
|
.WillOnce(DoAll(SetArgReferee<0>(f0Val), Return(true)));
|
||||||
|
@ -387,6 +390,9 @@ TEST_F(VibratorTest, on) {
|
||||||
Sequence s1, s2;
|
Sequence s1, s2;
|
||||||
uint16_t duration = std::rand() + 1;
|
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, setFFGain(_, ON_GLOBAL_SCALE)).InSequence(s1).WillOnce(DoDefault());
|
||||||
EXPECT_CALL(*mMockApi, setFFEffect(_, _, duration + MAX_COLD_START_LATENCY_MS))
|
EXPECT_CALL(*mMockApi, setFFEffect(_, _, duration + MAX_COLD_START_LATENCY_MS))
|
||||||
.InSequence(s2)
|
.InSequence(s2)
|
||||||
|
@ -399,6 +405,7 @@ TEST_F(VibratorTest, on) {
|
||||||
|
|
||||||
TEST_F(VibratorTest, off) {
|
TEST_F(VibratorTest, off) {
|
||||||
Sequence s1;
|
Sequence s1;
|
||||||
|
EXPECT_CALL(*mMockApi, recordEvent(_, _)).InSequence(s1).WillRepeatedly(DoDefault());
|
||||||
EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).InSequence(s1).WillOnce(DoDefault());
|
EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).InSequence(s1).WillOnce(DoDefault());
|
||||||
EXPECT_TRUE(mVibrator->off().isOk());
|
EXPECT_TRUE(mVibrator->off().isOk());
|
||||||
}
|
}
|
||||||
|
@ -528,6 +535,8 @@ TEST_P(EffectsTest, perform) {
|
||||||
ExpectationSet eSetup;
|
ExpectationSet eSetup;
|
||||||
Expectation eActivate, ePollHaptics, ePollStop, eEraseDone;
|
Expectation eActivate, ePollHaptics, ePollStop, eEraseDone;
|
||||||
|
|
||||||
|
eSetup += EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault());
|
||||||
|
|
||||||
if (scale != EFFECT_SCALE.end()) {
|
if (scale != EFFECT_SCALE.end()) {
|
||||||
EffectIndex index = EFFECT_INDEX.at(effect);
|
EffectIndex index = EFFECT_INDEX.at(effect);
|
||||||
duration = EFFECT_DURATIONS[index];
|
duration = EFFECT_DURATIONS[index];
|
||||||
|
@ -664,6 +673,7 @@ TEST_P(ComposeTest, compose) {
|
||||||
return ndk::ScopedAStatus::ok();
|
return ndk::ScopedAStatus::ok();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
eSetup += EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault());
|
||||||
eSetup += EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE))
|
eSetup += EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE))
|
||||||
.After(eSetup)
|
.After(eSetup)
|
||||||
.WillOnce(DoDefault());
|
.WillOnce(DoDefault());
|
||||||
|
|
|
@ -31,6 +31,7 @@ WIFI_AVOID_IFACE_RESET_MAC_CHANGE := true
|
||||||
WIFI_FEATURE_HOSTAPD_11AX := true
|
WIFI_FEATURE_HOSTAPD_11AX := true
|
||||||
BOARD_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL := true
|
BOARD_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL := true
|
||||||
WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true
|
WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true
|
||||||
|
WIFI_BRCM_OPEN_SOURCE_MULTI_AKM := enabled
|
||||||
|
|
||||||
PRODUCT_COPY_FILES += \
|
PRODUCT_COPY_FILES += \
|
||||||
device/google/felix/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
|
device/google/felix/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue