summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--audio/common/all-versions/default/service/Android.bp38
-rw-r--r--audio/common/all-versions/default/service/android.hardware.audio.service_64.rc9
-rw-r--r--audio/common/all-versions/default/service/service.cpp15
-rw-r--r--boot/1.0/default/Android.bp9
-rw-r--r--boot/1.0/default/service.cpp4
-rw-r--r--camera/common/1.0/default/Android.bp1
-rw-r--r--camera/common/1.0/default/CameraModule.cpp22
-rw-r--r--camera/common/1.0/default/include/CameraModule.h1
-rw-r--r--camera/device/1.0/default/Android.bp6
-rw-r--r--camera/device/1.0/default/CameraDevice.cpp91
-rw-r--r--camera/device/1.0/default/CameraDevice_1_0.h3
-rw-r--r--camera/device/3.2/default/Android.bp1
-rw-r--r--camera/device/3.2/default/CameraDeviceSession.cpp4
-rw-r--r--camera/device/3.2/default/convert.cpp19
-rw-r--r--camera/device/3.3/default/convert.cpp16
-rw-r--r--camera/device/3.4/default/Android.bp2
-rw-r--r--camera/device/3.5/default/Android.bp2
-rw-r--r--camera/device/3.6/default/Android.bp1
-rw-r--r--camera/provider/2.4/default/Android.bp23
-rw-r--r--camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.cpp53
-rw-r--r--camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.h2
-rw-r--r--camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc2
-rw-r--r--camera/provider/2.4/default/android.hardware.camera.provider@2.4-service_64.rc2
-rw-r--r--camera/provider/2.5/default/Android.bp16
-rw-r--r--cas/1.0/default/Android.bp6
-rw-r--r--cas/1.0/default/service.cpp7
-rw-r--r--compatibility_matrices/compatibility_matrix.4.xml1
-rw-r--r--compatibility_matrices/compatibility_matrix.5.xml1
-rw-r--r--compatibility_matrices/compatibility_matrix.6.xml1
-rw-r--r--graphics/allocator/2.0/default/Android.bp7
-rw-r--r--graphics/allocator/2.0/default/service.cpp5
-rw-r--r--graphics/composer/2.1/default/Android.bp8
-rw-r--r--graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc2
-rw-r--r--graphics/composer/2.1/default/service.cpp5
-rw-r--r--graphics/composer/2.2/default/android.hardware.graphics.composer@2.2-service.rc1
-rw-r--r--graphics/composer/2.3/default/android.hardware.graphics.composer@2.3-service.rc1
-rw-r--r--graphics/composer/2.3/utils/passthrough/include/composer-passthrough/2.3/HwcHal.h4
-rw-r--r--graphics/composer/2.4/default/android.hardware.graphics.composer@2.4-service.rc1
-rw-r--r--keymaster/4.0/support/include/keymasterV4_0/keymaster_tags.h3
-rw-r--r--light/2.0/default/Android.bp8
-rw-r--r--light/2.0/default/service.cpp4
-rw-r--r--neuralnetworks/1.0/vts/functional/AndroidTest.xml1
-rw-r--r--neuralnetworks/1.1/vts/functional/AndroidTest.xml1
-rw-r--r--neuralnetworks/1.2/vts/functional/AndroidTest.xml1
-rw-r--r--neuralnetworks/1.3/vts/functional/AndroidTest.xml1
-rw-r--r--neuralnetworks/aidl/vts/functional/AndroidTestDevice.xml1
-rw-r--r--power/1.0/default/Android.bp6
-rw-r--r--power/1.0/default/service.cpp6
-rw-r--r--sensors/1.0/default/Android.bp7
-rw-r--r--sensors/1.0/default/android.hardware.sensors@1.0-service.rc2
-rw-r--r--sensors/1.0/default/service.cpp20
-rw-r--r--usb/1.0/default/Usb.cpp15
-rw-r--r--vibrator/1.0/default/Android.bp8
-rw-r--r--vibrator/1.0/default/service.cpp4
-rw-r--r--vibrator/aidl/vts/VtsHalVibratorTargetTest.cpp1
-rw-r--r--wifi/1.6/default/hidl_struct_util.cpp65
-rw-r--r--wifi/1.6/default/hidl_struct_util.h3
-rw-r--r--wifi/1.6/default/wifi_chip.cpp32
-rw-r--r--wifi/1.6/default/wifi_chip.h2
-rw-r--r--wifi/1.6/default/wifi_legacy_hal.cpp12
-rw-r--r--wifi/1.6/default/wifi_legacy_hal.h7
-rw-r--r--wifi/1.6/default/wifi_legacy_hal_stubs.cpp1
62 files changed, 539 insertions, 64 deletions
diff --git a/audio/common/all-versions/default/service/Android.bp b/audio/common/all-versions/default/service/Android.bp
index 9890be2954..99f745c17b 100644
--- a/audio/common/all-versions/default/service/Android.bp
+++ b/audio/common/all-versions/default/service/Android.bp
@@ -40,7 +40,40 @@ cc_binary {
init_rc: ["android.hardware.audio.service.rc"],
relative_install_path: "hw",
vendor: true,
+ srcs: ["service.cpp"],
+
+ cflags: [
+ "-Wall",
+ "-Wextra",
+ "-Werror",
+ ],
+ shared_libs: [
+ "libcutils",
+ "libbinder",
+ "libbinder_ndk",
+ "libhwbinder",
+ "libhidlbase",
+ "liblog",
+ "libutils",
+ "libhardware",
+ ],
+ arch : {
+ arm : {
+ cflags: [
+ "-DARCH_ARM_32",
+ ]
+ }
+ },
+}
+
+cc_binary {
+ name: "android.hardware.audio.service_64",
+
+ init_rc: ["android.hardware.audio.service_64.rc"],
+ relative_install_path: "hw",
+ vendor: true,
+ compile_multilib: "64",
srcs: ["service.cpp"],
cflags: [
@@ -53,6 +86,7 @@ cc_binary {
"libcutils",
"libbinder",
"libbinder_ndk",
+ "libhwbinder",
"libhidlbase",
"liblog",
"libutils",
@@ -69,3 +103,7 @@ phony {
name: "android.hardware.audio@2.0-service",
required: ["android.hardware.audio.service"],
}
+phony {
+ name: "android.hardware.audio@2.0-service_64",
+ required: ["android.hardware.audio.service_64"],
+}
diff --git a/audio/common/all-versions/default/service/android.hardware.audio.service_64.rc b/audio/common/all-versions/default/service/android.hardware.audio.service_64.rc
new file mode 100644
index 0000000000..5db2fafe31
--- /dev/null
+++ b/audio/common/all-versions/default/service/android.hardware.audio.service_64.rc
@@ -0,0 +1,9 @@
+service vendor.audio-hal /vendor/bin/hw/android.hardware.audio.service_64
+ class hal
+ user audioserver
+ # media gid needed for /dev/fm (radio) and for /data/misc/media (tee)
+ group audio camera drmrpc inet media mediadrm net_bt net_bt_admin net_bw_acct wakelock context_hub
+ capabilities BLOCK_SUSPEND
+ ioprio rt 4
+ task_profiles ProcessCapacityHigh HighPerformance
+ onrestart restart audioserver
diff --git a/audio/common/all-versions/default/service/service.cpp b/audio/common/all-versions/default/service/service.cpp
index fbf616563d..bd677e29ce 100644
--- a/audio/common/all-versions/default/service/service.cpp
+++ b/audio/common/all-versions/default/service/service.cpp
@@ -33,6 +33,18 @@ using android::OK;
using InterfacesList = std::vector<std::string>;
+#ifdef ARCH_ARM_32
+//default h/w binder memsize is 1 MB
+#define DEFAULT_HW_BINDER_MEM_SIZE_KB 1024
+
+size_t getHWBinderMmapSize(){
+ int32_t value = DEFAULT_HW_BINDER_MEM_SIZE_KB;
+ value = property_get_int32("persist.vendor.audio.hw.binder.size_kbyte", value);
+ ALOGD("Init hw binder with mem size = %d ", value);
+ return 1024 * value;
+}
+#endif
+
/** Try to register the provided factories in the provided order.
* If any registers successfully, do not register any other and return true.
* If all fail, return false.
@@ -74,6 +86,9 @@ static bool registerExternalServiceImplementation(const std::string& libName,
int main(int /* argc */, char* /* argv */ []) {
signal(SIGPIPE, SIG_IGN);
+#ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize(getHWBinderMmapSize());
+#endif
::android::ProcessState::initWithDriver("/dev/vndbinder");
// start a threadpool for vndbinder interactions
diff --git a/boot/1.0/default/Android.bp b/boot/1.0/default/Android.bp
index b7d2ec8971..10634e8535 100644
--- a/boot/1.0/default/Android.bp
+++ b/boot/1.0/default/Android.bp
@@ -39,6 +39,13 @@ cc_binary {
"libhidlbase",
"libutils",
"android.hardware.boot@1.0",
+ "libhwbinder",
],
-
+ arch: {
+ arm: {
+ cflags: [
+ "-DARCH_ARM_32"
+ ],
+ },
+ },
}
diff --git a/boot/1.0/default/service.cpp b/boot/1.0/default/service.cpp
index f3996efe9c..2b50740f2a 100644
--- a/boot/1.0/default/service.cpp
+++ b/boot/1.0/default/service.cpp
@@ -17,10 +17,14 @@
#include <android/hardware/boot/1.0/IBootControl.h>
#include <hidl/LegacySupport.h>
+#include <hwbinder/ProcessState.h>
using ::android::hardware::boot::V1_0::IBootControl;
using android::hardware::defaultPassthroughServiceImplementation;
int main (int /* argc */, char * /* argv */ []) {
+#ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)8192);
+#endif
return defaultPassthroughServiceImplementation<IBootControl>();
}
diff --git a/camera/common/1.0/default/Android.bp b/camera/common/1.0/default/Android.bp
index 4a5ca83803..0927807b21 100644
--- a/camera/common/1.0/default/Android.bp
+++ b/camera/common/1.0/default/Android.bp
@@ -36,4 +36,5 @@ cc_library_static {
],
include_dirs: ["system/media/private/camera/include"],
export_include_dirs: ["include"],
+ sdclang: false,
}
diff --git a/camera/common/1.0/default/CameraModule.cpp b/camera/common/1.0/default/CameraModule.cpp
index 16fb85cc64..188b4bed27 100644
--- a/camera/common/1.0/default/CameraModule.cpp
+++ b/camera/common/1.0/default/CameraModule.cpp
@@ -267,6 +267,22 @@ int CameraModule::init() {
return res;
}
+int CameraModule::getCameraDeviceVersion(int cameraId, uint32_t* version) {
+ ATRACE_CALL();
+ int ret;
+ if (getModuleApiVersion() >= CAMERA_MODULE_API_VERSION_2_5 &&
+ mModule->get_camera_device_version != NULL) {
+ ret = mModule->get_camera_device_version(cameraId, version);
+ } else {
+ struct camera_info info;
+ ret = getCameraInfo(cameraId, &info);
+ if (ret == OK) {
+ *version = info.device_version;
+ }
+ }
+ return ret;
+}
+
int CameraModule::getCameraInfo(int cameraId, struct camera_info *info) {
ATRACE_CALL();
Mutex::Autolock lock(mCameraInfoLock);
@@ -367,11 +383,9 @@ int CameraModule::getPhysicalCameraInfo(int physicalCameraId, camera_metadata_t
int CameraModule::getDeviceVersion(int cameraId) {
ssize_t index = mDeviceVersionMap.indexOfKey(cameraId);
if (index == NAME_NOT_FOUND) {
- int deviceVersion;
+ uint32_t deviceVersion;
if (getModuleApiVersion() >= CAMERA_MODULE_API_VERSION_2_0) {
- struct camera_info info;
- getCameraInfo(cameraId, &info);
- deviceVersion = info.device_version;
+ getCameraDeviceVersion(cameraId, &deviceVersion);
} else {
deviceVersion = CAMERA_DEVICE_API_VERSION_1_0;
}
diff --git a/camera/common/1.0/default/include/CameraModule.h b/camera/common/1.0/default/include/CameraModule.h
index c89e934655..8195835406 100644
--- a/camera/common/1.0/default/include/CameraModule.h
+++ b/camera/common/1.0/default/include/CameraModule.h
@@ -49,6 +49,7 @@ public:
// Returns OK on success, NO_INIT on failure
int init();
+ int getCameraDeviceVersion(int cameraId, uint32_t* version);
int getCameraInfo(int cameraId, struct camera_info *info);
int getDeviceVersion(int cameraId);
int getNumberOfCameras(void);
diff --git a/camera/device/1.0/default/Android.bp b/camera/device/1.0/default/Android.bp
index 9ff6480d4b..f875d77f68 100644
--- a/camera/device/1.0/default/Android.bp
+++ b/camera/device/1.0/default/Android.bp
@@ -19,6 +19,7 @@ cc_library_shared {
"libhidlmemory",
"libutils",
"android.hardware.camera.device@1.0",
+ "vendor.qti.hardware.camera.device@1.0",
"android.hardware.camera.common@1.0",
"android.hardware.graphics.allocator@2.0",
"android.hardware.graphics.mapper@2.0",
@@ -40,4 +41,9 @@ cc_library_shared {
"media_plugin_headers",
],
export_include_dirs: ["."],
+ sdclang: false, // See b/163842697
+ // Since this platform module has been forked to depend on a vendor
+ // proprietary library, we exclude it from the vendor snapshot so that it
+ // will be built from source as part of the vendor build.
+ exclude_from_vendor_snapshot: true,
}
diff --git a/camera/device/1.0/default/CameraDevice.cpp b/camera/device/1.0/default/CameraDevice.cpp
index 80733d1908..622660685f 100644
--- a/camera/device/1.0/default/CameraDevice.cpp
+++ b/camera/device/1.0/default/CameraDevice.cpp
@@ -433,30 +433,68 @@ void CameraDevice::sDataCb(int32_t msg_type, const camera_memory_t *data, unsign
index, mem->mNumBufs);
return;
}
- if (object->mDeviceCallback != nullptr) {
- CameraFrameMetadata hidlMetadata;
- if (metadata) {
- hidlMetadata.faces.resize(metadata->number_of_faces);
- for (size_t i = 0; i < hidlMetadata.faces.size(); i++) {
- hidlMetadata.faces[i].score = metadata->faces[i].score;
- hidlMetadata.faces[i].id = metadata->faces[i].id;
- for (int k = 0; k < 4; k++) {
- hidlMetadata.faces[i].rect[k] = metadata->faces[i].rect[k];
- }
- for (int k = 0; k < 2; k++) {
- hidlMetadata.faces[i].leftEye[k] = metadata->faces[i].left_eye[k];
- }
- for (int k = 0; k < 2; k++) {
- hidlMetadata.faces[i].rightEye[k] = metadata->faces[i].right_eye[k];
- }
- for (int k = 0; k < 2; k++) {
- hidlMetadata.faces[i].mouth[k] = metadata->faces[i].mouth[k];
- }
- }
- }
- CameraHeapMemory* mem = static_cast<CameraHeapMemory *>(data->handle);
- object->mDeviceCallback->dataCallback(
- (DataCallbackMsg) msg_type, mem->handle.mId, index, hidlMetadata);
+ if(object->mQDeviceCallback != nullptr) {
+ vendor::qti::hardware::camera::device::V1_0::QCameraFrameMetadata hidlMetadata;
+ if (metadata) {
+ hidlMetadata.faces.resize(metadata->number_of_faces);
+ for (size_t i = 0; i < hidlMetadata.faces.size(); i++) {
+ hidlMetadata.faces[i].score = metadata->faces[i].score;
+ hidlMetadata.faces[i].id = metadata->faces[i].id;
+ for (int k = 0; k < 4; k++) {
+ hidlMetadata.faces[i].rect[k] = metadata->faces[i].rect[k];
+ }
+ for (int k = 0; k < 2; k++) {
+ hidlMetadata.faces[i].leftEye[k] = metadata->faces[i].left_eye[k];
+ }
+ for (int k = 0; k < 2; k++) {
+ hidlMetadata.faces[i].rightEye[k] = metadata->faces[i].right_eye[k];
+ }
+ for (int k = 0; k < 2; k++) {
+ hidlMetadata.faces[i].mouth[k] = metadata->faces[i].mouth[k];
+ }
+ hidlMetadata.faces[i].smile_degree = metadata->faces[i].smile_degree;
+ hidlMetadata.faces[i].smile_score = metadata->faces[i].smile_score;
+ hidlMetadata.faces[i].blink_detected = metadata->faces[i].blink_detected;
+ hidlMetadata.faces[i].face_recognised = metadata->faces[i].face_recognised;
+ hidlMetadata.faces[i].gaze_angle = metadata->faces[i].gaze_angle;
+ hidlMetadata.faces[i].updown_dir = metadata->faces[i].updown_dir;
+ hidlMetadata.faces[i].leftright_dir = metadata->faces[i].leftright_dir;
+ hidlMetadata.faces[i].roll_dir = metadata->faces[i].roll_dir;
+ hidlMetadata.faces[i].left_right_gaze = metadata->faces[i].left_right_gaze;
+ hidlMetadata.faces[i].top_bottom_gaze = metadata->faces[i].top_bottom_gaze;
+ hidlMetadata.faces[i].leye_blink = metadata->faces[i].leye_blink;
+ hidlMetadata.faces[i].reye_blink = metadata->faces[i].reye_blink;
+ }
+ }
+ CameraHeapMemory* mem = static_cast<CameraHeapMemory *>(data->handle);
+ object->mQDeviceCallback->QDataCallback(
+ (DataCallbackMsg) msg_type, mem->handle.mId, index, hidlMetadata);
+ } else {
+ if (object->mDeviceCallback != nullptr) {
+ CameraFrameMetadata hidlMetadata;
+ if (metadata) {
+ hidlMetadata.faces.resize(metadata->number_of_faces);
+ for (size_t i = 0; i < hidlMetadata.faces.size(); i++) {
+ hidlMetadata.faces[i].score = metadata->faces[i].score;
+ hidlMetadata.faces[i].id = metadata->faces[i].id;
+ for (int k = 0; k < 4; k++) {
+ hidlMetadata.faces[i].rect[k] = metadata->faces[i].rect[k];
+ }
+ for (int k = 0; k < 2; k++) {
+ hidlMetadata.faces[i].leftEye[k] = metadata->faces[i].left_eye[k];
+ }
+ for (int k = 0; k < 2; k++) {
+ hidlMetadata.faces[i].rightEye[k] = metadata->faces[i].right_eye[k];
+ }
+ for (int k = 0; k < 2; k++) {
+ hidlMetadata.faces[i].mouth[k] = metadata->faces[i].mouth[k];
+ }
+ }
+ }
+ CameraHeapMemory* mem = static_cast<CameraHeapMemory *>(data->handle);
+ object->mDeviceCallback->dataCallback(
+ (DataCallbackMsg) msg_type, mem->handle.mId, index, hidlMetadata);
+ }
}
}
@@ -672,6 +710,11 @@ Return<Status> CameraDevice::open(const sp<ICameraDeviceCallback>& callback) {
initHalPreviewWindow();
mDeviceCallback = callback;
+ mQDeviceCallback =
+ vendor::qti::hardware::camera::device::V1_0::IQCameraDeviceCallback::castFrom(callback);
+ if(mQDeviceCallback == nullptr) {
+ ALOGI("could not cast ICameraDeviceCallback to IQCameraDeviceCallback");
+ }
if (mDevice->ops->set_callbacks) {
mDevice->ops->set_callbacks(mDevice,
diff --git a/camera/device/1.0/default/CameraDevice_1_0.h b/camera/device/1.0/default/CameraDevice_1_0.h
index 2c980f0a8f..e5a194edc5 100644
--- a/camera/device/1.0/default/CameraDevice_1_0.h
+++ b/camera/device/1.0/default/CameraDevice_1_0.h
@@ -24,6 +24,7 @@
#include "HandleImporter.h"
#include <android/hardware/camera/device/1.0/ICameraDevice.h>
+#include <vendor/qti/hardware/camera/device/1.0/IQCameraDeviceCallback.h>
#include <android/hidl/allocator/1.0/IAllocator.h>
#include <android/hidl/memory/1.0/IMemory.h>
#include <hidl/MQDescriptor.h>
@@ -44,6 +45,7 @@ using ::android::hardware::camera::common::V1_0::helper::HandleImporter;
using ::android::hardware::camera::device::V1_0::CameraInfo;
using ::android::hardware::camera::device::V1_0::CommandType;
using ::android::hardware::camera::device::V1_0::ICameraDevice;
+using ::vendor::qti::hardware::camera::device::V1_0::IQCameraDeviceCallback;
using ::android::hardware::camera::device::V1_0::ICameraDeviceCallback;
using ::android::hardware::camera::device::V1_0::ICameraDevicePreviewCallback;
using ::android::hardware::camera::device::V1_0::MemoryId;
@@ -164,6 +166,7 @@ private:
const SortedVector<std::pair<std::string, std::string>>& mCameraDeviceNames;
sp<ICameraDeviceCallback> mDeviceCallback = nullptr;
+ sp<IQCameraDeviceCallback> mQDeviceCallback = nullptr;
mutable Mutex mMemoryMapLock; // gating access to mMemoryMap
// must not hold mLock after this lock is acquired
diff --git a/camera/device/3.2/default/Android.bp b/camera/device/3.2/default/Android.bp
index a1962915ff..d7ad6ad740 100644
--- a/camera/device/3.2/default/Android.bp
+++ b/camera/device/3.2/default/Android.bp
@@ -38,4 +38,5 @@ cc_library_shared {
export_shared_lib_headers: [
"libfmq",
],
+ sdclang: false, // See b/163842697
}
diff --git a/camera/device/3.2/default/CameraDeviceSession.cpp b/camera/device/3.2/default/CameraDeviceSession.cpp
index 769991c5fa..896c35843a 100644
--- a/camera/device/3.2/default/CameraDeviceSession.cpp
+++ b/camera/device/3.2/default/CameraDeviceSession.cpp
@@ -926,12 +926,12 @@ bool CameraDeviceSession::preProcessConfigurationLocked(
mStreamMap[id].data_space);
mCirculatingBuffers.emplace(stream.mId, CirculatingBuffers{});
} else {
- // width/height/format must not change, but usage/rotation might need to change
+ // width/height must not change, but usage/rotation might need to change
+ // format might change and get updated with overrideFormat
if (mStreamMap[id].stream_type !=
(int) requestedConfiguration.streams[i].streamType ||
mStreamMap[id].width != requestedConfiguration.streams[i].width ||
mStreamMap[id].height != requestedConfiguration.streams[i].height ||
- mStreamMap[id].format != (int) requestedConfiguration.streams[i].format ||
mStreamMap[id].data_space !=
mapToLegacyDataspace( static_cast<android_dataspace_t> (
requestedConfiguration.streams[i].dataSpace))) {
diff --git a/camera/device/3.2/default/convert.cpp b/camera/device/3.2/default/convert.cpp
index 06ad7e963c..628b7af912 100644
--- a/camera/device/3.2/default/convert.cpp
+++ b/camera/device/3.2/default/convert.cpp
@@ -66,6 +66,8 @@ void convertFromHidl(const Stream &src, Camera3Stream* dst) {
dst->data_space = (android_dataspace_t) src.dataSpace;
dst->rotation = (int) src.rotation;
dst->usage = (uint32_t) src.usage;
+ dst->reserved[0] = NULL;
+ dst->reserved[1] = NULL;
// Fields to be filled by HAL (max_buffers, priv) are initialized to 0
dst->max_buffers = 0;
dst->priv = 0;
@@ -88,6 +90,23 @@ void convertToHidl(const Camera3Stream* src, HalStream* dst) {
ALOGW("%s: Stream type %d is not currently supported!",
__FUNCTION__, src->stream_type);
}
+
+ HalStream* halStream = NULL;
+ if (src->reserved[0] != NULL) {
+ halStream = (HalStream*)(src->reserved[0]);
+ } else if (src->reserved[1] != NULL) {
+ halStream = (HalStream*)(src->reserved[1]);
+ }
+
+ // Check if overrideFormat is set and honor it
+ if (halStream != NULL) {
+ dst->overrideFormat = (PixelFormat) halStream->overrideFormat;
+ if (src->stream_type == CAMERA3_STREAM_OUTPUT) {
+ dst->producerUsage = (BufferUsageFlags)halStream->producerUsage;
+ } else if (src->stream_type == CAMERA3_STREAM_INPUT) {
+ dst->consumerUsage = (BufferUsageFlags)halStream->consumerUsage;
+ }
+ }
}
void convertToHidl(const camera3_stream_configuration_t& src, HalStreamConfiguration* dst) {
diff --git a/camera/device/3.3/default/convert.cpp b/camera/device/3.3/default/convert.cpp
index dae190b03c..ac17d837d7 100644
--- a/camera/device/3.3/default/convert.cpp
+++ b/camera/device/3.3/default/convert.cpp
@@ -47,6 +47,22 @@ void convertToHidl(const Camera3Stream* src, HalStream* dst) {
ALOGW("%s: Stream type %d is not currently supported!",
__FUNCTION__, src->stream_type);
}
+
+ HalStream* halStream = NULL;
+ if (src->reserved[0] != NULL) {
+ halStream = (HalStream*)(src->reserved[0]);
+ } else if (src->reserved[1] != NULL) {
+ halStream = (HalStream*)(src->reserved[1]);
+ }
+
+ if (halStream != NULL) {
+ dst->v3_2.overrideFormat = (PixelFormat) halStream->v3_2.overrideFormat;
+ if (src->stream_type == CAMERA3_STREAM_OUTPUT) {
+ dst->v3_2.producerUsage = (BufferUsageFlags)halStream->v3_2.producerUsage;
+ } else if (src->stream_type == CAMERA3_STREAM_INPUT) {
+ dst->v3_2.consumerUsage = (BufferUsageFlags)halStream->v3_2.consumerUsage;
+ }
+ }
}
void convertToHidl(const camera3_stream_configuration_t& src, HalStreamConfiguration* dst) {
diff --git a/camera/device/3.4/default/Android.bp b/camera/device/3.4/default/Android.bp
index 9f0c77739a..17bcdbb6d4 100644
--- a/camera/device/3.4/default/Android.bp
+++ b/camera/device/3.4/default/Android.bp
@@ -71,6 +71,7 @@ cc_library_shared {
export_shared_lib_headers: [
"libfmq",
],
+ sdclang: false, // See b/163842697
}
cc_library_shared {
@@ -114,4 +115,5 @@ cc_library_shared {
export_shared_lib_headers: [
"libfmq",
],
+ sdclang: false, // See b/163842697
}
diff --git a/camera/device/3.5/default/Android.bp b/camera/device/3.5/default/Android.bp
index 9d27b321e0..4ed65ba72d 100644
--- a/camera/device/3.5/default/Android.bp
+++ b/camera/device/3.5/default/Android.bp
@@ -68,6 +68,7 @@ cc_library_shared {
"android.hardware.camera.common@1.0-helper",
],
local_include_dirs: ["include/device_v3_5_impl"],
+ sdclang: false, // See b/163842697
}
cc_library_shared {
@@ -112,4 +113,5 @@ cc_library_shared {
export_shared_lib_headers: [
"libfmq",
],
+ sdclang: false, // See b/163842697
}
diff --git a/camera/device/3.6/default/Android.bp b/camera/device/3.6/default/Android.bp
index 89ee145820..0e5440a865 100644
--- a/camera/device/3.6/default/Android.bp
+++ b/camera/device/3.6/default/Android.bp
@@ -74,4 +74,5 @@ cc_library_shared {
export_shared_lib_headers: [
"libfmq",
],
+ sdclang: false, // See b/163842697
}
diff --git a/camera/provider/2.4/default/Android.bp b/camera/provider/2.4/default/Android.bp
index bccd6cb536..76220e2917 100644
--- a/camera/provider/2.4/default/Android.bp
+++ b/camera/provider/2.4/default/Android.bp
@@ -15,6 +15,7 @@ cc_library_shared {
shared_libs: [
"android.hardware.camera.common@1.0",
"android.hardware.camera.device@1.0",
+ "vendor.qti.hardware.camera.device@1.0",
"android.hardware.camera.device@3.2",
"android.hardware.camera.device@3.3",
"android.hardware.camera.device@3.4",
@@ -45,6 +46,11 @@ cc_library_shared {
"camera.device@3.5-impl_headers",
],
export_include_dirs: ["."],
+ sdclang: false, // See b/163842697
+ // Since this framework module has been forked to depend on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
cc_library_shared {
@@ -88,6 +94,10 @@ cc_library_shared {
"camera.device@3.6-external-impl_headers",
],
export_include_dirs: ["."],
+ // Since this framework module has a transitive dependency on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
cc_library_shared {
@@ -136,6 +146,10 @@ cc_library_shared {
"android.hardware.camera.common@1.0-helper",
],
export_include_dirs: ["."],
+ // Since this framework module has a transitive dependency on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
cc_defaults {
@@ -147,6 +161,7 @@ cc_defaults {
shared_libs: [
"android.hardware.camera.common@1.0",
"android.hardware.camera.device@1.0",
+ "vendor.qti.hardware.camera.device@1.0",
"android.hardware.camera.device@3.2",
"android.hardware.camera.device@3.3",
"android.hardware.camera.device@3.4",
@@ -174,6 +189,10 @@ cc_defaults {
"camera.device@3.5-external-impl_headers",
"camera.device@3.5-impl_headers",
],
+ // Since this framework module has been forked to depend on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
cc_binary {
@@ -236,4 +255,8 @@ cc_binary {
"camera.device@3.5-external-impl_headers",
"camera.device@3.5-impl_headers",
],
+ // Since this framework module has a transitive dependency on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
diff --git a/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.cpp b/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.cpp
index 7c3b982931..ab97646e32 100644
--- a/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.cpp
+++ b/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.cpp
@@ -87,23 +87,32 @@ void LegacyCameraProviderImpl_2_4::addDeviceNames(int camera_id, CameraDeviceSta
if (deviceVersion >= CAMERA_DEVICE_API_VERSION_3_2 &&
mModule->isOpenLegacyDefined()) {
// try open_legacy to see if it actually works
- struct hw_device_t* halDev = nullptr;
- int ret = mModule->openLegacy(cameraId, CAMERA_DEVICE_API_VERSION_1_0, &halDev);
- if (ret == 0) {
- mOpenLegacySupported[cameraIdStr] = true;
- halDev->close(halDev);
- deviceNamePair = std::make_pair(cameraIdStr,
+ if ((property_get_bool("ro.config.low_ram", /*default*/ false))) {
+ deviceNamePair = std::make_pair(cameraIdStr,
getHidlDeviceName(cameraIdStr, CAMERA_DEVICE_API_VERSION_1_0));
- mCameraDeviceNames.add(deviceNamePair);
- if (cam_new) {
- mCallbacks->cameraDeviceStatusChange(deviceNamePair.second, status);
- }
- } else if (ret == -EBUSY || ret == -EUSERS) {
+ mCameraDeviceNames.add(deviceNamePair);
+ if (cam_new) {
+ mCallbacks->cameraDeviceStatusChange(deviceNamePair.second, status);
+ }
+ } else {
+ struct hw_device_t* halDev = nullptr;
+ int ret = mModule->openLegacy(cameraId, CAMERA_DEVICE_API_VERSION_1_0, &halDev);
+ if (ret == 0) {
+ mOpenLegacySupported[cameraIdStr] = true;
+ halDev->close(halDev);
+ deviceNamePair = std::make_pair(cameraIdStr,
+ getHidlDeviceName(cameraIdStr, CAMERA_DEVICE_API_VERSION_1_0));
+ mCameraDeviceNames.add(deviceNamePair);
+ if (cam_new) {
+ mCallbacks->cameraDeviceStatusChange(deviceNamePair.second, status);
+ }
+ } else if (ret == -EBUSY || ret == -EUSERS) {
// Looks like this provider instance is not initialized during
// system startup and there are other camera users already.
// Not a good sign but not fatal.
- ALOGW("%s: open_legacy try failed!", __FUNCTION__);
- }
+ ALOGW("%s: open_legacy try failed!", __FUNCTION__);
+ }
+ }
}
}
@@ -314,15 +323,15 @@ bool LegacyCameraProviderImpl_2_4::initialize() {
mNumberOfLegacyCameras = mModule->getNumberOfCameras();
for (int i = 0; i < mNumberOfLegacyCameras; i++) {
- struct camera_info info;
- auto rc = mModule->getCameraInfo(i, &info);
+ uint32_t device_version;
+ auto rc = mModule->getCameraDeviceVersion(i, &device_version);
if (rc != NO_ERROR) {
- ALOGE("%s: Camera info query failed!", __func__);
+ ALOGE("%s: Camera device version query failed!", __func__);
mModule.clear();
return true;
}
- if (checkCameraVersion(i, info) != OK) {
+ if (checkCameraVersion(i, device_version) != OK) {
ALOGE("%s: Camera version check failed!", __func__);
mModule.clear();
return true;
@@ -342,7 +351,7 @@ bool LegacyCameraProviderImpl_2_4::initialize() {
/**
* Check that the device HAL version is still in supported.
*/
-int LegacyCameraProviderImpl_2_4::checkCameraVersion(int id, camera_info info) {
+int LegacyCameraProviderImpl_2_4::checkCameraVersion(int id, uint32_t device_version) {
if (mModule == nullptr) {
return NO_INIT;
}
@@ -352,7 +361,7 @@ int LegacyCameraProviderImpl_2_4::checkCameraVersion(int id, camera_info info) {
uint16_t moduleVersion = mModule->getModuleApiVersion();
if (moduleVersion >= CAMERA_MODULE_API_VERSION_2_0) {
// Verify the device version is in the supported range
- switch (info.device_version) {
+ switch (device_version) {
case CAMERA_DEVICE_API_VERSION_1_0:
case CAMERA_DEVICE_API_VERSION_3_2:
case CAMERA_DEVICE_API_VERSION_3_3:
@@ -370,7 +379,7 @@ int LegacyCameraProviderImpl_2_4::checkCameraVersion(int id, camera_info info) {
if (moduleVersion < CAMERA_MODULE_API_VERSION_2_5) {
ALOGE("%s: Device %d has unsupported version combination:"
"HAL version %x and module version %x",
- __FUNCTION__, id, info.device_version, moduleVersion);
+ __FUNCTION__, id, device_version, moduleVersion);
return NO_INIT;
}
break;
@@ -380,8 +389,8 @@ int LegacyCameraProviderImpl_2_4::checkCameraVersion(int id, camera_info info) {
case CAMERA_DEVICE_API_VERSION_3_1:
// no longer supported
default:
- ALOGE("%s: Device %d has HAL version %x, which is not supported",
- __FUNCTION__, id, info.device_version);
+ ALOGE("%s: Device %d has HAL version %x, which is not supported", __FUNCTION__, id,
+ device_version);
return NO_INIT;
}
}
diff --git a/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.h b/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.h
index b4914b3cfe..9ec5c5e8db 100644
--- a/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.h
+++ b/camera/provider/2.4/default/LegacyCameraProviderImpl_2_4.h
@@ -97,7 +97,7 @@ protected:
hidl_vec<VendorTagSection> mVendorTagSections;
bool setUpVendorTags();
- int checkCameraVersion(int id, camera_info info);
+ int checkCameraVersion(int id, uint32_t device_version);
// create HIDL device name from camera ID and legacy device version
std::string getHidlDeviceName(std::string cameraId, int deviceVersion);
diff --git a/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
index f7ac9f83e4..ff924ed360 100644
--- a/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
+++ b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
@@ -5,4 +5,4 @@ service vendor.camera-provider-2-4 /vendor/bin/hw/android.hardware.camera.provid
group audio camera input drmrpc
ioprio rt 4
capabilities SYS_NICE
- task_profiles CameraServiceCapacity MaxPerformance
+ task_profiles CameraServiceCapacity HighPerformance
diff --git a/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service_64.rc b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service_64.rc
index a32dd468d3..642e84e5b0 100644
--- a/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service_64.rc
+++ b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service_64.rc
@@ -5,4 +5,4 @@ service vendor.camera-provider-2-4 /vendor/bin/hw/android.hardware.camera.provid
group audio camera input drmrpc
ioprio rt 4
capabilities SYS_NICE
- task_profiles CameraServiceCapacity MaxPerformance
+ task_profiles CameraServiceCapacity HighPerformance
diff --git a/camera/provider/2.5/default/Android.bp b/camera/provider/2.5/default/Android.bp
index 2fcb35ab00..188b70157a 100644
--- a/camera/provider/2.5/default/Android.bp
+++ b/camera/provider/2.5/default/Android.bp
@@ -44,6 +44,10 @@ cc_library_shared {
"camera.device@3.5-impl_headers",
],
export_include_dirs: ["."],
+ // Since this framework module has a transitive dependency on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
cc_library_shared {
@@ -87,6 +91,10 @@ cc_library_shared {
"camera.device@3.6-external-impl_headers"
],
export_include_dirs: ["."],
+ // Since this framework module has a transitive dependency on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
cc_defaults {
@@ -123,6 +131,10 @@ cc_defaults {
"camera.device@3.4-impl_headers",
"camera.device@3.5-impl_headers"
],
+ // Since this framework module has a transitive dependency on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
cc_binary {
@@ -196,4 +208,8 @@ cc_binary {
"camera.device@3.5-impl_headers",
"camera.device@3.6-external-impl_headers",
],
+ // Since this framework module has a transitive dependency on a vendor
+ // proprietary library, we exclude this module from the vendor snapshot so
+ // that it will be built from source as part of the vendor image build.
+ exclude_from_vendor_snapshot: true,
}
diff --git a/cas/1.0/default/Android.bp b/cas/1.0/default/Android.bp
index fc5b3b4361..a85c5fc230 100644
--- a/cas/1.0/default/Android.bp
+++ b/cas/1.0/default/Android.bp
@@ -33,10 +33,16 @@ cc_defaults {
"liblog",
"libstagefright_foundation",
"libutils",
+ "libhwbinder"
],
header_libs: [
"media_plugin_headers",
],
+ arch: {
+ arm: {
+ cflags: ["-DARCH_ARM_32"],
+ },
+ },
}
cc_binary {
diff --git a/cas/1.0/default/service.cpp b/cas/1.0/default/service.cpp
index 754c0c5af7..dfb385d2a0 100644
--- a/cas/1.0/default/service.cpp
+++ b/cas/1.0/default/service.cpp
@@ -27,6 +27,10 @@
#include "MediaCasService.h"
+#ifdef ARCH_ARM_32
+#include <hwbinder/ProcessState.h>
+#endif
+
using android::hardware::configureRpcThreadpool;
using android::hardware::joinRpcThreadpool;
using android::hardware::LazyServiceRegistrar;
@@ -40,6 +44,9 @@ const bool kLazyService = false;
#endif
int main() {
+ #ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)32768);
+ #endif
configureRpcThreadpool(8, true /* callerWillJoin */);
// Setup hwbinder service
diff --git a/compatibility_matrices/compatibility_matrix.4.xml b/compatibility_matrices/compatibility_matrix.4.xml
index 8ef0b3ad27..5e4bcb4c1c 100644
--- a/compatibility_matrices/compatibility_matrix.4.xml
+++ b/compatibility_matrices/compatibility_matrix.4.xml
@@ -505,6 +505,7 @@
<interface>
<name>IHostapd</name>
<instance>default</instance>
+ <instance>wigighostapd</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
diff --git a/compatibility_matrices/compatibility_matrix.5.xml b/compatibility_matrices/compatibility_matrix.5.xml
index 12b85c7724..df594ab2f0 100644
--- a/compatibility_matrices/compatibility_matrix.5.xml
+++ b/compatibility_matrices/compatibility_matrix.5.xml
@@ -554,6 +554,7 @@
<interface>
<name>IHostapd</name>
<instance>default</instance>
+ <instance>wigighostapd</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
diff --git a/compatibility_matrices/compatibility_matrix.6.xml b/compatibility_matrices/compatibility_matrix.6.xml
index e19d2dd12e..6ea772fc38 100644
--- a/compatibility_matrices/compatibility_matrix.6.xml
+++ b/compatibility_matrices/compatibility_matrix.6.xml
@@ -644,6 +644,7 @@
<interface>
<name>IHostapd</name>
<instance>default</instance>
+ <instance>wigighostapd</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
diff --git a/graphics/allocator/2.0/default/Android.bp b/graphics/allocator/2.0/default/Android.bp
index 4d17dc3a1b..47c34849c1 100644
--- a/graphics/allocator/2.0/default/Android.bp
+++ b/graphics/allocator/2.0/default/Android.bp
@@ -42,4 +42,11 @@ cc_binary {
"liblog",
"libutils",
],
+ arch: {
+ arm: {
+ cflags: [
+ "-DARCH_ARM_32"
+ ],
+ },
+ },
}
diff --git a/graphics/allocator/2.0/default/service.cpp b/graphics/allocator/2.0/default/service.cpp
index bc0539a617..ca1fee4f2d 100644
--- a/graphics/allocator/2.0/default/service.cpp
+++ b/graphics/allocator/2.0/default/service.cpp
@@ -19,10 +19,15 @@
#include <android/hardware/graphics/allocator/2.0/IAllocator.h>
#include <hidl/LegacySupport.h>
+#include <hwbinder/ProcessState.h>
using android::hardware::defaultPassthroughServiceImplementation;
using android::hardware::graphics::allocator::V2_0::IAllocator;
int main() {
+
+#ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)(32768));
+#endif
return defaultPassthroughServiceImplementation<IAllocator>(4);
}
diff --git a/graphics/composer/2.1/default/Android.bp b/graphics/composer/2.1/default/Android.bp
index 96fea4e6cd..3744469e21 100644
--- a/graphics/composer/2.1/default/Android.bp
+++ b/graphics/composer/2.1/default/Android.bp
@@ -22,6 +22,7 @@ cc_binary {
"android.hardware.graphics.composer@2.1-resources",
"libbase",
"libbinder",
+ "libhwbinder",
"libcutils",
"libfmq",
"libhardware",
@@ -32,4 +33,11 @@ cc_binary {
"libsync",
"libutils",
],
+ arch: {
+ arm: {
+ cflags: [
+ "-DARCH_ARM_32"
+ ],
+ },
+ },
}
diff --git a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
index c8fccdce20..6e2c8134c5 100644
--- a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
+++ b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
@@ -1,8 +1,8 @@
service vendor.hwcomposer-2-1 /vendor/bin/hw/android.hardware.graphics.composer@2.1-service
- interface android.hardware.graphics.composer@2.1::IComposer default
class hal animation
user system
group graphics drmrpc
capabilities SYS_NICE
onrestart restart surfaceflinger
task_profiles ServiceCapacityLow
+ socket pps stream 0660 system system
diff --git a/graphics/composer/2.1/default/service.cpp b/graphics/composer/2.1/default/service.cpp
index 1276d2df7e..b8ddd212a4 100644
--- a/graphics/composer/2.1/default/service.cpp
+++ b/graphics/composer/2.1/default/service.cpp
@@ -23,6 +23,7 @@
#include <binder/ProcessState.h>
#include <composer-passthrough/2.1/HwcLoader.h>
#include <hidl/LegacySupport.h>
+#include <hwbinder/ProcessState.h>
using android::hardware::graphics::composer::V2_1::IComposer;
using android::hardware::graphics::composer::V2_1::passthrough::HwcLoader;
@@ -41,6 +42,10 @@ int main() {
ALOGE("Couldn't set SCHED_FIFO: %d", errno);
}
+#ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)(32768));
+#endif
+
android::hardware::configureRpcThreadpool(4, true /* will join */);
android::sp<IComposer> composer = HwcLoader::load();
diff --git a/graphics/composer/2.2/default/android.hardware.graphics.composer@2.2-service.rc b/graphics/composer/2.2/default/android.hardware.graphics.composer@2.2-service.rc
index 7714119993..ddb5e8f5b0 100644
--- a/graphics/composer/2.2/default/android.hardware.graphics.composer@2.2-service.rc
+++ b/graphics/composer/2.2/default/android.hardware.graphics.composer@2.2-service.rc
@@ -4,4 +4,5 @@ service vendor.hwcomposer-2-2 /vendor/bin/hw/android.hardware.graphics.composer@
group graphics drmrpc
capabilities SYS_NICE
onrestart restart surfaceflinger
+ socket pps stream 0660 system system
task_profiles ServiceCapacityLow
diff --git a/graphics/composer/2.3/default/android.hardware.graphics.composer@2.3-service.rc b/graphics/composer/2.3/default/android.hardware.graphics.composer@2.3-service.rc
index d3835a4121..9b941539c2 100644
--- a/graphics/composer/2.3/default/android.hardware.graphics.composer@2.3-service.rc
+++ b/graphics/composer/2.3/default/android.hardware.graphics.composer@2.3-service.rc
@@ -4,4 +4,5 @@ service vendor.hwcomposer-2-3 /vendor/bin/hw/android.hardware.graphics.composer@
group graphics drmrpc
capabilities SYS_NICE
onrestart restart surfaceflinger
+ socket pps stream 0660 system system
task_profiles ServiceCapacityLow
diff --git a/graphics/composer/2.3/utils/passthrough/include/composer-passthrough/2.3/HwcHal.h b/graphics/composer/2.3/utils/passthrough/include/composer-passthrough/2.3/HwcHal.h
index e0e1394027..19c4653e0f 100644
--- a/graphics/composer/2.3/utils/passthrough/include/composer-passthrough/2.3/HwcHal.h
+++ b/graphics/composer/2.3/utils/passthrough/include/composer-passthrough/2.3/HwcHal.h
@@ -222,6 +222,10 @@ class HwcHalImpl : public V2_2::passthrough::detail::HwcHalImpl<Hal> {
Error getDisplayCapabilities(
Display display,
std::vector<IComposerClient::DisplayCapability>* outCapabilities) override {
+ if (!mDispatch.getDisplayCapabilities) {
+ return Error::UNSUPPORTED;
+ }
+
uint32_t count = 0;
int32_t error = mDispatch.getDisplayCapabilities(mDevice, display, &count, nullptr);
if (error != HWC2_ERROR_NONE) {
diff --git a/graphics/composer/2.4/default/android.hardware.graphics.composer@2.4-service.rc b/graphics/composer/2.4/default/android.hardware.graphics.composer@2.4-service.rc
index d82dcd92f0..06003b02b3 100644
--- a/graphics/composer/2.4/default/android.hardware.graphics.composer@2.4-service.rc
+++ b/graphics/composer/2.4/default/android.hardware.graphics.composer@2.4-service.rc
@@ -5,3 +5,4 @@ service vendor.hwcomposer-2-4 /vendor/bin/hw/android.hardware.graphics.composer@
capabilities SYS_NICE
onrestart restart surfaceflinger
task_profiles ServiceCapacityLow
+ socket pps stream 0660 system system
diff --git a/keymaster/4.0/support/include/keymasterV4_0/keymaster_tags.h b/keymaster/4.0/support/include/keymasterV4_0/keymaster_tags.h
index ea40971898..d7358f36f3 100644
--- a/keymaster/4.0/support/include/keymasterV4_0/keymaster_tags.h
+++ b/keymaster/4.0/support/include/keymasterV4_0/keymaster_tags.h
@@ -73,6 +73,9 @@ namespace V4_0 {
static const int32_t KM_TAG_DIGEST_OLD = static_cast<int32_t>(TagType::ENUM) | 5;
static const int32_t KM_TAG_PADDING_OLD = static_cast<int32_t>(TagType::ENUM) | 7;
+static const int32_t KM_TAG_FBE_ICE = static_cast<int32_t>(TagType::BOOL) | 16201;
+static const int32_t KM_TAG_KEY_TYPE = static_cast<int32_t>(TagType::UINT) | 16202;
+
constexpr TagType typeFromTag(Tag tag) {
return static_cast<TagType>(static_cast<uint32_t>(tag) & static_cast<uint32_t>(0xf0000000));
}
diff --git a/light/2.0/default/Android.bp b/light/2.0/default/Android.bp
index 2745f3d8be..e3e7e5b0ca 100644
--- a/light/2.0/default/Android.bp
+++ b/light/2.0/default/Android.bp
@@ -50,10 +50,18 @@ cc_defaults {
"libbase",
"libdl",
"libutils",
+ "libhwbinder",
"libhardware",
"libhidlbase",
"android.hardware.light@2.0",
],
+ arch: {
+ arm: {
+ cflags: [
+ "-DARCH_ARM_32"
+ ],
+ },
+ },
}
cc_binary {
diff --git a/light/2.0/default/service.cpp b/light/2.0/default/service.cpp
index 20f0578f02..b50a2034f4 100644
--- a/light/2.0/default/service.cpp
+++ b/light/2.0/default/service.cpp
@@ -16,10 +16,14 @@
#include <android/hardware/light/2.0/ILight.h>
#include <hidl/LegacySupport.h>
+#include <hwbinder/ProcessState.h>
using android::hardware::light::V2_0::ILight;
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
+#ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)(32768));
+#endif
return defaultPassthroughServiceImplementation<ILight>();
}
diff --git a/neuralnetworks/1.0/vts/functional/AndroidTest.xml b/neuralnetworks/1.0/vts/functional/AndroidTest.xml
index 8f56ff9c1f..9dd85ae7f1 100644
--- a/neuralnetworks/1.0/vts/functional/AndroidTest.xml
+++ b/neuralnetworks/1.0/vts/functional/AndroidTest.xml
@@ -29,6 +29,5 @@
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNeuralnetworksV1_0TargetTest" />
<option name="native-test-timeout" value="20m" />
- <option name="native-test-flag" value="--gtest_break_on_failure" />
</test>
</configuration>
diff --git a/neuralnetworks/1.1/vts/functional/AndroidTest.xml b/neuralnetworks/1.1/vts/functional/AndroidTest.xml
index 956933362f..74001f924e 100644
--- a/neuralnetworks/1.1/vts/functional/AndroidTest.xml
+++ b/neuralnetworks/1.1/vts/functional/AndroidTest.xml
@@ -29,6 +29,5 @@
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNeuralnetworksV1_1TargetTest" />
<option name="native-test-timeout" value="20m" />
- <option name="native-test-flag" value="--gtest_break_on_failure" />
</test>
</configuration>
diff --git a/neuralnetworks/1.2/vts/functional/AndroidTest.xml b/neuralnetworks/1.2/vts/functional/AndroidTest.xml
index c28b2e2d3c..5396d85928 100644
--- a/neuralnetworks/1.2/vts/functional/AndroidTest.xml
+++ b/neuralnetworks/1.2/vts/functional/AndroidTest.xml
@@ -29,6 +29,5 @@
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNeuralnetworksV1_2TargetTest" />
<option name="native-test-timeout" value="20m" />
- <option name="native-test-flag" value="--gtest_break_on_failure" />
</test>
</configuration>
diff --git a/neuralnetworks/1.3/vts/functional/AndroidTest.xml b/neuralnetworks/1.3/vts/functional/AndroidTest.xml
index d1cba6ac54..c418aaaddc 100644
--- a/neuralnetworks/1.3/vts/functional/AndroidTest.xml
+++ b/neuralnetworks/1.3/vts/functional/AndroidTest.xml
@@ -29,6 +29,5 @@
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNeuralnetworksV1_3TargetTest" />
<option name="native-test-timeout" value="20m" />
- <option name="native-test-flag" value="--gtest_break_on_failure" />
</test>
</configuration>
diff --git a/neuralnetworks/aidl/vts/functional/AndroidTestDevice.xml b/neuralnetworks/aidl/vts/functional/AndroidTestDevice.xml
index 204d8f1117..384d42078f 100644
--- a/neuralnetworks/aidl/vts/functional/AndroidTestDevice.xml
+++ b/neuralnetworks/aidl/vts/functional/AndroidTestDevice.xml
@@ -29,6 +29,5 @@
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNeuralnetworksTargetTest" />
<option name="native-test-timeout" value="20m" />
- <option name="native-test-flag" value="--gtest_break_on_failure" />
</test>
</configuration>
diff --git a/power/1.0/default/Android.bp b/power/1.0/default/Android.bp
index a64b15ca97..d99ef9d833 100644
--- a/power/1.0/default/Android.bp
+++ b/power/1.0/default/Android.bp
@@ -63,6 +63,12 @@ cc_binary {
"libhardware",
"libhidlbase",
"android.hardware.power@1.0",
+ "libhwbinder"
],
+ arch: {
+ arm: {
+ cflags: ["-DARCH_ARM_32"],
+ },
+ },
}
diff --git a/power/1.0/default/service.cpp b/power/1.0/default/service.cpp
index e8618b84e8..d5619192bb 100644
--- a/power/1.0/default/service.cpp
+++ b/power/1.0/default/service.cpp
@@ -18,10 +18,16 @@
#include <android/hardware/power/1.0/IPower.h>
#include <hidl/LegacySupport.h>
+#ifdef ARCH_ARM_32
+#include <hwbinder/ProcessState.h>
+#endif
using android::hardware::power::V1_0::IPower;
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
+ #ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)16384);
+ #endif
return defaultPassthroughServiceImplementation<IPower>();
}
diff --git a/sensors/1.0/default/Android.bp b/sensors/1.0/default/Android.bp
index 2e4e1b015c..b2d3c49cf2 100644
--- a/sensors/1.0/default/Android.bp
+++ b/sensors/1.0/default/Android.bp
@@ -55,6 +55,7 @@ cc_binary {
relative_install_path: "hw",
vendor: true,
init_rc: ["android.hardware.sensors@1.0-service.rc"],
+ defaults: ["hidl_defaults"],
srcs: ["service.cpp"],
shared_libs: [
@@ -65,5 +66,11 @@ cc_binary {
"libutils",
"libhidlbase",
"android.hardware.sensors@1.0",
+ "libhwbinder",
],
+ arch: {
+ arm: {
+ cflags: ["-DARCH_ARM_32"],
+ },
+ },
}
diff --git a/sensors/1.0/default/android.hardware.sensors@1.0-service.rc b/sensors/1.0/default/android.hardware.sensors@1.0-service.rc
index 1af6d0b08c..e029bb8f72 100644
--- a/sensors/1.0/default/android.hardware.sensors@1.0-service.rc
+++ b/sensors/1.0/default/android.hardware.sensors@1.0-service.rc
@@ -2,6 +2,6 @@ service vendor.sensors-hal-1-0 /vendor/bin/hw/android.hardware.sensors@1.0-servi
interface android.hardware.sensors@1.0::ISensors default
class hal
user system
- group system wakelock uhid context_hub
+ group system wakelock uhid input context_hub
capabilities BLOCK_SUSPEND
rlimit rtprio 10 10
diff --git a/sensors/1.0/default/service.cpp b/sensors/1.0/default/service.cpp
index 65f6d816a1..c413d1a0e0 100644
--- a/sensors/1.0/default/service.cpp
+++ b/sensors/1.0/default/service.cpp
@@ -19,10 +19,30 @@
#include <android/hardware/sensors/1.0/ISensors.h>
#include <hidl/LegacySupport.h>
+#ifdef ARCH_ARM_32
+#include <hwbinder/ProcessState.h>
+#include <cutils/properties.h>
+#endif
+
using android::hardware::sensors::V1_0::ISensors;
using android::hardware::defaultPassthroughServiceImplementation;
+#ifdef ARCH_ARM_32
+//default h/w binder memsize for sensors is 8 KB
+#define DEFAULT_SENSORS_HW_BINDER_MEM_SIZE_KB 8
+size_t getHWBinderMmapSize() {
+ int32_t value = DEFAULT_SENSORS_HW_BINDER_MEM_SIZE_KB;
+
+ value = property_get_int32("persist.vendor.sensor.hw.binder.size", value);
+ ALOGD("Init hw binder with mem size = %d", value);
+ return 1024 * value;
+}
+#endif
+
int main() {
+#ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)getHWBinderMmapSize());
+#endif
/* Sensors framework service needs at least two threads.
* One thread blocks on a "poll"
* The second thread is needed for all other HAL methods.
diff --git a/usb/1.0/default/Usb.cpp b/usb/1.0/default/Usb.cpp
index 6eb88428c9..f72ab9cb39 100644
--- a/usb/1.0/default/Usb.cpp
+++ b/usb/1.0/default/Usb.cpp
@@ -206,6 +206,19 @@ rescan:
bool canSwitchRoleHelper(const std::string portName, PortRoleType type) {
std::string filename = appendRoleNodeHelper(portName, type);
+
+ if (type == PortRoleType::DATA_ROLE || type == PortRoleType::POWER_ROLE) {
+ std::string pd_filename = "/sys/class/power_supply/usb/pd_active";
+ std::string pd_active;
+
+ if (!readFile(pd_filename, pd_active)) {
+ if (pd_active == "0")
+ return false;
+ } else {
+ ALOGE("canSwitchRoleHelper: couldn't read %s", pd_filename.c_str());
+ }
+ }
+
std::ofstream file(filename);
if (file.is_open()) {
@@ -396,7 +409,7 @@ void* work(void* param) {
for (int n = 0; n < nevents; ++n) {
if (events[n].data.ptr)
- (*(void (*)(int, struct data *payload))events[n].data.ptr)
+ (*(void (*)(uint32_t, struct data *payload))events[n].data.ptr)
(events[n].events, &payload);
}
}
diff --git a/vibrator/1.0/default/Android.bp b/vibrator/1.0/default/Android.bp
index ed750b453b..d495f711d3 100644
--- a/vibrator/1.0/default/Android.bp
+++ b/vibrator/1.0/default/Android.bp
@@ -51,5 +51,13 @@ cc_binary {
"libutils",
"libhardware",
"android.hardware.vibrator@1.0",
+ "libhwbinder",
],
+ arch: {
+ arm: {
+ cflags: [
+ "-DARCH_ARM_32"
+ ],
+ },
+ },
}
diff --git a/vibrator/1.0/default/service.cpp b/vibrator/1.0/default/service.cpp
index 7cc074461d..b626056990 100644
--- a/vibrator/1.0/default/service.cpp
+++ b/vibrator/1.0/default/service.cpp
@@ -17,10 +17,14 @@
#include <android/hardware/vibrator/1.0/IVibrator.h>
#include <hidl/LegacySupport.h>
+#include <hwbinder/ProcessState.h>
using android::hardware::vibrator::V1_0::IVibrator;
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
+#ifdef ARCH_ARM_32
+ android::hardware::ProcessState::initWithMmapSize((size_t)8192);
+#endif
return defaultPassthroughServiceImplementation<IVibrator>();
}
diff --git a/vibrator/aidl/vts/VtsHalVibratorTargetTest.cpp b/vibrator/aidl/vts/VtsHalVibratorTargetTest.cpp
index 38417154eb..791d7e8613 100644
--- a/vibrator/aidl/vts/VtsHalVibratorTargetTest.cpp
+++ b/vibrator/aidl/vts/VtsHalVibratorTargetTest.cpp
@@ -332,6 +332,7 @@ TEST_P(VibratorAidl, ChangeVibrationAmplitude) {
sleep(1);
EXPECT_EQ(Status::EX_NONE, vibrator->setAmplitude(1.0f).exceptionCode());
sleep(1);
+ EXPECT_TRUE(vibrator->off().isOk());
}
}
diff --git a/wifi/1.6/default/hidl_struct_util.cpp b/wifi/1.6/default/hidl_struct_util.cpp
index 2112b260f3..ff3105dd77 100644
--- a/wifi/1.6/default/hidl_struct_util.cpp
+++ b/wifi/1.6/default/hidl_struct_util.cpp
@@ -2999,6 +2999,71 @@ bool convertLegacyRadioCombinationsMatrixToHidl(
return true;
}
+bool convertLegacyIfaceMaskToIfaceConcurrencyType(
+ u32 mask, std::vector<V1_6::IfaceConcurrencyType>* types) {
+ if (!mask)
+ return false;
+
+#ifndef BIT
+#define BIT(x) (1 << (x))
+#endif
+ if (mask & BIT(WIFI_INTERFACE_TYPE_STA))
+ types->push_back(V1_6::IfaceConcurrencyType::STA);
+ if (mask & BIT(WIFI_INTERFACE_TYPE_AP))
+ types->push_back(V1_6::IfaceConcurrencyType::AP);
+ if (mask & BIT(WIFI_INTERFACE_TYPE_AP_BRIDGED))
+ types->push_back(V1_6::IfaceConcurrencyType::AP_BRIDGED);
+ if (mask & BIT(WIFI_INTERFACE_TYPE_P2P))
+ types->push_back(V1_6::IfaceConcurrencyType::P2P);
+ if (mask & BIT(WIFI_INTERFACE_TYPE_NAN))
+ types->push_back(V1_6::IfaceConcurrencyType::NAN);
+
+ return true;
+}
+
+bool convertLegacyIfaceCombinationsMatrixToChipMode(
+ legacy_hal::wifi_iface_concurrency_matrix* legacy_matrix,
+ V1_6::IWifiChip::ChipMode* chip_mode) {
+ if (!chip_mode || !legacy_matrix) {
+ LOG(ERROR) << "legacy_matrix is null";
+ return false;
+ }
+ *chip_mode = {};
+
+ int num_combinations = legacy_matrix->num_iface_combinations;
+ std::vector<V1_6::IWifiChip::ChipConcurrencyCombination> driver_Combinations_vec;
+ if (!num_combinations) {
+ LOG(ERROR) << "zero iface combinations";
+ return false;
+ }
+
+ for (int i = 0; i < num_combinations; i++) {
+ V1_6::IWifiChip::ChipConcurrencyCombination chipComb;
+ std::vector<V1_6::IWifiChip::ChipConcurrencyCombinationLimit> limits;
+ wifi_iface_combination *comb = &legacy_matrix->iface_combinations[i];
+ if (!comb->num_iface_limits)
+ continue;
+ for (u32 j = 0; j < comb->num_iface_limits; j++) {
+ V1_6::IWifiChip::ChipConcurrencyCombinationLimit chipLimit;
+ chipLimit.maxIfaces = comb->iface_limits[j].max_limit;
+ std::vector<V1_6::IfaceConcurrencyType> types;
+ if (!convertLegacyIfaceMaskToIfaceConcurrencyType(
+ comb->iface_limits[j].iface_mask, &types)) {
+ LOG(ERROR) << "Failed to convert from iface_mask:"
+ << comb->iface_limits[j].iface_mask;
+ return false;
+ }
+ chipLimit.types = hidl_vec(types);
+ limits.push_back(chipLimit);
+ }
+ chipComb.limits = hidl_vec(limits);
+ driver_Combinations_vec.push_back(chipComb);
+ }
+
+ chip_mode->availableCombinations = driver_Combinations_vec;
+ return true;
+}
+
} // namespace hidl_struct_util
} // namespace implementation
} // namespace V1_6
diff --git a/wifi/1.6/default/hidl_struct_util.h b/wifi/1.6/default/hidl_struct_util.h
index 2d4a5f13f4..e86f3302ad 100644
--- a/wifi/1.6/default/hidl_struct_util.h
+++ b/wifi/1.6/default/hidl_struct_util.h
@@ -79,6 +79,9 @@ bool convertLegacyRadioCombinationsMatrixToHidl(
V1_6::WifiRadioCombinationMatrix* hidl_matrix);
V1_5::WifiBand convertLegacyMacBandToHidlWifiBand(uint32_t band);
V1_6::WifiAntennaMode convertLegacyAntennaConfigurationToHidl(uint32_t antenna_cfg);
+bool convertLegacyIfaceCombinationsMatrixToChipMode(
+ legacy_hal::wifi_iface_concurrency_matrix* legacy_matrix,
+ V1_6::IWifiChip::ChipMode* chip_mode);
// STA iface conversion methods.
bool convertLegacyFeaturesToHidlStaCapabilities(uint64_t legacy_feature_set,
diff --git a/wifi/1.6/default/wifi_chip.cpp b/wifi/1.6/default/wifi_chip.cpp
index c7c00b17fd..9c0a15be05 100644
--- a/wifi/1.6/default/wifi_chip.cpp
+++ b/wifi/1.6/default/wifi_chip.cpp
@@ -378,6 +378,36 @@ WifiChip::WifiChip(ChipId chip_id, bool is_primary,
debug_ring_buffer_cb_registered_(false),
subsystemCallbackHandler_(handler) {
setActiveWlanIfaceNameProperty(kNoActiveWlanIfaceNamePropertyValue);
+ using_dynamic_iface_combination_ = false;
+}
+
+void WifiChip::retrieveDynamicIfaceCombination() {
+
+ if (using_dynamic_iface_combination_) return;
+
+ legacy_hal::wifi_iface_concurrency_matrix* legacy_matrix;
+ legacy_hal::wifi_error legacy_status;
+
+ std::tie(legacy_status, legacy_matrix) =
+ legacy_hal_.lock()->getSupportedIfaceConcurrencyMatrix();
+ if (legacy_status != legacy_hal::WIFI_SUCCESS) {
+ LOG(ERROR) << "Failed to get SupportedIfaceCombinations matrix from legacy HAL: "
+ << legacyErrorToString(legacy_status);
+ return;
+ }
+
+ V1_6::IWifiChip::ChipMode hidl_chip_mode;
+ if (!hidl_struct_util::convertLegacyIfaceCombinationsMatrixToChipMode(legacy_matrix,
+ &hidl_chip_mode)) {
+ LOG(ERROR) << "Failed convertLegacyIfaceCombinationsMatrixToChipMode() ";
+ return;
+ }
+
+ LOG(INFO) << "Reloading iface concurrency combination from driver";
+ hidl_chip_mode.id = feature_flags::chip_mode_ids::kV3;
+ modes_.clear();
+ modes_.push_back(hidl_chip_mode);
+ using_dynamic_iface_combination_ = true;
}
void WifiChip::invalidate() {
@@ -1595,6 +1625,8 @@ WifiStatus WifiChip::handleChipConfiguration(
property_set("vendor.wlan.driver.version", version_info.second.driverDescription.c_str());
}
+ // Get the driver supported interface combination.
+ retrieveDynamicIfaceCombination();
return createWifiStatus(WifiStatusCode::SUCCESS);
}
diff --git a/wifi/1.6/default/wifi_chip.h b/wifi/1.6/default/wifi_chip.h
index e8ddaa6f9e..b1a40dc606 100644
--- a/wifi/1.6/default/wifi_chip.h
+++ b/wifi/1.6/default/wifi_chip.h
@@ -281,6 +281,7 @@ class WifiChip : public V1_6::IWifiChip {
WifiBand band, uint32_t ifaceModeMask, uint32_t filterMask);
std::pair<WifiStatus, WifiRadioCombinationMatrix> getSupportedRadioCombinationsMatrixInternal();
std::pair<WifiStatus, std::vector<V1_6::IWifiChip::ChipMode>> getAvailableModesInternal_1_6();
+ void retrieveDynamicIfaceCombination();
ChipId chip_id_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
@@ -301,6 +302,7 @@ class WifiChip : public V1_6::IWifiChip {
// registration mechanism. Use this to check if we have already
// registered a callback.
bool debug_ring_buffer_cb_registered_;
+ bool using_dynamic_iface_combination_;
hidl_callback_util::HidlCallbackHandler<V1_4::IWifiChipEventCallback> event_cb_handler_;
const std::function<void(const std::string&)> subsystemCallbackHandler_;
diff --git a/wifi/1.6/default/wifi_legacy_hal.cpp b/wifi/1.6/default/wifi_legacy_hal.cpp
index 2211897cd2..aff1b8cfbf 100644
--- a/wifi/1.6/default/wifi_legacy_hal.cpp
+++ b/wifi/1.6/default/wifi_legacy_hal.cpp
@@ -1589,6 +1589,18 @@ wifi_error WifiLegacyHal::enableWifiTxPowerLimits(const std::string& iface_name,
return global_func_table_.wifi_enable_tx_power_limits(getIfaceHandle(iface_name), enable);
}
+std::pair<wifi_error, wifi_iface_concurrency_matrix*>
+WifiLegacyHal::getSupportedIfaceConcurrencyMatrix() {
+ wifi_iface_concurrency_matrix *iface_concurrency_matrix_ptr =
+ &iface_concurrency_matrix_;
+ wifi_error status = global_func_table_.wifi_get_supported_iface_concurrency_matrix(
+ global_handle_, iface_concurrency_matrix_ptr);
+ if (status != WIFI_SUCCESS)
+ return {status, nullptr};
+
+ return {status, iface_concurrency_matrix_ptr};
+}
+
void WifiLegacyHal::invalidate() {
global_handle_ = nullptr;
iface_name_to_handle_.clear();
diff --git a/wifi/1.6/default/wifi_legacy_hal.h b/wifi/1.6/default/wifi_legacy_hal.h
index 2b923b44a7..f878db4612 100644
--- a/wifi/1.6/default/wifi_legacy_hal.h
+++ b/wifi/1.6/default/wifi_legacy_hal.h
@@ -249,6 +249,9 @@ using ::WIFI_ERROR_UNINITIALIZED;
using ::WIFI_ERROR_UNKNOWN;
using ::wifi_gscan_capabilities;
using ::wifi_hal_fn;
+using ::wifi_iface_combination;
+using ::wifi_iface_concurrency_matrix;
+using ::wifi_iface_limit;
using ::wifi_information_element;
using ::WIFI_INTERFACE_IBSS;
using ::WIFI_INTERFACE_MESH;
@@ -685,6 +688,8 @@ class WifiLegacyHal {
wifi_error enableWifiTxPowerLimits(const std::string& iface_name, bool enable);
+ std::pair<wifi_error, wifi_iface_concurrency_matrix*> getSupportedIfaceConcurrencyMatrix();
+
private:
// Retrieve interface handles for all the available interfaces.
wifi_error retrieveIfaceHandles();
@@ -718,6 +723,8 @@ class WifiLegacyHal {
// such as bring wlan0 interface up/down on start/stop HAL.
// it may be removed once vendor HALs are updated.
bool is_primary_;
+ // Driver supported iface combinations
+ wifi_iface_concurrency_matrix iface_concurrency_matrix_;
};
} // namespace legacy_hal
diff --git a/wifi/1.6/default/wifi_legacy_hal_stubs.cpp b/wifi/1.6/default/wifi_legacy_hal_stubs.cpp
index b3bd37389c..a0ee0c5125 100644
--- a/wifi/1.6/default/wifi_legacy_hal_stubs.cpp
+++ b/wifi/1.6/default/wifi_legacy_hal_stubs.cpp
@@ -167,6 +167,7 @@ bool initHalFuncTableWithStubs(wifi_hal_fn* hal_fn) {
populateStubFor(&hal_fn->wifi_nan_rtt_chre_disable_request);
populateStubFor(&hal_fn->wifi_chre_register_handler);
populateStubFor(&hal_fn->wifi_enable_tx_power_limits);
+ populateStubFor(&hal_fn->wifi_get_supported_iface_concurrency_matrix);
return true;
}
} // namespace legacy_hal