1/* 2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifdef DEVICE_STATUS_SENSOR_ENABLE 17#include "algo_base.h" 18 19#include "devicestatus_define.h" 20 21#undef LOG_TAG 22#define LOG_TAG "AlgoBase" 23 24namespace OHOS { 25namespace Msdp { 26namespace DeviceStatus { 27 28void AlgoBase::Unsubscribe(int32_t sensorTypeId) 29{ 30 CALL_DEBUG_ENTER; 31 CHKPV(algoCallback_); 32 SENSOR_DATA_CB.UnsubscribeSensorEvent(sensorTypeId, algoCallback_); 33} 34 35bool AlgoBase::SetData(int32_t sensorTypeId, AccelData* sensorData) 36{ 37 CALL_DEBUG_ENTER; 38 if (sensorTypeId != SENSOR_TYPE_ID_ACCELEROMETER) { 39 FI_HILOGE("sensorTypeId:%{public}d", sensorTypeId); 40 return false; 41 } 42 CHKPF(sensorData); 43 AccelData* data = sensorData; 44 if ((abs(data->x) > ACC_VALID_THRHD) || 45 (abs(data->y) > ACC_VALID_THRHD) || 46 (abs(data->z) > ACC_VALID_THRHD)) { 47 FI_HILOGE("Acc data is invalid"); 48 return false; 49 } 50 51 algoPara_.x = data->y; 52 algoPara_.y = data->x; 53 algoPara_.z = -(data->z); 54 FI_HILOGD("x:%{public}f, y:%{public}f, z:%{public}f", algoPara_.x, algoPara_.y, algoPara_.z); 55 return true; 56} 57 58void AlgoBase::RegisterCallback(const std::shared_ptr<IMsdp::MsdpAlgoCallback> callback) 59{ 60 CALL_DEBUG_ENTER; 61 callback_ = callback; 62} 63 64void AlgoBase::UpdateStateAndReport(OnChangedValue value, int32_t state, Type type) 65{ 66 CALL_DEBUG_ENTER; 67 CHKPV(callback_); 68 state_ = state; 69 reportInfo_.type = type; 70 reportInfo_.value = value; 71 FI_HILOGI("type:%{public}d, value:%{public}d", type, value); 72 callback_->OnResult(reportInfo_); 73} 74} // namespace DeviceStatus 75} // namespace Msdp 76} // namespace OHOS 77#endif // DEVICE_STATUS_SENSOR_ENABLE 78