K1Guitar/APP/app_tm1617.c

87 lines
2.0 KiB
C
Raw Normal View History

#include "includes.h"
/* ==================== <20><>Χ<EFBFBD><CEA7>ѭ<EFBFBD><D1AD>״̬ ==================== */
#define RGB_INTERVAL_MS 300 /* <20><>ɫ<EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD> 300ms */
static const uint8_t auto_rgb_seq[] = {
COLOR_CYA, /* <20><> */
COLOR_B, /* <20><> */
COLOR_G, /* <20><> */
COLOR_R, /* <20><> */
};
#define AUTO_RGB_CNT (sizeof(auto_rgb_seq)/sizeof(auto_rgb_seq[0]))
static uint8_t rgb_state = 0;
static uint32_t rgb_tick_stamp = 0;
static uint8_t key_last = KEY_NULL;
void app_tm1617_init(void)
{
rt_mutex_take(TM1617_Mutex, RT_WAITING_FOREVER);
TM1617_Init(); /* <20><><EFBFBD><EFBFBD> + <20><>ʾģʽ + <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> */
TM1617_SetRGB(COLOR_OFF, 0); /* ȷ<><C8B7>Ϩ<EFBFBD><CFA8> */
rt_mutex_release(TM1617_Mutex);
rgb_state = 0;
rgb_tick_stamp = 0;
key_last = KEY_NULL;
}
void app_tm1617_set_rgb(uint8_t color, uint8_t brightness)
{
if (brightness > 7)
brightness = 7;
rt_mutex_take(TM1617_Mutex, RT_WAITING_FOREVER);
TM1617_SetRGB(color, brightness);
rt_mutex_release(TM1617_Mutex);
}
void app_tm1617_off(void)
{
rt_mutex_take(TM1617_Mutex, RT_WAITING_FOREVER);
TM1617_SetRGB(COLOR_OFF, 0);
rt_mutex_release(TM1617_Mutex);
}
/* <20><>Χ<EFBFBD><CEA7><EFBFBD>Զ<EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>300ms <20>л<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ */
void app_tm1617_auto_loop(void)
{
uint32_t now = rt_tick_get();
if ((now - rgb_tick_stamp) >= RGB_INTERVAL_MS)
{
rgb_tick_stamp = now;
if (rgb_state >= AUTO_RGB_CNT)
rgb_state = 0;
rt_mutex_take(TM1617_Mutex, RT_WAITING_FOREVER);
TM1617_SetRGB(auto_rgb_seq[rgb_state], 7);
rt_mutex_release(TM1617_Mutex);
rgb_state++;
if (rgb_state >= AUTO_RGB_CNT)
rgb_state = 0;
}
}
uint8_t app_tm1617_scan_key(void)
{
uint8_t key;
rt_mutex_take(TM1617_Mutex, RT_WAITING_FOREVER);
key = (uint8_t)TM1617_ScanFkey();
rt_mutex_release(TM1617_Mutex);
if (key != key_last)
{
key_last = key;
LOG_I("KEY", "tm1617 key=%u", (unsigned)key);
TM1617_Handle(key);
return key;
}
return KEY_NULL;
}