926 lines
28 KiB
C
926 lines
28 KiB
C
/*----------------------------------------------------------------------------
|
|
* Copyright (c) Fenda Technologies Co., Ltd. 2021. All rights reserved.
|
|
*
|
|
* Description: sql_setting.c
|
|
*
|
|
* Author: saimen
|
|
*
|
|
* Create: 2024-06-08
|
|
*--------------------------------------------------------------------------*/
|
|
//所有的 SQL 语法都必须以关键字(也称命令)开头,比如 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、USE、SHOW 等。
|
|
#include <string.h>
|
|
#include "sys_typedef.h"
|
|
#include "sys_config.h"
|
|
#include "linux/crc32.h"
|
|
#include "sql_setting.h"
|
|
#include "TjdUiAppIds.h"
|
|
|
|
/**********************************************************************************************************************
|
|
* DEFINE
|
|
*/
|
|
#define ENABLE_STATIC_PRINT false
|
|
#define static_print_error(...) sys_sql_log_e(__VA_ARGS__) //错误信息打印一般常开
|
|
#define static_print_warn(...) sys_sql_log_w(__VA_ARGS__) //警告信息打印一般常开
|
|
#if ENABLE_STATIC_PRINT
|
|
#define static_print_debug(...) sys_sql_log_d(__VA_ARGS__)
|
|
#else
|
|
#define static_print_debug(...)
|
|
#endif
|
|
|
|
#define FILE_VERSION_SETTING (1)
|
|
#define FILE_PATH_SETTING "/system/sql_setting.bin"
|
|
#define UI_COMPONENT_MAX_NUMBER (10)
|
|
#define UI_FLOATING_WINDOW_MAX_NUMBER (10)
|
|
|
|
typedef struct {
|
|
uint8_t dnd_all_day; //全天免打扰
|
|
// uint8_t dnd_no_wear; //未佩戴免打扰。默认打开此功能,暂时不使用。
|
|
uint8_t dnd_period; //定时免打扰
|
|
uint8_t dnd_start_hour; //定时免打扰开始小时
|
|
uint8_t dnd_start_minute; //定时免打扰开始分钟
|
|
uint8_t dnd_end_hour; //定时免打扰结束小时
|
|
uint8_t dnd_end_minute; //定时免打扰结束分钟
|
|
} do_not_disturb_t; //用于存储勿扰模式相关参数
|
|
|
|
typedef struct {
|
|
bool en_motion; // 使能运动识别
|
|
bool en_motion_end; // 使能运动结束提醒
|
|
uint32_t motion_out_time; // 运动超时时间 (单位:秒)
|
|
} motion_info_t;
|
|
|
|
typedef struct {
|
|
uint8_t en_ambient_mode; //使能半亮模式
|
|
uint8_t en_message_notify; //使能消息通知
|
|
// uint8_t en_push_weather; //使能推送天气
|
|
} assistant_info_t;
|
|
|
|
typedef struct {
|
|
uint32_t utc_timestamp; //时间戳
|
|
uint16_t batt_vol; //电池电压单位:mv
|
|
uint16_t percent; //电量百分比
|
|
uint8_t charge_status; //充电状态
|
|
bool is_power_saving; //省电模式
|
|
}battery_info_t;//电池信息
|
|
|
|
typedef struct {
|
|
uint32_t lock_screen_id; //锁屏ID
|
|
uint32_t watch_face_id; //表盘ID
|
|
uint8_t st_watchface_id; //待机表盘ID
|
|
uint32_t lkey_click_app; //左键设置的APP ID
|
|
bool is_cover_to_turn_off_screen; //是否覆盖息屏
|
|
bool is_pinch_to_answer; //是否捏合接听
|
|
uint16_t floating_window_id[UI_FLOATING_WINDOW_MAX_NUMBER]; //浮窗ID
|
|
MainCardEffect animation; //动效设置
|
|
E_MenuStyle menu_style; //菜单风格
|
|
uint32_t component_app_list[UI_COMPONENT_MAX_NUMBER]; //组件管理。app id=0x00,=0xff代表无效
|
|
}gui_info_t;//UI信息
|
|
|
|
typedef struct {
|
|
uint8_t brightness; //屏幕亮度
|
|
bool is_off_screen; //息屏显示
|
|
uint8_t off_screen_view_type; //息屏表盘
|
|
bool is_bedside_clock; //床头钟
|
|
uint16_t keep_screen_time; //保持常亮时间
|
|
bool is_password; //是否有密码
|
|
uint8_t password[6]; //密码
|
|
}screen_info_t;//屏幕信息
|
|
|
|
typedef struct {
|
|
uint8_t volume; //媒体音量
|
|
bool is_volume_mute; //是否静音
|
|
bool is_touch_shake; //是否触摸震动
|
|
uint8_t touch_shake_level; //触摸震动等级 0默认 1强
|
|
} sound_touch_info_t;//声音与触感信息
|
|
|
|
#pragma pack(4) //alignment 4 bytes
|
|
typedef struct {
|
|
uint32_t init_flag:8; //标记模块是否初始化。=0 无效数据;=1 正常数据;=2 恢复数据。
|
|
uint32_t version:8; //结构体版本
|
|
|
|
bool notification; //通知提示 0:关闭 1:开启
|
|
bool screen_wakes; //来信亮屏 0:关闭 1:开启
|
|
language_enum language; //系统语言
|
|
uint16_t lock_screen_time; //锁屏时间 单位:秒
|
|
uint16_t close_screen_time; //息屏时间 单位:秒
|
|
int16_t zone; //系统时区 单位:分钟
|
|
uint8_t vibration_intensity; //振动强度
|
|
uint8_t distance_unit; //距离单位 0:公制 1:英制
|
|
uint8_t time_format; //时间格式 1:12小时 0:24小时
|
|
do_not_disturb_t dnd; //勿扰模式
|
|
motion_info_t motion; //运动识别
|
|
assistant_info_t assistant; //开关助手控制
|
|
battery_info_t battery; //电池信息
|
|
screen_info_t screen; //屏幕信息
|
|
gui_info_t gui; //GUI配置信息
|
|
sound_touch_info_t sound_touch; //声音与触感信息
|
|
uint64_t timestamp; //系统时间戳
|
|
int32_t time_diff; //时间偏移
|
|
uint8_t left_key_app; //左键APP
|
|
uint8_t favorite_sort[FAVORITE_MODEL_MAX_NUM]; //负一屏排序
|
|
uint8_t card_settings[15];
|
|
uint8_t card_settings_num;
|
|
|
|
//uint8_t revs[1]; //保证8字节对齐
|
|
uint32_t crc32;
|
|
} setting_def_t;
|
|
#pragma pack()
|
|
|
|
static setting_def_t g_settings; //设置实例
|
|
static bool g_setting_need_save = false;
|
|
|
|
/**
|
|
* @brief 重置系统设置数据.
|
|
* @retval int|返回结果,0=成功.
|
|
*/
|
|
int sql_setting_restore(void)
|
|
{
|
|
int ret = RET_SUCCESS;
|
|
static_print_warn("sql_setting_restore()\r\n");
|
|
// 设置的默认值
|
|
memset((uint8_t*)&g_settings,0,sizeof(setting_def_t));
|
|
g_settings.version = FILE_VERSION_SETTING;
|
|
g_settings.init_flag = 1;
|
|
|
|
g_settings.notification = true;
|
|
g_settings.screen_wakes = false;
|
|
g_settings.screen.brightness = 255;
|
|
g_settings.screen.is_off_screen = false; // 息屏表盘默认打开
|
|
g_settings.screen.is_bedside_clock = true; // 床头钟默认打开
|
|
g_settings.screen.off_screen_view_type = 0; //指针时钟
|
|
g_settings.screen.keep_screen_time = 180; //常亮
|
|
g_settings.screen.is_password = false;
|
|
g_settings.battery.is_power_saving = false;
|
|
g_settings.battery.percent = 10000;
|
|
g_settings.language = 1; //中文
|
|
g_settings.zone = 480; //单位: 分钟
|
|
g_settings.time_format = TIME_DISPLAY_24;
|
|
g_settings.vibration_intensity = 80;
|
|
g_settings.dnd.dnd_all_day = false;
|
|
g_settings.dnd.dnd_period = false;
|
|
g_settings.dnd.dnd_start_hour = 23;
|
|
g_settings.dnd.dnd_start_minute = 0;
|
|
g_settings.dnd.dnd_end_hour = 7;
|
|
g_settings.dnd.dnd_end_minute = 0;
|
|
g_settings.motion.en_motion = false;
|
|
g_settings.motion.en_motion_end = false;
|
|
g_settings.motion.motion_out_time = 3600 * 8; // 8小时
|
|
g_settings.close_screen_time = 5; //单位: 秒
|
|
g_settings.lock_screen_time = 5;
|
|
g_settings.gui.lkey_click_app = TJD_APP_VIEW_SPORT; // 左键默认打开运动
|
|
g_settings.gui.animation = 0;
|
|
g_settings.gui.is_cover_to_turn_off_screen = true; // 盖手熄屏默认开启
|
|
g_settings.time_diff = 0;
|
|
memset(g_settings.gui.floating_window_id, 0, sizeof(g_settings.gui.floating_window_id));
|
|
g_settings.gui.floating_window_id[0] = TJD_APP_VIEW_HR; //TJD_APP_VIEW_HR
|
|
g_settings.gui.floating_window_id[1] = TJD_APP_VIEW_SPO2; //TJD_APP_VIEW_STRESS
|
|
g_settings.gui.floating_window_id[2] = TJD_APP_VIEW_SPORT; //TJD_APP_VIEW_SPORT
|
|
g_settings.gui.floating_window_id[3] = TJD_APP_VIEW_PLAYER; //TJD_APP_VIEW_DAILYDATA
|
|
for (int i = 0; i < 5; ++i) {
|
|
g_settings.favorite_sort[i] = i;
|
|
}
|
|
g_settings.sound_touch.volume = 50;
|
|
g_settings.sound_touch.is_volume_mute = false;
|
|
g_settings.sound_touch.is_touch_shake = false;
|
|
g_settings.sound_touch.touch_shake_level = 0;
|
|
memset(g_settings.card_settings, 0, sizeof(g_settings.card_settings));
|
|
g_settings.card_settings_num = 0;
|
|
|
|
g_setting_need_save = false;
|
|
return ret;
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 固定接口
|
|
*/
|
|
/**
|
|
* @brief 初始化系统设置数据.
|
|
* @retval int|返回结果,0=成功.
|
|
*/
|
|
int sql_setting_init(void)
|
|
{
|
|
int ret = RET_SUCCESS;
|
|
uint32_t ui32_crc;
|
|
|
|
static_print_warn("[%s],sizeof(setting_def_t) = %d\r\n", FILE_PATH_SETTING, sizeof(setting_def_t));
|
|
ui32_crc = Crc32Part(0,(const char *)&g_settings, sizeof(setting_def_t) - 4);
|
|
if(ui32_crc != g_settings.crc32 || g_settings.version != FILE_VERSION_SETTING)
|
|
{
|
|
sql_setting_restore();
|
|
g_setting_need_save = true;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
void* sql_setting_get_info(uint32_t *len, char **path)
|
|
{
|
|
g_settings.crc32 = Crc32Part(0,(const char *)&g_settings, sizeof(g_settings) - 4);
|
|
*len = sizeof(g_settings);
|
|
*path = (char*)FILE_PATH_SETTING;
|
|
return &g_settings;
|
|
}
|
|
|
|
void sql_setting_set_save_flag(uint8_t value)
|
|
{
|
|
g_setting_need_save = value;
|
|
}
|
|
|
|
uint8_t sql_setting_get_save_flag(void)
|
|
{
|
|
return g_setting_need_save;
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 通知设置
|
|
*/
|
|
void sql_setting_set_notification(bool status)
|
|
{
|
|
static_print_debug("settings:set notification\r\n");
|
|
if(g_settings.notification != status) {
|
|
g_settings.notification = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_notification(void)
|
|
{
|
|
return g_settings.notification;
|
|
}
|
|
|
|
void sql_setting_set_screen_wakes(bool status)
|
|
{
|
|
static_print_debug("settings:set screen_wakes\r\n");
|
|
if(g_settings.screen_wakes != status) {
|
|
g_settings.screen_wakes = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_screen_wakes(void)
|
|
{
|
|
return g_settings.screen_wakes;
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 通用接口
|
|
*/
|
|
void sql_setting_set_lock_screen_time(uint16_t time)
|
|
{
|
|
static_print_debug("settings:set lock screen time\r\n");
|
|
if(g_settings.lock_screen_time != time) {
|
|
g_settings.lock_screen_time = time;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_lock_screen_time(void)
|
|
{
|
|
return g_settings.lock_screen_time;
|
|
}
|
|
|
|
void sql_setting_set_close_screen_time(uint16_t time)
|
|
{
|
|
static_print_debug("settings:set turn off screen time\r\n");
|
|
if(g_settings.close_screen_time != time) {
|
|
g_settings.close_screen_time = time;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_close_screen_time(void)
|
|
{
|
|
return g_settings.close_screen_time;
|
|
}
|
|
|
|
void sql_setting_set_vibration_intensity(uint8_t intensity)
|
|
{
|
|
static_print_debug("settings:set vibration intensity\r\n");
|
|
if(g_settings.vibration_intensity != intensity) {
|
|
g_settings.vibration_intensity = intensity;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_vibration_intensity(void)
|
|
{
|
|
return g_settings.vibration_intensity;
|
|
}
|
|
|
|
extern void C_SetLang(void);
|
|
|
|
void sql_setting_set_language(language_enum languang)
|
|
{
|
|
static_print_debug("settings:set language\r\n");
|
|
if(g_settings.language != languang) {
|
|
g_settings.language = languang;
|
|
g_setting_need_save = true;
|
|
C_SetLang();
|
|
}
|
|
}
|
|
|
|
language_enum sql_setting_get_language(void)
|
|
{
|
|
return g_settings.language;
|
|
}
|
|
|
|
void sql_setting_set_zone(int16_t zone)
|
|
{
|
|
static_print_debug("settings:set zone\r\n");
|
|
if(g_settings.zone != zone) {
|
|
g_settings.zone = zone;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
int16_t sql_setting_get_zone(void)
|
|
{
|
|
return g_settings.zone;
|
|
}
|
|
|
|
void sql_setting_set_distance_unit(uint8_t unit)
|
|
{
|
|
static_print_debug("settings:set distance unit\r\n");
|
|
if(g_settings.distance_unit != unit) {
|
|
g_settings.distance_unit = unit;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_distance_unit(void)
|
|
{
|
|
return g_settings.distance_unit;
|
|
}
|
|
|
|
void sql_setting_set_time_format(uint8_t format)
|
|
{
|
|
static_print_debug("settings:set time format\r\n");
|
|
if(g_settings.time_format != format) {
|
|
g_settings.time_format = format;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_time_format(void)
|
|
{
|
|
return g_settings.time_format;
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 显示与亮度设置
|
|
*/
|
|
void sql_setting_set_brightness(uint8_t brightness)
|
|
{
|
|
static_print_debug("settings:set brightness\r\n");
|
|
if(g_settings.screen.brightness != brightness) {
|
|
g_settings.screen.brightness = brightness;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_brightness(void)
|
|
{
|
|
return g_settings.screen.brightness;
|
|
}
|
|
|
|
void sql_setting_set_off_screen(bool status)
|
|
{
|
|
static_print_debug("settings:set off screen\r\n");
|
|
if(g_settings.screen.is_off_screen != status) {
|
|
g_settings.screen.is_off_screen = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_off_screen(void)
|
|
{
|
|
return g_settings.screen.is_off_screen;
|
|
}
|
|
|
|
void sql_setting_set_off_screen_view_type(uint8_t type)
|
|
{
|
|
static_print_debug("settings:set off screen view type\r\n");
|
|
if(g_settings.screen.off_screen_view_type != type) {
|
|
g_settings.screen.off_screen_view_type = type;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_off_screen_view_type(void)
|
|
{
|
|
return g_settings.screen.off_screen_view_type;
|
|
}
|
|
|
|
void sql_setting_set_bedside_clock(bool status)
|
|
{
|
|
static_print_debug("settings:set bedside clock\r\n");
|
|
if(g_settings.screen.is_bedside_clock != status) {
|
|
g_settings.screen.is_bedside_clock = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_bedside_clock(void)
|
|
{
|
|
return g_settings.screen.is_bedside_clock;
|
|
}
|
|
|
|
void sql_setting_set_keep_screen_time(uint16_t time)
|
|
{
|
|
static_print_debug("settings:set keep screen time\r\n");
|
|
if(g_settings.screen.keep_screen_time != time) {
|
|
g_settings.screen.keep_screen_time = time;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint16_t sql_setting_get_keep_screen_time(void)
|
|
{
|
|
return g_settings.screen.keep_screen_time;
|
|
}
|
|
|
|
bool sql_setting_get_password_enable(void)
|
|
{
|
|
return g_settings.screen.is_password;
|
|
}
|
|
|
|
void sql_setting_set_password_enable(bool status)
|
|
{
|
|
static_print_debug("settings:set password enable\r\n");
|
|
if(g_settings.screen.is_password != status) {
|
|
g_settings.screen.is_password = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
void sql_setting_set_password(const char *password)
|
|
{
|
|
static_print_debug("settings:set password\r\n");
|
|
if(memcmp(g_settings.screen.password, password, 6) != 0) {
|
|
memcpy(g_settings.screen.password, password, 6);
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
void sql_setting_get_password(char *password)
|
|
{
|
|
memcpy(password, g_settings.screen.password, 6);
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 勿扰管理
|
|
*/
|
|
void sql_setting_set_dnd_all_day(uint8_t status)
|
|
{
|
|
static_print_debug("settings:set no disturb cfg\r\n");
|
|
if(g_settings.dnd.dnd_all_day != status) {
|
|
g_settings.dnd.dnd_all_day = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_dnd_all_day(void)
|
|
{
|
|
return g_settings.dnd.dnd_all_day;
|
|
}
|
|
|
|
void sql_setting_set_dnd_period_enable(uint8_t status)
|
|
{
|
|
static_print_debug("settings:set no disturb cfg\r\n");
|
|
if(g_settings.dnd.dnd_period != status) {
|
|
g_settings.dnd.dnd_period = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_dnd_period_enable(void)
|
|
{
|
|
return g_settings.dnd.dnd_period;
|
|
}
|
|
|
|
void sql_setting_set_dnd_period(uint8_t status,uint8_t start_hour,uint8_t start_minute,uint8_t end_hour,uint8_t end_minute)
|
|
{
|
|
static_print_debug("settings:set no disturb cfg\r\n");
|
|
if(g_settings.dnd.dnd_period != status
|
|
|| g_settings.dnd.dnd_start_hour != start_hour
|
|
|| g_settings.dnd.dnd_start_minute != start_minute
|
|
|| g_settings.dnd.dnd_end_hour != end_hour
|
|
|| g_settings.dnd.dnd_end_minute != end_minute
|
|
)
|
|
{
|
|
g_settings.dnd.dnd_period = status;
|
|
g_settings.dnd.dnd_start_hour = start_hour;
|
|
g_settings.dnd.dnd_start_minute = start_minute;
|
|
g_settings.dnd.dnd_end_hour = end_hour;
|
|
g_settings.dnd.dnd_end_minute = end_minute;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_dnd_period(uint8_t *start_hour,uint8_t *start_minute,uint8_t *end_hour,uint8_t *end_minute)
|
|
{
|
|
*start_hour = g_settings.dnd.dnd_start_hour;
|
|
*start_minute = g_settings.dnd.dnd_start_minute;
|
|
*end_hour = g_settings.dnd.dnd_end_hour;
|
|
*end_minute = g_settings.dnd.dnd_end_minute;
|
|
return g_settings.dnd.dnd_period;
|
|
}
|
|
|
|
void sql_setting_set_motion_enable(bool status)
|
|
{
|
|
static_print_debug("settings:set motion enable\r\n");
|
|
if(g_settings.motion.en_motion != status) {
|
|
g_settings.motion.en_motion = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_motion_enable(void)
|
|
{
|
|
return g_settings.motion.en_motion;
|
|
}
|
|
|
|
void sql_setting_set_motion_end_enable(bool status)
|
|
{
|
|
static_print_debug("settings:set motion end enable\r\n");
|
|
if(g_settings.motion.en_motion_end != status) {
|
|
g_settings.motion.en_motion_end = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_motion_end_enable(void)
|
|
{
|
|
return g_settings.motion.en_motion_end;
|
|
}
|
|
|
|
void sql_setting_set_motion_out_time(uint32_t time)
|
|
{
|
|
static_print_debug("settings:set motion out time\r\n");
|
|
if(g_settings.motion.motion_out_time != time) {
|
|
g_settings.motion.motion_out_time = time;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint32_t sql_setting_get_motion_out_time(void)
|
|
{
|
|
return g_settings.motion.motion_out_time;
|
|
}
|
|
|
|
//开关助手控制
|
|
void sql_setting_set_switch_ambient_mode(int mode)
|
|
{
|
|
static_print_debug("settings:set ambient mode\r\n");
|
|
if(g_settings.assistant.en_ambient_mode != mode) {
|
|
g_settings.assistant.en_ambient_mode = mode;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
int sql_setting_get_switch_ambient_mode(void)
|
|
{
|
|
return g_settings.assistant.en_ambient_mode;
|
|
}
|
|
|
|
void sql_setting_set_switch_message_notify(int mode)
|
|
{
|
|
if(g_settings.assistant.en_message_notify != mode) {
|
|
g_settings.assistant.en_ambient_mode = mode;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
int sql_setting_get_switch_message_notify(void)
|
|
{
|
|
return g_settings.assistant.en_ambient_mode;
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* gui管理
|
|
********************************************************************************************************************/
|
|
void sql_setting_set_lock_screen_id(uint32_t id)
|
|
{
|
|
static_print_debug("settings:set lock screen id\r\n");
|
|
if(g_settings.gui.lock_screen_id != id) {
|
|
g_settings.gui.lock_screen_id = id;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint32_t sql_setting_get_lock_screen_id(void)
|
|
{
|
|
return g_settings.gui.lock_screen_id;
|
|
}
|
|
|
|
void sql_setting_set_watch_face_id(uint32_t id)
|
|
{
|
|
static_print_debug("settings:set watch face id\r\n");
|
|
if(g_settings.gui.watch_face_id != id) {
|
|
g_settings.gui.watch_face_id = id;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint32_t sql_setting_get_watch_face_id(void)
|
|
{
|
|
return g_settings.gui.watch_face_id;
|
|
}
|
|
|
|
//待机表盘ID设置
|
|
void sql_setting_set_st_watchface_id(uint8_t id)
|
|
{
|
|
static_print_debug("*****settings:set st_watchface_id*****\r\n");
|
|
if(g_settings.gui.st_watchface_id != id) {
|
|
g_settings.gui.st_watchface_id = id;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
//获取待机表盘ID
|
|
uint8_t sql_setting_get_st_watchface_id(void)
|
|
{
|
|
return g_settings.gui.st_watchface_id;
|
|
}
|
|
|
|
//下键屏幕id设置text设置
|
|
void sql_setting_set_switch_downkey_app(uint32_t id)
|
|
{
|
|
g_settings.gui.lkey_click_app = id;
|
|
g_setting_need_save = true;
|
|
}
|
|
|
|
//下键屏幕id获取
|
|
uint32_t sql_setting_get_switch_downkey_app(void)
|
|
{
|
|
return g_settings.gui.lkey_click_app;
|
|
}
|
|
|
|
//获取组件管理句柄
|
|
bool sql_setting_get_component_handler(void **info, uint32_t data_len)
|
|
{
|
|
if( data_len > sizeof(g_settings.gui.component_app_list) ){
|
|
return false;
|
|
}else{
|
|
*info = g_settings.gui.component_app_list;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool sql_setting_get_cover_to_turn_off_screen(void)
|
|
{
|
|
return g_settings.gui.is_cover_to_turn_off_screen;
|
|
}
|
|
|
|
void sql_setting_set_cover_to_turn_off_screen(bool enable)
|
|
{
|
|
if(g_settings.gui.is_cover_to_turn_off_screen != enable) {
|
|
g_settings.gui.is_cover_to_turn_off_screen = enable;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_pinch_to_answer(void)
|
|
{
|
|
return g_settings.gui.is_pinch_to_answer;
|
|
}
|
|
|
|
void sql_setting_set_pinch_to_answer(bool enable)
|
|
{
|
|
if(g_settings.gui.is_pinch_to_answer != enable) {
|
|
g_settings.gui.is_pinch_to_answer = enable;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
void sql_setting_set_floating_window_map(const uint16_t *app_map, uint32_t len)
|
|
{
|
|
if(len > UI_FLOATING_WINDOW_MAX_NUMBER) {
|
|
len = UI_FLOATING_WINDOW_MAX_NUMBER;
|
|
}
|
|
if(memcmp(g_settings.gui.floating_window_id, app_map, len * sizeof(uint16_t)) != 0) {
|
|
memcpy(g_settings.gui.floating_window_id, app_map, len * sizeof(uint16_t));
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
const uint16_t *sql_setting_get_floating_window_map(uint8_t *num)
|
|
{
|
|
uint8_t m = 0;
|
|
for (uint8_t i = 0; i < UI_FLOATING_WINDOW_MAX_NUMBER; i++) {
|
|
if (g_settings.gui.floating_window_id[i] != 0) {
|
|
m++;
|
|
}
|
|
}
|
|
if (num != NULL) {
|
|
*num = m;
|
|
}
|
|
return g_settings.gui.floating_window_id;
|
|
}
|
|
|
|
void sql_setting_set_animation(MainCardEffect animation)
|
|
{
|
|
if (g_settings.gui.animation != animation) {
|
|
g_settings.gui.animation = animation;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
MainCardEffect sql_setting_get_animation(void)
|
|
{
|
|
return g_settings.gui.animation;
|
|
}
|
|
|
|
void sql_setting_set_menu_style(E_MenuStyle style)
|
|
{
|
|
if (g_settings.gui.menu_style != style) {
|
|
g_settings.gui.menu_style = style;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
E_MenuStyle sql_setting_get_menu_style(void)
|
|
{
|
|
return g_settings.gui.menu_style;
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 电池信息
|
|
**********************************************************************************************************************/
|
|
void sql_setting_set_battery_info(uint32_t utc_timestamp, uint8_t charge_status, uint16_t percent, uint16_t voltage)
|
|
{
|
|
bool utc_flag = false;
|
|
static_print_debug("settings:set no disturb cfg\r\n");
|
|
if(g_settings.battery.charge_status != charge_status) {
|
|
g_settings.battery.charge_status = charge_status;
|
|
utc_flag = true;
|
|
}
|
|
if(g_settings.battery.percent != percent) {
|
|
g_settings.battery.percent = percent;
|
|
utc_flag = true;
|
|
}
|
|
if(g_settings.battery.batt_vol != voltage) {
|
|
g_settings.battery.batt_vol = voltage;
|
|
utc_flag = true;
|
|
}
|
|
if(utc_flag == true) {
|
|
g_settings.battery.utc_timestamp = utc_timestamp;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
void sql_setting_set_battery_percent(uint16_t percent)
|
|
{
|
|
|
|
if(g_settings.battery.percent != percent) {
|
|
g_settings.battery.percent = percent;
|
|
//g_setting_need_save = true;
|
|
}
|
|
|
|
}
|
|
|
|
// 获取保存的电池信息
|
|
bool sql_setting_get_battery_info(uint32_t *utc_timestamp, uint8_t *charge_status, uint16_t *percent, uint16_t *voltage)
|
|
{
|
|
|
|
if(g_settings.battery.utc_timestamp) {
|
|
*utc_timestamp = g_settings.battery.utc_timestamp;
|
|
*charge_status = g_settings.battery.charge_status;
|
|
*percent = g_settings.battery.percent;
|
|
*voltage = g_settings.battery.batt_vol;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
uint16_t sql_setting_get_battery_percent(void)
|
|
{
|
|
return g_settings.battery.percent;
|
|
|
|
}
|
|
|
|
|
|
|
|
void sql_setting_set_power_saving_mode(bool status)
|
|
{
|
|
static_print_debug("settings:set power saving mode\r\n");
|
|
if(g_settings.battery.is_power_saving != status) {
|
|
g_settings.battery.is_power_saving = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_power_saving_mode(void)
|
|
{
|
|
return g_settings.battery.is_power_saving;
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 系统时间信息
|
|
**********************************************************************************************************************/
|
|
void sql_setting_set_system_time(uint64_t utc_timestamp)
|
|
{
|
|
static_print_debug("settings:set_system_time ");
|
|
if(g_settings.timestamp != utc_timestamp ) {
|
|
g_settings.timestamp = utc_timestamp;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
void sql_setting_get_system_time(uint64_t *utc_timestamp)
|
|
{
|
|
*utc_timestamp = g_settings.timestamp;
|
|
}
|
|
|
|
void sql_setting_set_time_diff(int32_t diff)
|
|
{
|
|
if(g_settings.time_diff != diff) {
|
|
g_settings.time_diff = diff;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
int32_t sql_setting_get_time_diff(void)
|
|
{
|
|
return g_settings.time_diff;
|
|
}
|
|
|
|
void sql_setting_set_favorite_sort(const uint8_t *sort)
|
|
{
|
|
if(memcmp(g_settings.favorite_sort, sort, FAVORITE_MODEL_MAX_NUM) != 0) {
|
|
memcpy(g_settings.favorite_sort, sort, FAVORITE_MODEL_MAX_NUM);
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
void sql_setting_get_favorite_sort(uint8_t *sort)
|
|
{
|
|
memcpy(sort, g_settings.favorite_sort, FAVORITE_MODEL_MAX_NUM);
|
|
}
|
|
|
|
/**********************************************************************************************************************
|
|
* 声音与触感设置
|
|
**********************************************************************************************************************/
|
|
void sql_setting_set_volume(uint8_t volume)
|
|
{
|
|
static_print_debug("settings:set volume\r\n");
|
|
if(g_settings.sound_touch.volume != volume) {
|
|
g_settings.sound_touch.volume = volume;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_volume(void)
|
|
{
|
|
return g_settings.sound_touch.volume;
|
|
}
|
|
|
|
void sql_setting_set_volume_mute(bool status)
|
|
{
|
|
static_print_debug("settings:set volume mute\r\n");
|
|
if(g_settings.sound_touch.is_volume_mute != status) {
|
|
g_settings.sound_touch.is_volume_mute = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_volume_mute(void)
|
|
{
|
|
return g_settings.sound_touch.is_volume_mute;
|
|
}
|
|
|
|
void sql_setting_set_touch_shake(bool status)
|
|
{
|
|
static_print_debug("settings:set touch shake\r\n");
|
|
if(g_settings.sound_touch.is_touch_shake != status) {
|
|
g_settings.sound_touch.is_touch_shake = status;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
bool sql_setting_get_touch_shake(void)
|
|
{
|
|
return g_settings.sound_touch.is_touch_shake;
|
|
}
|
|
|
|
void sql_setting_set_touch_shake_level(uint8_t level)
|
|
{
|
|
static_print_debug("settings:set touch shake level\r\n");
|
|
if(g_settings.sound_touch.touch_shake_level != level) {
|
|
g_settings.sound_touch.touch_shake_level = level;
|
|
g_setting_need_save = true;
|
|
}
|
|
}
|
|
|
|
uint8_t sql_setting_get_touch_shake_level(void)
|
|
{
|
|
return g_settings.sound_touch.touch_shake_level;
|
|
}
|
|
|
|
const uint8_t *sql_setting_get_card_settings(uint8_t *card_nums)
|
|
{
|
|
if (card_nums == NULL) {
|
|
return NULL;
|
|
}
|
|
*card_nums = g_settings.card_settings_num;
|
|
return g_settings.card_settings;
|
|
} |