1a299bc30Sopenharmony_ci/* 2a299bc30Sopenharmony_ci * Copyright (c) 2020-2022 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 <stdio.h> 17a299bc30Sopenharmony_ci#include <unistd.h> 18a299bc30Sopenharmony_ci#include "ohos_init.h" 19a299bc30Sopenharmony_ci#include "cmsis_os2.h" 20a299bc30Sopenharmony_ci#include "iot_gpio.h" 21a299bc30Sopenharmony_ci 22a299bc30Sopenharmony_ci#define LED_INTERVAL_TIME_US 300000 23a299bc30Sopenharmony_ci#define LED_TASK_STACK_SIZE 512 24a299bc30Sopenharmony_ci#define LED_TASK_PRIO 25 25a299bc30Sopenharmony_ci#define LED_TEST_GPIO 9 // for hispark_pegasus 26a299bc30Sopenharmony_ci 27a299bc30Sopenharmony_cienum LedState { 28a299bc30Sopenharmony_ci LED_ON = 0, 29a299bc30Sopenharmony_ci LED_OFF, 30a299bc30Sopenharmony_ci LED_SPARK, 31a299bc30Sopenharmony_ci}; 32a299bc30Sopenharmony_ci 33a299bc30Sopenharmony_cienum LedState g_ledState = LED_SPARK; 34a299bc30Sopenharmony_ci 35a299bc30Sopenharmony_cistatic void *LedTask(const char *arg) 36a299bc30Sopenharmony_ci{ 37a299bc30Sopenharmony_ci (void)arg; 38a299bc30Sopenharmony_ci switch (g_ledState) { 39a299bc30Sopenharmony_ci case LED_ON: 40a299bc30Sopenharmony_ci IoTGpioSetOutputVal(LED_TEST_GPIO, 1); 41a299bc30Sopenharmony_ci usleep(LED_INTERVAL_TIME_US); 42a299bc30Sopenharmony_ci break; 43a299bc30Sopenharmony_ci case LED_OFF: 44a299bc30Sopenharmony_ci IoTGpioSetOutputVal(LED_TEST_GPIO, 0); 45a299bc30Sopenharmony_ci usleep(LED_INTERVAL_TIME_US); 46a299bc30Sopenharmony_ci break; 47a299bc30Sopenharmony_ci case LED_SPARK: 48a299bc30Sopenharmony_ci IoTGpioSetOutputVal(LED_TEST_GPIO, 0); 49a299bc30Sopenharmony_ci usleep(LED_INTERVAL_TIME_US); 50a299bc30Sopenharmony_ci IoTGpioSetOutputVal(LED_TEST_GPIO, 1); 51a299bc30Sopenharmony_ci usleep(LED_INTERVAL_TIME_US); 52a299bc30Sopenharmony_ci break; 53a299bc30Sopenharmony_ci default: 54a299bc30Sopenharmony_ci usleep(LED_INTERVAL_TIME_US); 55a299bc30Sopenharmony_ci break; 56a299bc30Sopenharmony_ci } 57a299bc30Sopenharmony_ci 58a299bc30Sopenharmony_ci return NULL; 59a299bc30Sopenharmony_ci} 60a299bc30Sopenharmony_ci 61a299bc30Sopenharmony_cistatic void LedExampleEntry(void) 62a299bc30Sopenharmony_ci{ 63a299bc30Sopenharmony_ci osThreadAttr_t attr; 64a299bc30Sopenharmony_ci 65a299bc30Sopenharmony_ci IoTGpioInit(LED_TEST_GPIO); 66a299bc30Sopenharmony_ci IoTGpioSetDir(LED_TEST_GPIO, IOT_GPIO_DIR_OUT); 67a299bc30Sopenharmony_ci 68a299bc30Sopenharmony_ci attr.name = "LedTask"; 69a299bc30Sopenharmony_ci attr.attr_bits = 0U; 70a299bc30Sopenharmony_ci attr.cb_mem = NULL; 71a299bc30Sopenharmony_ci attr.cb_size = 0U; 72a299bc30Sopenharmony_ci attr.stack_mem = NULL; 73a299bc30Sopenharmony_ci attr.stack_size = LED_TASK_STACK_SIZE; 74a299bc30Sopenharmony_ci attr.priority = LED_TASK_PRIO; 75a299bc30Sopenharmony_ci 76a299bc30Sopenharmony_ci if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) { 77a299bc30Sopenharmony_ci printf("[LedExample] Failed to create LedTask!\n"); 78a299bc30Sopenharmony_ci } 79a299bc30Sopenharmony_ci} 80a299bc30Sopenharmony_ci 81a299bc30Sopenharmony_ciSYS_RUN(LedExampleEntry); 82