10e98b08fSopenharmony_ci/*
20e98b08fSopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd.
30e98b08fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
40e98b08fSopenharmony_ci * you may not use this file except in compliance with the License.
50e98b08fSopenharmony_ci * You may obtain a copy of the License at
60e98b08fSopenharmony_ci *
70e98b08fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
80e98b08fSopenharmony_ci *
90e98b08fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
100e98b08fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
110e98b08fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
120e98b08fSopenharmony_ci * See the License for the specific language governing permissions and
130e98b08fSopenharmony_ci * limitations under the License.
140e98b08fSopenharmony_ci */
150e98b08fSopenharmony_ci
160e98b08fSopenharmony_ci#include "nativeapi_timer_task.h"
170e98b08fSopenharmony_ci#include <stdio.h>
180e98b08fSopenharmony_ci#include "kal.h"
190e98b08fSopenharmony_ci#include "ohos_errno.h"
200e98b08fSopenharmony_ci
210e98b08fSopenharmony_ciint InitTimerTask()
220e98b08fSopenharmony_ci{
230e98b08fSopenharmony_ci    return EC_SUCCESS;
240e98b08fSopenharmony_ci}
250e98b08fSopenharmony_ci
260e98b08fSopenharmony_ciint StartTimerTask(bool isPeriodic, const unsigned int delay, void* userCallback,
270e98b08fSopenharmony_ci    void* userContext, timerHandle_t* timerHandle)
280e98b08fSopenharmony_ci{
290e98b08fSopenharmony_ci    if (userCallback == NULL || timerHandle == NULL) {
300e98b08fSopenharmony_ci        return EC_FAILURE;
310e98b08fSopenharmony_ci    }
320e98b08fSopenharmony_ci
330e98b08fSopenharmony_ci    KalTimerType timerType = isPeriodic ? KAL_TIMER_PERIODIC : KAL_TIMER_ONCE;
340e98b08fSopenharmony_ci    KalTimerId timerId = KalTimerCreate((KalTimerProc)userCallback, timerType, userContext, delay);
350e98b08fSopenharmony_ci    if (timerId == NULL) {
360e98b08fSopenharmony_ci        return EC_FAILURE;
370e98b08fSopenharmony_ci    }
380e98b08fSopenharmony_ci
390e98b08fSopenharmony_ci    if (KalTimerStart(timerId) != KAL_OK) {
400e98b08fSopenharmony_ci        StopTimerTask(timerId);
410e98b08fSopenharmony_ci        return EC_FAILURE;
420e98b08fSopenharmony_ci    }
430e98b08fSopenharmony_ci    *timerHandle = timerId;
440e98b08fSopenharmony_ci
450e98b08fSopenharmony_ci    return EC_SUCCESS;
460e98b08fSopenharmony_ci}
470e98b08fSopenharmony_ci
480e98b08fSopenharmony_ciint StopTimerTask(const timerHandle_t timerHandle)
490e98b08fSopenharmony_ci{
500e98b08fSopenharmony_ci    if (timerHandle == NULL) {
510e98b08fSopenharmony_ci        return EC_FAILURE;
520e98b08fSopenharmony_ci    }
530e98b08fSopenharmony_ci    return KalTimerDelete((KalTimerId)timerHandle);
540e98b08fSopenharmony_ci}