diff --git a/camera/provider/2.4/default/CameraProvider.cpp b/camera/provider/2.4/default/CameraProvider.cpp index 8701ec1db7..9f4d18838c 100644 --- a/camera/provider/2.4/default/CameraProvider.cpp +++ b/camera/provider/2.4/default/CameraProvider.cpp @@ -40,6 +40,22 @@ const char *kHAL1_0 = "1.0"; const int kMaxCameraDeviceNameLen = 128; const int kMaxCameraIdLen = 16; +bool matchDeviceName(const hidl_string& deviceName, std::string* deviceVersion, + std::string* cameraId) { + std::string deviceNameStd(deviceName.c_str()); + std::smatch sm; + if (std::regex_match(deviceNameStd, sm, kDeviceNameRE)) { + if (deviceVersion != nullptr) { + *deviceVersion = sm[1]; + } + if (cameraId != nullptr) { + *cameraId = sm[2]; + } + return true; + } + return false; +} + } // anonymous namespace using ::android::hardware::camera::common::V1_0::CameraMetadataType; @@ -112,30 +128,22 @@ Status CameraProvider::getHidlStatus(int status) { } } -bool CameraProvider::matchDeviceName(const hidl_string& deviceName, std::smatch& sm) { - std::string deviceNameStd(deviceName.c_str()); - return std::regex_match(deviceNameStd, sm, kDeviceNameRE); -} - std::string CameraProvider::getLegacyCameraId(const hidl_string& deviceName) { - std::smatch sm; - bool match = matchDeviceName(deviceName, sm); - if (!match) { - return std::string(""); - } - return sm[2]; + std::string cameraId; + matchDeviceName(deviceName, nullptr, &cameraId); + return cameraId; } int CameraProvider::getCameraDeviceVersion(const hidl_string& deviceName) { - std::smatch sm; - bool match = matchDeviceName(deviceName, sm); + std::string deviceVersion; + bool match = matchDeviceName(deviceName, &deviceVersion, nullptr); if (!match) { return -1; } - if (sm[1].compare(kHAL3_2) == 0) { + if (deviceVersion == kHAL3_2) { // maybe switched to 3.4 or define the hidl version enum later return CAMERA_DEVICE_API_VERSION_3_2; - } else if (sm[1].compare(kHAL1_0) == 0) { + } else if (deviceVersion == kHAL1_0) { return CAMERA_DEVICE_API_VERSION_1_0; } return 0; @@ -322,15 +330,13 @@ Return CameraProvider::isSetTorchModeSupported(isSetTorchModeSupported_cb Return CameraProvider::getCameraDeviceInterface_V1_x( const hidl_string& cameraDeviceName, getCameraDeviceInterface_V1_x_cb _hidl_cb) { - std::smatch sm; - bool match = matchDeviceName(cameraDeviceName, sm); + std::string cameraId, deviceVersion; + bool match = matchDeviceName(cameraDeviceName, &deviceVersion, &cameraId); if (!match) { _hidl_cb(Status::ILLEGAL_ARGUMENT, nullptr); return Void(); } - std::string cameraId = sm[2]; - std::string deviceVersion = sm[1]; std::string deviceName(cameraDeviceName.c_str()); ssize_t index = mCameraDeviceNames.indexOf(std::make_pair(cameraId, deviceName)); if (index == NAME_NOT_FOUND) { // Either an illegal name or a device version mismatch @@ -377,15 +383,13 @@ Return CameraProvider::getCameraDeviceInterface_V1_x( Return CameraProvider::getCameraDeviceInterface_V3_x( const hidl_string& cameraDeviceName, getCameraDeviceInterface_V3_x_cb _hidl_cb) { - std::smatch sm; - bool match = matchDeviceName(cameraDeviceName, sm); + std::string cameraId, deviceVersion; + bool match = matchDeviceName(cameraDeviceName, &deviceVersion, &cameraId); if (!match) { _hidl_cb(Status::ILLEGAL_ARGUMENT, nullptr); return Void(); } - std::string cameraId = sm[2]; - std::string deviceVersion = sm[1]; std::string deviceName(cameraDeviceName.c_str()); ssize_t index = mCameraDeviceNames.indexOf(std::make_pair(cameraId, deviceName)); if (index == NAME_NOT_FOUND) { // Either an illegal name or a device version mismatch diff --git a/camera/provider/2.4/default/CameraProvider.h b/camera/provider/2.4/default/CameraProvider.h index 2a43e2f3a3..d7b0ea6dd9 100644 --- a/camera/provider/2.4/default/CameraProvider.h +++ b/camera/provider/2.4/default/CameraProvider.h @@ -91,7 +91,6 @@ private: bool setUpVendorTags(); // extract legacy camera ID/device version from a HIDL device name - static bool matchDeviceName(const hidl_string& deviceName, std::smatch& sm); static std::string getLegacyCameraId(const hidl_string& deviceName); static int getCameraDeviceVersion(const hidl_string& deviceName);