Merge "pal: Use increase/decrease StreamUserCounter to protect getTimestamp"
diff --git a/Android.mk b/Android.mk
index 232daab..2253871 100644
--- a/Android.mk
+++ b/Android.mk
@@ -33,8 +33,14 @@
endif
LOCAL_CPPFLAGS += -fexceptions -frtti
+# Define A2DP_SINK_SUPPORTED for targets other than anorak, and
+# for anorak target that uses Android U
ifneq ($(TARGET_BOARD_PLATFORM), anorak)
LOCAL_CFLAGS += -DA2DP_SINK_SUPPORTED
+else
+ifneq ($(filter 14 U, $(PLATFORM_VERSION)),)
+LOCAL_CFLAGS += -DA2DP_SINK_SUPPORTED
+endif
endif
LOCAL_C_INCLUDES := \
diff --git a/configs/anorak/usecaseKvManager.xml b/configs/anorak/usecaseKvManager.xml
index f57d31d..d9d6ace 100644
--- a/configs/anorak/usecaseKvManager.xml
+++ b/configs/anorak/usecaseKvManager.xml
@@ -28,7 +28,7 @@
* Changes from Qualcomm Innovation Center are provided under the following license:
-* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
* -->
@@ -80,6 +80,15 @@
<graph_kv key="0xAB000000" value="0x2"/>
</keys_and_values>
</stream>
+ <!-- Spatial audio stream -->
+ <stream type="PAL_STREAM_SPATIAL_AUDIO">
+ <keys_and_values Direction="RX" Instance="1">
+ <!-- STREAMRX - SPATIAL_AUDIO_PLAYBACK -->
+ <graph_kv key="0xA1000000" value="0xA1000018"/>
+ <!-- INSTANCE - INSTANCE_1 -->
+ <graph_kv key="0xAB000000" value="0x1"/>
+ </keys_and_values>
+ </stream>
<stream type="PAL_STREAM_VOICE_RECOGNITION">
<keys_and_values Direction="TX" Instance="1">
<!-- STREAMTX - PCM_RECORD -->
@@ -756,13 +765,13 @@
<devicepps>
<!-- OUT Speaker DevicePPs -->
<devicepp id="PAL_DEVICE_OUT_SPEAKER">
- <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC">
+ <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC,PAL_STREAM_SPATIAL_AUDIO">
<!-- DEVICERX - SPEAKER -->
<graph_kv key="0xA2000000" value="0xA2000001"/>
<!-- DEVICEPP_RX - DEVICEPP_RX_AUDIO_MBDRC -->
<graph_kv key="0xAC000000" value="0xAC000002"/>
</keys_and_values>
- <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_GENERIC,PAL_STREAM_LOW_LATENCY" CustomConfig="mspp">
+ <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_GENERIC,PAL_STREAM_LOW_LATENCY,PAL_STREAM_SPATIAL_AUDIO" CustomConfig="mspp">
<!-- DEVICERX - SPEAKER -->
<graph_kv key="0xA2000000" value="0xA2000001"/>
<!-- DEVICEPP_RX - DEVICEPP_RX_AUDIO_MSPP -->
@@ -858,7 +867,7 @@
</devicepp>
<!-- OUT Headset and Headphone Digital DevicePPs -->
<devicepp id="PAL_DEVICE_OUT_WIRED_HEADSET,PAL_DEVICE_OUT_WIRED_HEADPHONE">
- <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC">
+ <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC,PAL_STREAM_SPATIAL_AUDIO">
<!-- DEVICERX - HEADPHONES -->
<graph_kv key="0xA2000000" value="0xA2000002"/>
<!-- DEVICEPP_RX - DEVICEPP_RX_AUDIO_MBDRC -->
@@ -891,7 +900,7 @@
</devicepp>
<!-- OUT Bluetooth A2DP DevicePPs -->
<devicepp id="PAL_DEVICE_OUT_BLUETOOTH_A2DP">
- <keys_and_values StreamType="PAL_STREAM_COMPRESSED,PAL_STREAM_DEEP_BUFFER,PAL_STREAM_LOW_LATENCY,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_GENERIC">
+ <keys_and_values StreamType="PAL_STREAM_COMPRESSED,PAL_STREAM_DEEP_BUFFER,PAL_STREAM_LOW_LATENCY,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_GENERIC,PAL_STREAM_SPATIAL_AUDIO">
<!-- DEVICEPP_RX - DEVICEPP_RX_AUDIO_MBDRC -->
<graph_kv key="0xAC000000" value="0xAC000002"/>
</keys_and_values>
@@ -902,7 +911,7 @@
</devicepp>
<!-- OUT Bluetooth BLE DevicePPs -->
<devicepp id="PAL_DEVICE_OUT_BLUETOOTH_BLE">
- <keys_and_values StreamType="PAL_STREAM_COMPRESSED,PAL_STREAM_DEEP_BUFFER,PAL_STREAM_LOW_LATENCY,PAL_STREAM_PCM_OFFLOAD">
+ <keys_and_values StreamType="PAL_STREAM_COMPRESSED,PAL_STREAM_DEEP_BUFFER,PAL_STREAM_LOW_LATENCY,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_SPATIAL_AUDIO">
<!-- DEVICEPP_RX - DEVICEPP_RX_AUDIO_MBDRC -->
<graph_kv key="0xAC000000" value="0xAC000002"/>
</keys_and_values>
@@ -924,7 +933,7 @@
</devicepp>
<!-- OUT BT SCO DevicePPs -->
<devicepp id="PAL_DEVICE_OUT_BLUETOOTH_SCO">
- <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC">
+ <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC,PAL_STREAM_SPATIAL_AUDIO">
<!-- DEVICERX - BT_RX -->
<graph_kv key="0xA2000000" value="0xA2000003"/>
<!-- DEVICEPP_RX - DEVICEPP_RX_AUDIO_MBDRC -->
@@ -960,7 +969,7 @@
</devicepp>
<!-- OUT USB device and USB Headset DevicePPs -->
<devicepp id="PAL_DEVICE_OUT_USB_DEVICE,PAL_DEVICE_OUT_USB_HEADSET">
- <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC">
+ <keys_and_values StreamType="PAL_STREAM_DEEP_BUFFER,PAL_STREAM_PCM_OFFLOAD,PAL_STREAM_COMPRESSED,PAL_STREAM_LOW_LATENCY,PAL_STREAM_GENERIC,PAL_STREAM_SPATIAL_AUDIO">
<!-- DEVICERX - USB_RX -->
<graph_kv key="0xA2000000" value="0xA2000005"/>
<!-- DEVICEPP_RX - DEVICEPP_RX_AUDIO_MBDRC -->
diff --git a/device/src/SpeakerProtection.cpp b/device/src/SpeakerProtection.cpp
index b2385d5..30b3c92 100644
--- a/device/src/SpeakerProtection.cpp
+++ b/device/src/SpeakerProtection.cpp
@@ -77,7 +77,7 @@
#define PAL_SP_II_TEMP_PATH "/data/vendor/audio/audio_sp2.cal"
#endif
-#define PAL_SP_XMAX_TMAX_DATA_PATH "/data/vendor/audio/spkr_xmax_tmax.cal"
+#define PAL_SP_XMAX_TMAX_DATA_PATH "/data/vendor/audio/spkr_xmax_tmax.txt"
#define PAL_SP_XMAX_TMAX_LOG_PATH "/data/vendor/audio/log_spkr_xmax_tmax.cal"
#define FEEDBACK_MONO_1 "-mono-1"
@@ -1409,7 +1409,7 @@
int ret = 0;
uint32_t miid = 0, num_ch = 0, stringLen =0;
int32_t pcmID = -EINVAL;
- size_t payloadSize = 0, bytesWritten = 0;
+ size_t payloadSize = 0, bytesWritten = -1;
struct mixer_ctl* ctl;
FILE* fp;
std::ostringstream cntrlName;
@@ -1490,7 +1490,7 @@
else {
sp_xmax_tmax_value = (param_id_sp_tmax_xmax_logging_t*)(payload +
sizeof(struct apm_module_param_data_t));
- fp = fopen(PAL_SP_XMAX_TMAX_DATA_PATH, "ab");
+ fp = fopen(PAL_SP_XMAX_TMAX_DATA_PATH, "a");
if (!fp) {
PAL_ERR(LOG_TAG, "Unable to open file for write");
@@ -1505,9 +1505,9 @@
stringLen = std::strlen(currentTimeStr);
PAL_DBG(LOG_TAG, "Current Timestamp : %s and size of string : %d", currentTimeStr, stringLen);
- bytesWritten = fwrite(currentTimeStr, stringLen, 1, fp);
+ bytesWritten = fprintf(fp, "%s ", currentTimeStr);
- if (bytesWritten != 1) {
+ if (bytesWritten < 0) {
PAL_ERR(LOG_TAG, "Error in writing to file");
fclose(fp);
ret = -EBADF;
@@ -1516,9 +1516,9 @@
for (int i = 0; i < num_ch; i++) {
PAL_DBG(LOG_TAG, "Channel: %d, Max Excursion Value =%d",i, sp_xmax_tmax_value->tmax_xmax_params[i].max_excursion);
- bytesWritten = fwrite(&sp_xmax_tmax_value->tmax_xmax_params[i].max_excursion, sizeof(int32_t), 1, fp);
+ bytesWritten = fprintf(fp, "Ch: %d <Xmax> : %3.4f", i, (float)sp_xmax_tmax_value->tmax_xmax_params[i].max_excursion / (1 << 27));
- if (bytesWritten != 1) {
+ if (bytesWritten < 0) {
PAL_ERR(LOG_TAG, "Error in writing to file");
fclose(fp);
ret = -EBADF;
@@ -1526,15 +1526,22 @@
}
PAL_DBG(LOG_TAG, "Channel: %d, Max Temperature Value =%d",i, sp_xmax_tmax_value->tmax_xmax_params[i].max_temperature);
- fwrite(&sp_xmax_tmax_value->tmax_xmax_params[i].max_temperature, sizeof(int32_t), 1, fp);
+ bytesWritten = fprintf(fp, " <Tmax> : %3.4f ", (float)sp_xmax_tmax_value->tmax_xmax_params[i].max_temperature / (1 << 22));
- if (bytesWritten != 1) {
+ if (bytesWritten < 0) {
PAL_ERR(LOG_TAG, "Error in writing to file");
fclose(fp);
ret = -EBADF;
goto exit;
}
}
+ bytesWritten = fprintf(fp, "\n");
+ if (bytesWritten < 0) {
+ PAL_ERR(LOG_TAG, "Error in writing to file");
+ fclose(fp);
+ ret = -EBADF;
+ goto exit;
+ }
fclose(fp);
}
}