227 lines
6.8 KiB
C
227 lines
6.8 KiB
C
|
|
#include "includes.h"
|
|||
|
|
#include "ui/ui_api.h"
|
|||
|
|
#include "led_lyric.h"
|
|||
|
|
#include "system/sys_time.h"
|
|||
|
|
#include "rtc/rtc_ui.h"
|
|||
|
|
|
|||
|
|
#if TCFG_APP_RTC_EN
|
|||
|
|
|
|||
|
|
#if (TCFG_UI_ENABLE && (CONFIG_UI_STYLE == STYLE_JL_LED_LYRICS))
|
|||
|
|
u8 rtc_show_time_count = 0;
|
|||
|
|
u8 rtc_set_time_count = 0;
|
|||
|
|
u8 rtc_show_time_sw = 1;
|
|||
|
|
u16 user_set_timer_id = 0;
|
|||
|
|
|
|||
|
|
wchar_t blank_char = 0x10;
|
|||
|
|
wchar_t colon_char = 0x11;
|
|||
|
|
struct lyric_rtc_ui {
|
|||
|
|
void *dev_handle;
|
|||
|
|
struct ui_rtc_display lyric_ui_rtc;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
static struct lyric_rtc_ui *__this = NULL;
|
|||
|
|
|
|||
|
|
static void lrc_show_rtc(void)
|
|||
|
|
{
|
|||
|
|
u8 buf[50] = {"RTC TASK"};
|
|||
|
|
lyrics_update_font(buf, strlen(buf), NULL);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static int lyric_ui_set_RTC_user(struct ui_rtc_display *lyric_rtc)
|
|||
|
|
{
|
|||
|
|
int ret = true;
|
|||
|
|
u8 buf[50] = {0};
|
|||
|
|
if (lyric_rtc == NULL) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
rtc_set_time_count++;
|
|||
|
|
switch (lyric_rtc->rtc_menu) {
|
|||
|
|
|
|||
|
|
case UI_RTC_ACTION_SHOW_DATE:
|
|||
|
|
sprintf(buf, "%04d.%02d.%02d %02d:%02d:%02d", lyric_rtc->time.Year, lyric_rtc->time.Month, lyric_rtc->time.Day, \
|
|||
|
|
lyric_rtc->time.Hour, lyric_rtc->time.Min, lyric_rtc->time.Sec);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UI_RTC_ACTION_YEAR_SET:
|
|||
|
|
sprintf(buf, "%04d%c%c%c%c%c%c %c%c%c%c%c%c%c%c", lyric_rtc->time.Year, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char, \
|
|||
|
|
blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UI_RTC_ACTION_MONTH_SET:
|
|||
|
|
sprintf(buf, "%c%c%c%c%c%02d%c%c%c %c%c%c%c%c%c%c%c", blank_char, blank_char, blank_char, blank_char, colon_char, lyric_rtc->time.Month, colon_char, blank_char, blank_char, \
|
|||
|
|
blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UI_RTC_ACTION_DAY_SET:
|
|||
|
|
sprintf(buf, "%c%c%c%c%c%c%c%c%02d %c%c%c%c%c%c%c%c", blank_char, blank_char, blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, lyric_rtc->time.Month, \
|
|||
|
|
blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UI_RTC_ACTION_HOUR_SET:
|
|||
|
|
sprintf(buf, "%c%c%c%c%c%c%c%c%c%c %02d%c%c%c%c%c%c", blank_char, blank_char, blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char, \
|
|||
|
|
lyric_rtc->time.Hour, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UI_RTC_ACTION_MINUTE_SET:
|
|||
|
|
sprintf(buf, "%c%c%c%c%c%c%c%c%c%c %c%c%c%02d%c%c%c", blank_char, blank_char, blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char, \
|
|||
|
|
blank_char, blank_char, colon_char, lyric_rtc->time.Min, colon_char, blank_char, blank_char);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UI_RTC_ACTION_STRING_SET:
|
|||
|
|
//strcpy(buf, lyric_rtc->str);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
ret = false;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
lyrics_update_font(buf, strlen(buf), NULL);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
static int lyric_ui_show_RTC_user(struct ui_rtc_display *lyric_rtc)
|
|||
|
|
{
|
|||
|
|
rtc_show_time_count++;
|
|||
|
|
int ret = true;
|
|||
|
|
u8 buf[50] = {0};
|
|||
|
|
if (lyric_rtc == NULL) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
printf("rtc_user_sys_time: %04d-%02d-%02d %02d:%02d:%02d\n",
|
|||
|
|
lyric_rtc->time.Year,
|
|||
|
|
lyric_rtc->time.Month,
|
|||
|
|
lyric_rtc->time.Day,
|
|||
|
|
lyric_rtc->time.Hour,
|
|||
|
|
lyric_rtc->time.Min,
|
|||
|
|
lyric_rtc->time.Sec
|
|||
|
|
);
|
|||
|
|
sprintf(buf, "%c%c%c%c%c%c%c%c%c%c %c%c%c%c%c%c%c%c", blank_char, blank_char, blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char, \
|
|||
|
|
blank_char, blank_char, colon_char, blank_char, blank_char, colon_char, blank_char, blank_char);
|
|||
|
|
lyrics_update_font(buf, strlen(buf), NULL);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void ui_lrc_show_curtime(void)
|
|||
|
|
{
|
|||
|
|
u8 buf[50] = {0};
|
|||
|
|
struct sys_time current_time;
|
|||
|
|
dev_ioctl(__this->dev_handle, IOCTL_GET_SYS_TIME, (u32)¤t_time);
|
|||
|
|
printf("rtc_read_sys_time: %04d-%02d-%02d %02d:%02d:%02d\n",
|
|||
|
|
current_time.year,
|
|||
|
|
current_time.month,
|
|||
|
|
current_time.day,
|
|||
|
|
current_time.hour,
|
|||
|
|
current_time.min,
|
|||
|
|
current_time.sec);
|
|||
|
|
sprintf(buf, "%04d.%02d.%02d %02d:%02d:%02d", current_time.year, current_time.month, current_time.day, \
|
|||
|
|
current_time.hour, current_time.min, current_time.sec);
|
|||
|
|
lyrics_update_font(buf, strlen(buf), NULL);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
struct ui_rtc_display *rtc_ui_get_display_buf()
|
|||
|
|
{
|
|||
|
|
if (__this) {
|
|||
|
|
return &(__this->lyric_ui_rtc);
|
|||
|
|
} else {
|
|||
|
|
return NULL;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void lyric_ui_rtc_open(void)
|
|||
|
|
{
|
|||
|
|
struct sys_time current_time;
|
|||
|
|
if (!__this) {
|
|||
|
|
__this = zalloc(sizeof(struct lyric_rtc_ui));
|
|||
|
|
}
|
|||
|
|
__this->dev_handle = dev_open("rtc", NULL);
|
|||
|
|
|
|||
|
|
if (!__this->dev_handle) {
|
|||
|
|
free(__this);
|
|||
|
|
__this = NULL;
|
|||
|
|
}
|
|||
|
|
lyric_ui_set_auto_reflash(500);//设置主页500ms自动刷新
|
|||
|
|
dev_ioctl(__this->dev_handle, IOCTL_GET_SYS_TIME, (u32)¤t_time);
|
|||
|
|
printf("rtc_read_sys_time: %d-%d-%d %d:%d:%d\n",
|
|||
|
|
current_time.year,
|
|||
|
|
current_time.month,
|
|||
|
|
current_time.day,
|
|||
|
|
current_time.hour,
|
|||
|
|
current_time.min,
|
|||
|
|
current_time.sec);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void lyric_ui_close_rtc(void)
|
|||
|
|
{
|
|||
|
|
if (user_set_timer_id) {
|
|||
|
|
sys_timeout_del(user_set_timer_id);
|
|||
|
|
}
|
|||
|
|
//lyrics_hide_update();
|
|||
|
|
if (__this) {
|
|||
|
|
free(__this);
|
|||
|
|
__this = NULL;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void lyric_ui_rtc_main(void) //主界面显示
|
|||
|
|
{
|
|||
|
|
if (user_set_timer_id) {
|
|||
|
|
sys_timeout_del(user_set_timer_id);
|
|||
|
|
}
|
|||
|
|
ui_lrc_show_curtime();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void lyric_ui_rtc_show()
|
|||
|
|
{
|
|||
|
|
if (user_set_timer_id) {
|
|||
|
|
sys_timeout_del(user_set_timer_id);
|
|||
|
|
}
|
|||
|
|
user_set_timer_id = sys_timeout_add(NULL, lyric_ui_rtc_show, 50);
|
|||
|
|
if (rtc_show_time_sw) {
|
|||
|
|
if (rtc_show_time_count < 5) {
|
|||
|
|
lyric_ui_show_RTC_user(&(__this->lyric_ui_rtc));
|
|||
|
|
} else {
|
|||
|
|
rtc_show_time_count = 0;
|
|||
|
|
rtc_show_time_sw = 0;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
if (rtc_set_time_count < 5) {
|
|||
|
|
lyric_ui_set_RTC_user(&(__this->lyric_ui_rtc));
|
|||
|
|
} else {
|
|||
|
|
rtc_set_time_count = 0;
|
|||
|
|
rtc_show_time_sw = 1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static int lyric_ui_rtc_user(u8 menu, u32 arg)//子界面显示 //返回true不继续传递 ,返回false由common统一处理
|
|||
|
|
{
|
|||
|
|
int ret = true;
|
|||
|
|
switch (menu) {
|
|||
|
|
case MENU_ALM_SET:
|
|||
|
|
case MENU_RTC_SET:
|
|||
|
|
if (user_set_timer_id) {
|
|||
|
|
sys_timeout_del(user_set_timer_id);
|
|||
|
|
}
|
|||
|
|
user_set_timer_id = sys_timeout_add(NULL, lyric_ui_rtc_show, 50);
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
ret = false;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return ret;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const struct lyric_ui_dis lyric_rtc_main = {
|
|||
|
|
.lyric_ui = LED_LYRICS_RTC_MENU_MAIN,
|
|||
|
|
.lyric_open = lyric_ui_rtc_open,
|
|||
|
|
.lyric_ui_main = lyric_ui_rtc_main,
|
|||
|
|
.lyric_ui_user = lyric_ui_rtc_user,
|
|||
|
|
.lyric_close = lyric_ui_close_rtc,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
#endif
|