Signed-off-by: dai_hq <daihaoquan@h-partners.com>
This commit is contained in:
dai_hq
2025-11-06 20:47:37 +08:00
parent 2a00e95da0
commit a3c8f8229a
3 changed files with 29 additions and 5 deletions
@@ -382,6 +382,27 @@ bool SensorClientsManager::IsNeedCloseSensor(SensorHandle sensorHandle, int serv
return false;
}
void SensorClientsManager::AddServiceToReportQueue(SensorHandle sensorHandle, int serviceId)
{
SENSOR_TRACE_PID;
std::unique_lock<std::mutex> lock(sensorUsedMutex_);
auto it = sensorUsed_.find(sensorHandle);
if (it == sensorUsed_.end()) {
std::set<int> service = {serviceId};
sensorUsed_.emplace(sensorHandle, service);
HDF_LOGD("%{public}s: sensorHandle %{public}s is enabled by service: %{public}d", __func__,
SENSOR_HANDLE_TO_C_STR(sensorHandle), serviceId);
return;
}
auto service = sensorUsed_[sensorHandle].find(serviceId);
if (service == sensorUsed_[sensorHandle].end()) {
sensorUsed_[sensorHandle].insert(serviceId);
HDF_LOGD("%{public}s: service: %{public}d is enabled sensorHandle: %{public}s", __func__, serviceId,
SENSOR_HANDLE_TO_C_STR(sensorHandle));
}
return;
}
bool SensorClientsManager::IsExistSdcSensorEnable(SensorHandle sensorHandle)
{
SENSOR_TRACE_PID;
@@ -61,6 +61,7 @@ public:
std::unordered_map<SensorHandle, std::set<int32_t>> GetSensorUsed();
bool IsNeedOpenSensor(SensorHandle sensorHandle, int serviceId);
bool IsNeedCloseSensor(SensorHandle sensorHandle, int serviceId);
void AddServiceToReportQueue(SensorHandle sensorHandle, int serviceId);
bool IsExistSdcSensorEnable(SensorHandle sensorHandle);
void OpenSensor(SensorHandle sensorHandle, int serviceId);
void UpdateSensorConfig(SensorHandle sensorHandle, int64_t samplingInterval, int64_t reportInterval);
+7 -5
View File
@@ -511,16 +511,16 @@ void SensorIfService::RemoveDeathNotice(int32_t groupId)
int32_t SensorIfService::DisableSensor(const SensorHandle sensorHandle, uint32_t serviceId)
{
SENSOR_TRACE_PID_MSG("sensorHandle " + SENSOR_HANDLE_TO_STRING(sensorHandle));
if (!SensorClientsManager::GetInstance()->IsUpadateSensorState(sensorHandle, serviceId, DISABLE_SENSOR)) {
HDF_LOGD("%{public}s There are still some services enable", __func__);
return HDF_SUCCESS;
}
if (sensorVdiImplV1_1_ == nullptr) {
HDF_LOGE("%{public}s: get sensor vdi impl failed", __func__);
return HDF_FAILURE;
}
if (!SensorClientsManager::GetInstance()->IsUpadateSensorState(sensorHandle, serviceId, DISABLE_SENSOR)) {
HDF_LOGD("%{public}s There are still some services enable", __func__);
return HDF_SUCCESS;
}
int32_t ret = SENSOR_SUCCESS;
if (SensorClientsManager::GetInstance()->IsExistSdcSensorEnable(sensorHandle)) {
SENSOR_TRACE_START("sensorVdiImplV1_1_->SetSaBatch");
@@ -533,6 +533,7 @@ int32_t SensorIfService::DisableSensor(const SensorHandle sensorHandle, uint32_t
if (ret != SENSOR_SUCCESS) {
HDF_LOGE("%{public}s SetSaBatch failed, error code is %{public}d, sensorHandle = %{public}s, serviceId = "
"%{public}d", __func__, ret, SENSOR_HANDLE_TO_C_STR(sensorHandle), serviceId);
SensorClientsManager::GetInstance()->AddServiceToReportQueue(sensorHandle, serviceId);
return ret;
}
return HDF_SUCCESS;
@@ -549,6 +550,7 @@ int32_t SensorIfService::DisableSensor(const SensorHandle sensorHandle, uint32_t
if (ret != SENSOR_SUCCESS) {
HDF_LOGE("%{public}s failed, error code is %{public}d, sensorHandle = %{public}s, serviceId = %{public}d",
__func__, ret, SENSOR_HANDLE_TO_C_STR(sensorHandle), serviceId);
SensorClientsManager::GetInstance()->AddServiceToReportQueue(sensorHandle, serviceId);
}
return ret;