1a299bc30Sopenharmony_ci/*
2a299bc30Sopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd.
3a299bc30Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4a299bc30Sopenharmony_ci * you may not use this file except in compliance with the License.
5a299bc30Sopenharmony_ci * You may obtain a copy of the License at
6a299bc30Sopenharmony_ci *
7a299bc30Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8a299bc30Sopenharmony_ci *
9a299bc30Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10a299bc30Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11a299bc30Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12a299bc30Sopenharmony_ci * See the License for the specific language governing permissions and
13a299bc30Sopenharmony_ci * limitations under the License.
14a299bc30Sopenharmony_ci */
15a299bc30Sopenharmony_ci
16a299bc30Sopenharmony_ci#include "demosdk_adapter.h"
17a299bc30Sopenharmony_ci#include <stdio.h>
18a299bc30Sopenharmony_ci
19a299bc30Sopenharmony_ci#include "cmsis_os2.h"
20a299bc30Sopenharmony_ci
21a299bc30Sopenharmony_ci#define MS_CNT 1000
22a299bc30Sopenharmony_ci
23a299bc30Sopenharmony_ciint DemoSdkCreateTask(unsigned int *handle, const struct TaskPara *para)
24a299bc30Sopenharmony_ci{
25a299bc30Sopenharmony_ci    osThreadAttr_t attr = {0};
26a299bc30Sopenharmony_ci    osThreadId_t threadId;
27a299bc30Sopenharmony_ci    if (handle == 0 || para == 0) {
28a299bc30Sopenharmony_ci        return DEMOSDK_ERR;
29a299bc30Sopenharmony_ci    }
30a299bc30Sopenharmony_ci
31a299bc30Sopenharmony_ci    if (para->func == 0) {
32a299bc30Sopenharmony_ci        return DEMOSDK_ERR;
33a299bc30Sopenharmony_ci    }
34a299bc30Sopenharmony_ci
35a299bc30Sopenharmony_ci    if (para->name == 0) {
36a299bc30Sopenharmony_ci        return DEMOSDK_ERR;
37a299bc30Sopenharmony_ci    }
38a299bc30Sopenharmony_ci
39a299bc30Sopenharmony_ci    attr.name = para->name;
40a299bc30Sopenharmony_ci    attr.priority = para->prio;
41a299bc30Sopenharmony_ci    attr.stack_size = para->size;
42a299bc30Sopenharmony_ci    threadId = osThreadNew((osThreadFunc_t)para->func, para->arg, &attr);
43a299bc30Sopenharmony_ci    if (threadId == 0) {
44a299bc30Sopenharmony_ci        printf("osThreadNew fail\n");
45a299bc30Sopenharmony_ci        return DEMOSDK_ERR;
46a299bc30Sopenharmony_ci    }
47a299bc30Sopenharmony_ci
48a299bc30Sopenharmony_ci    *(unsigned int *)handle = (unsigned int)threadId;
49a299bc30Sopenharmony_ci    return DEMOSDK_OK;
50a299bc30Sopenharmony_ci}
51a299bc30Sopenharmony_ci
52a299bc30Sopenharmony_civoid DemoSdkSleepMs(int ms)
53a299bc30Sopenharmony_ci{
54a299bc30Sopenharmony_ci    usleep(MS_CNT * ms);
55a299bc30Sopenharmony_ci}
56a299bc30Sopenharmony_ci
57