demo工程暂存 优化菜单界面UI和功能
This commit is contained in:
@ -0,0 +1,52 @@
|
||||
/**
|
||||
* @file lv_frame.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_FRAME_H
|
||||
#define LV_FRAME_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "lvgl.h"
|
||||
#include "fr_ui_node.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void fr_main_roll_cont(lv_obj_t *parent,lv_point_t *top);
|
||||
void fr_del_float_win(void);
|
||||
extern bool frame_log_enable;
|
||||
|
||||
|
||||
/*=====================
|
||||
* Other functions
|
||||
*====================*/
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif
|
1054
MCU/examples/turnkey/lvgl_Dashboard_8080/Src/lv_frame/fr_guimain.c
Normal file
1054
MCU/examples/turnkey/lvgl_Dashboard_8080/Src/lv_frame/fr_guimain.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,92 @@
|
||||
/**
|
||||
* @file lv_ui_node.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_UI_NODE_H
|
||||
#define LV_UI_NODE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "lvgl.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
|
||||
//ui node
|
||||
typedef uint16_t lv_ui_entry_id_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t scroll_dir : 1;
|
||||
uint16_t node_style : 3;
|
||||
uint16_t reserved : 12;
|
||||
|
||||
}lv_ui_node_attr_t;
|
||||
typedef struct
|
||||
{
|
||||
lv_ui_entry_id_t child_0_id;
|
||||
lv_ui_entry_id_t child_1_id;
|
||||
lv_point_t child_0_top;
|
||||
lv_point_t child_1_top;
|
||||
lv_ui_node_attr_t attr;
|
||||
|
||||
}lv_ui_node_t;
|
||||
|
||||
#define UI_NODE_MAX_DEPTH 12
|
||||
#define CUSTOM_ID_ARRY_NUMBER 12
|
||||
|
||||
typedef void (* ui_func)(lv_obj_t *obj,lv_point_t *top);
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void lv_ui_node_stack_init(void);
|
||||
void lv_ui_node_func(lv_obj_t *parent, lv_ui_node_t *node);
|
||||
void lv_ui_node_add(lv_obj_t *node_parent,lv_obj_t * obj_scroll,ui_func cur,ui_func next,bool scroll_dir);
|
||||
|
||||
void lv_ui_node_alpha_fade_func(lv_obj_t *parent, lv_ui_node_t *node);
|
||||
void lv_ui_node_alpha_fade_add(lv_obj_t *node_parent,lv_obj_t * obj_scroll,ui_func cur,ui_func next,bool scroll_dir);
|
||||
|
||||
void lv_ui_node_alpha_blend_func(lv_obj_t *parent, lv_ui_node_t *node);
|
||||
void lv_ui_node_alpha_blend_add(lv_obj_t *node_parent,lv_obj_t * obj_scroll,ui_func cur,ui_func next,bool scroll_dir);
|
||||
|
||||
void lv_ui_node_zoom_blend_func(lv_obj_t *parent, lv_ui_node_t *node);
|
||||
void lv_ui_node_zoom_blend_add(lv_obj_t *node_parent,lv_obj_t * obj_scroll,ui_func cur,ui_func next,bool scroll_dir);
|
||||
|
||||
bool lv_ui_node_set_cur_p(lv_point_t * top);
|
||||
bool lv_ui_node_get_cur(lv_ui_node_t * e);
|
||||
bool lv_ui_node_set_cur(lv_ui_node_t * e);
|
||||
bool lv_ui_node_pop_ex(lv_ui_node_t * e);
|
||||
void lv_ui_node_hor_prev(lv_obj_t *parent);
|
||||
|
||||
bool lv_alpha_fade_set(lv_obj_t * parent,lv_opa_t value);
|
||||
|
||||
/*=====================
|
||||
* Other functions
|
||||
*====================*/
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif
|
776
MCU/examples/turnkey/lvgl_Dashboard_8080/Src/lv_frame/fr_watch.c
Normal file
776
MCU/examples/turnkey/lvgl_Dashboard_8080/Src/lv_frame/fr_watch.c
Normal file
@ -0,0 +1,776 @@
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "fr_watch.h"
|
||||
#include "lv_common_function.h"
|
||||
|
||||
|
||||
#define WATCH_DEBUG(fmt, arg...) printf("[WATCH]" fmt "\r\n", ##arg)
|
||||
|
||||
//cm3 input
|
||||
ipc_daily_data_t sync_cm3_data;
|
||||
sleep_history_stru sleep_history_data = {0};
|
||||
uint8_t sportheartrate_historydata[72] = {0};
|
||||
uint8_t heartrate_historydata[48] = {0};
|
||||
|
||||
ctp_type_t tp;
|
||||
ctp_timer_t tp_timer;
|
||||
|
||||
extern lv_obj_t *prj_parent_cont;
|
||||
extern lv_obj_t *prj_call_cont;
|
||||
lv_obj_t *cur_show_vol_slider = NULL;
|
||||
|
||||
uint8_t msg_list_total;
|
||||
ancs_msg_t msglist;
|
||||
call_record_list_t record_list;
|
||||
uint8_t call_context[200];
|
||||
uint8_t call_list[200];
|
||||
uint8_t book_list[10][200];
|
||||
|
||||
|
||||
#ifdef FR508X_DSP_SDK
|
||||
static uint8_t dsp_power_on_step = 0;
|
||||
static uint8_t remind_index_backup;
|
||||
|
||||
uint8_t OTA_STEP = 0;
|
||||
|
||||
uint8_t system_mainUI_sw_state_backup;
|
||||
// volatile bool get_sleep_data_flag = false;
|
||||
uint8_t get_sleep_data_flag = 0xa5;
|
||||
bool get_sleep_data_success_flag = false;
|
||||
bool get_heartrate_data_success_flag = false;
|
||||
|
||||
bool init_remind_func_flag = false;
|
||||
bool calling_wakeup_flag = false;
|
||||
|
||||
extern uint8_t phonenumber[];
|
||||
extern uint8_t phonenName[];
|
||||
extern bool call_flag;
|
||||
extern bool coming_call_ok;
|
||||
|
||||
static uint32_t start_tick = 0;
|
||||
static uint32_t next_tick = 0;
|
||||
uint32_t elaps = 0;
|
||||
extern uint8_t ctp_last_point;
|
||||
extern lv_point_t point_FIFO;
|
||||
extern uint8_t *music_context;
|
||||
extern lv_obj_t * obj_context;
|
||||
extern bool get_phone_book_flag;
|
||||
extern bool phone_book_is_bank_flag;
|
||||
extern bool get_all_sport_history_flag;
|
||||
extern uint8_t *sport_history_p;
|
||||
extern uint16_t sport_history_len;
|
||||
|
||||
//static uint8_t test_datadata[240] = {0};
|
||||
extern sleep_history_stru sleep_history_data;
|
||||
|
||||
static uint8_t lcm_init_flag = false;
|
||||
|
||||
static bool backlight_flag = 0;
|
||||
|
||||
void turn_on_device_backlight(void)
|
||||
{
|
||||
if(!backlight_flag){
|
||||
dsp_post_operate_to_m3(DSP_EVT_TURN_ON_BACKLIGHT,NULL,0);
|
||||
backlight_flag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void m3_drv_calling(uint8_t *buffer, uint16_t length)
|
||||
{
|
||||
#if 1
|
||||
if (!call_flag)
|
||||
{
|
||||
call_flag = true;
|
||||
|
||||
uint32_t len = buffer[0]+1;
|
||||
WATCH_DEBUG("length : %d \r\n",length);
|
||||
if(length < 2)
|
||||
{
|
||||
coming_call_ok = true;
|
||||
//phonenumber[0] = 0;
|
||||
//phonenName[0] = 0;
|
||||
memset(call_context,0,200);
|
||||
}
|
||||
else
|
||||
{
|
||||
coming_call_ok = false;
|
||||
//memcpy(&phonenumber, buffer, len);
|
||||
//uint32_t name_len = buffer[len] + 1;
|
||||
//memcpy(&phonenName, buffer+len, name_len);
|
||||
memcpy(call_context,buffer,length);
|
||||
}
|
||||
|
||||
dsp_post_operate_to_m3(DSP_EVT_GET_CALL_STATE,NULL,0);
|
||||
//co_delay_100us(1000);
|
||||
|
||||
WATCH_DEBUG("LV_EVENT_CALL_IN \r\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void do_m3_message_input(uint8_t *buffer, uint16_t length)
|
||||
{
|
||||
|
||||
switch (buffer[0])
|
||||
{
|
||||
case M3_DRIVER_CALLING:
|
||||
m3_drv_calling(buffer + 1, length - 1);
|
||||
break;
|
||||
|
||||
case M3_DRIVER_CALLING_CANCE:
|
||||
if (call_flag)
|
||||
{
|
||||
//if(prj_call_cont != NULL)
|
||||
if(lv_obj_is_valid(prj_call_cont))
|
||||
{
|
||||
m3_log("LV_EVENT_CALL_REJECT \n");
|
||||
lv_event_send(prj_call_cont, LV_EVENT_CALL_REJECT, NULL);
|
||||
//WATCH_DEBUG("LV_EVENT_CALL_REJECT \r\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case M3_DRIVER_CALLING_OK:
|
||||
if (call_flag)
|
||||
{
|
||||
//if(prj_call_cont != NULL)
|
||||
if(lv_obj_is_valid(prj_call_cont))
|
||||
{
|
||||
m3_log("LV_EVENT_CALL_OK \n");
|
||||
lv_event_send(prj_call_cont, LV_EVENT_CALL_OK, NULL);
|
||||
//WATCH_DEBUG("fLV_EVENT_CALL_OK \r\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case M3_DRIVER_CALLING_STATE:
|
||||
{
|
||||
//WATCH_DEBUG("LV_EVENT_CALL_IN %d\r\n",buffer[1]);
|
||||
if(buffer[1])
|
||||
{
|
||||
coming_call_ok = true;
|
||||
}
|
||||
|
||||
if(lv_obj_is_valid(prj_parent_cont))
|
||||
{
|
||||
lv_event_send(prj_parent_cont, LV_EVENT_CALL_IN, NULL);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void show_reg(uint8_t *data, uint32_t len, uint8_t dbg_on)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
if (len == 0 || (dbg_on == 0))
|
||||
return;
|
||||
for (; i < len; i++)
|
||||
{
|
||||
printf("0x%02X ", data[i]);
|
||||
}
|
||||
printf("\r\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
ancs_t *ancs_msg;
|
||||
|
||||
#define NTF_ATT_ID_APPLE 0
|
||||
#define NTF_ATT_ID_TITLE 1
|
||||
#define NTF_ATT_ID_SUBTITLE 2
|
||||
#define NTF_ATT_ID_MSG 3
|
||||
#define NTF_ATT_ID_MSG_SIZE 4
|
||||
#define NTF_ATT_ID_DATE 5
|
||||
#define NTF_ATT_ID_POSITIVE_ACT 6
|
||||
#define NTF_ATT_ID_NEGATIVE_ACT 7
|
||||
|
||||
show_reg(uint8_t *data, uint32_t len, uint8_t dbg_on)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
if (len == 0 || (dbg_on == 0))
|
||||
return;
|
||||
for (; i < len; i++)
|
||||
{
|
||||
printf("0x%02X ", data[i]);
|
||||
}
|
||||
printf("\r\n");
|
||||
}
|
||||
|
||||
void show_utf8_hex(uint8_t *data, uint32_t len, uint8_t dbg_on)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
if (len == 0 || (dbg_on == 0))
|
||||
return;
|
||||
for (; i < len; i++)
|
||||
{
|
||||
printf("%02X", data[i]);
|
||||
}
|
||||
printf("\r\n");
|
||||
}
|
||||
|
||||
void ancs_message_read(uint8_t *p_data, uint16_t len)
|
||||
{
|
||||
|
||||
#if 0
|
||||
uint16_t str_len = 0;
|
||||
uint16_t i = 0;
|
||||
uint16_t data_len = 0;
|
||||
uint8_t msg_type = 0;
|
||||
|
||||
uint8_t event_id = p_data[i++];
|
||||
uint8_t ntf_att_id;
|
||||
|
||||
uint8_t len_byte_h,len_byte_l;
|
||||
|
||||
//uint32_t uid = *(uint32_t *)(p_data + i);
|
||||
i+=4;
|
||||
printf("evt_id:%d,len:%d\r\n",event_id,len);
|
||||
while(i < len)
|
||||
{
|
||||
ntf_att_id = p_data[i];
|
||||
printf("ntf_att_id %d\r\n",ntf_att_id);
|
||||
i ++;
|
||||
switch(ntf_att_id)//p_data[i++])
|
||||
{
|
||||
case NTF_ATT_ID_APPLE:
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
i+=2;
|
||||
//show_reg(p_data + i,data_len,1);
|
||||
if( memcmp(p_data+i,"com.tencent.xin",strlen("com.tencent.xin"))==0 )
|
||||
msg_type = WEIXIN;
|
||||
else if( memcmp(p_data+i,"com.apple.MobileSMS",strlen("com.apple.MobileSMS"))==0 )
|
||||
msg_type = MOBILE_SMS;
|
||||
else if( memcmp(p_data+i,"com.apple.mobilephone",strlen("com.apple.mobilephone"))==0 )
|
||||
msg_type = MOBILE_PHONE;
|
||||
else if( memcmp(p_data+i,"com.tencent.mqq",strlen("com.tencent.mqq"))==0 )
|
||||
msg_type = QQ;
|
||||
else if( memcmp(p_data+i,"com.tencent.qq",strlen("com.tencent.qq"))==0 )
|
||||
msg_type = QQ;
|
||||
|
||||
ancs_msg->msg_type = msg_type;
|
||||
|
||||
printf("NTF_ATT_ID_APPLE,msg_type:%d,len:%d\r\n",msg_type,data_len);
|
||||
i+=data_len;
|
||||
break;
|
||||
case NTF_ATT_ID_TITLE: //UTF-8
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
ancs_msg->title_len = data_len;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
printf("NTF_ATT_ID_TITLE,len:%d\r\n",data_len);
|
||||
i+=2;
|
||||
memcpy(ancs_msg->msg_title,p_data + i,data_len);
|
||||
show_utf8_hex(p_data + i,data_len,1);
|
||||
i+=data_len;
|
||||
break;
|
||||
case NTF_ATT_ID_SUBTITLE: //UTF-8
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
printf("NTF_ATT_ID_SUBTITLE,len:%d\r\n",data_len);
|
||||
i+=2;
|
||||
show_utf8_hex(p_data + i,data_len,1);
|
||||
i+=data_len;
|
||||
break;
|
||||
case NTF_ATT_ID_MSG: //UTF-8
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
ancs_msg->context_len = data_len;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
printf("NTF_ATT_ID_MSG,len:%d\r\n",data_len);
|
||||
i+=2;
|
||||
memcpy(ancs_msg->msg_context,p_data + i,data_len);
|
||||
show_utf8_hex(p_data + i,data_len,1);
|
||||
|
||||
i+=data_len;
|
||||
break;
|
||||
case NTF_ATT_ID_MSG_SIZE: //ASCII
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
printf("NTF_ATT_ID_MSG_SIZE,len:%d\r\n",data_len);
|
||||
i+=2;
|
||||
show_reg(p_data + i,data_len,1);
|
||||
i+=data_len;
|
||||
break;
|
||||
case NTF_ATT_ID_DATE: //ASCII
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
ancs_msg->time_len = data_len;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
printf("NTF_ATT_ID_DATE,len:%d\r\n",data_len);
|
||||
i+=2;
|
||||
memcpy(ancs_msg->msg_time,p_data + i,data_len);
|
||||
show_reg(p_data + i,data_len,1);
|
||||
i+=data_len;
|
||||
break;
|
||||
case NTF_ATT_ID_POSITIVE_ACT: //UTF-8
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
printf("NTF_ATT_ID_POSITIVE_ACT,len:%d\r\n",data_len);
|
||||
i+=2;
|
||||
show_utf8_hex(p_data + i,data_len,1);
|
||||
i+=data_len;
|
||||
break;
|
||||
case NTF_ATT_ID_NEGATIVE_ACT: //UTF-8
|
||||
len_byte_l = * (p_data + i);
|
||||
len_byte_h = * (p_data + i + 1);
|
||||
data_len = (len_byte_h << 8) | len_byte_l;
|
||||
//data_len = *(uint16_t *)(p_data + i);
|
||||
printf("NTF_ATT_ID_NEGATIVE_ACT,len:%d\r\n",data_len);
|
||||
i+=2;
|
||||
show_utf8_hex(p_data + i,data_len,1);
|
||||
i+=data_len;
|
||||
break;
|
||||
default:
|
||||
printf("ERRR\r\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
memset(ancs_msg->msg_title, 0, 128);
|
||||
ancs_msg->title_len = p_data[16];
|
||||
memcpy(ancs_msg->msg_title,p_data+17,ancs_msg->title_len);
|
||||
|
||||
memset(ancs_msg->msg_context, 0, 256);
|
||||
ancs_msg->context_len = p_data[17+ancs_msg->title_len - 1];
|
||||
memcpy(ancs_msg->msg_context, p_data+17+ancs_msg->title_len, ancs_msg->context_len);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
void do_m3_ancs_msg_input(uint8_t *buffer, uint16_t length)
|
||||
{
|
||||
|
||||
ancs_msg->msg_type = buffer[0];
|
||||
switch (buffer[0])
|
||||
{
|
||||
case CATEGORY_WECHAT:
|
||||
WATCH_DEBUG("WEIXIN");
|
||||
ancs_message_read(buffer + 1, length - 1);
|
||||
break;
|
||||
|
||||
case CATEGORY_SMS:
|
||||
WATCH_DEBUG("MOBILE_SMS");
|
||||
ancs_message_read(buffer + 1, length - 1);
|
||||
break;
|
||||
|
||||
case CATEGORY_PHONE:
|
||||
WATCH_DEBUG("MOBILE_PHONE");
|
||||
ancs_message_read(buffer + 1, length - 1);
|
||||
break;
|
||||
|
||||
case CATEGORY_QQ:
|
||||
WATCH_DEBUG("QQ");
|
||||
ancs_message_read(buffer + 1, length - 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ipc_m3_msg_input(uint8_t *buffer, uint16_t length)
|
||||
{
|
||||
|
||||
uint8_t key_value;
|
||||
|
||||
//printf("freemomery :%d",xPortGetFreeHeapSize());
|
||||
switch (buffer[0])
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
|
||||
case M3_DRIVER_MESSAGE_INPUT:
|
||||
{
|
||||
lv_msg_t msg;
|
||||
msg.data = buffer;
|
||||
msg.data_len = length;
|
||||
lv_msg_post_event(&msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case M3_DRIVER_KEY_INPUT:
|
||||
//key input
|
||||
if(dsp_get_ui_scene_mode() != UI_APP_CHARGE)
|
||||
{
|
||||
key_value = buffer[1];
|
||||
key_code = key_value;
|
||||
// m3_log("key code: %d \n", key_value);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case M3_DRIVER_CTP_INPUT:
|
||||
next_tick = start_tick;
|
||||
start_tick = lv_tick_get();
|
||||
elaps = start_tick - next_tick;
|
||||
//printf("elaps = %d\r\n",elaps);
|
||||
|
||||
memcpy(&tp, buffer + 1, length - 1);
|
||||
//touch
|
||||
uint8_t input_key = tp.ctp_status & 0xfe;
|
||||
tp.ctp_status = tp.ctp_status & 0x01;
|
||||
if (tp.ctp_status)
|
||||
{
|
||||
if (!tp_timer.start_flag)
|
||||
{
|
||||
tp_timer.start_flag = 1;
|
||||
tp_timer.pen_timeout_counter = 0;
|
||||
//WATCH_DEBUG("first point, keypress:%d,x:%d,y:%d \r\n",tp.ctp_status,tp.cur_pos_x,tp.cur_pos_y);
|
||||
}
|
||||
else
|
||||
tp_timer.pen_timeout_counter = 0;
|
||||
|
||||
ctp_last_point++;
|
||||
if (ctp_last_point > 20)
|
||||
ctp_last_point = 20;
|
||||
point_FIFO.x = tp.cur_pos_x;
|
||||
point_FIFO.y = tp.cur_pos_y;
|
||||
}
|
||||
else
|
||||
{
|
||||
tp_timer.start_flag = 0;
|
||||
}
|
||||
|
||||
//WATCH_DEBUG("length:%d, keypress:%d,x:%d,y:%d \r\n",length -1,tp.ctp_status,tp.cur_pos_x,tp.cur_pos_y);
|
||||
break;
|
||||
|
||||
case M3_DRIVER_DAILY_DATA:
|
||||
{
|
||||
ipc_daily_data_t *p_data = (ipc_daily_data_t *)(buffer + 1);
|
||||
|
||||
if (p_data->panel_state > PANEL_STATE_OFF)
|
||||
{
|
||||
// WATCH_DEBUG("panel on . step %d\r\n",dsp_power_on_step);
|
||||
//power_on_ctrl_init_panel = 0;
|
||||
if (dsp_power_on_step == 0)
|
||||
dsp_power_on_step = 1;
|
||||
|
||||
if(!lcm_init_flag)
|
||||
{
|
||||
lcd_gc9c01_init();
|
||||
lcm_init_flag = true;
|
||||
}
|
||||
}
|
||||
else if (p_data->panel_state == PANEL_STATE_OFF)
|
||||
{
|
||||
//it will be to send ui state to cm3
|
||||
WATCH_DEBUG("panel sleep \r\n");
|
||||
lcm_enter_sleep();
|
||||
lcm_init_flag = false;
|
||||
}
|
||||
|
||||
if(coming_call_ok)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
memcpy(&sync_cm3_data, buffer + 1, length - 1);
|
||||
|
||||
//WATCH_DEBUG("y:%d,m:%d,d:%d \r\n", sync_cm3_data.time.ucYear, sync_cm3_data.time.ucMonth, sync_cm3_data.time.ucDate);
|
||||
//WATCH_DEBUG("h:%d,m:%d,s:%d \r\n", sync_cm3_data.time.ucHour, sync_cm3_data.time.ucMinute, sync_cm3_data.time.ucSecond);
|
||||
|
||||
if(get_sleep_data_flag == 0xa5)
|
||||
{
|
||||
get_sleep_data_flag = 0;
|
||||
printf("send sleep cmd\r\n");
|
||||
dsp_set_system_sleep_history_cmd();
|
||||
dsp_set_system_version();
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case M3_DRIVER_MESSAGE_INFO:
|
||||
|
||||
if(coming_call_ok)
|
||||
break;
|
||||
|
||||
if(buffer[1])
|
||||
{
|
||||
//all messaged
|
||||
memcpy(&msglist, buffer + 2, length -2);
|
||||
//show_reg(buffer + 2,length -2,1);
|
||||
msg_list_total = msglist.msg_tatol;
|
||||
}
|
||||
else
|
||||
{
|
||||
//one message
|
||||
memcpy(&msglist.fifo[0], buffer + 2, length -2);
|
||||
//show_reg(buffer + 2,length -2,1);
|
||||
|
||||
#if 0
|
||||
memset(ancs_msg->msg_title, 0, 128);
|
||||
ancs_msg->title_len = buffer[16+2];
|
||||
memcpy(ancs_msg->msg_title,buffer+17+2,ancs_msg->title_len);
|
||||
memset(ancs_msg->msg_context, 0, 256);
|
||||
ancs_msg->context_len = buffer[17+2+ancs_msg->title_len - 1];
|
||||
memcpy(ancs_msg->msg_context, buffer+17+2+ancs_msg->title_len, ancs_msg->context_len);
|
||||
#endif
|
||||
|
||||
lv_event_send(prj_parent_cont, LV_EVENT_ANCS_MSG_IN, NULL);
|
||||
}
|
||||
break;
|
||||
|
||||
case M3_DRIVER_CAllLIST_INFO:
|
||||
get_phone_book_flag = false;
|
||||
|
||||
if(buffer[1] == 1) //upload record list
|
||||
{
|
||||
memset(&record_list,0,sizeof(call_record_list_t));
|
||||
memcpy(&record_list, buffer + 2, length -2);
|
||||
}
|
||||
else if(buffer[1] == 3) //upload one record
|
||||
{
|
||||
memset(call_list,0,200);
|
||||
memcpy(call_list,buffer+2,length-2);
|
||||
}
|
||||
else if(buffer[1] == 2) //upload no find
|
||||
{
|
||||
memset(call_list,0,200);
|
||||
}
|
||||
else if(buffer[1] == 4) //phone book total
|
||||
{
|
||||
//phone_book_total = 3;//(uint32_t)(buffer + 2);
|
||||
//m3_log("phone_book_total : %d \n", phone_book_total);
|
||||
phone_book_total = (buffer[2] << 24) | (buffer[3] << 16) | (buffer[4] << 8) | buffer[5];
|
||||
m3_log("phone_book_total : %d \n", phone_book_total);
|
||||
//m3_log("v : %x,%x,%x,%x \n", buffer[2],buffer[3],buffer[4],buffer[5]);
|
||||
}
|
||||
else //upload one call info form phone book
|
||||
{
|
||||
memset(call_list,0,200);
|
||||
memcpy(call_list,buffer+2,length-2);
|
||||
phone_book_is_bank_flag = false;
|
||||
}
|
||||
|
||||
//show_reg(buffer + 2,length -2,1);
|
||||
//WATCH_DEBUG("M3_DRIVER_CAllLIST_INFO %d\r\n",call_list[0]);
|
||||
break;
|
||||
|
||||
case M3_DRIVER_OTA_STEP:
|
||||
OTA_STEP = buffer[1];
|
||||
break;
|
||||
|
||||
case M3_MUSIC_CONTROL:
|
||||
WATCH_DEBUG("M3_MUSIC_CONTROL \r\n");
|
||||
music_context = pvPortMalloc(length);
|
||||
if(music_context != NULL)
|
||||
{
|
||||
memcpy(music_context, buffer+2, length-2);
|
||||
music_context[length-2]= '\0';
|
||||
WATCH_DEBUG("M3_MUSIC_CONTROL 1\r\n");
|
||||
if(lv_obj_is_valid(obj_context))
|
||||
{
|
||||
WATCH_DEBUG("M3_MUSIC_CONTROL 2\r\n");
|
||||
lv_event_send(obj_context, LV_EVENT_MSUIC_CONTEXT_IN, NULL);
|
||||
}
|
||||
|
||||
vPortFree(music_context);
|
||||
}
|
||||
break;
|
||||
|
||||
case M3_DRIVER_UI_JUMP:
|
||||
{
|
||||
printf("M3_DRIVER_UI_JUMP\r\n");
|
||||
lv_msg_t msg;
|
||||
msg.data = buffer;
|
||||
msg.data_len = length;
|
||||
lv_msg_post_event(&msg);
|
||||
}
|
||||
break;
|
||||
case M3_DRIVER_HISTORY_DATA:
|
||||
|
||||
if(*(buffer + 1) == 0x01)
|
||||
{
|
||||
memcpy(heartrate_historydata, buffer + 2, length - 2);
|
||||
get_heartrate_data_success_flag = true;
|
||||
printf("heartrate length:%d\r\n",(length - 2));
|
||||
|
||||
}
|
||||
else if(*(buffer + 1) == 0x02)
|
||||
{
|
||||
//It's sleep data
|
||||
memcpy(&sleep_history_data, buffer + 2, length - 2);
|
||||
get_sleep_data_success_flag = true;
|
||||
//printf("sleep data,length:%d\r\n",(length - 2));
|
||||
|
||||
}
|
||||
else if(*(buffer + 1) == 0x03)
|
||||
{
|
||||
memcpy(sportheartrate_historydata, buffer + 2, length - 2);
|
||||
//printf("heartrate:%d\r\n",(length - 2));
|
||||
}
|
||||
else if(*(buffer + 1) == 0x04) //运动记录
|
||||
{
|
||||
get_all_sport_history_flag = false;
|
||||
// memcpy(sportheartrate_historydata, buffer + 2, length - 2);
|
||||
sport_history_p = buffer + 2;
|
||||
sport_history_len = length - 2;
|
||||
}
|
||||
break;
|
||||
case M3_DRIVER_SEND_DATA:
|
||||
{
|
||||
//m3_log("M3_DRIVER_SEND_DATA.cmd:%d\r\n",buffer[1]);
|
||||
switch (buffer[1])
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
lv_msg_t msg;
|
||||
msg.data = buffer;
|
||||
msg.data_len = length;
|
||||
lv_msg_post_event(&msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
uint32_t stopwatch_count = 0;
|
||||
stopwatch_count |= buffer[2] << (8 * 3);
|
||||
stopwatch_count |= buffer[3] << (8 * 2);
|
||||
stopwatch_count |= buffer[4] << (8 * 1);
|
||||
stopwatch_count |= buffer[5] << (8 * 0);
|
||||
printf("m3 stopwatch count = %d\n",stopwatch_count);
|
||||
stopwatch_tick_inc(stopwatch_count);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LV_ATTRIBUTE_LARGE_CONST const uint8_t week_char[7][5] =
|
||||
{
|
||||
"Sun","Mon","Tues","Wed","Thur","Fri","Sat",
|
||||
};
|
||||
|
||||
LV_ATTRIBUTE_LARGE_CONST const uint8_t battery_char[5][5] =
|
||||
{
|
||||
LV_SYMBOL_BATTERY_EMPTY,
|
||||
LV_SYMBOL_BATTERY_1,
|
||||
LV_SYMBOL_BATTERY_2,
|
||||
LV_SYMBOL_BATTERY_3,
|
||||
LV_SYMBOL_BATTERY_FULL,
|
||||
};
|
||||
|
||||
void topbar_status_bt_baterrry_time(lv_obj_t * bar_bat,lv_obj_t * bar_time)
|
||||
{
|
||||
uint8_t i = 50;//(lv_transform_battery(sync_cm3_data.battery.battery_value) +19) / 20;
|
||||
if(i > 0)
|
||||
{
|
||||
i -= 1;
|
||||
}
|
||||
|
||||
lv_obj_align(bar_bat,LV_ALIGN_TOP_LEFT,30,10);
|
||||
if(sync_cm3_data.ble_state)
|
||||
lv_label_set_text_fmt(bar_bat,LV_SYMBOL_BLUETOOTH" %s",battery_char[i]);
|
||||
else
|
||||
lv_label_set_text_fmt(bar_bat," %s",battery_char[i]);
|
||||
|
||||
|
||||
lv_obj_align(bar_time,LV_ALIGN_TOP_RIGHT,-40,10);
|
||||
lv_label_set_text_fmt(bar_time,"%d:%d",sync_cm3_data.time.ucHour,sync_cm3_data.time.ucMinute);
|
||||
}
|
||||
|
||||
|
||||
void dsp_printf_to_m3(const char * fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
char text[256];
|
||||
|
||||
memset(text, 0, sizeof(text));
|
||||
|
||||
text[0] = DSP_INTERNAL_EVENT;
|
||||
|
||||
memcpy(text+1, "[dsp]", 5);
|
||||
|
||||
va_start(ap, fmt);
|
||||
lv_vsnprintf(text+6, 249, fmt, ap);
|
||||
|
||||
strcat(text, "\n");
|
||||
|
||||
lv_msg_t msg;
|
||||
msg.data = text;
|
||||
msg.data_len = strlen(text)+1;
|
||||
lv_msg_post_event(&msg);
|
||||
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
|
||||
uint32_t CalcWeekday(time_rtc_t time)
|
||||
{
|
||||
|
||||
char century_code, year_code, month_code, day_code;
|
||||
int week = 0;
|
||||
century_code = year_code = month_code = day_code = 0;
|
||||
if (time.ucMonth == 1 || time.ucMonth == 2)
|
||||
{
|
||||
century_code = (time.ucYear - 1) / 100;
|
||||
year_code = (time.ucYear - 1) % 100;
|
||||
month_code = time.ucMonth + 12;
|
||||
day_code = time.ucDate;
|
||||
}
|
||||
else
|
||||
{
|
||||
century_code = time.ucYear / 100;
|
||||
year_code = time.ucYear % 100;
|
||||
month_code = time.ucMonth;
|
||||
day_code = time.ucDate;
|
||||
}
|
||||
|
||||
week = year_code + year_code / 4 + century_code / 4 - 2 * century_code + 26 * (month_code + 1) / 10 + day_code - 1;
|
||||
week = week > 0 ? (week % 7) : ((week % 7) + 7);
|
||||
return week;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void dsp_post_operate_to_m3(uint8_t op_cmd,uint8_t *buffer,uint16_t len)
|
||||
{
|
||||
|
||||
#ifdef FR508X_DSP_SDK
|
||||
uint8_t op_head[2];
|
||||
op_head[0] = 0;
|
||||
op_head[1] = op_cmd;
|
||||
ipc_msg_with_payload_send(IPC_MSG_M3_INPUT, op_head,2,buffer,len,NULL);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
647
MCU/examples/turnkey/lvgl_Dashboard_8080/Src/lv_frame/fr_watch.h
Normal file
647
MCU/examples/turnkey/lvgl_Dashboard_8080/Src/lv_frame/fr_watch.h
Normal file
@ -0,0 +1,647 @@
|
||||
|
||||
#ifndef __FR_WATCH_H__
|
||||
#define __FR_WATCH_H__
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "user_ipc_st.h"
|
||||
|
||||
#include "fr_ui_node.h"
|
||||
#include "fr_frame.h"
|
||||
#include "lv_msg_event.h"
|
||||
#include "lv_user_sqstack.h"
|
||||
|
||||
#define I16 signed short
|
||||
|
||||
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
M3_DRIVER_CALLING = 1,
|
||||
M3_DRIVER_CALLING_CANCE = 2,
|
||||
M3_DRIVER_CALLING_OK = 3,
|
||||
M3_DRIVER_CALLING_STATE = 4,
|
||||
|
||||
}phone_call_t;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
||||
M3_DRIVER_MESSAGE_INPUT = 7,
|
||||
M3_DRIVER_CTP_INPUT = 8,
|
||||
M3_DRIVER_KEY_INPUT = 9,
|
||||
M3_DRIVER_DAILY_DATA = 10,
|
||||
M3_DRIVER_MESSAGE_INFO = 11,
|
||||
M3_DRIVER_CAllLIST_INFO = 12,
|
||||
M3_MUSIC_CONTROL = 13,
|
||||
M3_DRIVER_OTA_STEP = 14,
|
||||
M3_DRIVER_UI_JUMP = 15,
|
||||
M3_DRIVER_UI_REMIND = 16,
|
||||
//new add
|
||||
M3_DRIVER_HISTORY_DATA = 17,
|
||||
M3_DRIVER_TEST_DATA = 18,
|
||||
#if ALIPAY_FUNC_ENABLE
|
||||
M3_DRIVER_UPAY_DATA= 19,
|
||||
#endif
|
||||
M3_DRIVER_SEND_DATA = 20,// 切换主表盘ID
|
||||
DSP_INTERNAL_EVENT = 21,
|
||||
|
||||
DSP_CALLOUT_EVENT = 22,
|
||||
}watch_ipc_msg_type_t;
|
||||
|
||||
|
||||
|
||||
//byte[0] 1开关心<E585B3>? byte[1]:0关闭心率 1开启心<E590AF>?
|
||||
//byte[0] 2开关血<E585B3>? byte[1]:0关闭血<E997AD>?1开启血<E590AF>?
|
||||
//byte[0] 3开关血<E585B3>? byte[1]:0关闭血<E997AD>?1开启血<E590AF>?
|
||||
//byte[0] 4马达震动 byte[1]:0关闭震动 1开启震<E590AF>? byte[2]:震动次数
|
||||
//byte[0] 5查找手机 byte[1]:1查找手机
|
||||
//byte[0] 6音乐播放暂停,根据AVRCP的状<E79A84>?get_avrcp_work_state();0:停止 1:开<>? 2:暂停
|
||||
//byte[0] 7音乐暂停<E69A82>?
|
||||
//byte[0] 8音乐停止
|
||||
//byte[0] 9上一<E4B88A>?
|
||||
//byte[0] 10下一<E4B88B>?
|
||||
//byte[0] 11音量++
|
||||
//byte[0] 12音量--
|
||||
//byte[0] 13拨号 byte[1......12]参数带拨号号<E58FB7>?长度+13714106071
|
||||
//byte[0] 14接听
|
||||
//byte[0] 15拒接
|
||||
//byte[0] 16重拨
|
||||
//byte[0] 17静音 目前功能无效续作优化
|
||||
//byte[0] 18关机
|
||||
//byte[0] 19复位
|
||||
//byte[0] 20重启
|
||||
//byte[0] 21开关抬腕亮<E88595>? byte[1]:0关闭抬腕亮屏 1开启抬腕亮<E88595>?
|
||||
//byte[0] 22设置亮屏时间 byte[1]:
|
||||
//byte[0] 23设置亮度调节 byte[1]:亮度等级
|
||||
//byte[0] 24语言设置 byte[1]:参看枚举类型定义
|
||||
//byte[0] 25闹钟开<E9929F>? byte[1]:
|
||||
//byte[0] 26: 秒表控制 byte[1]:1开<31>? 2暂停 0关闭
|
||||
//byte[0] 27: 运动模式控制 byte[1]:1开<31>?2暂停 0停止保存数据
|
||||
//byte[0] 28: 拍照
|
||||
//byte[0] 29: 开关背<E585B3>?
|
||||
//byte[0] 30: 是否延迟闹钟10分再次触<E6ACA1>?
|
||||
//byte[0] 31: 倒计<E58092>? byte[1]:1开<31>? 2暂停 0关闭
|
||||
//byte[0] 32: 同步byte[1]:1心率 byte[2]心率<E5BF83>? 同步byte[1]:2血压byte[2]低压byte[3]高压 同步byte[1]:3血氧byte[2]血氧<E8A180>?到APP
|
||||
//byte[0] 33: APP切换表盘
|
||||
//byte[0] 34: 语音助手
|
||||
//byte[0] 35: 主动开关音频蓝牙开<E78999>?,byte[1] 1:开启音频蓝<E9A291>? 0:关闭音频蓝<E9A291>?
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DSP_EVT_NULL = 0,
|
||||
DSP_EVT_HEART, // 1 byte[0] 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> byte[1]:0<>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DSP_EVT_BLOOD, // 2 byte[0] 2<><32><EFBFBD><EFBFBD>Ѫѹ byte[1]:0<>ر<EFBFBD>Ѫѹ 1<><31><EFBFBD><EFBFBD>Ѫѹ
|
||||
DSP_EVT_OXYGEN, // 3 byte[0] 3<><33><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA> byte[1]:0<>ر<EFBFBD>Ѫ<EFBFBD><D1AA> 1<><31><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA>
|
||||
DSP_EVT_MOTOR, // 4 byte[0] 4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD> byte[1]:0<>ر<EFBFBD><D8B1><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD> byte[2]:<3A><EFBFBD><F0B6AFB4><EFBFBD>
|
||||
DSP_EVT_FIND, // 5 byte[0] 5<><35><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD> byte[1]:1<><31><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>
|
||||
|
||||
#if 0
|
||||
DSP_EVT_MUSIC_PLAY, // 6 byte[0] 6<><36><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AVRCP<43><50>״̬ get_avrcp_work_state();0:ֹͣ 1:<3A><><EFBFBD><EFBFBD> 2:<3A><>ͣ
|
||||
DSP_EVT_MUSIC_PAUSE, // 7 byte[0] 7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>
|
||||
DSP_EVT_MUSIC_STOP, // 8 byte[0] 8<><38><EFBFBD><EFBFBD>ֹͣ
|
||||
DSP_EVT_MUSIC_FORWARD, // 9 byte[0] 9<><39>һ<EFBFBD><D2BB>
|
||||
DSP_EVT_MUSIC_BACKWARD, // 10 byte[0] 10<31><30>һ<EFBFBD><D2BB>
|
||||
DSP_EVT_MUSIC_VALUME_UP, // 11 byte[0] 11<31><31><EFBFBD><EFBFBD>++
|
||||
DSP_EVT_MUSIC_VALUME_DOWN,// 12 byte[0] 12<31><32><EFBFBD><EFBFBD>--
|
||||
|
||||
DSP_EVT_DIAL_NUM, //13 byte[0] 13<31><33><EFBFBD><EFBFBD> byte[1......12]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD> <20><><EFBFBD><EFBFBD>+13714106071
|
||||
DSP_EVT_CALL_ANSWER, //14 byte[0] 14<31><34><EFBFBD><EFBFBD>
|
||||
DSP_EVT_CALL_REJECT, //15 byte[0] 15<31>ܽ<EFBFBD>
|
||||
DSP_EVT_CALL_REDIAL, //16 byte[0] 16<31>ز<EFBFBD>
|
||||
DSP_EVT_CALL_MUTE, //17 byte[0] 17<31><37><EFBFBD><EFBFBD> Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>
|
||||
#endif
|
||||
|
||||
DSP_EVT_SYSTEM_SHUTDOWN, //18 byte[0] 18<31>ػ<EFBFBD>
|
||||
DSP_EVT_SYSTEM_RESET, //19 byte[0] 19<31><39>λ
|
||||
DSP_EVT_SYSTEM_REBOOT, //20 byte[0] 20<32><30><EFBFBD><EFBFBD>
|
||||
DSP_EVT_WIRST, //21 byte[0] 21<32><31><EFBFBD><EFBFBD>̧<EFBFBD><CCA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> byte[1]:0<>ر<EFBFBD>̧<EFBFBD><CCA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD>̧<EFBFBD><CCA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DSP_EVT_LIGHT_TIME, //22 byte[0] 22<32><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> byte[1]:
|
||||
DSP_EVT_BRIGHT, //23 byte[0] 23<32><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD> byte[1]:<3A><><EFBFBD>ȵȼ<C8B5>
|
||||
DSP_EVT_SYSTEM_LANGUAGE, //24 byte[0] 24<32><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> byte[1]:<3A>ο<EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
||||
DSP_EVT_ALARM, //25 byte[0] 25<32><35><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD> byte[1]:
|
||||
DSP_EVT_WATCHSTOP_TIME, //26 byte[0] 26: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? byte[1]:1<><31><EFBFBD><EFBFBD> 2<><32>ͣ 3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? 0<>ر<EFBFBD>
|
||||
DSP_EVT_SPORTS, //27 byte[0] 27: <20>˶<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD> byte[1]:1<><31>ʼ 2<><32>ͣ 0ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DSP_EVT_CAMERA, //28 byte[0] 28: <20><><EFBFBD><EFBFBD>
|
||||
DSP_EVT_SWATCH_BRIGHT, //29 byte[0] 29: <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
|
||||
DSP_EVT_ALARM_DELAY, //30 byte[0] 30: <20>Ƿ<EFBFBD><C7B7>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>10<31><30><EFBFBD>ٴδ<D9B4><CEB4><EFBFBD>
|
||||
DSP_EVT_TIMER_TIME, //31 byte[0] 31: <20><><EFBFBD><EFBFBD>ʱ byte[1]:1<><31><EFBFBD><EFBFBD> 2<><32>ͣ 0<>ر<EFBFBD>
|
||||
DSP_EVT_SYNC_HERAT_BLOOD_OXYGEN,//32 byte[0] 32: ͬ<><CDAC>byte[1]:1<><31><EFBFBD><EFBFBD> byte[2]<5D><><EFBFBD><EFBFBD>ֵ ͬ<><CDAC>byte[1]:2Ѫѹbyte[2]<5D><>ѹbyte[3]<5D><>ѹ ͬ<><CDAC>byte[1]:3Ѫ<33><D1AA>byte[2]Ѫ<><D1AA>ֵ <20><>APP
|
||||
DSP_EVT_SELECT_WATCH_INDEX,//33 byte[0] 33: <20>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
DSP_EVT_SYSTEM_SIRI, //34 byte[0] 34: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DSP_EVT_BT_SWATCH, //35 byte[0] 35: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>byte[1] 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD> 0<><30><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
//enzon
|
||||
DSP_EVT_LOAD_PHONE_BOOK,
|
||||
DSP_EVT_BT_A2DP_CONTROL,
|
||||
DSP_EVT_MUSIC_CONTROL,
|
||||
DSP_EVT_CALL_CONTROL,
|
||||
DSP_EVT_BT_VALUME_UP,
|
||||
DSP_EVT_BT_VALUME_DOWN,
|
||||
DSP_EVT_READ_MSG_LIST,
|
||||
DSP_EVT_READ_PHONE_BOOK_LIST,
|
||||
DSP_EVT_READ_CALL_NAME,
|
||||
DSP_EVT_DISTURB_CONTROL,
|
||||
DSP_EVT_SET_PHONE_BOOK_ID_OFFSET,
|
||||
DSP_EVT_SET_BT_VALUME,
|
||||
DSP_EVT_MIC_MUTE,
|
||||
DSP_EVT_MIC_OPEN,
|
||||
DSP_EVT_CLEAR_LIGHT_TIME,
|
||||
DSP_EVT_GET_HISTORY_DATA,
|
||||
DSP_EVT_GET_CALL_STATE,
|
||||
DSP_EVT_SET_CARD_INDEX, //自定义卡<E4B989>?
|
||||
DSP_EVT_LOW_POWER_MODE,
|
||||
DSP_EVT_DSP_VERSION,
|
||||
DSP_EVT_GET_TEST_DATA,
|
||||
DSP_EVT_BREATHE,
|
||||
|
||||
DSP_EVT_DATA_SEND_BLE,
|
||||
DSP_EVT_CAMERA_CONTROL,
|
||||
DSP_EVT_PRINTF,
|
||||
DSP_EVT_READ_PHONE_BOOK_TOTAL,
|
||||
DSP_EVT_TURN_ON_BACKLIGHT,
|
||||
|
||||
}_DSP_COMMADE_T;
|
||||
|
||||
|
||||
|
||||
#define MESSAGE_MAX_LENGTH 200
|
||||
#define MAX_MSG_CONTEXT_LEN MESSAGE_MAX_LENGTH - 17
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t msg_type;
|
||||
uint8_t data_len;
|
||||
uint8_t msg_time[15];
|
||||
//1 byte(title len) + n byte(title) + 1 byte (context leng)+ n byte(context)
|
||||
uint8_t msg_context[MAX_MSG_CONTEXT_LEN];
|
||||
|
||||
} info_msg_t;
|
||||
|
||||
|
||||
#define MAX_MSG_LIST 5
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t msg_tatol;
|
||||
uint8_t fifo_head;
|
||||
uint8_t fifo_tail;
|
||||
info_msg_t fifo[MAX_MSG_LIST];
|
||||
} ancs_msg_t;
|
||||
|
||||
|
||||
//ancs
|
||||
typedef struct
|
||||
{
|
||||
uint8_t msg_type;
|
||||
uint16_t title_len;
|
||||
uint8_t msg_title[128];
|
||||
uint16_t context_len;
|
||||
uint8_t msg_context[512];
|
||||
uint16_t time_len;
|
||||
uint8_t msg_time[32];
|
||||
}ancs_t;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t story_state;
|
||||
uint8_t number_len;
|
||||
uint8_t call_namber[32];
|
||||
uint8_t name_len;
|
||||
uint8_t call_name[128];
|
||||
uint8_t time_len;
|
||||
uint8_t msg_time[32];
|
||||
}call_info_t;
|
||||
|
||||
|
||||
#define CALL_NUMBER_MAX_LEN 96
|
||||
#define CALL_RECORD_LIST_MAX 10
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t call_state;
|
||||
uint8_t call_context[CALL_NUMBER_MAX_LEN - 1];
|
||||
|
||||
} card_record_t;
|
||||
|
||||
|
||||
#define MAX_MSG_LIST 5
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t call_record_total;
|
||||
card_record_t fifo[CALL_RECORD_LIST_MAX];
|
||||
} call_record_list_t;
|
||||
|
||||
|
||||
|
||||
|
||||
//tp define here!
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CTP_PEN_DOWN,
|
||||
CTP_PEN_UP,
|
||||
CTP_PEN_MOVE,
|
||||
CTP_PEN_MOVE_DOWN,
|
||||
CTP_PEN_MOVE_UP,
|
||||
CTP_PEN_MOVE_LEFT,
|
||||
CTP_PEN_MOVE_RIGHT,
|
||||
CTP_PEN_LONG_PRESS,
|
||||
}ctp_status_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
uint8_t status;
|
||||
uint8_t ctp_status;
|
||||
signed short pendown_pos_x;
|
||||
signed short pendown_pos_y;
|
||||
signed short cur_pos_x;
|
||||
signed short cur_pos_y;
|
||||
signed short dx;
|
||||
signed short dy;
|
||||
|
||||
}ctp_type_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TP_MSG_INPUT,
|
||||
APP_MSG_INPUT,
|
||||
|
||||
}watch_msg_id_t;
|
||||
|
||||
|
||||
//massage
|
||||
typedef struct
|
||||
{
|
||||
int msg_id;
|
||||
int param1;
|
||||
void *param2;
|
||||
}app_msg_t;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
//bool start_flag;
|
||||
uint8_t start_flag;
|
||||
uint32_t counter;
|
||||
uint32_t pen_timeout_counter;
|
||||
uint32_t delaycounter;
|
||||
|
||||
}ctp_timer_t;
|
||||
|
||||
|
||||
|
||||
//win coordinate
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
uint8_t col;
|
||||
uint8_t rol;
|
||||
|
||||
}win_pos_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t EnterSleepTime;
|
||||
uint32_t ExitSleepTime;
|
||||
uint16_t SleepData[31];
|
||||
}sleep_history_stru;
|
||||
|
||||
|
||||
//----------------------------clock-ui---------------------------------
|
||||
typedef void (* p_main_clock)(lv_obj_t * obj);
|
||||
|
||||
|
||||
typedef lv_obj_t * (*p_lv_obj_create)(lv_obj_t * parent);
|
||||
typedef void (* p_lv_obj_clean)(lv_obj_t * obj);
|
||||
|
||||
//style
|
||||
typedef void (* p_lv_obj_set_style_bg_color)(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
|
||||
typedef void (* p_lv_obj_set_style_pad_all)(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||
typedef void (* p_lv_obj_set_style_radius)(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||
typedef void (* p_lv_obj_set_style_border_width)(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||
|
||||
|
||||
|
||||
//obj prop
|
||||
typedef void (* p_lv_obj_set_size)(lv_obj_t * obj, lv_coord_t w, lv_coord_t h);
|
||||
typedef void (* p_lv_obj_align)(lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs);
|
||||
typedef void (* p_lv_obj_align_to)(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs);
|
||||
typedef void (* p_lv_obj_set_pos)(lv_obj_t * obj, lv_coord_t x, lv_coord_t y);
|
||||
typedef void (* p_lv_obj_set_scrollbar_mode)(lv_obj_t * obj, lv_scrollbar_mode_t mode);
|
||||
|
||||
//img
|
||||
typedef lv_obj_t * (*p_lv_img_create)(lv_obj_t * parent);
|
||||
typedef void (* p_lv_img_set_src)(lv_obj_t * obj, const void * src);
|
||||
typedef void (* p_lv_img_set_pivot)(lv_obj_t * obj, lv_coord_t x, lv_coord_t y);
|
||||
typedef void (* p_lv_img_set_angle)(lv_obj_t * obj, int16_t angle);
|
||||
|
||||
//timer
|
||||
typedef lv_timer_t * (* p_lv_timer_create)(lv_timer_cb_t timer_xcb, uint32_t period, void * user_data);
|
||||
typedef void (* p_lv_timer_del)(lv_timer_t * timer);
|
||||
|
||||
|
||||
//event
|
||||
typedef struct _lv_event_dsc_t * (* p_lv_obj_add_event_cb)(lv_obj_t * obj, lv_event_cb_t event_cb, lv_event_code_t filter, void * user_data);
|
||||
typedef lv_res_t (* p_lv_event_send)(lv_obj_t * obj, lv_event_code_t event_code, void * param);
|
||||
typedef lv_event_code_t (* p_lv_event_get_code)(lv_event_t * e);
|
||||
typedef lv_obj_t * (* p_lv_event_get_target)(lv_event_t * e);
|
||||
typedef void * (* p_lv_event_get_param)(lv_event_t * e);
|
||||
typedef void * (* p_lv_event_get_user_data)(lv_event_t * e);
|
||||
|
||||
//parent and child
|
||||
typedef uint32_t (* p_lv_obj_get_child_id)(const lv_obj_t * obj);
|
||||
typedef lv_obj_t * (* p_lv_obj_get_parent)(const lv_obj_t * obj);
|
||||
typedef lv_obj_t * (* p_lv_obj_get_child)(const lv_obj_t * obj, int32_t id);
|
||||
|
||||
//label
|
||||
typedef lv_obj_t * (* p_lv_label_create)(lv_obj_t * parent);
|
||||
typedef void (* p_lv_label_set_text)(lv_obj_t * obj, const char * text);
|
||||
typedef void (* p_lv_obj_set_style_text_font)(lv_obj_t * obj, const lv_font_t * value, lv_style_selector_t selector);
|
||||
|
||||
|
||||
|
||||
typedef void (* p_lv_mainUI_select_entry)(lv_obj_t * obj);
|
||||
|
||||
//line & arc
|
||||
typedef void (* p_lv_style_init)(lv_style_t * style);
|
||||
typedef void (* p_lv_style_set_line_width)(lv_style_t * style, lv_coord_t value);
|
||||
typedef void (* p_lv_style_set_line_color)(lv_style_t * style, lv_color_t value);
|
||||
typedef void (* p_lv_style_set_line_rounded)(lv_style_t * style, bool value);
|
||||
typedef lv_obj_t * (* p_lv_line_create)(lv_obj_t * parent);
|
||||
typedef void (* p_lv_line_set_points)(lv_obj_t * obj, const lv_point_t points[], uint16_t point_num);
|
||||
typedef void (* p_lv_obj_add_style)(lv_obj_t * obj, lv_style_t * style, lv_style_selector_t selector);
|
||||
typedef lv_obj_t * (* p_lv_arc_create)(lv_obj_t * parent);
|
||||
typedef void (* p_lv_obj_set_style_arc_width)(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||
typedef void (* p_lv_obj_set_style_arc_color)(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
|
||||
typedef void (* p_lv_arc_set_end_angle)(lv_obj_t * obj, uint16_t end);
|
||||
typedef void (* p_lv_arc_set_bg_angles)(lv_obj_t * obj, uint16_t start, uint16_t end);
|
||||
|
||||
|
||||
typedef int16_t (* p_lv_trigo_sin)(int16_t angle);
|
||||
typedef int16_t (* p_lv_trigo_cos)(int16_t angle);
|
||||
|
||||
typedef void (* p_lv_label_set_text_fmt)(lv_obj_t * obj, const char * fmt, ...);
|
||||
|
||||
typedef bool (* p_lv_font_get_glyph_dsc_fmt_txt)(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter,uint32_t unicode_letter_next);
|
||||
|
||||
typedef const uint8_t * (* p_lv_font_get_bitmap_fmt_txt)(const lv_font_t * font, uint32_t unicode_letter);
|
||||
|
||||
typedef uint32_t (* p_lv_tick_get)(void);
|
||||
|
||||
typedef bool (* p_lv_obj_is_valid)(const lv_obj_t * obj);
|
||||
typedef uint8_t (* p_fr_system_get_time_week)(void);
|
||||
|
||||
typedef void (* p_lv_obj_set_style_text_color)(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
|
||||
|
||||
//new
|
||||
typedef void (* p_lv_obj_remove_style)(struct _lv_obj_t * obj, lv_style_t * style, lv_style_selector_t selector);
|
||||
typedef void (* p_lv_arc_set_angles)(lv_obj_t * arc, uint16_t start, uint16_t end);
|
||||
typedef void (* p_lv_obj_clear_flag)(lv_obj_t * obj, lv_obj_flag_t f);
|
||||
typedef void (* p_lv_label_set_recolor)(lv_obj_t * obj, bool en);
|
||||
typedef void (* p_lv_obj_set_style_text_letter_space)(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||
typedef void (* p_lv_obj_set_style_text_line_space)(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||
|
||||
typedef void (* p_lv_obj_set_width)(lv_obj_t * obj, lv_coord_t w);
|
||||
typedef void (* p_lv_obj_set_style_text_align)(struct _lv_obj_t * obj, lv_text_align_t value, lv_style_selector_t selector);
|
||||
typedef struct _lv_api_t
|
||||
{
|
||||
|
||||
|
||||
p_lv_obj_create f_lv_obj_create;
|
||||
p_lv_obj_clean f_lv_obj_clean;
|
||||
|
||||
//style
|
||||
p_lv_obj_set_style_bg_color f_lv_obj_set_style_bg_color;
|
||||
p_lv_obj_set_style_pad_all f_lv_obj_set_style_pad_all;
|
||||
p_lv_obj_set_style_radius f_lv_obj_set_style_radius;
|
||||
p_lv_obj_set_style_border_width f_lv_obj_set_style_border_width;
|
||||
|
||||
//obj prop
|
||||
p_lv_obj_align f_lv_obj_align;
|
||||
p_lv_obj_set_size f_lv_obj_set_size;
|
||||
p_lv_obj_align_to f_lv_obj_align_to;
|
||||
p_lv_obj_set_pos f_lv_obj_set_pos;
|
||||
p_lv_obj_set_scrollbar_mode f_lv_obj_set_scrollbar_mode;
|
||||
|
||||
//img
|
||||
p_lv_img_create f_lv_img_create;
|
||||
p_lv_img_set_src f_lv_img_set_src;
|
||||
p_lv_img_set_pivot f_lv_img_set_pivot;
|
||||
p_lv_img_set_angle f_lv_img_set_angle;
|
||||
|
||||
//timer
|
||||
p_lv_timer_create f_lv_timer_create;
|
||||
p_lv_timer_del f_lv_timer_del;
|
||||
|
||||
//event
|
||||
p_lv_event_send f_lv_event_send;
|
||||
p_lv_obj_add_event_cb f_lv_obj_add_event_cb;
|
||||
p_lv_event_get_code f_lv_event_get_code;
|
||||
p_lv_event_get_target f_lv_event_get_target;
|
||||
p_lv_event_get_param f_lv_event_get_param;
|
||||
p_lv_event_get_user_data f_lv_event_get_user_data;
|
||||
|
||||
//parent and child
|
||||
p_lv_obj_get_child_id f_lv_obj_get_child_id;
|
||||
p_lv_obj_get_parent f_lv_obj_get_parent;
|
||||
p_lv_obj_get_child f_lv_obj_get_child;
|
||||
|
||||
//label
|
||||
p_lv_label_create f_lv_label_create;
|
||||
p_lv_label_set_text f_lv_label_set_text;
|
||||
p_lv_obj_set_style_text_font f_lv_obj_set_style_text_font;
|
||||
|
||||
|
||||
//other
|
||||
p_lv_mainUI_select_entry f_lv_mainUI_select_entry;
|
||||
|
||||
lv_obj_t ** prj_parent;
|
||||
|
||||
ipc_daily_data_t *p_sync_cm3;
|
||||
|
||||
|
||||
|
||||
p_lv_style_init f_lv_style_init;
|
||||
p_lv_style_set_line_width f_lv_style_set_line_width;
|
||||
p_lv_style_set_line_color f_lv_style_set_line_color;
|
||||
p_lv_style_set_line_rounded f_lv_style_set_line_rounded;
|
||||
p_lv_line_create f_lv_line_create;
|
||||
p_lv_line_set_points f_lv_line_set_points;
|
||||
p_lv_obj_add_style f_lv_obj_add_style;
|
||||
p_lv_arc_create f_lv_arc_create;
|
||||
p_lv_obj_set_style_arc_width f_lv_obj_set_style_arc_width;
|
||||
p_lv_obj_set_style_arc_color f_lv_obj_set_style_arc_color;
|
||||
p_lv_arc_set_end_angle f_lv_arc_set_end_angle;
|
||||
p_lv_arc_set_bg_angles f_lv_arc_set_bg_angles;
|
||||
|
||||
|
||||
p_lv_trigo_sin f_lv_trigo_sin;
|
||||
p_lv_trigo_cos f_lv_trigo_cos;
|
||||
|
||||
|
||||
p_lv_label_set_text_fmt f_lv_label_set_text_fmt;
|
||||
|
||||
lv_font_t * font_min;
|
||||
lv_font_t * font_mid;
|
||||
lv_font_t * font_max;
|
||||
|
||||
p_lv_font_get_glyph_dsc_fmt_txt f_lv_font_get_glyph_dsc_fmt_txt;
|
||||
p_lv_font_get_bitmap_fmt_txt f_lv_font_get_bitmap_fmt_txt;
|
||||
|
||||
p_lv_tick_get f_lv_tick_get;
|
||||
p_lv_obj_is_valid f_lv_obj_is_valid;
|
||||
|
||||
p_fr_system_get_time_week f_fr_system_get_time_week;
|
||||
|
||||
p_lv_obj_set_style_text_color f_lv_obj_set_style_text_color;
|
||||
// new
|
||||
p_lv_obj_remove_style f_lv_obj_remove_style;
|
||||
p_lv_arc_set_angles f_lv_arc_set_angles;
|
||||
p_lv_obj_clear_flag f_lv_obj_clear_flag;
|
||||
p_lv_label_set_recolor f_lv_label_set_recolor;
|
||||
p_lv_obj_set_style_text_letter_space f_lv_obj_set_style_text_letter_space;
|
||||
p_lv_obj_set_style_text_line_space f_lv_obj_set_style_text_line_space;
|
||||
|
||||
p_lv_obj_set_width f_lv_obj_set_width;
|
||||
p_lv_obj_set_style_text_align f_lv_obj_set_style_text_align;
|
||||
}lv_api_t;
|
||||
|
||||
|
||||
typedef struct _main_program_env{
|
||||
uint32_t version;
|
||||
|
||||
struct {
|
||||
void *(*__malloc)(uint32_t size);
|
||||
void (*__free)(void *ptr);
|
||||
} mem_api;
|
||||
|
||||
struct {
|
||||
int (*__printf)(const char* format, ...);
|
||||
} debug_api;
|
||||
|
||||
void * img_addr;
|
||||
lv_obj_t * parent;
|
||||
void * arg;
|
||||
|
||||
lv_api_t * lv_api;
|
||||
}main_program_env_t;
|
||||
|
||||
//----------------------------------------------------------------
|
||||
typedef int (* app_entry)(main_program_env_t * arg);
|
||||
|
||||
|
||||
typedef void (* ui_entry)(lv_obj_t *obj, lv_point_t *top);
|
||||
|
||||
|
||||
//#define PRI_UI_GROUP_NUM 20
|
||||
|
||||
typedef struct _lv_ui_group_t
|
||||
{
|
||||
lv_coord_t ui_num;
|
||||
ui_entry * lay_ui;
|
||||
}lv_ui_group_t;
|
||||
|
||||
|
||||
// ui page stack
|
||||
typedef struct
|
||||
{
|
||||
uint16_t mode_id : 4;
|
||||
uint16_t page_id : 12;
|
||||
uint16_t page_attr;
|
||||
int16_t top_cur_x;
|
||||
int16_t top_cur_y;
|
||||
}ui_scene_t;
|
||||
|
||||
|
||||
#define PG_STACK_LEN 10
|
||||
typedef struct
|
||||
{
|
||||
ui_scene_t ui[PG_STACK_LEN];
|
||||
int s_top;
|
||||
}pg_stack_t;
|
||||
|
||||
|
||||
extern lv_api_t ui_api;
|
||||
extern p_main_clock * entry_main;
|
||||
extern p_main_clock * entry_main1;
|
||||
extern p_main_clock * entry_main2;
|
||||
extern p_main_clock * entry_main3;
|
||||
extern p_main_clock * entry_main4;
|
||||
|
||||
|
||||
extern const lv_font_t arialuni_20;
|
||||
extern lv_font_t bin_font;
|
||||
extern void **font_addr;
|
||||
extern void lv_init_bin_font(lv_font_t * font,const void * dsc,const lv_font_t * scr);
|
||||
extern lv_point_t sys_scroll_sum;
|
||||
|
||||
|
||||
//varable
|
||||
extern ctp_type_t tp;
|
||||
extern uint8_t key_code;
|
||||
extern ipc_daily_data_t sync_cm3_data;
|
||||
//extern ipc_daily_data_t volatile sync_cm3_data;
|
||||
extern sleep_history_stru sleep_history_data;
|
||||
extern uint8_t sportheartrate_historydata[72];
|
||||
extern uint8_t heartrate_historydata[];
|
||||
|
||||
extern lv_obj_t * prj_parent_cont;
|
||||
extern lv_obj_t * prj_prev_cont;
|
||||
extern lv_indev_t * indev_keypad;
|
||||
extern ui_func pri_ui_group[];
|
||||
extern uint8_t dsp_ipc_cmd;
|
||||
extern lv_group_t *prj_group;
|
||||
extern lv_obj_t *group_tail_obj;
|
||||
|
||||
extern uint8_t lv_transform_battery(uint16_t battery_value);
|
||||
|
||||
//system & timer & driver
|
||||
extern void lvgl_main_task_timer_callback(void *arg);
|
||||
|
||||
|
||||
//ui
|
||||
extern void lv_guimain(lv_obj_t * obj);
|
||||
extern void ui_main_float(lv_obj_t * parent);
|
||||
extern void layer_main_cont(lv_obj_t * parent, ui_entry f_parent, ui_entry f_cont, ui_entry f_cont1);
|
||||
extern void layer_left_cont(lv_obj_t * parent, ui_entry f_cont, ui_entry f_cont1);
|
||||
extern void return_function(lv_obj_t * parent);
|
||||
|
||||
|
||||
extern uint32_t CalcWeekday(time_rtc_t time);
|
||||
extern void topbar_status_bt_baterrry_time(lv_obj_t * bar_bat,lv_obj_t * bar_time);
|
||||
|
||||
extern void dsp_post_operate_to_m3(uint8_t op_cmd,uint8_t *buffer,uint16_t len);
|
||||
|
||||
extern ancs_msg_t msglist;
|
||||
extern uint8_t msg_list_total;
|
||||
extern call_record_list_t record_list;
|
||||
extern uint8_t call_context[];
|
||||
extern uint8_t call_list[];
|
||||
extern uint8_t book_list[10][200];
|
||||
|
||||
extern uint32_t phone_book_total;
|
||||
|
||||
|
||||
#define m3_log //dsp_printf_to_m3
|
||||
|
||||
|
||||
|
||||
#endif // __MAIN_H__
|
||||
|
@ -0,0 +1,73 @@
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#include "fr_watch.h"
|
||||
#include "lvgl.h"
|
||||
|
||||
|
||||
#ifdef FR508X_DSP_SDK
|
||||
|
||||
lv_msg_t * lv_msg_list = NULL;
|
||||
|
||||
|
||||
void lv_msg_callback(uint8_t *buffer, uint16_t length)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void lv_msg_post_event(lv_msg_t *p_msg)
|
||||
{
|
||||
lv_msg_t *curr;
|
||||
lv_msg_t *msg = pvPortMalloc(sizeof(lv_msg_t));
|
||||
if(msg != NULL)
|
||||
{
|
||||
memcpy(msg,p_msg,sizeof(lv_msg_t));
|
||||
msg->data = pvPortMalloc(p_msg->data_len);
|
||||
if(msg->data != NULL)
|
||||
{
|
||||
memcpy(msg->data,p_msg->data,p_msg->data_len);
|
||||
msg->func = lv_msg_callback;
|
||||
GLOBAL_INT_DISABLE();
|
||||
msg->next = NULL;
|
||||
if(lv_msg_list == NULL)
|
||||
{
|
||||
lv_msg_list = msg;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (curr = lv_msg_list;
|
||||
curr->next;
|
||||
curr = curr->next)
|
||||
{
|
||||
}
|
||||
curr->next = msg;
|
||||
}
|
||||
GLOBAL_INT_RESTORE();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void lv_msg_do_event(void)
|
||||
{
|
||||
lv_msg_t *curr;
|
||||
|
||||
if(lv_msg_list != NULL)
|
||||
{
|
||||
GLOBAL_INT_DISABLE();
|
||||
curr = lv_msg_list;
|
||||
lv_msg_list = curr->next;
|
||||
GLOBAL_INT_RESTORE();
|
||||
curr->func(curr->data,curr->data_len);
|
||||
vPortFree(curr->data);
|
||||
vPortFree(curr);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -0,0 +1,22 @@
|
||||
#ifndef LV_MSG_EVENT_H__
|
||||
#define LV_MSG_EVENT_H__
|
||||
|
||||
|
||||
typedef uint8_t (* lv_msg_callback_t)(uint8_t *arg, uint16_t len);
|
||||
|
||||
typedef struct lv_msg
|
||||
{
|
||||
struct lv_msg * next;
|
||||
lv_msg_callback_t func;
|
||||
uint16_t id;
|
||||
uint16_t data_len;
|
||||
uint8_t * data;
|
||||
}lv_msg_t;
|
||||
|
||||
|
||||
void ancs_message_read(uint8_t *p_data, uint16_t len);
|
||||
void lv_msg_post_event(lv_msg_t *p_msg);
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -0,0 +1,164 @@
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "img_def.h"
|
||||
#include "lv_common_function.h"
|
||||
#include "lv_user_sqlist.h"
|
||||
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 删除第index个元素
|
||||
* @param {SqlistType_t} *list
|
||||
* @param {uint8_t} index
|
||||
* @return {*}
|
||||
*/
|
||||
StatusType lv_user_list_delete(SqlistType_t *list,uint8_t index)
|
||||
{
|
||||
|
||||
uint8_t length = list->length;
|
||||
if((index < 0) || (index > length))
|
||||
return OVERFLOW;
|
||||
//-----------------------------------
|
||||
ElemType_t *delete_ptr = &list->data[index];
|
||||
//尾元素地址+1
|
||||
ElemType_t *p = &list->data[length];
|
||||
for(;delete_ptr < p;delete_ptr++)
|
||||
{
|
||||
*delete_ptr = *(delete_ptr+1);
|
||||
}
|
||||
list->length --;
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 在第index个元素之前插入新元素
|
||||
* @param {SqlistType_t} *list
|
||||
* @param {uint8_t} index
|
||||
* @param {ElemType_t} e
|
||||
* @return {*}
|
||||
*/
|
||||
StatusType lv_user_list_insert(SqlistType_t *list,uint8_t index,ElemType_t e)
|
||||
{
|
||||
uint8_t length = list->length;
|
||||
if((index < 0) || (index > length))
|
||||
return OVERFLOW;
|
||||
//-----------------------------------
|
||||
ElemType_t *insert_ptr = &(list->data[index]);
|
||||
//尾元素地址+1
|
||||
ElemType_t *ptr = &(list->data[length]);
|
||||
for(;insert_ptr < ptr;--ptr)
|
||||
{
|
||||
*ptr = *(ptr-1);
|
||||
}
|
||||
*insert_ptr = e;
|
||||
list->length ++;
|
||||
return SUCCESS;
|
||||
}
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 替换第i元素
|
||||
* @param {SqlistType_t} *list
|
||||
* @param {uint8_t} index
|
||||
* @param {ElemType_t} e
|
||||
* @return {*}
|
||||
*/
|
||||
StatusType lv_user_list_replace(SqlistType_t *list,uint8_t index,ElemType_t e)
|
||||
{
|
||||
uint8_t length = list->length;
|
||||
if((index < 0) || (index > length))
|
||||
return OVERFLOW;
|
||||
list->data[index] = e;
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 根据元素获取id
|
||||
* @param {ElemType_t} e
|
||||
* @return {*} note:0xff->fail
|
||||
*/
|
||||
uint8_t lv_user_list_get_elem_id(SqlistType_t *list,ElemType_t e)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
ElemType_t *p = list->data;
|
||||
uint8_t length = list->length;
|
||||
while ((i < length) && (*p++ != e))
|
||||
{
|
||||
++i;
|
||||
}
|
||||
if(i < length)
|
||||
return i;
|
||||
else
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 获取sqlist长度
|
||||
* @param {SqlistType_t} *list
|
||||
* @return {*}
|
||||
*/
|
||||
uint8_t lv_user_list_get_sqlist_length(SqlistType_t *list)
|
||||
{
|
||||
return list->length;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 获取第index个元素的上一元素
|
||||
* @param {SqlistType_t} *list
|
||||
* @param {uint8_t} index
|
||||
* @return {*}
|
||||
*/
|
||||
ElemType_t lv_user_list_get_prev_elem(SqlistType_t *list,uint8_t index)
|
||||
{
|
||||
uint8_t length = list->length;
|
||||
if(index == 0)
|
||||
index = length-1;
|
||||
else
|
||||
index --;
|
||||
return list->data[index];
|
||||
}
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 获取第index个元素的下一元素
|
||||
* @param {SqlistType_t} *list
|
||||
* @param {uint8_t} index
|
||||
* @return {*}
|
||||
*/
|
||||
ElemType_t lv_user_list_get_next_elem(SqlistType_t *list,uint8_t index)
|
||||
{
|
||||
uint8_t length = list->length;
|
||||
index ++;
|
||||
index %= length;
|
||||
return list->data[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 获取第index个元素
|
||||
* @param {SqlistType_t} *list
|
||||
* @param {uint8_t} index
|
||||
* @return {*}
|
||||
*/
|
||||
ElemType_t lv_user_list_get_cur_elem(SqlistType_t *list,uint8_t index)
|
||||
{
|
||||
return list->data[index];
|
||||
}
|
||||
/**
|
||||
* @Function:
|
||||
* @Descripttion: 遍历整个list元素
|
||||
* @param {SqlistType_t} *list
|
||||
* @return {*}
|
||||
*/
|
||||
void ListTraverse(SqlistType_t *list)
|
||||
{
|
||||
uint8_t length = list->length;
|
||||
printf("length:%d,sqlist all data:\r\n",length);
|
||||
for (uint8_t i = 0; i < length; i++)
|
||||
{
|
||||
printf("0x%x,",list->data[i]);
|
||||
}
|
||||
printf("\r\n");
|
||||
}
|
||||
|
@ -0,0 +1,30 @@
|
||||
|
||||
#ifndef __LV_USER_SQLIST_H__
|
||||
#define __LV_USER_SQLIST_H__
|
||||
|
||||
typedef uint8_t ElemType_t;
|
||||
typedef struct
|
||||
{
|
||||
ElemType_t *data;
|
||||
uint8_t length;
|
||||
}SqlistType_t;
|
||||
|
||||
//0:success,>=1:fail
|
||||
typedef uint8_t StatusType;
|
||||
|
||||
//最大支持的长度
|
||||
#define SQLIST_MAX_LENGTH 15
|
||||
//状态
|
||||
#define SUCCESS 0
|
||||
#define OVERFLOW 1 //上下标溢出
|
||||
//--------------------------------------------------------
|
||||
StatusType lv_user_list_delete(SqlistType_t *list,uint8_t index);
|
||||
StatusType lv_user_list_insert(SqlistType_t *list,uint8_t index,ElemType_t e);
|
||||
StatusType lv_user_list_replace(SqlistType_t *list,uint8_t index,ElemType_t e);
|
||||
uint8_t lv_user_list_get_elem_id(SqlistType_t *list,ElemType_t e);
|
||||
ElemType_t lv_user_list_get_prev_elem(SqlistType_t *list,uint8_t index);
|
||||
ElemType_t lv_user_list_get_next_elem(SqlistType_t *list,uint8_t index);
|
||||
ElemType_t lv_user_list_get_cur_elem(SqlistType_t *list,uint8_t index);
|
||||
uint8_t lv_user_list_get_sqlist_length(SqlistType_t *list);
|
||||
void ListTraverse(SqlistType_t *list);
|
||||
#endif
|
@ -0,0 +1,45 @@
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "img_def.h"
|
||||
#include "lv_common_function.h"
|
||||
|
||||
|
||||
void lv_user_sqstatck_init(SeqStack *SS)
|
||||
{
|
||||
SS->topidx = 0;
|
||||
}
|
||||
|
||||
|
||||
uint8_t lv_user_get_sqstatck_top(SeqStack *SS,uint8_t *top)
|
||||
{
|
||||
if(SS->topidx == 0)
|
||||
return 0;
|
||||
// --SS->topidx;
|
||||
*top = SS->Data[SS->topidx-1];
|
||||
// SS->Data[SS->topidx] = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
//error:0,success:1;
|
||||
uint8_t lv_user_sqstatck_push(SeqStack *SS,uint8_t elem)
|
||||
{
|
||||
if(SS->topidx >= (SQ_STACK_MAXSIZE-1))
|
||||
return 0;
|
||||
|
||||
SS->Data[SS->topidx++] = elem;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
//error:0,success:1;
|
||||
uint8_t lv_user_sqstatck_pop(SeqStack *SS,uint8_t *elem)
|
||||
{
|
||||
if(SS->topidx == 0)
|
||||
return 0;
|
||||
--SS->topidx;
|
||||
*elem = SS->Data[SS->topidx];
|
||||
SS->Data[SS->topidx] = 0;
|
||||
return 1;
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
|
||||
#ifndef __LV_USER_SQSTACK_H__
|
||||
#define __LV_USER_SQSTACK_H__
|
||||
|
||||
//元素最多为SQ_STACK_MAXSIZE-1个,栈顶要占一个
|
||||
#define SQ_STACK_MAXSIZE 7
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t Data[SQ_STACK_MAXSIZE];
|
||||
uint8_t topidx;
|
||||
}SeqStack;
|
||||
|
||||
void lv_user_sqstatck_init(SeqStack *SS);
|
||||
uint8_t lv_user_sqstatck_push(SeqStack *SS,uint8_t elem);
|
||||
uint8_t lv_user_sqstatck_pop(SeqStack *SS,uint8_t *elem);
|
||||
|
||||
#endif
|
@ -0,0 +1,314 @@
|
||||
#ifndef __USER_IPC_ST_H__
|
||||
#define __USER_IPC_ST_H__
|
||||
|
||||
#include "fr_ui_node.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DAILY_DATA,
|
||||
SYNC_DATA,
|
||||
INFO_DATA,
|
||||
|
||||
}ipc_data_type_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t ucYear;
|
||||
uint8_t ucMonth;
|
||||
uint8_t ucDate;
|
||||
uint8_t ucHour;
|
||||
uint8_t ucMinute;
|
||||
uint8_t ucSecond;
|
||||
}time_rtc_t;
|
||||
|
||||
//battery
|
||||
typedef enum
|
||||
{
|
||||
BATTERY_GO,
|
||||
BATTERY_LOW,
|
||||
BATTERY_FULL,
|
||||
BATTERY_CHARGEIN,
|
||||
|
||||
}battery_state_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t state; //battery_state_t
|
||||
uint16_t battery_value;
|
||||
}battery_t;
|
||||
|
||||
//weather
|
||||
typedef enum
|
||||
{
|
||||
WEATHER_SNOW,
|
||||
WEATHER_SUN,
|
||||
WEATHER_CLOUDY,
|
||||
|
||||
}weather_type_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t type; //weather_type_t
|
||||
int16_t cur_tempture;
|
||||
int16_t h_tempture;
|
||||
int16_t l_tempture;
|
||||
|
||||
}weather_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UI_MAIN,
|
||||
UI_FLOAT_WIN_UP,
|
||||
UI_FLOAT_WIN_LEFT,
|
||||
UI_FLOAT_WIN_DOWN,
|
||||
UI_MENU,
|
||||
UI_MAX
|
||||
}ui_mode_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t ui_page_id;
|
||||
uint16_t ui_page_cur_x;
|
||||
uint16_t ui_page_cur_y;
|
||||
}ui_layer_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PANEL_STATE_OFF,
|
||||
PANEL_STATE_ON,
|
||||
PANEL_STATE_MAX
|
||||
}panel_state_t;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t ui_mode; //ui_mode_t
|
||||
uint8_t ui_page_id; //mode 0 page id
|
||||
uint8_t ui_node_lv;
|
||||
//--------new
|
||||
uint8_t time_format; // 0 : 24小时<E5B08F>?1:12小时<E5B08F>?
|
||||
uint8_t temperature_format; //0 : 摄氏度,1:华氏摄氏度
|
||||
uint8_t distance_format; //0 : 公制<E585AC>?:英<EFBC9A>?
|
||||
|
||||
//clock id
|
||||
uint8_t ui_clock_id;
|
||||
|
||||
//ui default style
|
||||
uint8_t ui_default_style;
|
||||
|
||||
//menu style
|
||||
uint8_t ui_menu_style_id;
|
||||
|
||||
//language
|
||||
uint8_t ui_language;
|
||||
|
||||
uint8_t ui_backlight_brightness;
|
||||
|
||||
uint8_t ui_lock;
|
||||
|
||||
uint8_t ui_reset;
|
||||
|
||||
uint8_t ui_powerdown;
|
||||
|
||||
uint8_t ui_music_state;
|
||||
|
||||
uint8_t ui_prev_mode;
|
||||
|
||||
// 节点栈定义
|
||||
uint8_t ui_node_depth;
|
||||
lv_ui_node_t ui_node_stack[UI_NODE_MAX_DEPTH];
|
||||
|
||||
//--------new
|
||||
uint8_t custom_page_mode[CUSTOM_ID_ARRY_NUMBER];
|
||||
|
||||
}ui_info_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t start_time;
|
||||
uint16_t total_time;
|
||||
uint16_t speed;
|
||||
uint16_t step;
|
||||
uint16_t cal;
|
||||
uint16_t dis;
|
||||
uint8_t heart;
|
||||
uint8_t max_heart;
|
||||
uint8_t min_heart;
|
||||
uint8_t sports_mode;
|
||||
uint8_t sports_heart[72];// 72
|
||||
}_sport_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
_sport_t data[5];
|
||||
uint8_t index;
|
||||
}_sport_data_t;
|
||||
|
||||
|
||||
//===========================================================
|
||||
typedef struct
|
||||
{
|
||||
uint32_t sport_total_time;
|
||||
uint16_t total_carloie;
|
||||
uint8_t avg_hrm;
|
||||
|
||||
//once
|
||||
uint8_t sport_type;
|
||||
uint32_t sport_time;
|
||||
uint16_t speed;
|
||||
uint16_t step;
|
||||
uint16_t distance;
|
||||
uint16_t carloie;
|
||||
uint8_t state;
|
||||
uint8_t hrm;
|
||||
uint8_t max_hrm;
|
||||
uint8_t min_hrm;
|
||||
uint8_t oxygen;
|
||||
|
||||
}sport_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t isEn;
|
||||
uint8_t Repeat;
|
||||
uint32_t alarm_time_value;
|
||||
}Alarm_type;
|
||||
|
||||
typedef struct//<2F><><EFBFBD><EFBFBD>
|
||||
{
|
||||
unsigned char flag;//<2F><><EFBFBD><EFBFBD>
|
||||
unsigned char hour;//ʱ
|
||||
unsigned char minute;//<2F><>
|
||||
unsigned char weekday;//<2F><><EFBFBD><EFBFBD>
|
||||
//unsigned char data[50];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}_clockTime;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
//system state
|
||||
|
||||
//bt state
|
||||
uint8_t bt_state;
|
||||
uint8_t bt_on_off;
|
||||
|
||||
//ble state
|
||||
uint8_t ble_state;
|
||||
|
||||
uint8_t ble_on_off;
|
||||
|
||||
//time
|
||||
time_rtc_t time;
|
||||
|
||||
//battery state
|
||||
battery_t battery;
|
||||
|
||||
uint8_t panel_state;
|
||||
|
||||
//system info
|
||||
uint8_t version;
|
||||
//------new add
|
||||
//uint16_t version;
|
||||
uint8_t ble_address[6];
|
||||
|
||||
//step message
|
||||
uint32_t step;
|
||||
uint32_t calorie;
|
||||
uint32_t distance;
|
||||
uint8_t motion;
|
||||
uint8_t cadence_step;
|
||||
uint16_t cadence_amp;
|
||||
uint8_t cadence_degree;
|
||||
uint8_t sleep_active;
|
||||
|
||||
//hearte message
|
||||
uint8_t bpm;
|
||||
uint8_t bpm_warning_h;
|
||||
uint8_t bpm_warning_l;
|
||||
|
||||
//o2
|
||||
uint8_t sbp;
|
||||
uint8_t dbp;
|
||||
uint8_t spo2;
|
||||
|
||||
//blood
|
||||
uint8_t blood_h;
|
||||
uint8_t blood_l;
|
||||
|
||||
//ui display
|
||||
ui_info_t ui_info;
|
||||
|
||||
//weather message
|
||||
weather_t day1;
|
||||
weather_t day2;
|
||||
weather_t day3;
|
||||
weather_t day4;
|
||||
weather_t day5;
|
||||
weather_t day6;
|
||||
weather_t day7;
|
||||
|
||||
//time tick
|
||||
uint32_t system_tick_value;
|
||||
|
||||
////volume
|
||||
uint8_t bt_volume_media;
|
||||
uint8_t bt_volume_hfp;
|
||||
uint8_t bt_volume_tone;
|
||||
uint8_t dsp_version;
|
||||
//-----new add
|
||||
//uint16_t dsp_version;
|
||||
|
||||
uint8_t disturb_state;
|
||||
|
||||
uint8_t phone_book_sync_state; //0 error,phone server off, 1 syncing, 2 finished
|
||||
uint16_t phone_book_id_offset;
|
||||
|
||||
uint16_t sleep_total_time;
|
||||
uint16_t deep_sleep_time;
|
||||
uint16_t light_sleep_time;
|
||||
|
||||
//cm3 tick counter
|
||||
uint32_t user_tick_counter;
|
||||
|
||||
|
||||
sport_t sport;
|
||||
|
||||
uint16_t light_auto_close_time;
|
||||
|
||||
uint8_t audio_mic_on;
|
||||
|
||||
_clockTime alarm[5];
|
||||
|
||||
uint32_t timer_init_value;
|
||||
uint32_t count_down_counter;
|
||||
|
||||
uint16_t m3_version_new;
|
||||
uint16_t dsp_version_new;
|
||||
//----new add
|
||||
uint32_t steptarget;
|
||||
uint8_t camera_state;
|
||||
uint8_t low_power_state;
|
||||
uint8_t count_down_counter_state;
|
||||
//----new
|
||||
uint8_t device_alarm_index;
|
||||
uint8_t watch_hrm_value;
|
||||
uint8_t remind_index;
|
||||
uint32_t stopwatch_time;
|
||||
uint16_t phone_book_len;
|
||||
|
||||
//lv_ui_node_t ui_node_stack[UI_NODE_MAX_DEPTH];
|
||||
//uint8_t ui_node_depth; //当前列表的长度
|
||||
|
||||
}ipc_daily_data_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ipc_data_type_t type;
|
||||
|
||||
|
||||
}ipc_info_t;
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user