Merge sc-dev-plus-aosp-without-vendor@7634622
Merged-In: I49460941a0fc351f1449b879bd5fc650e328fa04 Change-Id: I7049887bd66a9a6e9f80d75cd37654d0ddb64705
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
PRODUCT_MAKEFILES := \
|
||||
$(LOCAL_DIR)/aosp_bramble.mk \
|
||||
$(LOCAL_DIR)/aosp_bramble_64.mk \
|
||||
$(LOCAL_DIR)/aosp_bramble_hwasan.mk \
|
||||
|
||||
COMMON_LUNCH_CHOICES := \
|
||||
|
||||
@@ -49,3 +49,11 @@
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.vibrator@1.3-service.bramble.rc)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.vibrator@1.3-service.bramble)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.vibrator@1.3-service.bramble.xml)
|
||||
|
||||
# Update to USB HAL 1.3
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.usb@1.2-service.bramble)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.usb@1.2-service.bramble.rc)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.usb@1.2-service.bramble.xml)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.usb@1.3-service.bramble)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.usb@1.3-service.bramble.rc)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.usb@1.3-service.bramble.xml)
|
||||
|
||||
@@ -17,8 +17,12 @@
|
||||
#
|
||||
# All components inherited here go to system image
|
||||
#
|
||||
ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
|
||||
else
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit_only.mk)
|
||||
endif
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_system.mk)
|
||||
|
||||
# Enable mainline checking
|
||||
PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := strict
|
||||
|
||||
19
aosp_bramble_64.mk
Normal file
19
aosp_bramble_64.mk
Normal file
@@ -0,0 +1,19 @@
|
||||
#
|
||||
# Copyright 2021 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
$(call inherit-product, device/google/bramble/aosp_bramble.mk)
|
||||
PRODUCT_NAME := aosp_bramble_64
|
||||
PRODUCT_MODEL := Bramble 64-bit only
|
||||
@@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<globalConfiguration speaker_drc_enabled="true" call_screen_mode_supported="true"/>
|
||||
|
||||
<modules>
|
||||
@@ -33,13 +33,13 @@
|
||||
<mixPort name="voip_rx" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST">
|
||||
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW|AUDIO_OUTPUT_FLAG_FAST">
|
||||
<mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
@@ -47,62 +47,67 @@
|
||||
<mixPort name="deep_buffer" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
|
||||
samplingRates="44100,48000"
|
||||
samplingRates="44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="compressed_offload" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING">
|
||||
flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD">
|
||||
<profile name="" format="AUDIO_FORMAT_MP3"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_LC"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
</mixPort>
|
||||
<mixPort name="voice_tx" role="source">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
|
||||
<mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="incall_music_uplink" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000"
|
||||
samplingRates="8000 16000 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="primary input" role="sink" maxActiveCount="0">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="hotword input" role="sink" flags="AUDIO_INPUT_FLAG_HW_HOTWORD">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="hifi_input" role="sink" />
|
||||
<mixPort name="voice_rx" role="sink">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
|
||||
samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="voip_tx" role="sink"
|
||||
flags="AUDIO_INPUT_FLAG_VOIP_TX">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
|
||||
samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
|
||||
</mixPort>
|
||||
</mixPorts>
|
||||
<devicePorts>
|
||||
@@ -133,17 +138,17 @@
|
||||
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
|
||||
encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="44100,48000,88200,96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</devicePort>
|
||||
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
|
||||
encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="44100,48000,88200,96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</devicePort>
|
||||
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
|
||||
encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="44100,48000,88200,96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</devicePort>
|
||||
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
|
||||
</devicePort>
|
||||
@@ -188,6 +193,8 @@
|
||||
sources="voice_tx,incall_music_uplink"/>
|
||||
<route type="mix" sink="primary input"
|
||||
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
|
||||
<route type="mix" sink="hotword input"
|
||||
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
|
||||
<route type="mix" sink="fast input"
|
||||
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
|
||||
<route type="mix" sink="voice_rx"
|
||||
@@ -206,9 +213,6 @@
|
||||
</routes>
|
||||
</module>
|
||||
|
||||
<!-- A2DP Input Audio HAL -->
|
||||
<xi:include href="a2dp_in_audio_policy_configuration.xml"/>
|
||||
|
||||
<!-- Usb Audio HAL -->
|
||||
<module name="usb" halVersion="2.0">
|
||||
<mixPorts>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<globalConfiguration speaker_drc_enabled="true"/>
|
||||
|
||||
<modules>
|
||||
@@ -30,11 +30,11 @@
|
||||
</attachedDevices>
|
||||
<defaultOutputDevice>Speaker</defaultOutputDevice>
|
||||
<mixPorts>
|
||||
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST">
|
||||
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW|AUDIO_OUTPUT_FLAG_FAST">
|
||||
<mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
@@ -42,67 +42,67 @@
|
||||
<mixPort name="deep_buffer" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
|
||||
samplingRates="44100,48000"
|
||||
samplingRates="44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="compressed_offload" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING">
|
||||
flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD">
|
||||
<profile name="" format="AUDIO_FORMAT_MP3"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_LC"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
</mixPort>
|
||||
<mixPort name="voice_tx" role="source">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
|
||||
<mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="voip_rx" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="incall_music_uplink" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000"
|
||||
samplingRates="8000 16000 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="primary input" role="sink">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="hifi_input" role="sink" />
|
||||
<mixPort name="voice_rx" role="sink">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
|
||||
samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="voip_tx" role="sink"
|
||||
flags="AUDIO_INPUT_FLAG_VOIP_TX">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
|
||||
samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
|
||||
</mixPort>
|
||||
</mixPorts>
|
||||
<devicePorts>
|
||||
@@ -186,7 +186,7 @@
|
||||
</module>
|
||||
|
||||
<!-- A2DP Input Audio HAL -->
|
||||
<xi:include href="a2dp_in_audio_policy_configuration.xml"/>
|
||||
<xi:include href="a2dp_in_audio_policy_configuration_7_0.xml"/>
|
||||
|
||||
<!-- Usb Audio HAL -->
|
||||
<module name="usb" halVersion="2.0">
|
||||
@@ -212,7 +212,7 @@
|
||||
<xi:include href="r_submix_audio_policy_configuration.xml"/>
|
||||
|
||||
<!-- Bluetooth Audio HAL -->
|
||||
<xi:include href="bluetooth_audio_policy_configuration.xml"/>
|
||||
<xi:include href="bluetooth_audio_policy_configuration_7_0.xml"/>
|
||||
|
||||
</modules>
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<globalConfiguration speaker_drc_enabled="true"/>
|
||||
|
||||
<modules>
|
||||
@@ -30,11 +30,11 @@
|
||||
</attachedDevices>
|
||||
<defaultOutputDevice>Speaker</defaultOutputDevice>
|
||||
<mixPorts>
|
||||
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST">
|
||||
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW|AUDIO_OUTPUT_FLAG_FAST">
|
||||
<mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
@@ -42,67 +42,67 @@
|
||||
<mixPort name="deep_buffer" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
|
||||
samplingRates="44100,48000"
|
||||
samplingRates="44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="compressed_offload" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING">
|
||||
flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD">
|
||||
<profile name="" format="AUDIO_FORMAT_MP3"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_LC"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
<profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
|
||||
</mixPort>
|
||||
<mixPort name="voice_tx" role="source">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
|
||||
<mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="voip_rx" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="incall_music_uplink" role="source"
|
||||
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000"
|
||||
samplingRates="8000 16000 48000"
|
||||
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="primary input" role="sink">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="hifi_input" role="sink" />
|
||||
<mixPort name="voice_rx" role="sink">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
|
||||
samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
|
||||
</mixPort>
|
||||
<mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
|
||||
channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_2"/>
|
||||
</mixPort>
|
||||
<mixPort name="voip_tx" role="sink"
|
||||
flags="AUDIO_INPUT_FLAG_VOIP_TX">
|
||||
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
|
||||
samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
|
||||
</mixPort>
|
||||
</mixPorts>
|
||||
<devicePorts>
|
||||
@@ -186,7 +186,7 @@
|
||||
</module>
|
||||
|
||||
<!-- A2DP Audio HAL -->
|
||||
<xi:include href="a2dp_audio_policy_configuration.xml"/>
|
||||
<xi:include href="a2dp_audio_policy_configuration_7_0.xml"/>
|
||||
|
||||
<!-- Usb Audio HAL -->
|
||||
<module name="usb" halVersion="2.0">
|
||||
@@ -212,7 +212,7 @@
|
||||
<xi:include href="r_submix_audio_policy_configuration.xml"/>
|
||||
|
||||
<!-- Hearing aid Audio HAL -->
|
||||
<xi:include href="hearing_aid_audio_policy_configuration.xml"/>
|
||||
<xi:include href="hearing_aid_audio_policy_configuration_7_0.xml"/>
|
||||
|
||||
</modules>
|
||||
|
||||
|
||||
@@ -256,23 +256,23 @@
|
||||
</path>
|
||||
|
||||
<path name="listen-ape-handset-mic">
|
||||
<ctl name="ADC1 Capture Volume" value="23" />
|
||||
<ctl name="ADC2 Capture Volume" value="23" />
|
||||
<ctl name="ADC1 Capture Volume" id="0" value="23" />
|
||||
<ctl name="PRI_TDM_TX_0 Channels" value="One" />
|
||||
<ctl name="Sto1 ADC MIXL BargeIn DMIC Switch" value="1" />
|
||||
</path>
|
||||
|
||||
<path name="listen-ape-handset-dmic">
|
||||
<ctl name="ADC1 Capture Volume" value="23"/>
|
||||
<ctl name="ADC2 Capture Volume" value="23"/>
|
||||
<ctl name="ADC1 Capture Volume" id="0" value="23"/>
|
||||
<ctl name="ADC2 Capture Volume" id="0" value="23"/>
|
||||
<ctl name="PRI_TDM_TX_0 Channels" value="Two"/>
|
||||
<ctl name="Sto1 ADC MIXL BargeIn DMIC Switch" value="1" />
|
||||
<ctl name="Sto2 ADC MIXL BargeIn DMIC Switch" value="1" />
|
||||
</path>
|
||||
|
||||
<path name="listen-ape-handset-tmic">
|
||||
<ctl name="ADC1 Capture Volume" value="23" />
|
||||
<ctl name="ADC2 Capture Volume" value="23" />
|
||||
<ctl name="ADC1 Capture Volume" id="0" value="23" />
|
||||
<ctl name="ADC2 Capture Volume" id="0" value="23" />
|
||||
<ctl name="ADC2 Capture Volume" id="1" value="23" />
|
||||
<ctl name="PRI_TDM_TX_0 Channels" value="Three" />
|
||||
</path>
|
||||
|
||||
|
||||
@@ -13,15 +13,18 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
ifdef PHONE_CAR_BOARD_CONFIG
|
||||
include $(PHONE_CAR_BOARD_CONFIG)
|
||||
else
|
||||
TARGET_BOOTLOADER_BOARD_NAME := bramble
|
||||
TARGET_SCREEN_DENSITY := 420
|
||||
TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
|
||||
USES_DEVICE_GOOGLE_BRAMBLE := true
|
||||
|
||||
TARGET_BOOTLOADER_BOARD_NAME := bramble
|
||||
TARGET_SCREEN_DENSITY := 420
|
||||
TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
|
||||
USES_DEVICE_GOOGLE_BRAMBLE := true
|
||||
include device/google/redbull/BoardConfig-common.mk
|
||||
|
||||
include device/google/redbull/BoardConfig-common.mk
|
||||
# Testing related defines
|
||||
#BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/b5-setup.sh
|
||||
|
||||
# Testing related defines
|
||||
#BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/b5-setup.sh
|
||||
|
||||
-include vendor/google_devices/$(TARGET_BOOTLOADER_BOARD_NAME)/proprietary/BoardConfigVendor.mk
|
||||
-include vendor/google_devices/$(TARGET_BOOTLOADER_BOARD_NAME)/proprietary/BoardConfigVendor.mk
|
||||
endif
|
||||
|
||||
@@ -147,6 +147,20 @@
|
||||
<item>450.0</item>
|
||||
</array>
|
||||
|
||||
<!-- Nonlinear coefficients for maximum panel brightness of 450 nits -->
|
||||
<string-array name="config_reduceBrightColorsCoefficientsNonlinear">
|
||||
<!-- a-coefficient --> <item>-0.4429953456</item>
|
||||
<!-- b-coefficient --> <item>-0.2434077725</item>
|
||||
<!-- y-intercept --> <item>0.9809063061</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Linear coefficients for maximum panel brightness of 450 nits -->
|
||||
<string-array name="config_reduceBrightColorsCoefficients">
|
||||
<!-- a-coefficient --> <item>-0.000000000000001</item>
|
||||
<!-- b-coefficient --> <item>-0.955555555555554</item>
|
||||
<!-- y-intercept --> <item>1.000000000000000</item>
|
||||
</string-array>
|
||||
|
||||
<!-- The nominal white coordinates, in CIE1931 XYZ color space, for Display White Balance to
|
||||
use in its calculations. AWB will adapt this white point to the target ambient white
|
||||
point. The array must include a total of 3 float values (X, Y, Z) -->
|
||||
@@ -207,6 +221,13 @@
|
||||
<!-- Radius of the software rounded corners. -->
|
||||
<dimen name="rounded_corner_radius">108px</dimen>
|
||||
|
||||
<!-- Top adjustment for the software rounded corners since corners are not perfectly
|
||||
round. This value is used when retrieving the "radius" of the rounded corner in cases
|
||||
where the exact bezier curve cannot be retrieved. This value will be subtracted from
|
||||
rounded_corner_radius to more accurately provide a "radius" for the rounded corners.
|
||||
-->
|
||||
<dimen name="rounded_corner_radius_adjustment">16px</dimen>
|
||||
|
||||
<!-- Height of the status bar in portrait. The height should be
|
||||
Max((status bar content height + waterfall top size), top cutout size) -->
|
||||
<dimen name="status_bar_height_portrait">145px</dimen>
|
||||
|
||||
@@ -174,7 +174,16 @@
|
||||
<item name="wifi.controller.rx">118</item>
|
||||
<!-- Tx current for wifi radio in mA-->
|
||||
<item name="wifi.controller.tx">331</item>
|
||||
<!-- Operating volatage for wifi radio in mV.-->
|
||||
<!-- Operating voltage for wifi radio in mV.-->
|
||||
<item name="wifi.controller.voltage">3700</item>
|
||||
|
||||
<!-- Idle current for bluetooth in mA.-->
|
||||
<item name="bluetooth.controller.idle">0.01</item>
|
||||
<!-- Rx current for bluetooth in mA.-->
|
||||
<item name="bluetooth.controller.rx">9</item>
|
||||
<!-- Tx current for bluetooth in mA-->
|
||||
<item name="bluetooth.controller.tx">7</item>
|
||||
<!-- Operating voltage for bluetooth in mV.-->
|
||||
<item name="bluetooth.controller.voltage">3300</item>
|
||||
</device>
|
||||
|
||||
|
||||
@@ -93,4 +93,7 @@
|
||||
<string translatable="false" name="config_cameraProtectionExcludedPackages">com.google.android.as</string>
|
||||
|
||||
<bool name="config_enableDisplayCutoutProtection">true</bool>
|
||||
|
||||
<!-- Whether global actions should show an informational message about changes in S -->
|
||||
<bool name="global_actions_show_change_info">true</bool>
|
||||
</resources>
|
||||
|
||||
@@ -37,4 +37,10 @@
|
||||
<dimen name="config_rounded_mask_size_top">136px</dimen>
|
||||
<dimen name="config_rounded_mask_size_bottom">136px</dimen>
|
||||
|
||||
<!-- Location on the screen of the center of the physical power button. -->
|
||||
<dimen name="physical_power_button_center_screen_location_y">575px</dimen>
|
||||
|
||||
<!-- Location on the screen of the center of the physical volume up/down buttons. -->
|
||||
<dimen name="physical_volume_up_button_center_screen_location_y">915px</dimen>
|
||||
<dimen name="physical_volume_down_button_center_screen_location_y">1065px</dimen>
|
||||
</resources>
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
<integer name="unknown_tag_polling_delay">2000</integer>
|
||||
<string name="antenna_blocked_alert_link" translatable="false">https://support.google.com/pixelphone?p=nfc_tag_notification</string>
|
||||
<string-array name="config_skuSupportsSecureNfc" translatable="false">
|
||||
<item>G025E</item>
|
||||
<item>G025I</item>
|
||||
<item>G025H</item>
|
||||
<item>G6QU3</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
||||
@@ -31,6 +31,8 @@ PRODUCT_VENDOR_KERNEL_HEADERS := device/google/redbull-kernel/sm7250/kernel-head
|
||||
include build/make/target/product/iorap_large_memory_config.mk
|
||||
include device/google/redbull/device-common.mk
|
||||
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/compression.mk)
|
||||
|
||||
# LOCAL_PATH is device/google/redbull before this
|
||||
LOCAL_PATH := device/google/bramble
|
||||
|
||||
@@ -49,13 +51,14 @@ PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/audio/audio_policy_configuration_a2dp_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_a2dp_offload_disabled.xml \
|
||||
$(LOCAL_PATH)/audio/audio_policy_configuration_bluetooth_legacy_hal.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_bluetooth_legacy_hal.xml \
|
||||
$(LOCAL_PATH)/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
|
||||
frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
|
||||
frameworks/av/services/audiopolicy/config/a2dp_in_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_in_audio_policy_configuration.xml \
|
||||
frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration.xml \
|
||||
frameworks/av/services/audiopolicy/config/hearing_aid_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/hearing_aid_audio_policy_configuration.xml \
|
||||
frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration_7_0.xml \
|
||||
frameworks/av/services/audiopolicy/config/a2dp_in_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_in_audio_policy_configuration_7_0.xml \
|
||||
frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml \
|
||||
frameworks/av/services/audiopolicy/config/hearing_aid_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/hearing_aid_audio_policy_configuration_7_0.xml \
|
||||
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \
|
||||
frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
|
||||
frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml
|
||||
frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
|
||||
device/google/bramble/displayconfig/display_id_4630946475097398401.xml:$(TARGET_COPY_OUT_VENDOR)/etc/displayconfig/display_id_4630946475097398401.xml
|
||||
|
||||
# Audio ACDB data
|
||||
ifeq ($(wildcard vendor/google_cei/factory/prebuilt/ftm.mk),)
|
||||
@@ -101,7 +104,7 @@ PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/audio/cs35l41/B5mmW/R-cs35l41-mmW-dsp1-spk-diag.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/R-cs35l41-mmW-dsp1-spk-diag.bin
|
||||
|
||||
# Audio CS35L41 speaker calibration tool
|
||||
PRODUCT_PACKAGES += \
|
||||
PRODUCT_PACKAGES_DEBUG += \
|
||||
crus_sp_cal
|
||||
|
||||
ifeq ($(wildcard vendor/google_devices/bramble/proprietary/device-vendor-bramble.mk),)
|
||||
@@ -109,7 +112,7 @@ ifeq ($(wildcard vendor/google_devices/bramble/proprietary/device-vendor-bramble
|
||||
endif
|
||||
|
||||
PRODUCT_PACKAGES += \
|
||||
android.hardware.usb@1.2-service.bramble
|
||||
android.hardware.usb@1.3-service.bramble
|
||||
|
||||
# Vibrator HAL
|
||||
PRODUCT_PACKAGES += \
|
||||
@@ -154,12 +157,6 @@ PRODUCT_PACKAGES += \
|
||||
PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/thermal_info_config_$(PRODUCT_HARDWARE).json:$(TARGET_COPY_OUT_VENDOR)/etc/thermal_info_config.json \
|
||||
|
||||
# Support to disable thermal protection at run time
|
||||
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
|
||||
PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/init.hardware.chamber.rc.userdebug:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.$(PRODUCT_HARDWARE).chamber.rc
|
||||
endif
|
||||
|
||||
# GPS ANTENNA_INFO configuration file
|
||||
#PRODUCT_COPY_FILES += \
|
||||
# $(LOCAL_PATH)/gnss_antenna_info.conf:$(TARGET_COPY_OUT_VENDOR)/etc/gnss_antenna_info.conf
|
||||
@@ -196,3 +193,15 @@ PRODUCT_PACKAGES += \
|
||||
|
||||
# Keyboard bottom padding in dp for portrait mode
|
||||
PRODUCT_PRODUCT_PROPERTIES += ro.com.google.ime.kb_pad_port_b=10
|
||||
|
||||
# Set support hide display cutout feature
|
||||
PRODUCT_PRODUCT_PROPERTIES += \
|
||||
ro.support_hide_display_cutout=true
|
||||
|
||||
PRODUCT_PACKAGES += \
|
||||
NoCutoutOverlay \
|
||||
AvoidAppsInCutoutOverlay
|
||||
|
||||
# (b/183612348): Enable skia reduceOpsTaskSplitting
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
renderthread.skia.reduceopstasksplitting=true
|
||||
|
||||
29
displayconfig/display_id_4630946475097398401.xml
Normal file
29
displayconfig/display_id_4630946475097398401.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
|
||||
|
||||
<!-- Copyright (C) 2020 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<displayConfiguration>
|
||||
<screenBrightnessMap>
|
||||
<point>
|
||||
<value>0.0</value>
|
||||
<nits>2.0</nits>
|
||||
</point>
|
||||
<point>
|
||||
<value>1.0</value>
|
||||
<nits>450.0</nits>
|
||||
</point>
|
||||
</screenBrightnessMap>
|
||||
</displayConfiguration>
|
||||
@@ -34,8 +34,7 @@ LOCAL_SHARED_LIBRARIES := \
|
||||
libdumpstateutil \
|
||||
libhidlbase \
|
||||
liblog \
|
||||
libutils \
|
||||
libpcap
|
||||
libutils
|
||||
|
||||
LOCAL_CFLAGS := -Werror -Wall
|
||||
|
||||
|
||||
@@ -27,8 +27,7 @@
|
||||
#include <log/log.h>
|
||||
#include <pthread.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <pcap.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#define _SVID_SOURCE
|
||||
#include <dirent.h>
|
||||
@@ -45,8 +44,6 @@
|
||||
|
||||
#define DIAG_MDLOG_NUMBER_BUGREPORT "persist.vendor.sys.modem.diag.mdlog_br_num"
|
||||
|
||||
#define UFS_BOOTDEVICE "ro.boot.bootdevice"
|
||||
|
||||
#define TCPDUMP_NUMBER_BUGREPORT "persist.vendor.tcpdump.log.br_num"
|
||||
#define TCPDUMP_PERSIST_PROPERTY "persist.vendor.tcpdump.log.alwayson"
|
||||
|
||||
@@ -54,10 +51,6 @@
|
||||
|
||||
#define VENDOR_VERBOSE_LOGGING_ENABLED_PROPERTY "persist.vendor.verbose_logging_enabled"
|
||||
|
||||
#define TIME_BUFFER 24
|
||||
#define STRING_BUFFER 550
|
||||
#define MAX_PACKET_LENGTH 150
|
||||
|
||||
using android::os::dumpstate::CommandOptions;
|
||||
using android::os::dumpstate::DumpFileToFd;
|
||||
using android::os::dumpstate::PropertiesHelper;
|
||||
@@ -73,13 +66,146 @@ namespace implementation {
|
||||
#define TCPDUMP_LOG_PREFIX "tcpdump"
|
||||
#define EXTENDED_LOG_PREFIX "extended_log_"
|
||||
|
||||
#define BUFSIZE 65536
|
||||
static void copyFile(std::string srcFile, std::string destFile) {
|
||||
uint8_t buffer[BUFSIZE];
|
||||
ssize_t size;
|
||||
|
||||
int fdSrc = open(srcFile.c_str(), O_RDONLY);
|
||||
if (fdSrc < 0) {
|
||||
ALOGD("Failed to open source file %s\n", srcFile.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
int fdDest = open(destFile.c_str(), O_WRONLY | O_CREAT, 0666);
|
||||
if (fdDest < 0) {
|
||||
ALOGD("Failed to open destination file %s\n", destFile.c_str());
|
||||
close(fdSrc);
|
||||
return;
|
||||
}
|
||||
|
||||
ALOGD("Copying %s to %s\n", srcFile.c_str(), destFile.c_str());
|
||||
while ((size = TEMP_FAILURE_RETRY(read(fdSrc, buffer, BUFSIZE))) > 0) {
|
||||
TEMP_FAILURE_RETRY(write(fdDest, buffer, size));
|
||||
}
|
||||
|
||||
close(fdDest);
|
||||
close(fdSrc);
|
||||
}
|
||||
|
||||
struct PosixTarHeader {
|
||||
char name[100]; /* 0 */
|
||||
char mode[8]; /* 100 */
|
||||
char uid[8]; /* 108 */
|
||||
char gid[8]; /* 116 */
|
||||
char size[12]; /* 124 */
|
||||
char mtime[12]; /* 136 */
|
||||
char chksum[8]; /* 148 */
|
||||
char typeflag; /* 156 */
|
||||
char linkname[100]; /* 157 */
|
||||
char magic[6]; /* 257 */
|
||||
char version[2]; /* 259 */
|
||||
char uname[32]; /* 265 */
|
||||
char gname[32]; /* 297 */
|
||||
char devmajor[8]; /* 329 */
|
||||
char devminor[8]; /* 337 */
|
||||
char prefix[155]; /* 345 */
|
||||
char pad[12]; /* 500 */
|
||||
};
|
||||
|
||||
static unsigned int tarCheckSum(PosixTarHeader *header) {
|
||||
unsigned int sum = 0;
|
||||
char *p = (char *)header;
|
||||
char *q = p + sizeof(PosixTarHeader);
|
||||
for (int i = 0; i < 8; i++) {
|
||||
header->chksum[i] = ' ';
|
||||
}
|
||||
while (p < q) {
|
||||
sum += *p++ & 0xff;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
static PosixTarHeader *tarHeader(PosixTarHeader *header, char *fileName, ssize_t fileSize) {
|
||||
memset(header, 0, sizeof(PosixTarHeader));
|
||||
strcpy(header->name, fileName);
|
||||
sprintf(header->mode, "%07o", 0600);
|
||||
sprintf(header->size, "%011llo", (long long unsigned int)fileSize);
|
||||
sprintf(header->mtime, "%011o", 0);
|
||||
header->typeflag = '0';
|
||||
strcpy(header->magic, "ustar");
|
||||
strcpy(header->version, " ");
|
||||
sprintf(header->chksum, "%06o", tarCheckSum(header));
|
||||
return header;
|
||||
}
|
||||
|
||||
static void createTarFile(std::string tarFile, std::string srcDir) {
|
||||
uint8_t buffer[BUFSIZE];
|
||||
struct dirent *dirent;
|
||||
struct stat st;
|
||||
PosixTarHeader header;
|
||||
ssize_t size, tarLen = 0, blockSize = sizeof(PosixTarHeader);
|
||||
char padding = '\0';
|
||||
|
||||
DIR *dirp = opendir(srcDir.c_str());
|
||||
if (dirp == NULL) {
|
||||
ALOGD("Unable to open folder %s\n", srcDir.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
int fdTar = open(tarFile.c_str(), O_WRONLY | O_CREAT, 0666);
|
||||
if (fdTar < 0) {
|
||||
ALOGD("Unable to open file %s\n", tarFile.c_str());
|
||||
closedir(dirp);
|
||||
return;
|
||||
}
|
||||
|
||||
ALOGD("Creating tar file %s\n", tarFile.c_str());
|
||||
while ((dirent = readdir(dirp)) != NULL) {
|
||||
if (dirent->d_name[0] == '.') {
|
||||
continue;
|
||||
}
|
||||
|
||||
std::string path = srcDir + "/" + dirent->d_name;
|
||||
int fd = open(path.c_str(), O_RDONLY);
|
||||
if (fd < 0) {
|
||||
ALOGD("Unable to open file %s\n", path.c_str());
|
||||
continue;
|
||||
}
|
||||
fstat(fd, &st);
|
||||
|
||||
if (TEMP_FAILURE_RETRY(write(fdTar, tarHeader(
|
||||
&header, dirent->d_name, st.st_size), blockSize)) <= 0) {
|
||||
ALOGD("Error while writing file %s, errno=%d\n", tarFile.c_str(), errno);
|
||||
close(fd);
|
||||
continue;
|
||||
}
|
||||
tarLen += blockSize;
|
||||
|
||||
while ((size = TEMP_FAILURE_RETRY(read(fd, buffer, BUFSIZE))) > 0) {
|
||||
write(fdTar, buffer, size);
|
||||
tarLen += size;
|
||||
}
|
||||
|
||||
while (tarLen % blockSize != 0) {
|
||||
write(fdTar, &padding, 1);
|
||||
tarLen++;
|
||||
}
|
||||
close(fd);
|
||||
}
|
||||
close(fdTar);
|
||||
closedir(dirp);
|
||||
}
|
||||
|
||||
static void dumpLogs(int fd, std::string srcDir, std::string destDir,
|
||||
int maxFileNum, const char *logPrefix) {
|
||||
(void) fd;
|
||||
struct dirent **dirent_list = NULL;
|
||||
int num_entries = scandir(srcDir.c_str(),
|
||||
&dirent_list,
|
||||
0,
|
||||
(int (*)(const struct dirent **, const struct dirent **)) alphasort);
|
||||
|
||||
if (!dirent_list) {
|
||||
return;
|
||||
} else if (num_entries <= 0) {
|
||||
@@ -102,14 +228,9 @@ static void dumpLogs(int fd, std::string srcDir, std::string destDir,
|
||||
|
||||
copiedFiles++;
|
||||
|
||||
CommandOptions options = CommandOptions::WithTimeout(120).Build();
|
||||
std::string srcLogFile = srcDir + "/" + dirent_list[i]->d_name;
|
||||
std::string destLogFile = destDir + "/" + dirent_list[i]->d_name;
|
||||
|
||||
std::string copyCmd = "/vendor/bin/cp " + srcLogFile + " " + destLogFile;
|
||||
|
||||
ALOGD("Copying %s to %s\n", srcLogFile.c_str(), destLogFile.c_str());
|
||||
RunCommandToFd(fd, "CP DIAG LOGS", { "/vendor/bin/sh", "-c", copyCmd.c_str() }, options);
|
||||
copyFile(srcLogFile, destLogFile);
|
||||
}
|
||||
|
||||
while (num_entries--) {
|
||||
@@ -119,133 +240,6 @@ static void dumpLogs(int fd, std::string srcDir, std::string destDir,
|
||||
free(dirent_list);
|
||||
}
|
||||
|
||||
// Get timestamp and packet data
|
||||
static void GetTimeStampAndPkt(char *pktbuf, unsigned char *packet, char *strtime, int totalbyte){
|
||||
int idxLog = 0;
|
||||
int idxPkt = 0;
|
||||
int firstPktDataIdx = 2;
|
||||
int lastPktDataIdx = totalbyte - 2;
|
||||
char arrTmpTime[19];
|
||||
char arrStrTime[TIME_BUFFER];
|
||||
char* tmpPktByteStr;
|
||||
char* pktDataStr = pktbuf;
|
||||
unsigned char arrPktData[MAX_PACKET_LENGTH];
|
||||
|
||||
memset(arrTmpTime, 0, sizeof(arrTmpTime));
|
||||
while ((tmpPktByteStr = strtok_r(pktDataStr, " ", &pktDataStr))) {
|
||||
if(idxLog == 0) {
|
||||
snprintf(arrTmpTime, sizeof(arrTmpTime),"%s", tmpPktByteStr);
|
||||
}
|
||||
if(idxLog == 1) {
|
||||
snprintf(arrStrTime, sizeof(arrStrTime),"%s %s",arrTmpTime, tmpPktByteStr);
|
||||
}
|
||||
if(idxLog > firstPktDataIdx && idxLog <= lastPktDataIdx) {
|
||||
int data;
|
||||
unsigned char pktdata;
|
||||
sscanf(tmpPktByteStr,"%02x", &data);
|
||||
pktdata = (unsigned char)data;
|
||||
arrPktData[idxPkt] = pktdata;
|
||||
idxPkt++;
|
||||
}
|
||||
idxLog++;
|
||||
}
|
||||
memcpy(packet, arrPktData, MAX_PACKET_LENGTH);
|
||||
memcpy(strtime, arrStrTime, TIME_BUFFER);
|
||||
}
|
||||
|
||||
static void ProcessPcapDump(FILE *fp, pcap_dumper_t *dumper)
|
||||
{
|
||||
ALOGD("ProcessPcapDump(): enter");
|
||||
char strLogBuf[STRING_BUFFER];
|
||||
char arrPktBuf[STRING_BUFFER];
|
||||
char arrPktSplitBuf[STRING_BUFFER];
|
||||
char arrStrTime[TIME_BUFFER];
|
||||
unsigned char arrPktData[MAX_PACKET_LENGTH];
|
||||
|
||||
if(fp == NULL) {
|
||||
ALOGD("can not read extended_log_datastall file!");
|
||||
return;
|
||||
}
|
||||
if(dumper == NULL) {
|
||||
ALOGD("can not open pcap file.");
|
||||
return;
|
||||
}
|
||||
|
||||
while (!feof(fp)) {
|
||||
while (fgets(strLogBuf,STRING_BUFFER,fp)) {
|
||||
if(strLogBuf[0] == '\n') {
|
||||
continue;
|
||||
}
|
||||
memcpy(arrPktBuf, strLogBuf, sizeof(arrPktBuf));
|
||||
memcpy(arrPktSplitBuf, strLogBuf, sizeof(arrPktSplitBuf));
|
||||
|
||||
int countPktLen = 0;
|
||||
char* tmpPktByteStr;
|
||||
char* pktDataStr = arrPktSplitBuf;
|
||||
while ((tmpPktByteStr = strtok_r(pktDataStr, " ", &pktDataStr))) {
|
||||
countPktLen+=1;
|
||||
}
|
||||
|
||||
// Get timestamp and packet data
|
||||
GetTimeStampAndPkt(arrPktBuf ,arrPktData, arrStrTime, countPktLen);
|
||||
|
||||
// Build packet header
|
||||
int timeMSec;
|
||||
char* strTime;
|
||||
char* strTimeMsec;
|
||||
char* strTmpTime = arrStrTime;
|
||||
struct pcap_pkthdr pcap_hdr;
|
||||
while ((strTime = strtok_r(strTmpTime, ".", &strTmpTime))) {
|
||||
if(strTmpTime == NULL) {
|
||||
break;
|
||||
}
|
||||
time_t time;
|
||||
struct tm timeStruct;
|
||||
memset(&timeStruct, 0, sizeof(struct tm));
|
||||
if(strlen(strTime) == 19) {
|
||||
strptime(strTime, "%Y-%m-%d %H:%M:%S", &timeStruct);
|
||||
time = mktime(&timeStruct);
|
||||
pcap_hdr.ts.tv_sec = time;
|
||||
}
|
||||
strTimeMsec = strtok_r(strTmpTime, ".", &strTmpTime);
|
||||
if(strTimeMsec == NULL) {
|
||||
break;
|
||||
}
|
||||
timeMSec = atoi(strTimeMsec);
|
||||
pcap_hdr.ts.tv_usec = timeMSec;
|
||||
}
|
||||
pcap_hdr.caplen = sizeof(arrPktData);
|
||||
pcap_hdr.len = pcap_hdr.caplen;
|
||||
pcap_dump((u_char *)dumper, &pcap_hdr, arrPktData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void MergeAndConvertToPcap(char* logFile, char* oldlogFile, char* pcapFile) {
|
||||
|
||||
ALOGD("DumpPcap(): enter");
|
||||
pcap_t *handle = pcap_open_dead(DLT_EN10MB, 1 << 16);
|
||||
pcap_dumper_t *dumper = pcap_dump_open(handle, pcapFile);
|
||||
|
||||
if(dumper == NULL) {
|
||||
ALOGD("can not open pcap file.");
|
||||
return;
|
||||
}
|
||||
|
||||
FILE *fp = fopen(oldlogFile, "r");
|
||||
if(fp != NULL) {
|
||||
ProcessPcapDump(fp, dumper);
|
||||
fclose(fp);
|
||||
}
|
||||
fp = fopen(logFile, "r");
|
||||
if(fp != NULL) {
|
||||
ProcessPcapDump(fp, dumper);
|
||||
fclose(fp);
|
||||
}
|
||||
pcap_dump_close(dumper);
|
||||
}
|
||||
|
||||
|
||||
static void *dumpModemThread(void *data)
|
||||
{
|
||||
long fdModem = (long)data;
|
||||
@@ -265,22 +259,10 @@ static void *dumpModemThread(void *data)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sleep(1);
|
||||
ALOGD("Waited modem for 1 second to flush logs");
|
||||
|
||||
const std::string modemLogCombined = modemLogDir + "/" + filePrefix + "all.tar";
|
||||
const std::string modemLogAllDir = modemLogDir + "/modem_log";
|
||||
|
||||
RunCommandToFd(STDOUT_FILENO, "MKDIR MODEM LOG", {"/vendor/bin/mkdir", "-p", modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
|
||||
|
||||
const std::string diagLogDir = "/data/vendor/radio/diag_logs/logs";
|
||||
const std::string diagPoweronLogPath = "/data/vendor/radio/diag_logs/logs/diag_poweron_log.qmdl";
|
||||
|
||||
bool diagLogEnabled = android::base::GetBoolProperty(DIAG_MDLOG_PERSIST_PROPERTY, false);
|
||||
bool diagLogStarted = android::base::GetBoolProperty(DIAG_MDLOG_STATUS_PROPERTY, false);
|
||||
|
||||
if (diagLogEnabled) {
|
||||
bool diagLogStarted = android::base::GetBoolProperty( DIAG_MDLOG_STATUS_PROPERTY, false);
|
||||
|
||||
if (diagLogStarted) {
|
||||
android::base::SetProperty(DIAG_MDLOG_PROPERTY, "false");
|
||||
ALOGD("Stopping diag_mdlog...\n");
|
||||
@@ -292,7 +274,20 @@ static void *dumpModemThread(void *data)
|
||||
} else {
|
||||
ALOGD("diag_mdlog is not running");
|
||||
}
|
||||
}
|
||||
|
||||
sleep(1);
|
||||
ALOGD("Waited modem for 1 second to flush logs");
|
||||
|
||||
const std::string modemLogCombined = modemLogDir + "/" + filePrefix + "all.tar";
|
||||
const std::string modemLogAllDir = modemLogDir + "/modem_log";
|
||||
|
||||
RunCommandToFd(STDOUT_FILENO, "MKDIR MODEM LOG", {"/vendor/bin/mkdir", "-p", modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
|
||||
|
||||
const std::string diagLogDir = "/data/vendor/radio/diag_logs/logs";
|
||||
const std::string diagPoweronLogPath = "/data/vendor/radio/diag_logs/logs/diag_poweron_log.qmdl";
|
||||
|
||||
if (diagLogEnabled) {
|
||||
dumpLogs(STDOUT_FILENO, diagLogDir, modemLogAllDir, android::base::GetIntProperty(DIAG_MDLOG_NUMBER_BUGREPORT, 100), DIAG_LOG_PREFIX);
|
||||
|
||||
if (diagLogStarted) {
|
||||
@@ -300,13 +295,7 @@ static void *dumpModemThread(void *data)
|
||||
android::base::SetProperty(DIAG_MDLOG_PROPERTY, "true");
|
||||
}
|
||||
}
|
||||
RunCommandToFd(STDOUT_FILENO, "CP MODEM POWERON LOG", {"/vendor/bin/cp", diagPoweronLogPath.c_str(), modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
|
||||
|
||||
// dump to pcap
|
||||
char fpcapname[]="/data/vendor/radio/extended_logs/extended_log_datastall.pcap";
|
||||
char flogname[]="/data/vendor/radio/extended_logs/extended_log_datastall.txt";
|
||||
char flogoldname[]="/data/vendor/radio/extended_logs/extended_log_datastall.txt.old";
|
||||
MergeAndConvertToPcap(flogname, flogoldname, fpcapname);
|
||||
copyFile(diagPoweronLogPath, modemLogAllDir + "/" + basename(diagPoweronLogPath.c_str()));
|
||||
|
||||
if (!PropertiesHelper::IsUserBuild()) {
|
||||
char cmd[256] = { 0 };
|
||||
@@ -346,7 +335,7 @@ static void *dumpModemThread(void *data)
|
||||
}
|
||||
|
||||
for (const auto& logFile : rilAndNetmgrLogs) {
|
||||
RunCommandToFd(STDOUT_FILENO, "CP MODEM LOG", {"/vendor/bin/cp", logFile.c_str(), modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
|
||||
copyFile(logFile, modemLogAllDir + "/" + basename(logFile.c_str()));
|
||||
}
|
||||
|
||||
//Dump IPA log
|
||||
@@ -365,8 +354,7 @@ static void *dumpModemThread(void *data)
|
||||
android::base::SetProperty(MODEM_EFS_DUMP_PROPERTY, "false");
|
||||
}
|
||||
|
||||
RunCommandToFd(STDOUT_FILENO, "TAR LOG", {"/vendor/bin/tar", "cvf", modemLogCombined.c_str(), "-C", modemLogAllDir.c_str(), "."}, CommandOptions::WithTimeout(20).Build());
|
||||
RunCommandToFd(STDOUT_FILENO, "CHG PERM", {"/vendor/bin/chmod", "a+w", modemLogCombined.c_str()}, CommandOptions::WithTimeout(2).Build());
|
||||
createTarFile(modemLogCombined, modemLogAllDir);
|
||||
|
||||
std::vector<uint8_t> buffer(65536);
|
||||
android::base::unique_fd fdLog(TEMP_FAILURE_RETRY(open(modemLogCombined.c_str(), O_RDONLY | O_CLOEXEC | O_NONBLOCK)));
|
||||
@@ -510,10 +498,6 @@ static void DumpSensorLog(int fd) {
|
||||
|
||||
static void DumpF2FS(int fd) {
|
||||
DumpFileToFd(fd, "F2FS", "/sys/kernel/debug/f2fs/status");
|
||||
RunCommandToFd(fd, "F2FS - fragmentation", {"/vendor/bin/sh", "-c",
|
||||
"for d in $(ls /proc/fs/f2fs/); do "
|
||||
"echo $d: /dev/block/mapper/`ls -l /dev/block/mapper | grep $d | awk '{print $8,$9,$10}'`; "
|
||||
"cat /proc/fs/f2fs/$d/segment_info; done"});
|
||||
RunCommandToFd(fd, "F2FS - fsck time (ms)", {"/vendor/bin/sh", "-c", "getprop ro.boottime.init.fsck.data"});
|
||||
RunCommandToFd(fd, "F2FS - checkpoint=disable time (ms)", {"/vendor/bin/sh", "-c", "getprop ro.boottime.init.mount.data"});
|
||||
}
|
||||
@@ -523,52 +507,49 @@ static void DumpUFS(int fd) {
|
||||
DumpFileToFd(fd, "UFS rev", "/sys/block/sda/device/rev");
|
||||
DumpFileToFd(fd, "UFS size", "/sys/block/sda/size");
|
||||
|
||||
std::string bootdev = android::base::GetProperty(UFS_BOOTDEVICE, "");
|
||||
if (!bootdev.empty()) {
|
||||
DumpFileToFd(fd, "UFS Slow IO Read", "/sys/devices/platform/soc/" + bootdev + "/slowio_read_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Write", "/sys/devices/platform/soc/" + bootdev + "/slowio_write_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Unmap", "/sys/devices/platform/soc/" + bootdev + "/slowio_unmap_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Sync", "/sys/devices/platform/soc/" + bootdev + "/slowio_sync_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Read", "/dev/sys/block/bootdevice/slowio_read_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Write", "/dev/sys/block/bootdevice/slowio_write_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Unmap", "/dev/sys/block/bootdevice/slowio_unmap_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Sync", "//dev/sys/block/bootdevice/slowio_sync_cnt");
|
||||
|
||||
RunCommandToFd(fd, "UFS err_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/sys/devices/platform/soc/" + bootdev + "/err_stats\"; "
|
||||
"for node in `ls $path/err_*`; do "
|
||||
"printf \"%s:%d\\n\" $(basename $node) $(cat $node); done;"});
|
||||
RunCommandToFd(fd, "UFS err_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/dev/sys/block/bootdevice/err_stats\"; "
|
||||
"for node in `ls $path/err_*`; do "
|
||||
"printf \"%s:%d\\n\" $(basename $node) $(cat $node); done;"});
|
||||
|
||||
RunCommandToFd(fd, "UFS io_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/sys/devices/platform/soc/" + bootdev + "/io_stats\"; "
|
||||
"printf \"\\t\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"ReadCnt ReadBytes WriteCnt WriteBytes RWCnt RWBytes; "
|
||||
"str=$(cat $path/*_start); arr=($str); "
|
||||
"printf \"Started: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_complete); arr=($str); "
|
||||
"printf \"Completed: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_maxdiff); arr=($str); "
|
||||
"printf \"MaxDiff: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "});
|
||||
RunCommandToFd(fd, "UFS io_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/dev/sys/block/bootdevice/io_stats\"; "
|
||||
"printf \"\\t\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"ReadCnt ReadBytes WriteCnt WriteBytes RWCnt RWBytes; "
|
||||
"str=$(cat $path/*_start); arr=($str); "
|
||||
"printf \"Started: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_complete); arr=($str); "
|
||||
"printf \"Completed: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_maxdiff); arr=($str); "
|
||||
"printf \"MaxDiff: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "});
|
||||
|
||||
RunCommandToFd(fd, "UFS req_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/sys/devices/platform/soc/" + bootdev + "/req_stats\"; "
|
||||
"printf \"\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"All Write Read Read\\(urg\\) Write\\(urg\\) Flush Discard; "
|
||||
"str=$(cat $path/*_min); arr=($str); "
|
||||
"printf \"Min:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_max); arr=($str); "
|
||||
"printf \"Max:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_avg); arr=($str); "
|
||||
"printf \"Avg.:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_sum); arr=($str); "
|
||||
"printf \"Count:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]};"});
|
||||
RunCommandToFd(fd, "UFS req_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/dev/sys/block/bootdevice/req_stats\"; "
|
||||
"printf \"\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"All Write Read Read\\(urg\\) Write\\(urg\\) Flush Discard; "
|
||||
"str=$(cat $path/*_min); arr=($str); "
|
||||
"printf \"Min:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_max); arr=($str); "
|
||||
"printf \"Max:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_avg); arr=($str); "
|
||||
"printf \"Avg.:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_sum); arr=($str); "
|
||||
"printf \"Count:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]};"});
|
||||
|
||||
std::string ufs_health = "for f in $(find /sys/devices/platform/soc/" + bootdev + "/health_descriptor -type f); do if [[ -r $f && -f $f ]]; then echo --- $f; cat $f; echo ''; fi; done";
|
||||
RunCommandToFd(fd, "UFS health", {"/vendor/bin/sh", "-c", ufs_health.c_str()});
|
||||
}
|
||||
std::string ufs_health = "for f in $(find /dev/sys/block/bootdevice/health_descriptor -type f); do if [[ -r $f && -f $f ]]; then echo --- $f; cat $f; echo ''; fi; done";
|
||||
RunCommandToFd(fd, "UFS health", {"/vendor/bin/sh", "-c", ufs_health.c_str()});
|
||||
}
|
||||
|
||||
// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
|
||||
@@ -724,6 +705,8 @@ Return<DumpstateStatus> DumpstateDevice::dumpstateBoard_1_1(const hidl_handle& h
|
||||
// Dump fastrpc dma buffer size
|
||||
DumpFileToFd(fd, "Fastrpc dma buffer", "/sys/kernel/fastrpc/total_dma_kb");
|
||||
|
||||
// Dump page owner
|
||||
DumpFileToFd(fd, "Page Owner", "/sys/kernel/debug/page_owner");
|
||||
if (modemThreadHandle) {
|
||||
pthread_join(modemThreadHandle, NULL);
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2020 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
on property:persist.vendor.disable.thermal.control=1
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm/emul_temp 25000
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm/mode disabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-cpu/emul_temp 25000
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-cpu/mode disabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-monitor/emul_temp 25000
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-monitor/mode disabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/cellular-emergency/emul_temp 25000
|
||||
write /sys/devices/virtual/thermal/tz-by-name/cellular-emergency/mode disabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-adc/emul_temp 25000
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-adc/mode disabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-monitor/emul_temp 25000
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-monitor/mode disabled
|
||||
write /sys/module/overheat_mitigation/parameters/enable 0
|
||||
|
||||
on property:persist.vendor.disable.thermal.control=0
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm/emul_temp 0
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm/mode enabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-cpu/emul_temp 0
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-cpu/mode enabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-monitor/emul_temp 0
|
||||
write /sys/devices/virtual/thermal/tz-by-name/skin-therm-monitor/mode enabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/cellular-emergency/emul_temp 0
|
||||
write /sys/devices/virtual/thermal/tz-by-name/cellular-emergency/mode enabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-adc/emul_temp 0
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-adc/mode enabled
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-monitor/emul_temp 0
|
||||
write /sys/devices/virtual/thermal/tz-by-name/usbc-therm-monitor/mode enabled
|
||||
write /sys/module/overheat_mitigation/parameters/enable 1
|
||||
|
||||
on property:persist.vendor.disable.usb.overheat.mitigation=1
|
||||
write /sys/module/overheat_mitigation/parameters/enable 0
|
||||
|
||||
on property:persist.vendor.disable.usb.overheat.mitigation=0
|
||||
write /sys/module/overheat_mitigation/parameters/enable 1
|
||||
@@ -12,18 +12,14 @@
|
||||
system_ext/etc/permissions/qcrilhook.xml \
|
||||
system_ext/etc/permissions/qti_telephony_hidl_wrapper.xml \
|
||||
system_ext/etc/permissions/qti_telephony_utils.xml \
|
||||
system_ext/etc/permissions/telephonyservice.xml \
|
||||
system_ext/framework/com.qualcomm.qti.imscmservice-V2.0-java.jar \
|
||||
system_ext/framework/com.qualcomm.qti.imscmservice-V2.1-java.jar \
|
||||
system_ext/framework/com.qualcomm.qti.imscmservice-V2.2-java.jar \
|
||||
system_ext/framework/com.qualcomm.qti.uceservice-V2.0-java.jar \
|
||||
system_ext/framework/com.qualcomm.qti.uceservice-V2.1-java.jar \
|
||||
system_ext/framework/ConnectivityExt.jar \
|
||||
system_ext/framework/qcrilhook.jar \
|
||||
system_ext/framework/qti-telephony-hidl-wrapper.jar \
|
||||
system_ext/framework/qti-telephony-utils.jar \
|
||||
system_ext/framework/remotesimlockmanagerlibrary.jar \
|
||||
system_ext/framework/uimremotesimlocklibrary.jar \
|
||||
system_ext/framework/vendor.qti.hardware.data.connection-V1.0-java.jar \
|
||||
system_ext/framework/vendor.qti.hardware.data.dynamicdds-V1.0-java.jar \
|
||||
system_ext/framework/vendor.qti.hardware.data.iwlan-V1.0-java.jar \
|
||||
|
||||
@@ -39,18 +39,14 @@ PRODUCT_COPY_FILES := \
|
||||
vendor/qcom/bramble/proprietary/qcrilhook.xml:system_ext/etc/permissions/qcrilhook.xml \
|
||||
vendor/qcom/bramble/proprietary/qti_telephony_hidl_wrapper.xml:system_ext/etc/permissions/qti_telephony_hidl_wrapper.xml \
|
||||
vendor/qcom/bramble/proprietary/qti_telephony_utils.xml:system_ext/etc/permissions/qti_telephony_utils.xml \
|
||||
vendor/qcom/bramble/proprietary/telephonyservice.xml:system_ext/etc/permissions/telephonyservice.xml \
|
||||
vendor/qcom/bramble/proprietary/com.qualcomm.qti.imscmservice-V2.0-java.jar:system_ext/framework/com.qualcomm.qti.imscmservice-V2.0-java.jar \
|
||||
vendor/qcom/bramble/proprietary/com.qualcomm.qti.imscmservice-V2.1-java.jar:system_ext/framework/com.qualcomm.qti.imscmservice-V2.1-java.jar \
|
||||
vendor/qcom/bramble/proprietary/com.qualcomm.qti.imscmservice-V2.2-java.jar:system_ext/framework/com.qualcomm.qti.imscmservice-V2.2-java.jar \
|
||||
vendor/qcom/bramble/proprietary/com.qualcomm.qti.uceservice-V2.0-java.jar:system_ext/framework/com.qualcomm.qti.uceservice-V2.0-java.jar \
|
||||
vendor/qcom/bramble/proprietary/com.qualcomm.qti.uceservice-V2.1-java.jar:system_ext/framework/com.qualcomm.qti.uceservice-V2.1-java.jar \
|
||||
vendor/qcom/bramble/proprietary/ConnectivityExt.jar:system_ext/framework/ConnectivityExt.jar \
|
||||
vendor/qcom/bramble/proprietary/qcrilhook.jar:system_ext/framework/qcrilhook.jar \
|
||||
vendor/qcom/bramble/proprietary/qti-telephony-hidl-wrapper.jar:system_ext/framework/qti-telephony-hidl-wrapper.jar \
|
||||
vendor/qcom/bramble/proprietary/qti-telephony-utils.jar:system_ext/framework/qti-telephony-utils.jar \
|
||||
vendor/qcom/bramble/proprietary/remotesimlockmanagerlibrary.jar:system_ext/framework/remotesimlockmanagerlibrary.jar \
|
||||
vendor/qcom/bramble/proprietary/uimremotesimlocklibrary.jar:system_ext/framework/uimremotesimlocklibrary.jar \
|
||||
vendor/qcom/bramble/proprietary/vendor.qti.hardware.data.connection-V1.0-java.jar:system_ext/framework/vendor.qti.hardware.data.connection-V1.0-java.jar \
|
||||
vendor/qcom/bramble/proprietary/vendor.qti.hardware.data.dynamicdds-V1.0-java.jar:system_ext/framework/vendor.qti.hardware.data.dynamicdds-V1.0-java.jar \
|
||||
vendor/qcom/bramble/proprietary/vendor.qti.hardware.data.iwlan-V1.0-java.jar:system_ext/framework/vendor.qti.hardware.data.iwlan-V1.0-java.jar \
|
||||
|
||||
@@ -18,11 +18,11 @@ package {
|
||||
}
|
||||
|
||||
cc_binary {
|
||||
name: "android.hardware.usb@1.2-service.bramble",
|
||||
name: "android.hardware.usb@1.3-service.bramble",
|
||||
relative_install_path: "hw",
|
||||
init_rc: ["android.hardware.usb@1.2-service.bramble.rc"],
|
||||
init_rc: ["android.hardware.usb@1.3-service.bramble.rc"],
|
||||
vintf_fragments: [
|
||||
"android.hardware.usb@1.2-service.bramble.xml",
|
||||
"android.hardware.usb@1.3-service.bramble.xml",
|
||||
"android.hardware.usb.gadget@1.1-service.bramble.xml",
|
||||
],
|
||||
srcs: ["service.cpp", "Usb.cpp", "UsbGadget.cpp"],
|
||||
@@ -30,6 +30,7 @@ cc_binary {
|
||||
"android.hardware.usb@1.0",
|
||||
"android.hardware.usb@1.1",
|
||||
"android.hardware.usb@1.2",
|
||||
"android.hardware.usb@1.3",
|
||||
"android.hardware.usb.gadget@1.0",
|
||||
"android.hardware.usb.gadget@1.1",
|
||||
"libbase",
|
||||
|
||||
78
usb/Usb.cpp
78
usb/Usb.cpp
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2017 The Android Open Source Project
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define LOG_TAG "android.hardware.usb@1.2-service.bramble"
|
||||
#define LOG_TAG "android.hardware.usb@1.3-service.bramble"
|
||||
|
||||
#include <android-base/logging.h>
|
||||
#include <android-base/properties.h>
|
||||
@@ -41,9 +41,49 @@ using android::base::GetProperty;
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace usb {
|
||||
namespace V1_2 {
|
||||
namespace V1_3 {
|
||||
namespace implementation {
|
||||
|
||||
Return<bool> Usb::enableUsbDataSignal(bool enable) {
|
||||
bool result = true;
|
||||
|
||||
ALOGI("Userspace turn %s USB data signaling", enable ? "on" : "off");
|
||||
|
||||
if (enable) {
|
||||
if (!WriteStringToFile("1", USB_DATA_PATH)) {
|
||||
ALOGE("Not able to turn on usb connection notification");
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (!WriteStringToFile(kGadgetName, PULLUP_PATH)) {
|
||||
ALOGE("Gadget cannot be pulled up");
|
||||
result = false;
|
||||
}
|
||||
} else {
|
||||
if (!WriteStringToFile("1", ID_PATH)) {
|
||||
ALOGE("Not able to turn off host mode");
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (!WriteStringToFile("0", VBUS_PATH)) {
|
||||
ALOGE("Not able to set Vbus state");
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (!WriteStringToFile("0", USB_DATA_PATH)) {
|
||||
ALOGE("Not able to turn on usb connection notification");
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (!WriteStringToFile("none", PULLUP_PATH)) {
|
||||
ALOGE("Gadget cannot be pulled down");
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Set by the signal handler to destroy the thread
|
||||
volatile bool destroyThread;
|
||||
|
||||
@@ -52,8 +92,7 @@ constexpr char kDetectedPath[] = "/sys/class/power_supply/usb/moisture_detected"
|
||||
constexpr char kConsole[] = "init.svc.console";
|
||||
constexpr char kDisableContatminantDetection[] = "vendor.usb.contaminantdisable";
|
||||
|
||||
void queryVersionHelper(android::hardware::usb::V1_2::implementation::Usb *usb,
|
||||
hidl_vec<PortStatus> *currentPortStatus_1_2);
|
||||
void queryVersionHelper(implementation::Usb *usb, hidl_vec<PortStatus> *currentPortStatus_1_2);
|
||||
|
||||
int32_t readFile(const std::string &filename, std::string *contents) {
|
||||
FILE *fp;
|
||||
@@ -97,11 +136,16 @@ int32_t writeFile(const std::string &filename, const std::string &contents) {
|
||||
Status queryMoistureDetectionStatus(hidl_vec<PortStatus> *currentPortStatus_1_2) {
|
||||
std::string enabled, status;
|
||||
|
||||
if (currentPortStatus_1_2 == NULL || currentPortStatus_1_2->size() == 0) {
|
||||
ALOGE("currentPortStatus_1_2 is not available");
|
||||
return Status::ERROR;
|
||||
}
|
||||
|
||||
(*currentPortStatus_1_2)[0].supportedContaminantProtectionModes = 0;
|
||||
(*currentPortStatus_1_2)[0].supportedContaminantProtectionModes |=
|
||||
ContaminantProtectionMode::FORCE_SINK;
|
||||
(*currentPortStatus_1_2)[0].contaminantProtectionStatus = ContaminantProtectionStatus::NONE;
|
||||
(*currentPortStatus_1_2)[0].contaminantDetectionStatus = ContaminantDetectionStatus::DISABLED;
|
||||
V1_2::ContaminantProtectionMode::FORCE_SINK;
|
||||
(*currentPortStatus_1_2)[0].contaminantProtectionStatus = V1_2::ContaminantProtectionStatus::NONE;
|
||||
(*currentPortStatus_1_2)[0].contaminantDetectionStatus = V1_2::ContaminantDetectionStatus::DISABLED;
|
||||
(*currentPortStatus_1_2)[0].supportsEnableContaminantPresenceDetection = true;
|
||||
(*currentPortStatus_1_2)[0].supportsEnableContaminantPresenceProtection = false;
|
||||
|
||||
@@ -117,12 +161,12 @@ Status queryMoistureDetectionStatus(hidl_vec<PortStatus> *currentPortStatus_1_2)
|
||||
}
|
||||
if (status == "1") {
|
||||
(*currentPortStatus_1_2)[0].contaminantDetectionStatus =
|
||||
ContaminantDetectionStatus::DETECTED;
|
||||
V1_2::ContaminantDetectionStatus::DETECTED;
|
||||
(*currentPortStatus_1_2)[0].contaminantProtectionStatus =
|
||||
ContaminantProtectionStatus::FORCE_SINK;
|
||||
V1_2::ContaminantProtectionStatus::FORCE_SINK;
|
||||
} else
|
||||
(*currentPortStatus_1_2)[0].contaminantDetectionStatus =
|
||||
ContaminantDetectionStatus::NOT_DETECTED;
|
||||
V1_2::ContaminantDetectionStatus::NOT_DETECTED;
|
||||
}
|
||||
|
||||
ALOGI("ContaminantDetectionStatus:%d ContaminantProtectionStatus:%d",
|
||||
@@ -551,8 +595,7 @@ done:
|
||||
return Status::ERROR;
|
||||
}
|
||||
|
||||
void queryVersionHelper(android::hardware::usb::V1_2::implementation::Usb *usb,
|
||||
hidl_vec<PortStatus> *currentPortStatus_1_2) {
|
||||
void queryVersionHelper(implementation::Usb *usb, hidl_vec<PortStatus> *currentPortStatus_1_2) {
|
||||
hidl_vec<V1_1::PortStatus_1_1> currentPortStatus_1_1;
|
||||
hidl_vec<V1_0::PortStatus> currentPortStatus;
|
||||
Status status;
|
||||
@@ -563,7 +606,8 @@ void queryVersionHelper(android::hardware::usb::V1_2::implementation::Usb *usb,
|
||||
if (usb->mCallback_1_0 != NULL) {
|
||||
if (callback_V1_2 != NULL) {
|
||||
status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_2);
|
||||
queryMoistureDetectionStatus(currentPortStatus_1_2);
|
||||
if (status == Status::SUCCESS)
|
||||
queryMoistureDetectionStatus(currentPortStatus_1_2);
|
||||
} else if (callback_V1_1 != NULL) {
|
||||
status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_1);
|
||||
currentPortStatus_1_1.resize(currentPortStatus_1_2->size());
|
||||
@@ -602,7 +646,7 @@ Return<void> Usb::queryPortStatus() {
|
||||
|
||||
struct data {
|
||||
int uevent_fd;
|
||||
android::hardware::usb::V1_2::implementation::Usb *usb;
|
||||
android::hardware::usb::V1_3::implementation::Usb *usb;
|
||||
};
|
||||
|
||||
static void uevent_event(uint32_t /*epevents*/, struct data *payload) {
|
||||
@@ -675,7 +719,7 @@ void *work(void *param) {
|
||||
}
|
||||
|
||||
payload.uevent_fd = uevent_fd;
|
||||
payload.usb = (android::hardware::usb::V1_2::implementation::Usb *)param;
|
||||
payload.usb = (android::hardware::usb::V1_3::implementation::Usb *)param;
|
||||
|
||||
fcntl(uevent_fd, F_SETFL, O_NONBLOCK);
|
||||
|
||||
@@ -790,7 +834,7 @@ Return<void> Usb::setCallback(const sp<V1_0::IUsbCallback> &callback) {
|
||||
}
|
||||
|
||||
} // namespace implementation
|
||||
} // namespace V1_2
|
||||
} // namespace V1_3
|
||||
} // namespace usb
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
|
||||
43
usb/Usb.h
43
usb/Usb.h
@@ -1,10 +1,27 @@
|
||||
#ifndef ANDROID_HARDWARE_USB_V1_1_USB_H
|
||||
#define ANDROID_HARDWARE_USB_V1_1_USB_H
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <android-base/file.h>
|
||||
#include <android/hardware/usb/1.2/IUsb.h>
|
||||
#include <android/hardware/usb/1.2/IUsbCallback.h>
|
||||
#include <android/hardware/usb/1.2/types.h>
|
||||
#include <android/hardware/usb/1.3/IUsb.h>
|
||||
#include <hidl/Status.h>
|
||||
#include <pixelusb/UsbGadgetCommon.h>
|
||||
#include <utils/Log.h>
|
||||
|
||||
#define UEVENT_MSG_LEN 2048
|
||||
@@ -17,10 +34,11 @@
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace usb {
|
||||
namespace V1_2 {
|
||||
namespace V1_3 {
|
||||
namespace implementation {
|
||||
|
||||
using ::android::sp;
|
||||
using ::android::base::WriteStringToFile;
|
||||
using ::android::hardware::hidl_array;
|
||||
using ::android::hardware::hidl_memory;
|
||||
using ::android::hardware::hidl_string;
|
||||
@@ -32,21 +50,27 @@ using ::android::hardware::usb::V1_0::PortPowerRole;
|
||||
using ::android::hardware::usb::V1_0::PortRole;
|
||||
using ::android::hardware::usb::V1_0::PortRoleType;
|
||||
using ::android::hardware::usb::V1_0::Status;
|
||||
using ::android::hardware::usb::V1_2::IUsb;
|
||||
using ::android::hardware::usb::V1_2::IUsbCallback;
|
||||
|
||||
using ::android::hardware::usb::V1_1::PortMode_1_1;
|
||||
using ::android::hardware::usb::V1_1::PortStatus_1_1;
|
||||
using ::android::hardware::usb::V1_2::IUsbCallback;
|
||||
using ::android::hardware::usb::V1_2::PortStatus;
|
||||
using ::android::hardware::usb::V1_3::IUsb;
|
||||
using ::android::hidl::base::V1_0::DebugInfo;
|
||||
using ::android::hidl::base::V1_0::IBase;
|
||||
|
||||
enum class HALVersion{
|
||||
V1_0,
|
||||
V1_1,
|
||||
V1_2
|
||||
V1_2,
|
||||
V1_3
|
||||
};
|
||||
|
||||
constexpr char kGadgetName[] = "a600000.dwc3";
|
||||
#define SOC_PATH "/sys/devices/platform/soc/a600000.ssusb/"
|
||||
#define ID_PATH SOC_PATH "id"
|
||||
#define VBUS_PATH SOC_PATH "b_sess"
|
||||
#define USB_DATA_PATH SOC_PATH "usb_data_enabled"
|
||||
|
||||
struct Usb : public IUsb {
|
||||
Usb();
|
||||
|
||||
@@ -55,6 +79,7 @@ struct Usb : public IUsb {
|
||||
Return<void> queryPortStatus() override;
|
||||
Return<void> enableContaminantPresenceDetection(const hidl_string& portName, bool enable);
|
||||
Return<void> enableContaminantPresenceProtection(const hidl_string& portName, bool enable);
|
||||
Return<bool> enableUsbDataSignal(bool enable) override;
|
||||
|
||||
sp<V1_0::IUsbCallback> mCallback_1_0;
|
||||
// Protects mCallback variable
|
||||
@@ -73,9 +98,7 @@ struct Usb : public IUsb {
|
||||
};
|
||||
|
||||
} // namespace implementation
|
||||
} // namespace V1_2
|
||||
} // namespace V1_3
|
||||
} // namespace usb
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
|
||||
#endif // ANDROID_HARDWARE_USB_V1_2_USB_H
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
service vendor.usb-hal-1-2 /vendor/bin/hw/android.hardware.usb@1.2-service.bramble
|
||||
class hal
|
||||
user system
|
||||
group system shell mtp
|
||||
|
||||
service init-gadgethal-sh /vendor/bin/init.gadgethal.sh
|
||||
class hal
|
||||
user root
|
||||
disabled
|
||||
oneshot
|
||||
|
||||
on boot
|
||||
chown root system /sys/class/typec/port0/power_role
|
||||
chown root system /sys/class/typec/port0/data_role
|
||||
chown root system /sys/class/typec/port0/port_type
|
||||
chmod 664 /sys/class/typec/port0/power_role
|
||||
chmod 664 /sys/class/typec/port0/data_role
|
||||
chmod 664 /sys/class/typec/port0/port_type
|
||||
26
usb/android.hardware.usb@1.3-service.bramble.rc
Normal file
26
usb/android.hardware.usb@1.3-service.bramble.rc
Normal file
@@ -0,0 +1,26 @@
|
||||
service vendor.usb-hal-1-3 /vendor/bin/hw/android.hardware.usb@1.3-service.bramble
|
||||
class hal
|
||||
user system
|
||||
group system shell mtp
|
||||
|
||||
service init-gadgethal-sh /vendor/bin/init.gadgethal.sh
|
||||
class hal
|
||||
user root
|
||||
disabled
|
||||
oneshot
|
||||
|
||||
on boot
|
||||
chown root system /sys/class/typec/port0/power_role
|
||||
chown root system /sys/class/typec/port0/data_role
|
||||
chown root system /sys/class/typec/port0/port_type
|
||||
chmod 664 /sys/class/typec/port0/power_role
|
||||
chmod 664 /sys/class/typec/port0/data_role
|
||||
chmod 664 /sys/class/typec/port0/port_type
|
||||
|
||||
on post-fs
|
||||
chown root system /sys/devices/platform/soc/a600000.ssusb/id
|
||||
chown root system /sys/devices/platform/soc/a600000.ssusb/b_sess
|
||||
chown root system /sys/devices/platform/soc/a600000.ssusb/usb_data_enabled
|
||||
chmod 664 /sys/devices/platform/soc/a600000.ssusb/id
|
||||
chmod 664 /sys/devices/platform/soc/a600000.ssusb/b_sess
|
||||
chmod 664 /sys/devices/platform/soc/a600000.ssusb/usb_data_enabled
|
||||
@@ -2,7 +2,7 @@
|
||||
<hal format="hidl">
|
||||
<name>android.hardware.usb</name>
|
||||
<transport>hwbinder</transport>
|
||||
<version>1.2</version>
|
||||
<version>1.3</version>
|
||||
<interface>
|
||||
<name>IUsb</name>
|
||||
<instance>default</instance>
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define LOG_TAG "android.hardware.usb@1.2-service.bramble"
|
||||
#define LOG_TAG "android.hardware.usb@1.3-service.bramble"
|
||||
|
||||
#include <hidl/HidlTransportSupport.h>
|
||||
#include "Usb.h"
|
||||
@@ -29,8 +29,8 @@ using android::hardware::joinRpcThreadpool;
|
||||
// Generated HIDL files
|
||||
using android::hardware::usb::gadget::V1_1::IUsbGadget;
|
||||
using android::hardware::usb::gadget::V1_1::implementation::UsbGadget;
|
||||
using android::hardware::usb::V1_2::IUsb;
|
||||
using android::hardware::usb::V1_2::implementation::Usb;
|
||||
using android::hardware::usb::V1_3::IUsb;
|
||||
using android::hardware::usb::V1_3::implementation::Usb;
|
||||
|
||||
using android::OK;
|
||||
using android::status_t;
|
||||
|
||||
@@ -52,33 +52,24 @@ cc_defaults {
|
||||
"PixelVibratorTestDefaults",
|
||||
"android.hardware.vibrator-defaults.bramble",
|
||||
],
|
||||
static_libs: ["android.hardware.vibrator-impl_system.bramble"],
|
||||
static_libs: ["android.hardware.vibrator-impl.bramble"],
|
||||
}
|
||||
|
||||
// TODO(eliptus): Combine library definitions when b/129505315 is resolved.
|
||||
|
||||
cc_library {
|
||||
name: "android.hardware.vibrator-impl_system.bramble",
|
||||
name: "android.hardware.vibrator-impl.bramble",
|
||||
defaults: ["VibratorHalDrv2624BinaryDefaultsBramble"],
|
||||
srcs: ["Vibrator.cpp"],
|
||||
export_include_dirs: ["."],
|
||||
vendor_available: true,
|
||||
visibility: [":__subpackages__"],
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "android.hardware.vibrator-impl_vendor.bramble",
|
||||
defaults: ["VibratorHalDrv2624BinaryDefaultsBramble"],
|
||||
srcs: ["Vibrator.cpp"],
|
||||
export_include_dirs: ["."],
|
||||
proprietary: true,
|
||||
}
|
||||
|
||||
cc_binary {
|
||||
name: "android.hardware.vibrator-service.bramble",
|
||||
defaults: ["VibratorHalDrv2624BinaryDefaultsBramble"],
|
||||
init_rc: ["android.hardware.vibrator-service.bramble.rc"],
|
||||
vintf_fragments: ["android.hardware.vibrator-service.bramble.xml"],
|
||||
srcs: ["service.cpp"],
|
||||
static_libs: ["android.hardware.vibrator-impl_vendor.bramble"],
|
||||
static_libs: ["android.hardware.vibrator-impl.bramble"],
|
||||
proprietary: true,
|
||||
}
|
||||
|
||||
@@ -415,6 +415,7 @@ ndk::ScopedAStatus Vibrator::getCapabilities(int32_t *_aidl_return) {
|
||||
if (mHwApi->hasRtpInput()) {
|
||||
ret |= IVibrator::CAP_AMPLITUDE_CONTROL;
|
||||
}
|
||||
ret |= IVibrator::CAP_GET_RESONANT_FREQUENCY;
|
||||
*_aidl_return = ret;
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
@@ -668,6 +669,53 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector<CompositeEffect> & /*comp
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
static float freqPeriodFormulaFloat(std::uint32_t in) {
|
||||
return static_cast<float>(1000000000) / static_cast<float>(24615 * in);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getResonantFrequency(float *resonantFreqHz) {
|
||||
uint32_t lraPeriod;
|
||||
if(!mHwCal->getLraPeriod(&lraPeriod)) {
|
||||
ALOGE("Failed to get resonant frequency (%d): %s", errno, strerror(errno));
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE);
|
||||
}
|
||||
*resonantFreqHz = freqPeriodFormulaFloat(lraPeriod);
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getQFactor(float * /*qFactor*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getFrequencyResolution(float * /*freqResolutionHz*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getFrequencyMinimum(float * /*freqMinimumHz*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getBandwidthAmplitudeMap(std::vector<float> * /*_aidl_return*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getPwlePrimitiveDurationMax(int32_t * /*durationMs*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getPwleCompositionSizeMax(int32_t * /*maxSize*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::getSupportedBraking(std::vector<Braking> * /*supported*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Vibrator::composePwle(const std::vector<PrimitivePwle> & /*composite*/,
|
||||
const std::shared_ptr<IVibratorCallback> & /*callback*/) {
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
}
|
||||
|
||||
} // namespace vibrator
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
|
||||
@@ -173,6 +173,16 @@ class Vibrator : public BnVibrator {
|
||||
ndk::ScopedAStatus getSupportedAlwaysOnEffects(std::vector<Effect> *_aidl_return) override;
|
||||
ndk::ScopedAStatus alwaysOnEnable(int32_t id, Effect effect, EffectStrength strength) override;
|
||||
ndk::ScopedAStatus alwaysOnDisable(int32_t id) override;
|
||||
ndk::ScopedAStatus getResonantFrequency(float *resonantFreqHz) override;
|
||||
ndk::ScopedAStatus getQFactor(float *qFactor) override;
|
||||
ndk::ScopedAStatus getFrequencyResolution(float *freqResolutionHz) override;
|
||||
ndk::ScopedAStatus getFrequencyMinimum(float *freqMinimumHz) override;
|
||||
ndk::ScopedAStatus getBandwidthAmplitudeMap(std::vector<float> *_aidl_return) override;
|
||||
ndk::ScopedAStatus getPwlePrimitiveDurationMax(int32_t *durationMs) override;
|
||||
ndk::ScopedAStatus getPwleCompositionSizeMax(int32_t *maxSize) override;
|
||||
ndk::ScopedAStatus getSupportedBraking(std::vector<Braking> *supported) override;
|
||||
ndk::ScopedAStatus composePwle(const std::vector<PrimitivePwle> &composite,
|
||||
const std::shared_ptr<IVibratorCallback> &callback) override;
|
||||
|
||||
binder_status_t dump(int fd, const char **args, uint32_t numArgs) override;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<manifest version="1.0" type="device">
|
||||
<hal format="aidl">
|
||||
<name>android.hardware.vibrator</name>
|
||||
<version>2</version>
|
||||
<fqname>IVibrator/default</fqname>
|
||||
</hal>
|
||||
</manifest>
|
||||
|
||||
Reference in New Issue
Block a user