#include "led_drv.h" #include "nrf_log.h" #include "FreeRTOS.h" #include "semphr.h" #include "task.h" #if (DEF_APA102_2020_ENABLED) #include "apa102_2020.h" static const led_drv_if_t *p_inst = &apa102_drv; #else static led_drv_if_t *p_inst = NULL; #endif #if (DEF_LED_DRV_ENABLED) static bool btWaitLedFlag = 0; static bool noEventLedFlag = 0; static bool preWorkLedFlag = 0; static bool workingLedFlag = 0; static bool postWorkLedFlag = 0; int32_t led_mode(uint16_t mode_status) { btWaitLedFlag = 0; noEventLedFlag = 0; preWorkLedFlag = 0; workingLedFlag = 0; postWorkLedFlag = 0; switch (mode_status) { case BT_WAIT: btWaitLedFlag = 1; NRF_LOG_INFO("%s(BT_WAIT) is unimplemented.", __FUNCTION__); break; case NO_EVENT: noEventLedFlag = 1; NRF_LOG_INFO("%s(NO_EVENT) is unimplemented.", __FUNCTION__); break; case PRE_WORK: preWorkLedFlag = 1; NRF_LOG_INFO("%s(PRE_WORK) is unimplemented.", __FUNCTION__); break; case WORKING: workingLedFlag = 1; NRF_LOG_INFO("%s(WORKING) is unimplemented.", __FUNCTION__); break; case POST_WORK: postWorkLedFlag = 1; NRF_LOG_INFO("%s(POST_WORK) is unimplemented.", __FUNCTION__); break; default: NRF_LOG_INFO("%s(default) is unimplemented.", __FUNCTION__); break; } return 0; } int32_t led_set(struct led_color color) { if (p_inst == NULL) { return LED_DRV_ERROR; } if (p_inst->set != NULL) { for (int i = 0; i < DEF_LED_COUNT; i++) { p_inst->set(i, color, 1); } return LED_DRV_SUCCESS; } return LED_DRV_SUCCESS; } int32_t led_single_led_set(uint32_t idx, struct led_color color, uint8_t brightness) { if (p_inst == NULL) { return LED_DRV_ERROR; } if (p_inst->set != NULL) { p_inst->set(idx, color, brightness); return LED_DRV_SUCCESS; } return LED_DRV_SUCCESS; } int32_t led_init(void) { if (p_inst == NULL) { return LED_DRV_ERROR; } return p_inst->init(DEF_LED_COUNT); } int32_t led_as_rainbow(void) { uint8_t color_idx; struct led_color color[6] = { LED_RED, LED_ORANGE, LED_YELLOW, LED_GREEN, LED_BLUE, LED_PURPLE }; for (int i = 0; i < DEF_LED_COUNT; i++) { color_idx = i % COUNT_ARRAY_SIZE(color); led_single_led_set(i, color[color_idx], 1); } return 0; } #endif /* ! DEF_LED_DRV_ENABLED */