10a7ce71fSopenharmony_ci/* 20a7ce71fSopenharmony_ci * Copyright (C) 2022 HiHope Open Source Organization . 30a7ce71fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40a7ce71fSopenharmony_ci * you may not use this file except in compliance with the License. 50a7ce71fSopenharmony_ci * You may obtain a copy of the License at 60a7ce71fSopenharmony_ci * 70a7ce71fSopenharmony_ci * http:// www.apache.org/licenses/LICENSE-2.0 80a7ce71fSopenharmony_ci * 90a7ce71fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100a7ce71fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110a7ce71fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120a7ce71fSopenharmony_ci * See the License for the specific language governing permissions and 130a7ce71fSopenharmony_ci * 140a7ce71fSopenharmony_ci * limitations under the License. 150a7ce71fSopenharmony_ci */ 160a7ce71fSopenharmony_ci 170a7ce71fSopenharmony_ci#include <stdio.h> 180a7ce71fSopenharmony_ci#include <unistd.h> 190a7ce71fSopenharmony_ci 200a7ce71fSopenharmony_ci#include "ohos_init.h" 210a7ce71fSopenharmony_ci#include "cmsis_os2.h" 220a7ce71fSopenharmony_ci 230a7ce71fSopenharmony_ci#define OS_DELAY 100 240a7ce71fSopenharmony_ci#define ATTR.STACK_SIZE 1024 250a7ce71fSopenharmony_ci#define TIMES_CNT 3 260a7ce71fSopenharmony_ci 270a7ce71fSopenharmony_cistatic int times = 0; 280a7ce71fSopenharmony_ci 290a7ce71fSopenharmony_civoid cb_timeout_periodic(int *arg) 300a7ce71fSopenharmony_ci{ 310a7ce71fSopenharmony_ci (int)arg; 320a7ce71fSopenharmony_ci times++; 330a7ce71fSopenharmony_ci} 340a7ce71fSopenharmony_ci 350a7ce71fSopenharmony_civoid timer_periodic(void) 360a7ce71fSopenharmony_ci{ 370a7ce71fSopenharmony_ci osTimerId_t periodic_tid = osTimerNew(cb_timeout_periodic, osTimerPeriodic, NULL, NULL); 380a7ce71fSopenharmony_ci if (periodic_tid == NULL) { 390a7ce71fSopenharmony_ci printf("[Timer Test] osTimerNew(periodic timer) failed.\r\n"); 400a7ce71fSopenharmony_ci return; 410a7ce71fSopenharmony_ci } else { 420a7ce71fSopenharmony_ci printf("[Timer Test] osTimerNew(periodic timer) success, tid: %p.\r\n", periodic_tid); 430a7ce71fSopenharmony_ci } 440a7ce71fSopenharmony_ci osStatus_t status = osTimerStart(periodic_tid, 100); 450a7ce71fSopenharmony_ci if (status != osOK) { 460a7ce71fSopenharmony_ci printf("[Timer Test] osTimerStart(periodic timer) failed.\r\n"); 470a7ce71fSopenharmony_ci return; 480a7ce71fSopenharmony_ci } else { 490a7ce71fSopenharmony_ci printf("[Timer Test] osTimerStart(periodic timer) success, wait a while and stop.\r\n"); 500a7ce71fSopenharmony_ci } 510a7ce71fSopenharmony_ci 520a7ce71fSopenharmony_ci while (times < TIMES_CNT) { 530a7ce71fSopenharmony_ci printf("[Timer Test] times:%d.\r\n", times); 540a7ce71fSopenharmony_ci osDelay(OS_DELAY); 550a7ce71fSopenharmony_ci} 560a7ce71fSopenharmony_ci 570a7ce71fSopenharmony_ci status = osTimerStop(periodic_tid); 580a7ce71fSopenharmony_ci printf("[Timer Test] stop periodic timer, status :%d.\r\n", status); 590a7ce71fSopenharmony_ci status = osTimerDelete(periodic_tid); 600a7ce71fSopenharmony_ci printf("[Timer Test] kill periodic timer, status :%d.\r\n", status); 610a7ce71fSopenharmony_ci} 620a7ce71fSopenharmony_ci 630a7ce71fSopenharmony_cistatic void TimerTestTask(void) 640a7ce71fSopenharmony_ci{ 650a7ce71fSopenharmony_ci osThreadAttr_t attr; 660a7ce71fSopenharmony_ci 670a7ce71fSopenharmony_ci attr.name = "timer_periodic"; 680a7ce71fSopenharmony_ci attr.attr_bits = 0U; 690a7ce71fSopenharmony_ci attr.cb_mem = NULL; 700a7ce71fSopenharmony_ci attr.cb_size = 0U; 710a7ce71fSopenharmony_ci attr.stack_mem = NULL; 720a7ce71fSopenharmony_ci attr.stack_size = ATTR.STACK_SIZE; 730a7ce71fSopenharmony_ci attr.priority = osPriorityNormal; 740a7ce71fSopenharmony_ci 750a7ce71fSopenharmony_ci if (osThreadNew((osThreadFunc_t)timer_periodic, NULL, &attr) == NULL) { 760a7ce71fSopenharmony_ci printf("[TimerTestTask] Failed to create timer_periodic!\n"); 770a7ce71fSopenharmony_ci } 780a7ce71fSopenharmony_ci} 790a7ce71fSopenharmony_ci 800a7ce71fSopenharmony_ciAPP_FEATURE_INIT(TimerTestTask);