nativeapi_timer_task.c 1.6 KB
Newer Older
W
wenjun 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/*
 * Copyright (c) 2020 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "nativeapi_timer_task.h"
#include <stdio.h>
#include "kal.h"
#include "ohos_errno.h"

huang_jin_'s avatar
huang_jin_ 已提交
21
int InitTimerTask(void)
W
wenjun 已提交
22 23 24 25 26
{
    return EC_SUCCESS;
}

int StartTimerTask(bool isPeriodic, const unsigned int delay, void* userCallback,
L
l00518380 已提交
27
    void* userContext, timerHandle_t* timerHandle)
W
wenjun 已提交
28
{
29
    if (userCallback == NULL || timerHandle == NULL) {
W
wenjun 已提交
30 31
        return EC_FAILURE;
    }
32 33

    KalTimerType timerType = isPeriodic ? KAL_TIMER_PERIODIC : KAL_TIMER_ONCE;
W
wenjun 已提交
34 35 36 37
    KalTimerId timerId = KalTimerCreate((KalTimerProc)userCallback, timerType, userContext, delay);
    if (timerId == NULL) {
        return EC_FAILURE;
    }
38 39

    if (KalTimerStart(timerId) != KAL_OK) {
W
wenjun 已提交
40 41 42 43
        StopTimerTask(timerId);
        return EC_FAILURE;
    }
    *timerHandle = timerId;
44

W
wenjun 已提交
45 46 47 48 49 50 51 52
    return EC_SUCCESS;
}

int StopTimerTask(const timerHandle_t timerHandle)
{
    if (timerHandle == NULL) {
        return EC_FAILURE;
    }
M
mamingshuai 已提交
53
    return KalTimerDelete((KalTimerId)timerHandle);
W
wenjun 已提交
54
}