195489c19Sopenharmony_ci/* 295489c19Sopenharmony_ci * Copyright (C) Huawei Device Co., Ltd. 2023-2023. All rights reserved. 395489c19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 495489c19Sopenharmony_ci * you may not use this file except in compliance with the License. 595489c19Sopenharmony_ci * You may obtain a copy of the License at 695489c19Sopenharmony_ci * 795489c19Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 895489c19Sopenharmony_ci * 995489c19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1095489c19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1195489c19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1295489c19Sopenharmony_ci * See the License for the specific language governing permissions and 1395489c19Sopenharmony_ci * limitations under the License. 1495489c19Sopenharmony_ci */ 1595489c19Sopenharmony_ci#include "bluetooth_timer.h" 1695489c19Sopenharmony_ci#include "common_timer_errors.h" 1795489c19Sopenharmony_ci#include "bluetooth_log.h" 1895489c19Sopenharmony_ci 1995489c19Sopenharmony_cinamespace OHOS { 2095489c19Sopenharmony_cinamespace Bluetooth { 2195489c19Sopenharmony_ciBluetoothTimer *BluetoothTimer::GetInstance() 2295489c19Sopenharmony_ci{ 2395489c19Sopenharmony_ci static BluetoothTimer instance; 2495489c19Sopenharmony_ci return &instance; 2595489c19Sopenharmony_ci} 2695489c19Sopenharmony_ci 2795489c19Sopenharmony_ciBluetoothTimer::BluetoothTimer() : timer_(std::make_unique<OHOS::Utils::Timer>("BluetoothTimer")) 2895489c19Sopenharmony_ci{ 2995489c19Sopenharmony_ci timer_->Setup(); 3095489c19Sopenharmony_ci} 3195489c19Sopenharmony_ci 3295489c19Sopenharmony_ciBluetoothTimer::~BluetoothTimer() 3395489c19Sopenharmony_ci{ 3495489c19Sopenharmony_ci if (timer_) { 3595489c19Sopenharmony_ci timer_->Shutdown(true); 3695489c19Sopenharmony_ci timer_ = nullptr; 3795489c19Sopenharmony_ci } 3895489c19Sopenharmony_ci} 3995489c19Sopenharmony_ci 4095489c19Sopenharmony_civoid BluetoothTimer::Register(const TimerCallback &callback, uint32_t &outTimerId, uint32_t interval) 4195489c19Sopenharmony_ci{ 4295489c19Sopenharmony_ci if (timer_ == nullptr) { 4395489c19Sopenharmony_ci HILOGE("timer_ is nullptr"); 4495489c19Sopenharmony_ci return; 4595489c19Sopenharmony_ci } 4695489c19Sopenharmony_ci 4795489c19Sopenharmony_ci uint32_t ret = timer_->Register(callback, interval, true); // one shot timer 4895489c19Sopenharmony_ci if (ret == OHOS::Utils::TIMER_ERR_DEAL_FAILED) { 4995489c19Sopenharmony_ci HILOGE("Register timer failed"); 5095489c19Sopenharmony_ci return; 5195489c19Sopenharmony_ci } 5295489c19Sopenharmony_ci 5395489c19Sopenharmony_ci outTimerId = ret; 5495489c19Sopenharmony_ci} 5595489c19Sopenharmony_ci 5695489c19Sopenharmony_civoid BluetoothTimer::UnRegister(uint32_t timerId) 5795489c19Sopenharmony_ci{ 5895489c19Sopenharmony_ci if (timerId == 0) { 5995489c19Sopenharmony_ci HILOGE("timerId is 0, no register timer"); 6095489c19Sopenharmony_ci return; 6195489c19Sopenharmony_ci } 6295489c19Sopenharmony_ci 6395489c19Sopenharmony_ci if (timer_ == nullptr) { 6495489c19Sopenharmony_ci HILOGE("timer_ is nullptr"); 6595489c19Sopenharmony_ci return; 6695489c19Sopenharmony_ci } 6795489c19Sopenharmony_ci 6895489c19Sopenharmony_ci timer_->Unregister(timerId); 6995489c19Sopenharmony_ci} 7095489c19Sopenharmony_ci} // namespace NFC 7195489c19Sopenharmony_ci} // namespace OHOS