summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BoardConfig-common.mk9
-rw-r--r--conf/init.gs101.rc64
-rw-r--r--conf/ueventd.gs101.rc38
-rw-r--r--default-permissions.xml2
-rw-r--r--device.mk66
-rw-r--r--device_framework_matrix_product.xml15
-rw-r--r--dumpstate/dump_gs101.sh30
-rw-r--r--location/gps.cer14
-rw-r--r--manifest.xml8
-rw-r--r--manifest_64.xml8
-rw-r--r--manifest_media.xml10
-rw-r--r--manifest_media_aosp.xml2
-rw-r--r--media_codecs_performance_c2.xml8
-rw-r--r--overlay/frameworks/base/core/res/res/values/config.xml1
-rw-r--r--pixelstats/pixelstats-vendor.gs101.rc1
-rw-r--r--pixelstats/service.cpp15
-rw-r--r--powerstats/Gs101CommonDataProviders.cpp7
-rw-r--r--powerstats/include/Gs101CommonDataProviders.h1
-rw-r--r--rro_overlays/WifiOverlay/res/values/config.xml8
-rw-r--r--usb/usb/Usb.cpp5
-rw-r--r--usb/usb/UsbDataSessionMonitor.cpp120
-rw-r--r--usb/usb/UsbDataSessionMonitor.h3
22 files changed, 247 insertions, 188 deletions
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index d94a6190..2fdbc7ff 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -163,6 +163,7 @@ TARGET_COPY_OUT_SYSTEM_EXT := system_ext
# Video Codec
########################
# 1. Exynos C2
+BOARD_USE_CODEC2_HIDL_1_2 := true
BOARD_USE_CSC_FILTER := false
BOARD_USE_DEC_SW_CSC := true
BOARD_USE_ENC_SW_CSC := true
@@ -347,6 +348,14 @@ KERNEL_MODULES := $(wildcard $(KERNEL_MODULE_DIR)/*.ko)
BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.blocklist
+# Since Pixel 6/6pro doesn't have a system_dlkm partition, the GKI modules are
+# on the vendor_dlkm partition. In order to allow them to load properly, we
+# need to retain the module signature which would normally get stripped during
+# packaging. Disable stripping the vendor_dlkm modules to retain the GKI
+# modules' signature. Note, the pixel kernel builds always strip the modules in
+# favor of saving space via the kleaf property: strip_modules = True.
+BOARD_DO_NOT_STRIP_VENDOR_MODULES := true
+
# Prebuilt kernel modules that are *not* listed in vendor_boot.modules.load
BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES = fips140/fips140.ko
BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA = $(foreach k,$(BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES),$(if $(wildcard $(KERNEL_MODULE_DIR)/$(k)), $(k)))
diff --git a/conf/init.gs101.rc b/conf/init.gs101.rc
index 13a01b27..d0aaabe0 100644
--- a/conf/init.gs101.rc
+++ b/conf/init.gs101.rc
@@ -16,12 +16,8 @@ on init
write /proc/vendor_sched/teo_util_threshold "1024 1024 1024"
# Boot time fs tuning
- write /sys/block/sda/queue/iostats 0
write /sys/block/sda/queue/scheduler bfq
write /sys/block/sda/queue/iosched/slice_idle 0
- write /sys/block/sda/queue/nr_requests 256
- write /dev/sys/fs/by-name/userdata/data_io_flag 56
- write /dev/sys/fs/by-name/userdata/node_io_flag 56
chown system system /proc/vendor_sched/groups/bg/set_task_group
chown system system /proc/vendor_sched/groups/cam/set_task_group
@@ -101,15 +97,6 @@ on init
chmod 0220 /proc/vendor_sched/pmu_poll_enable
chmod 0220 /proc/vendor_sched/pmu_poll_time
- wait /dev/block/platform/${ro.boot.boot_devices}
- symlink /dev/block/platform/${ro.boot.boot_devices} /dev/block/bootdevice
-
- # to access UFS/eMMC sysfs directly
- symlink /sys/devices/platform/${ro.boot.boot_devices} /dev/sys/block/bootdevice
-
- # Disable UFS powersaving
- write /dev/sys/block/bootdevice/clkgate_enable 0
-
start vendor.keymaster-3-0
# ZRAM setup
@@ -161,11 +148,11 @@ on init
mkdir /dev/socket/pdx/system/vr/sensors 0775 system system
# Boot time 183626384
- write /proc/vendor_sched/groups/ta/uclamp_min 161
+ write /proc/vendor_sched/groups/ta/uclamp_min 201
write /proc/vendor_sched/groups/ta/prefer_idle 1
- write /proc/vendor_sched/groups/fg/uclamp_min 161
+ write /proc/vendor_sched/groups/fg/uclamp_min 201
write /proc/vendor_sched/groups/fg/prefer_idle 1
- write /proc/vendor_sched/groups/sys/uclamp_min 161
+ write /proc/vendor_sched/groups/sys/uclamp_min 201
write /proc/vendor_sched/groups/sys/prefer_idle 1
# governor setting
@@ -247,6 +234,7 @@ on init
chown system system /dev/logbuffer_pca9468
chown system system /dev/logbuffer_cpm
chown system system /dev/logbuffer_bd
+ chown system system /dev/logbuffer_cpif
# Dump maxfg
chown system system /sys/class/power_supply/maxfg/m5_model_state
@@ -298,6 +286,7 @@ on init
# BatteryHealthData
chown system system /sys/class/power_supply/battery/first_usage_date
+ chown system system /sys/class/power_supply/battery/swelling_data
# Battery Defender
chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_cnt
@@ -323,6 +312,7 @@ on init
chown system system /sys/devices/platform/google,charger/bd_trigger_time
chown system system /sys/devices/platform/google,charger/bd_trigger_voltage
chown system system /sys/devices/platform/google,charger/bd_clear
+ chown system system /sys/devices/platform/google,charger/bd_state
chown system system /sys/devices/platform/google,charger/charge_start_level
chown system system /sys/devices/platform/google,charger/charge_stop_level
chown system system /sys/devices/platform/google,cpm/dc_ctl
@@ -500,15 +490,6 @@ on early-boot
# Wait for insmod_sh to finish all common modules
wait_for_prop vendor.common.modules.ready 1
- # Permission for Health Storage HAL
- chown system system /dev/sys/block/bootdevice/manual_gc
-
- # Permission for Pixelstats
- chown system system /dev/sys/block/bootdevice/slowio_read_cnt
- chown system system /dev/sys/block/bootdevice/slowio_write_cnt
- chown system system /dev/sys/block/bootdevice/slowio_unmap_cnt
- chown system system /dev/sys/block/bootdevice/slowio_sync_cnt
-
on boot
# Allow to access debugfs for system:system
@@ -601,6 +582,7 @@ on fs
chown system system /sys/class/backlight/panel0-backlight/dimming_on
chown system system /sys/class/backlight/panel0-backlight/hbm_mode
chown system system /sys/class/backlight/panel0-backlight/local_hbm_mode
+ chown system system /sys/class/backlight/panel0-backlight/allow_wakeup_by_state_change
chown system system /sys/devices/platform/exynos-drm/primary-panel/gamma
chown system system /sys/devices/platform/exynos-drm/primary-panel/min_vrefresh
chown system system /sys/devices/platform/exynos-drm/primary-panel/idle_delay_ms
@@ -696,20 +678,6 @@ on property:init.svc.vendor.charger=running
write /sys/devices/system/cpu/cpu7/online 0
on property:sys.boot_completed=1
-
- # Runtime fs tuning
- write /sys/block/sda/queue/nr_requests 64
- write /sys/block/sda/queue/iostats 1
- write /dev/sys/fs/by-name/userdata/data_io_flag 8
- write /dev/sys/fs/by-name/userdata/node_io_flag 8
-
- # Permission for Pixelstats
- chown system system /dev/sys/fs/by-name/userdata/compr_written_block
- chown system system /dev/sys/fs/by-name/userdata/compr_saved_block
- chown system system /dev/sys/fs/by-name/userdata/compr_new_inode
- chown system system /dev/sys/fs/by-name/userdata/gc_segment_mode
- chown system system /dev/sys/fs/by-name/userdata/gc_reclaimed_segments
-
# Enable ZRAM on boot_complete
swapon_all /vendor/etc/fstab.${ro.board.platform}
write /proc/sys/vm/swappiness 60
@@ -721,9 +689,6 @@ on property:sys.boot_completed=1
write /proc/sys/vm/dirty_expire_centisecs 3000
write /proc/sys/vm/dirty_background_ratio 10
- # Enable UFS powersaving
- write /dev/sys/block/bootdevice/clkgate_enable 1
-
# Reset DDR frequency
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
write /sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/exynos_data/cancel_boot_freq 1
@@ -884,7 +849,7 @@ on property:vendor.thermal.link_ready=1
# BCL
write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_light_clk_ratio 0x80041c3
write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu2_light_clk_ratio 0xfff041c3
- write /sys/devices/virtual/pmic/mitigation/clock_ratio/gpu_heavy_clk_ratio 0xfff04381
+ write /sys/devices/virtual/pmic/mitigation/clock_ratio/gpu_heavy_clk_ratio 0xfff04385
write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_heavy_clk_ratio 0xfff041c1
write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu2_heavy_clk_ratio 0xfff041c0
write /dev/thermal/tz-by-name/smpl_gm/policy user_space
@@ -974,16 +939,6 @@ on charger
mkdir /dev/thermal/cdev-by-name 0750 system system
start vendor.thermal.symlinks
- # Runtime fs tuning
- write /sys/block/sda/queue/nr_requests 64
- write /sys/block/sda/queue/iostats 1
- write /sys/block/sda/queue/iosched/slice_idle 0
- write /dev/sys/fs/by-name/userdata/data_io_flag 8
- write /dev/sys/fs/by-name/userdata/node_io_flag 8
-
- # Enable UFS powersaving
- write /dev/sys/block/bootdevice/clkgate_enable 1
-
# Cancel boot devfreq and uclamp
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
write /sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/exynos_data/cancel_boot_freq 1
@@ -1003,10 +958,7 @@ on property:vendor.disable.bcl.control=1
on property:vendor.disable.bcl.control=0
write /sys/devices/virtual/pmic/mitigation/instruction/enable_mitigation 1
-# UFS
on property:ro.boot.mode=charger && property:init.svc.vendor.charger=running
- # Enable UFS powersaving in Off Mode Charger
- write /dev/sys/block/bootdevice/clkgate_enable 1
# Disable dock-defend in Off Mode Charger
write /sys/devices/platform/google,charger/dd_state -1
diff --git a/conf/ueventd.gs101.rc b/conf/ueventd.gs101.rc
index 3a8e39d0..4321e738 100644
--- a/conf/ueventd.gs101.rc
+++ b/conf/ueventd.gs101.rc
@@ -55,7 +55,6 @@
/dev/video55 0666 system graphics
/dev/g2d 0660 system graphics
/dev/fimg2d 0666 system graphics
-/dev/i2c-2 0660 system system
/dev/HPD 0660 system system
# wfd
@@ -221,31 +220,24 @@
/sys/devices/platform/11110000.usb/11110000.dwc3/xhci-hcd-exynos.4.auto/usb2/2-1/*/*/leds/* multi_intensity 0664 system system
# Dump Battery EEPROM history for pixelstats
-/sys/devices/platform/10970000.hsi2c/i2c-7/7-0050 eeprom 0644 system system
+/sys/devices/platform/10970000.hsi2c/i2c-8/8-0050 eeprom 0644 system system
/dev/battery_history 0644 system system
# ODPM
/sys/bus/iio/devices/iio:device* enabled_rails 0660 system system
# USB
-/sys/class/typec/port0 power_role 664 root system
-/sys/class/typec/port0 data_role 664 root system
-/sys/class/typec/port0 port_type 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc contaminant_detection 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_accessory_current 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_accessory_enable 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_sink_current 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_sink_enable 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_source_enable 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc update_sdp_enum_timeout 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 contaminant_detection 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_accessory_current 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_accessory_enable 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_sink_current 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_sink_enable 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_source_enable 664 root system
-/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 update_sdp_enum_timeout 664 root system
-/sys/devices/platform/11110000.usb dwc3_exynos_otg_b_sess 664 root system
-/sys/devices/platform/11110000.usb dwc3_exynos_otg_id 664 root system
-/sys/devices/platform/11110000.usb usb_data_enabled 664 root system
-/sys/devices/platform/google,pogo move_data_to_usb 664 root system
+/sys/class/typec/port0 power_role 664 root system
+/sys/class/typec/port0 data_role 664 root system
+/sys/class/typec/port0 port_type 664 root system
+/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 contaminant_detection 664 root system
+/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_accessory_current 664 root system
+/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_accessory_enable 664 root system
+/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_sink_current 664 root system
+/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_sink_enable 664 root system
+/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_source_enable 664 root system
+/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 update_sdp_enum_timeout 664 root system
+/sys/devices/platform/11110000.usb dwc3_exynos_otg_b_sess 664 root system
+/sys/devices/platform/11110000.usb dwc3_exynos_otg_id 664 root system
+/sys/devices/platform/11110000.usb usb_data_enabled 664 root system
+/sys/devices/platform/google,pogo move_data_to_usb 664 root system
diff --git a/default-permissions.xml b/default-permissions.xml
index ff0094a2..fb5ed945 100644
--- a/default-permissions.xml
+++ b/default-permissions.xml
@@ -54,6 +54,8 @@
<exception package="com.google.android.apps.camera.services">
<!-- Camera -->
<permission name="android.permission.CAMERA" fixed="false"/>
+ <!-- Camera Connectivity -->
+ <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
<permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
<permission name="android.permission.BLUETOOTH_CONNECT" fixed="false"/>
<permission name="android.permission.BLUETOOTH_SCAN" fixed="false"/>
diff --git a/device.mk b/device.mk
index c50291b4..f271502e 100644
--- a/device.mk
+++ b/device.mk
@@ -36,6 +36,9 @@ include device/google/gs-common/sota_app/factoryota.mk
include device/google/gs-common/misc_writer/misc_writer.mk
include device/google/gs-common/gyotaku_app/gyotaku.mk
include device/google/gs-common/bootctrl/bootctrl_aidl.mk
+ifneq ($(filter oriole raven bluejay, $(TARGET_PRODUCT)),)
+ include device/google/gs-common/bcmbt/dump/dumplog.mk
+endif
TARGET_BOARD_PLATFORM := gs101
DEVICE_IS_64BIT_ONLY ?= $(if $(filter %_64,$(TARGET_PRODUCT)),true,false)
@@ -66,7 +69,7 @@ PRODUCT_SOONG_NAMESPACES += \
hardware/google/pixel \
device/google/gs101 \
device/google/gs101/powerstats \
- system/chre/host/hal_generic \
+ vendor/google_devices/common/chre/host/hal \
vendor/google/whitechapel/tools \
vendor/google/camera \
vendor/google/interfaces \
@@ -236,6 +239,7 @@ PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.vulkan.version-1_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
+ frameworks/native/data/etc/android.software.contextualsearch.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.contextualsearch.xml \
frameworks/native/data/etc/android.software.vulkan.deqp.level-2023-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
frameworks/native/data/etc/android.software.opengles.deqp.level-2023-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml
@@ -254,8 +258,7 @@ PRODUCT_VENDOR_PROPERTIES += \
PRODUCT_VENDOR_PROPERTIES += \
ro.opengles.version=196610 \
- graphics.gpu.profiler.support=true \
- debug.renderengine.backend=skiaglthreaded
+ graphics.gpu.profiler.support=true
# b/295257834 Add HDR shaders to SurfaceFlinger's pre-warming cache
PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1
@@ -338,24 +341,20 @@ PRODUCT_HOST_PACKAGES += \
PRODUCT_PACKAGES += \
messaging
-# Contexthub HAL
-PRODUCT_PACKAGES += \
- android.hardware.contexthub-service.generic
-
-# CHRE tools
+# CHRE
+## tools
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
PRODUCT_PACKAGES += \
chre_power_test_client \
- chre_test_client
+ chre_test_client \
+ chre_aidl_hal_client
endif
+## HAL
+include device/google/gs-common/chre/hal.mk
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.context_hub.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.context_hub.xml
-
-# Enable the CHRE Daemon
-CHRE_USF_DAEMON_ENABLED := true
PRODUCT_PACKAGES += \
- chre \
preloaded_nanoapps.json
# Filesystem management tools
@@ -512,7 +511,7 @@ PRODUCT_PACKAGES += \
# for now include gralloc here. should come from hardware/google_devices/exynos5
PRODUCT_PACKAGES += \
android.hardware.graphics.mapper@4.0-impl \
- android.hardware.graphics.allocator-V2-service
+ android.hardware.graphics.allocator-V1-service
PRODUCT_PACKAGES += \
android.hardware.memtrack-service.pixel \
@@ -677,10 +676,8 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=tr
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.display_update_imminent_timeout_ms=50
-# force to blend in P3 mode
PRODUCT_PROPERTY_OVERRIDES += \
- persist.sys.sf.native_mode=2 \
- persist.sys.sf.color_mode=9
+ persist.sys.sf.native_mode=2
PRODUCT_COPY_FILES += \
device/google/gs101/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb
@@ -728,30 +725,14 @@ endif
$(call soong_config_set,bigo,soc,gs101)
# 1. Codec 2.0
-# exynos service
-PRODUCT_SOONG_NAMESPACES += vendor/samsung_slsi/codec2
+# for settings used by different C2 hal
+include device/google/gs-common/mediacodec/common/mediacodec_common.mk
+# for Exynos C2 Hal
+include device/google/gs-common/mediacodec/samsung/mediacodec_samsung.mk
PRODUCT_COPY_FILES += \
device/google/gs101/media_codecs_performance_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_c2.xml \
-PRODUCT_PACKAGES += \
- samsung.hardware.media.c2@1.0-service \
- codec2.vendor.base.policy \
- codec2.vendor.ext.policy \
- libExynosC2ComponentStore \
- libExynosC2H264Dec \
- libExynosC2H264Enc \
- libExynosC2HevcDec \
- libExynosC2HevcEnc \
- libExynosC2Mpeg4Dec \
- libExynosC2Mpeg4Enc \
- libExynosC2H263Dec \
- libExynosC2H263Enc \
- libExynosC2Vp8Dec \
- libExynosC2Vp8Enc \
- libExynosC2Vp9Dec \
- libExynosC2Vp9Enc
-
PRODUCT_PROPERTY_OVERRIDES += \
debug.stagefright.c2-poolmask=458752 \
debug.c2.use_dmabufheaps=1 \
@@ -1038,6 +1019,14 @@ PRODUCT_PROPERTY_OVERRIDES += persist.vendor.enable.thermal.genl=true
include device/google/gs-common/edgetpu/edgetpu.mk
# Config variables for TPU chip on device.
$(call soong_config_set,edgetpu_config,chip,abrolhos)
+# Include the edgetpu targets defined the namespaces below into the final image.
+PRODUCT_SOONG_NAMESPACES += \
+ vendor/google_devices/gs101/proprietary/gchips/tpu/metrics \
+ vendor/google_devices/gs101/proprietary/gchips/tpu/tflite_delegate \
+ vendor/google_devices/gs101/proprietary/gchips/tpu/darwinn_logging_service \
+ vendor/google_devices/gs101/proprietary/gchips/tpu/nnapi_stable_aidl \
+ vendor/google_devices/gs101/proprietary/gchips/tpu/aidl \
+ vendor/google_devices/gs101/proprietary/gchips/tpu/hal
# TPU firmware
PRODUCT_PACKAGES += edgetpu-abrolhos.fw
@@ -1127,3 +1116,6 @@ PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=tru
# Hardware Info Collection
include hardware/google/pixel/HardwareInfo/HardwareInfo.mk
+
+# Touch service
+include device/google/gs-common/touch/twoshay/aidl_gs101.mk
diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml
index 0533fb62..e365bbb0 100644
--- a/device_framework_matrix_product.xml
+++ b/device_framework_matrix_product.xml
@@ -85,14 +85,6 @@
</interface>
</hal>
<hal format="aidl" optional="true">
- <name>com.google.input</name>
- <version>2</version>
- <interface>
- <name>ITouchContextService</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="aidl" optional="true">
<name>hardware.qorvo.uwb</name>
<version>2</version>
<interface>
@@ -142,13 +134,6 @@
<instance>sced0</instance>
</interface>
</hal>
- <hal format="aidl" optional="true">
- <name>com.google.pixel.modem.logmasklibrary</name>
- <interface>
- <name>ILiboemserviceProxy</name>
- <instance>default</instance>
- </interface>
- </hal>
<hal format="hidl" optional="true">
<name>vendor.samsung_slsi.telephony.hardware.radioExternal</name>
<version>1.1</version>
diff --git a/dumpstate/dump_gs101.sh b/dumpstate/dump_gs101.sh
index 43eaeaa1..e5a72254 100644
--- a/dumpstate/dump_gs101.sh
+++ b/dumpstate/dump_gs101.sh
@@ -35,11 +35,7 @@ cat "/sys/class/power_supply/main-charger/uevent"
echo "\n------ Power supply property pca9486-mains ------"
cat "/sys/class/power_supply/pca9468-mains/uevent"
echo "\n------ Power supply property tcpm ------"
-if [ -e "/sys/class/power_supply/tcpm-source-psy-i2c-max77759tcpc/uevent" ]; then
- cat "/sys/class/power_supply/tcpm-source-psy-i2c-max77759tcpc/uevent"
-elif [ -e "/sys/class/power_supply/tcpm-source-psy-8-0025/uevent" ]; then
- cat "/sys/class/power_supply/tcpm-source-psy-8-0025/uevent"
-fi
+cat /sys/class/power_supply/tcpm-source-psy-*/uevent
echo "\n------ Power supply property usb ------"
cat "/sys/class/power_supply/usb/uevent"
echo "\n------ Power supply property wireless ------"
@@ -93,10 +89,7 @@ then
fi
echo "\n------ TCPC ------"
-max77759tcpc_path="/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc"
-if [ -e "/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025" ]; then
- max77759tcpc_path="/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025"
-fi
+max77759tcpc_path="/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025"
echo "registers:"
cat $max77759tcpc_path/registers
echo "frs:"
@@ -123,6 +116,8 @@ cat "/dev/logbuffer_pca9468"
echo "\n------ Battery Health ------"
cat "/sys/class/power_supply/battery/health_index_stats"
+echo "\n------ Battery Health SoC Residency ------"
+cat "/sys/class/power_supply/battery/swelling_data"
echo "\n------ BMS ------"
cat "/dev/logbuffer_ssoc"
echo "\n------ TTF ------"
@@ -159,14 +154,15 @@ do
echo "$f: `cat $f`"
done
+echo "\n------ DC_registers dump ------"
+cat "/sys/class/power_supply/pca9468-mains/device/registers_dump"
+echo "\n------ max77759_chg registers dump ------"
+cat "/sys/class/power_supply/main-charger/device/registers_dump"
+echo "\n------ max77729_pmic registers dump ------"
+cat /sys/devices/platform/10d50000.hsi2c/i2c-*/*-0066/registers_dump
+
if [ $build_type = "userdebug" ]
then
- echo "\n------ DC_registers dump ------"
- cat "/sys/class/power_supply/pca9468-mains/device/registers_dump"
- echo "\n------ max77759_chg registers dump ------"
- cat "/d/max77759_chg/registers"
- echo "\n------ max77729_pmic registers dump ------"
- cat "/d/max77729_pmic/registers"
echo "\n------ Charging table dump ------"
cat "/d/google_battery/chg_raw_profile"
@@ -204,9 +200,9 @@ then
fi
echo "\n------ Battery EEPROM ------"
-if [ -e "/sys/devices/platform/10970000.hsi2c/i2c-7/7-0050/eeprom" ]
+if [ -e "/sys/devices/platform/10970000.hsi2c/i2c-8/8-0050/eeprom" ]
then
- xxd /sys/devices/platform/10970000.hsi2c/i2c-7/7-0050/eeprom
+ xxd /sys/devices/platform/10970000.hsi2c/i2c-8/8-0050/eeprom
fi
echo "\n------ Charger Stats ------"
diff --git a/location/gps.cer b/location/gps.cer
index 934e0c5c..eab842b3 100644
--- a/location/gps.cer
+++ b/location/gps.cer
@@ -159,3 +159,17 @@ Op9P1ZW2kjqv5D2+q/qtaePAyHn3B05UZrQYUmx7LaHNO7op6dZgCdoR0sVsR+Fc
Zyr0AhgiuTWrjtUEOGx2qJVwAsHkpqtlN+DaGT08dT64LvIf0bfGvmtm++/WEDWJ
HInwg85pGm+sEkYbYFRBD0woPBsL3g==
-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw
+CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp
+Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2
+MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ
+bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG
+ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS
+7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp
+0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS
+B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49
+BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ
+LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4
+DXZDjC5Ty3zfDBeWUA==
+-----END CERTIFICATE-----
diff --git a/manifest.xml b/manifest.xml
index fdc85f37..02a3b593 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -34,13 +34,5 @@
<name>android.hardware.boot</name>
<fqname>IBootControl/default</fqname>
</hal>
- <hal format="aidl">
- <name>com.google.input</name>
- <version>2</version>
- <interface>
- <name>ITouchContextService</name>
- <instance>default</instance>
- </interface>
- </hal>
<kernel target-level="6"/>
</manifest>
diff --git a/manifest_64.xml b/manifest_64.xml
index 5f6d83ae..d8d7b111 100644
--- a/manifest_64.xml
+++ b/manifest_64.xml
@@ -26,13 +26,5 @@
<transport>hwbinder</transport>
<fqname>@1.3::IDevice/google-edgetpu</fqname>
</hal>
- <hal format="aidl">
- <name>com.google.input</name>
- <version>2</version>
- <interface>
- <name>ITouchContextService</name>
- <instance>default</instance>
- </interface>
- </hal>
<kernel target-level="6"/>
</manifest>
diff --git a/manifest_media.xml b/manifest_media.xml
index 3ed9e247..38e56ba2 100644
--- a/manifest_media.xml
+++ b/manifest_media.xml
@@ -5,8 +5,16 @@
<version>1.0</version>
<interface>
<name>IComponentStore</name>
- <instance>default</instance>
<instance>default1</instance>
</interface>
</hal>
+ <hal format="hidl">
+ <name>android.hardware.media.c2</name>
+ <transport>hwbinder</transport>
+ <version>1.2</version>
+ <interface>
+ <name>IComponentStore</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
</manifest>
diff --git a/manifest_media_aosp.xml b/manifest_media_aosp.xml
index 3bc347c9..9a1a3dba 100644
--- a/manifest_media_aosp.xml
+++ b/manifest_media_aosp.xml
@@ -2,7 +2,7 @@
<hal format="hidl">
<name>android.hardware.media.c2</name>
<transport>hwbinder</transport>
- <version>1.0</version>
+ <version>1.2</version>
<interface>
<name>IComponentStore</name>
<instance>default</instance>
diff --git a/media_codecs_performance_c2.xml b/media_codecs_performance_c2.xml
index fc03c53d..49f131f8 100644
--- a/media_codecs_performance_c2.xml
+++ b/media_codecs_performance_c2.xml
@@ -175,10 +175,10 @@
<Limit name="measured-frame-rate-1280x720" range="38-40" />
</MediaCodec>
<MediaCodec name="c2.android.av1-dav1d.decoder" type="video/av01" update="true">
- <Limit name="measured-frame-rate-352x288" range="353-362" />
- <Limit name="measured-frame-rate-640x360" range="178-210" />
- <Limit name="measured-frame-rate-720x480" range="101-129" />
- <Limit name="measured-frame-rate-1280x720" range="38-40" />
+ <Limit name="measured-frame-rate-352x288" range="735-974" />
+ <Limit name="measured-frame-rate-640x360" range="426-627" />
+ <Limit name="measured-frame-rate-720x480" range="406-434" />
+ <Limit name="measured-frame-rate-1280x720" range="148-159" />
</MediaCodec>
</Decoders>
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index bd9ebd61..a32fd947 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -297,6 +297,7 @@
<item>com.zhiliaoapp.musically:0.07</item>
<item>com.bilibili.app.in:0.07</item>
<item>com.twitter.android:0.07</item>
+ <item>com.google.android.youtube:0.07</item>
</string-array>
<!-- Pre-scale volume at volume step 1 for Absolute Volume -->
diff --git a/pixelstats/pixelstats-vendor.gs101.rc b/pixelstats/pixelstats-vendor.gs101.rc
index 70d875ea..4c8ca20f 100644
--- a/pixelstats/pixelstats-vendor.gs101.rc
+++ b/pixelstats/pixelstats-vendor.gs101.rc
@@ -1,4 +1,5 @@
on property:sys.boot_completed=1
+ chown system system /sys/class/power_supply/maxfg/fg_learning_events
start vendor.pixelstats_vendor
on post-fs-data
chown system system /sys/kernel/metrics/irq/stats_reset
diff --git a/pixelstats/service.cpp b/pixelstats/service.cpp
index a9397403..d4b803aa 100644
--- a/pixelstats/service.cpp
+++ b/pixelstats/service.cpp
@@ -69,12 +69,23 @@ const struct SysfsCollector::SysfsPaths sysfs_paths = {
"/sys/kernel/metrics/thermal/tr_by_group/spmic/stats_reset"
}
},
- .GMSRPath = "/sys/class/power_supply/maxfg/gmsr"
+ .GMSRPath = {
+ "/sys/class/power_supply/maxfg/gmsr",
+ "/sys/class/power_supply/maxfg_base/gmsr",
+ },
};
const struct UeventListener::UeventPaths ueventPaths = {
.AudioUevent = "/devices/virtual/amcs/amcs",
- .TypeCPartnerUevent = "PRODUCT_TYPE="};
+ .TypeCPartnerUevent = "PRODUCT_TYPE=",
+ .FGLearningPath = {
+ "/sys/class/power_supply/maxfg/fg_learning_events"
+ },
+ .FwUpdatePath = "",
+ .FGModelLoadingPath = {
+ "/sys/class/power_supply/maxfg/m5_model_state"
+ }
+};
int main() {
LOG(INFO) << "starting PixelStats";
diff --git a/powerstats/Gs101CommonDataProviders.cpp b/powerstats/Gs101CommonDataProviders.cpp
index 035810b4..615bb164 100644
--- a/powerstats/Gs101CommonDataProviders.cpp
+++ b/powerstats/Gs101CommonDataProviders.cpp
@@ -18,6 +18,7 @@
#include <Gs101CommonDataProviders.h>
#include "AocStateResidencyDataProvider.h"
#include "DevfreqStateResidencyDataProvider.h"
+#include <DisplayMrrStateResidencyDataProvider.h>
#include "DvfsStateResidencyDataProvider.h"
#include "UfsStateResidencyDataProvider.h"
#include <dataproviders/GenericStateResidencyDataProvider.h>
@@ -34,6 +35,7 @@
using aidl::android::hardware::power::stats::AocStateResidencyDataProvider;
using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider;
+using aidl::android::hardware::power::stats::DisplayMrrStateResidencyDataProvider;
using aidl::android::hardware::power::stats::DvfsStateResidencyDataProvider;
using aidl::android::hardware::power::stats::UfsStateResidencyDataProvider;
using aidl::android::hardware::power::stats::EnergyConsumerType;
@@ -669,6 +671,11 @@ void addPixelStateResidencyDataProvider(std::shared_ptr<PowerStats> p) {
p->addStateResidencyDataProvider(std::move(pixelSdp));
}
+void addDisplayMrr(std::shared_ptr<PowerStats> p) {
+ p->addStateResidencyDataProvider(std::make_unique<DisplayMrrStateResidencyDataProvider>(
+ "Display", "/sys/class/drm/card0/device/primary-panel/"));
+}
+
void addGs101CommonDataProviders(std::shared_ptr<PowerStats> p) {
setEnergyMeter(p);
diff --git a/powerstats/include/Gs101CommonDataProviders.h b/powerstats/include/Gs101CommonDataProviders.h
index 98e69538..469d5143 100644
--- a/powerstats/include/Gs101CommonDataProviders.h
+++ b/powerstats/include/Gs101CommonDataProviders.h
@@ -22,4 +22,5 @@ using aidl::android::hardware::power::stats::PowerStats;
void addGs101CommonDataProviders(std::shared_ptr<PowerStats> p);
+void addDisplayMrr(std::shared_ptr<PowerStats> p);
void addNFC(std::shared_ptr<PowerStats> p, const std::string& path);
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index 7a58d7d4..454d7f89 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -159,4 +159,12 @@
regulatory approval (for example, FCC pre-approval is required according to "594280 D01
Software Configuration Control v02r01").-->
<bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultGeneric">true</bool>
+
+ <!-- Boolean indicating performing a partial initial scan is enabled -->
+ <bool translatable="false" name="config_wifiEnablePartialInitialScan">true</bool>
+
+ <!-- Configure the max number of new channels to add into the initial partial scan list per network.
+ If equals to 0, it means there's no limit on the max number of channels to include per network.-->
+ <integer translatable="false" name="config_wifiInitialPartialScanMaxNewChannelsPerNetwork">3</integer>
+
</resources>
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp
index a898b053..b8c5c8ea 100644
--- a/usb/usb/Usb.cpp
+++ b/usb/usb/Usb.cpp
@@ -564,6 +564,11 @@ Usb::Usb()
ALOGE("pthread_condattr_destroy failed: %s", strerror(errno));
abort();
}
+
+ ALOGI("feature flag enable_usb_data_compliance_warning: %d",
+ usb_flags::enable_usb_data_compliance_warning());
+ ALOGI("feature flag enable_input_power_limited_warning: %d",
+ usb_flags::enable_input_power_limited_warning());
}
ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role,
diff --git a/usb/usb/UsbDataSessionMonitor.cpp b/usb/usb/UsbDataSessionMonitor.cpp
index 77defb30..bff52f06 100644
--- a/usb/usb/UsbDataSessionMonitor.cpp
+++ b/usb/usb/UsbDataSessionMonitor.cpp
@@ -26,6 +26,7 @@
#include <pixelstats/StatsHelper.h>
#include <pixelusb/CommonUtils.h>
#include <sys/epoll.h>
+#include <sys/timerfd.h>
#include <utils/Log.h>
#include <regex>
@@ -48,6 +49,9 @@ namespace usb {
#define UEVENT_MSG_LEN 2048
#define USB_STATE_MAX_LEN 20
#define DATA_ROLE_MAX_LEN 10
+#define WARNING_SURFACE_DELAY_SEC 5
+#define ENUM_FAIL_DEFAULT_COUNT_THRESHOLD 3
+#define DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD 5
constexpr char kUdcConfigfsPath[] = "/config/usb_gadget/g1/UDC";
constexpr char kNotAttachedState[] = "not attached\n";
@@ -115,6 +119,15 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
if (addEpollFd(epollFd, ueventFd))
abort();
+ unique_fd timerFd(timerfd_create(CLOCK_BOOTTIME, TFD_NONBLOCK));
+ if (timerFd.get() == -1) {
+ ALOGE("create timerFd failed");
+ abort();
+ }
+
+ if (addEpollFd(epollFd, timerFd))
+ abort();
+
if (addEpollFile(epollFd.get(), dataRolePath, mDataRoleFd) != 0) {
ALOGE("monitor data role failed");
abort();
@@ -139,6 +152,7 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
mEpollFd = std::move(epollFd);
mUeventFd = std::move(ueventFd);
+ mTimerFd = std::move(timerFd);
mUpdatePortStatusCb = updatePortStatusCb;
if (ReadFileToString(kUdcConfigfsPath, &udc) && !udc.empty())
@@ -150,6 +164,9 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
ALOGE("pthread creation failed %d", errno);
abort();
}
+
+ ALOGI("feature flag enable_report_usb_data_compliance_warning: %d",
+ usb_flags::enable_report_usb_data_compliance_warning());
}
UsbDataSessionMonitor::~UsbDataSessionMonitor() {}
@@ -223,13 +240,55 @@ void UsbDataSessionMonitor::notifyComplianceWarning() {
void UsbDataSessionMonitor::evaluateComplianceWarning() {
std::set<ComplianceWarning> newWarningSet;
-
- // TODO: add heuristics and update newWarningSet
- if (mDataRole == PortDataRole::DEVICE && mUdcBind) {
- } else if (mDataRole == PortDataRole::HOST) {
+ int elapsedTimeSec;
+
+ elapsedTimeSec =
+ std::chrono::duration_cast<std::chrono::seconds>(boot_clock::now() - mDataSessionStart)
+ .count();
+
+ if (elapsedTimeSec >= WARNING_SURFACE_DELAY_SEC) {
+ if (mDataRole == PortDataRole::DEVICE && mUdcBind) {
+ int configuredCount = std::count(mDeviceState.states.begin(),
+ mDeviceState.states.end(), kConfiguredState);
+ int defaultCount =
+ std::count(mDeviceState.states.begin(), mDeviceState.states.end(), kDefaultState);
+
+ if (configuredCount == 0 && defaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD)
+ newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL);
+
+ if (configuredCount > DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD)
+ newWarningSet.insert(ComplianceWarning::FLAKY_CONNECTION);
+ } else if (mDataRole == PortDataRole::HOST) {
+ int host1StateCount = mHost1State.states.size();
+ int host1ConfiguredCount =
+ std::count(mHost1State.states.begin(), mHost1State.states.end(), kConfiguredState);
+ int host1DefaultCount =
+ std::count(mHost1State.states.begin(), mHost1State.states.end(), kDefaultState);
+ int host2StateCount = mHost2State.states.size();
+ int host2ConfiguredCount =
+ std::count(mHost2State.states.begin(), mHost2State.states.end(), kConfiguredState);
+ int host2DefaultCount =
+ std::count(mHost2State.states.begin(), mHost2State.states.end(), kDefaultState);
+
+ if (host1ConfiguredCount == 0 && host2ConfiguredCount == 0 &&
+ (host1DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD ||
+ host2DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD))
+ newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL);
+
+ if (host1StateCount == 1 && mHost1State.states.front() == kNotAttachedState &&
+ host2StateCount == 1 && mHost2State.states.front() == kNotAttachedState)
+ newWarningSet.insert(ComplianceWarning::MISSING_DATA_LINES);
+ }
}
if (newWarningSet != mWarningSet) {
+ std::string newWarningString;
+
+ for (auto e : newWarningSet) {
+ newWarningString += toString(e) + " ";
+ }
+ ALOGI("Usb data compliance warning changed to: %s", newWarningString.c_str());
+
mWarningSet = newWarningSet;
notifyComplianceWarning();
}
@@ -259,6 +318,26 @@ void UsbDataSessionMonitor::handleDeviceStateEvent(struct usbDeviceState *device
evaluateComplianceWarning();
}
+void UsbDataSessionMonitor::setupNewSession() {
+ mWarningSet.clear();
+ mDataSessionStart = boot_clock::now();
+
+ if (mDataRole == PortDataRole::DEVICE) {
+ clearDeviceStateEvents(&mDeviceState);
+ } else if (mDataRole == PortDataRole::HOST) {
+ clearDeviceStateEvents(&mHost1State);
+ clearDeviceStateEvents(&mHost2State);
+ }
+
+ if (mDataRole != PortDataRole::NONE) {
+ struct itimerspec delay = itimerspec();
+ delay.it_value.tv_sec = WARNING_SURFACE_DELAY_SEC;
+ int ret = timerfd_settime(mTimerFd.get(), 0, &delay, NULL);
+ if (ret < 0)
+ ALOGE("timerfd_settime failed err:%d", errno);
+ }
+}
+
void UsbDataSessionMonitor::handleDataRoleEvent() {
int n;
PortDataRole newDataRole;
@@ -283,17 +362,8 @@ void UsbDataSessionMonitor::handleDataRoleEvent() {
reportUsbDataSessionMetrics();
}
- // Set up for the new data session
- mWarningSet.clear();
mDataRole = newDataRole;
- mDataSessionStart = boot_clock::now();
-
- if (newDataRole == PortDataRole::DEVICE) {
- clearDeviceStateEvents(&mDeviceState);
- } else if (newDataRole == PortDataRole::HOST) {
- clearDeviceStateEvents(&mHost1State);
- clearDeviceStateEvents(&mHost2State);
- }
+ setupNewSession();
}
}
@@ -328,8 +398,7 @@ void UsbDataSessionMonitor::updateUdcBindStatus(const std::string &devname) {
} else if (!mUdcBind && newUdcBind) {
// Gadget soft pullup: reset and start accounting for a new data session.
- clearDeviceStateEvents(&mDeviceState);
- mDataSessionStart = boot_clock::now();
+ setupNewSession();
}
}
@@ -383,6 +452,23 @@ void UsbDataSessionMonitor::handleUevent() {
}
}
+void UsbDataSessionMonitor::handleTimerEvent() {
+ int byteRead;
+ uint64_t numExpiration;
+
+ byteRead = read(mTimerFd.get(), &numExpiration, sizeof(numExpiration));
+
+ if (byteRead != sizeof(numExpiration)) {
+ ALOGE("incorrect read size");
+ }
+
+ if (numExpiration != 1) {
+ ALOGE("incorrect expiration count");
+ }
+
+ evaluateComplianceWarning();
+}
+
void *UsbDataSessionMonitor::monitorThread(void *param) {
UsbDataSessionMonitor *monitor = (UsbDataSessionMonitor *)param;
struct epoll_event events[64];
@@ -400,6 +486,8 @@ void *UsbDataSessionMonitor::monitorThread(void *param) {
for (int n = 0; n < nevents; ++n) {
if (events[n].data.fd == monitor->mUeventFd.get()) {
monitor->handleUevent();
+ } else if (events[n].data.fd == monitor->mTimerFd.get()) {
+ monitor->handleTimerEvent();
} else if (events[n].data.fd == monitor->mDataRoleFd.get()) {
monitor->handleDataRoleEvent();
} else if (events[n].data.fd == monitor->mDeviceState.fd.get()) {
diff --git a/usb/usb/UsbDataSessionMonitor.h b/usb/usb/UsbDataSessionMonitor.h
index 596f378f..aced8a48 100644
--- a/usb/usb/UsbDataSessionMonitor.h
+++ b/usb/usb/UsbDataSessionMonitor.h
@@ -75,9 +75,11 @@ class UsbDataSessionMonitor {
static void *monitorThread(void *param);
void handleUevent();
+ void handleTimerEvent();
void handleDataRoleEvent();
void handleDeviceStateEvent(struct usbDeviceState *deviceState);
void clearDeviceStateEvents(struct usbDeviceState *deviceState);
+ void setupNewSession();
void reportUsbDataSessionMetrics();
void evaluateComplianceWarning();
void notifyComplianceWarning();
@@ -86,6 +88,7 @@ class UsbDataSessionMonitor {
pthread_t mMonitor;
unique_fd mEpollFd;
unique_fd mUeventFd;
+ unique_fd mTimerFd;
unique_fd mDataRoleFd;
struct usbDeviceState mDeviceState;
struct usbDeviceState mHost1State;