浏览代码

1、增加头像显示界面,同时显示输入输出功耗信息
2、系统默认语言设置为英语
3、下拉设置菜单里,只保留熄屏时间设置、快速设置(用来设置蓝牙)、闹钟设置(用来设置时间日期),其他的不显示
4、宏RELEASE_FW_EN、RELEASE_FW设置为1则编译FW下载到板子,设置为0则用于模拟器仿真

mohliy 4 月之前
父节点
当前提交
ab41e27efb
共有 64 个文件被更改,包括 2260 次插入1882 次删除
  1. 二进制
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.enG
  2. 二进制
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.res
  3. 二进制
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.sty
  4. 二进制
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.zhC
  5. 75 74
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/strvalue.txt
  6. 0 1
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_12.txt
  7. 1 1
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_12_enG.txt
  8. 0 1
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_12_zhC.txt
  9. 1 1
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_36.txt
  10. 1 1
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_36_enG.txt
  11. 1 1
      application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_36_zhC.txt
  12. 二进制
      application/aem_watch/resource/360x360/applist/png/icon/list_profile_photo.png
  13. 1011 788
      application/aem_watch/resource/360x360/bt_watch.ui
  14. 74 74
      application/aem_watch/resource/360x360/bt_watch_enG.c
  15. 9 1
      application/aem_watch/resource/360x360/bt_watch_sty.h
  16. 74 74
      application/aem_watch/resource/360x360/bt_watch_zhC.c
  17. 二进制
      application/aem_watch/resource/360x360/in_out_power/电压.png
  18. 二进制
      application/aem_watch/resource/360x360/in_out_power/电流.png
  19. 二进制
      application/aem_watch/resource/360x360/launch/profile_photo.png
  20. 二进制
      application/aem_watch/resource/360x360/profile_photo/in白.png
  21. 二进制
      application/aem_watch/resource/360x360/profile_photo/out白.png
  22. 二进制
      application/aem_watch/resource/360x360/profile_photo/头像1.png
  23. 二进制
      application/aem_watch/resource/360x360/profile_photo/头像2.png
  24. 二进制
      application/aem_watch/resource/360x360/quick_settings/息屏设置.png
  25. 二进制
      application/aem_watch/resource/360x360/quick_settings/时间日期.png
  26. 二进制
      application/aem_watch/resource/360x360/quick_settings/蓝牙连接.png
  27. 二进制
      application/aem_watch/resource/360x360/quick_settings/连接.png
  28. 11 0
      application/aem_watch/resource/360x360/res_include.h
  29. 76 75
      application/aem_watch/resource/360x360/res_string_id.c
  30. 143 115
      application/aem_watch/resource/360x360/res_style_bitmap.c
  31. 二进制
      application/aem_watch/resource/multiLang_translate_table.xls
  32. 5 0
      application/aem_watch/simulator/LVGL.Simulator/LVGL.Simulator.vcxproj
  33. 18 0
      application/aem_watch/simulator/LVGL.Simulator/LVGL.Simulator.vcxproj.filters
  34. 36 17
      application/aem_watch/simulator/LVGL.Simulator/bt_watch_simulator.c
  35. 1 0
      application/aem_watch/src/application/CMakeLists.txt
  36. 5 596
      application/aem_watch/src/application/in_out_power/aem_in_out_power.c
  37. 13 5
      application/aem_watch/src/application/in_out_power/aem_in_out_power_screen.c
  38. 9 0
      application/aem_watch/src/application/profile_photo/CMakeLists.txt
  39. 177 0
      application/aem_watch/src/application/profile_photo/aem_profile_photo.c
  40. 8 0
      application/aem_watch/src/application/profile_photo/aem_profile_photo.h
  41. 255 0
      application/aem_watch/src/application/profile_photo/aem_profile_photo_screen.c
  42. 12 0
      application/aem_watch/src/application/profile_photo/aem_profile_photo_screen.h
  43. 153 0
      application/aem_watch/src/application/profile_photo/aem_widget_profile_photo.c
  44. 27 10
      application/aem_watch/src/application/quick_settings/aem_quick_setting.c
  45. 6 5
      application/aem_watch/src/application/quick_settings/aem_quick_setting_alarm.c
  46. 5 5
      application/aem_watch/src/application/quick_settings/aem_quick_setting_app_settings.c
  47. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_brightness.c
  48. 4 4
      application/aem_watch/src/application/quick_settings/aem_quick_setting_display_off.c
  49. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_dnd.c
  50. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_drain.c
  51. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_find_phone.c
  52. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_flash_light.c
  53. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_mute_mode.c
  54. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_phone_mode.c
  55. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_power_save_mode.c
  56. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_raise_up.c
  57. 2 1
      application/aem_watch/src/application/quick_settings/aem_quick_setting_screen_lock.c
  58. 1 1
      application/aem_watch/src/user_cfg/data_default_cfg.h
  59. 10 8
      thirdparty/lib/aem/adapter/def_settings/aem_adapter_def_settings.c
  60. 2 0
      thirdparty/lib/aem/include/aem_app_id.h
  61. 1 0
      thirdparty/lib/aem/include/framework/core/app_mgr/include/aem_ui_refr.h
  62. 1 0
      thirdparty/lib/aem/include/framework/core/watch_fwk/watch_face/aem_watchface_mgr.h
  63. 3 3
      zephyr/drivers/input/sd8563_timer_acts.c
  64. 11 11
      zephyr/drivers/input/sgm832a_acts.c

二进制
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.enG


二进制
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.res


二进制
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.sty


二进制
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/bt_watch.zhC


+ 75 - 74
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/strvalue.txt

@@ -339,77 +339,78 @@ key_widget_health 337
 key_widget_in_out_power 338
 key_widget_life 339
 key_widget_measuring 340
-key_widget_workout 341
-key_widgets 342
-key_workout_agps_data 343
-key_workout_ai_ahead 344
-key_workout_ai_behind 345
-key_workout_aver_pace 346
-key_workout_aver_step_freq 347
-key_workout_badminton 348
-key_workout_bpm 349
-key_workout_calorie 350
-key_workout_click_to_pause 351
-key_workout_cycle_indoor 352
-key_workout_cycle_outdoor 353
-key_workout_distance 354
-key_workout_distance_unit_km 355
-key_workout_distance_unit_mile 356
-key_workout_duration_end 357
-key_workout_end_confirm 358
-key_workout_exercised 359
-key_workout_goal_settings 360
-key_workout_gps 361
-key_workout_gps_error 362
-key_workout_gps_tips 363
-key_workout_hike 364
-key_workout_hr_max_hr 365
-key_workout_hr_min_hr 366
-key_workout_interval_reminder 367
-key_workout_jump 368
-key_workout_kcal 369
-key_workout_kilocalorie 370
-key_workout_kilometer 371
-key_workout_km 372
-key_workout_km_h 373
-key_workout_km_km 374
-key_workout_manager 375
-key_workout_mi_h 376
-key_workout_mi_mi 377
-key_workout_mile 378
-key_workout_min_min 379
-key_workout_move_open_area 380
-key_workout_moving 381
-key_workout_no_reminder 382
-key_workout_open_goal 383
-key_workout_open_water_swim 384
-key_workout_pace 385
-key_workout_pause 386
-key_workout_pool_length 387
-key_workout_pool_swim 388
-key_workout_positioning_failed 389
-key_workout_positioning_successf 390
-key_workout_recent_sports 391
-key_workout_repositioning 392
-key_workout_rope_skipping 393
-key_workout_run_indoor 394
-key_workout_run_outdoor 395
-key_workout_settings 396
-key_workout_settings_auto_pause 397
-key_workout_settings_auto_recogn 398
-key_workout_settings_hr_tips 399
-key_workout_settings_hr_warning 400
-key_workout_settings_hr_warningl 401
-key_workout_skip 402
-key_workout_speed 403
-key_workout_spm 404
-key_workout_start 405
-key_workout_step_frequency 406
-key_workout_steps 407
-key_workout_steps_steps 408
-key_workout_tennis 409
-key_workout_time 410
-key_workout_unit_pcs 411
-key_workout_wait 412
-key_workout_yd 413
-key_workout_yoga 414
+key_widget_profile_photo 341
+key_widget_workout 342
+key_widgets 343
+key_workout_agps_data 344
+key_workout_ai_ahead 345
+key_workout_ai_behind 346
+key_workout_aver_pace 347
+key_workout_aver_step_freq 348
+key_workout_badminton 349
+key_workout_bpm 350
+key_workout_calorie 351
+key_workout_click_to_pause 352
+key_workout_cycle_indoor 353
+key_workout_cycle_outdoor 354
+key_workout_distance 355
+key_workout_distance_unit_km 356
+key_workout_distance_unit_mile 357
+key_workout_duration_end 358
+key_workout_end_confirm 359
+key_workout_exercised 360
+key_workout_goal_settings 361
+key_workout_gps 362
+key_workout_gps_error 363
+key_workout_gps_tips 364
+key_workout_hike 365
+key_workout_hr_max_hr 366
+key_workout_hr_min_hr 367
+key_workout_interval_reminder 368
+key_workout_jump 369
+key_workout_kcal 370
+key_workout_kilocalorie 371
+key_workout_kilometer 372
+key_workout_km 373
+key_workout_km_h 374
+key_workout_km_km 375
+key_workout_manager 376
+key_workout_mi_h 377
+key_workout_mi_mi 378
+key_workout_mile 379
+key_workout_min_min 380
+key_workout_move_open_area 381
+key_workout_moving 382
+key_workout_no_reminder 383
+key_workout_open_goal 384
+key_workout_open_water_swim 385
+key_workout_pace 386
+key_workout_pause 387
+key_workout_pool_length 388
+key_workout_pool_swim 389
+key_workout_positioning_failed 390
+key_workout_positioning_successf 391
+key_workout_recent_sports 392
+key_workout_repositioning 393
+key_workout_rope_skipping 394
+key_workout_run_indoor 395
+key_workout_run_outdoor 396
+key_workout_settings 397
+key_workout_settings_auto_pause 398
+key_workout_settings_auto_recogn 399
+key_workout_settings_hr_tips 400
+key_workout_settings_hr_warning 401
+key_workout_settings_hr_warningl 402
+key_workout_skip 403
+key_workout_speed 404
+key_workout_spm 405
+key_workout_start 406
+key_workout_step_frequency 407
+key_workout_steps 408
+key_workout_steps_steps 409
+key_workout_tennis 410
+key_workout_time 411
+key_workout_unit_pcs 412
+key_workout_wait 413
+key_workout_yd 414
+key_workout_yoga 415

文件差异内容过多而无法显示
+ 0 - 1
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_12.txt


+ 1 - 1
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_12_enG.txt

@@ -1 +1 @@
-0X20-0X77
+0X20-0X77,0X78,0X79,0X7A,0XAB,0XB0,0XBB,0XBF,0XC0,0XC1,0XC4,0XC5,0XC7,0XC9,0XCA,0XD6,0XDA,0XDC,0XDF,0XE0,0XE1,0XE2,0XE3,0XE4,0XE5,0XE7,0XE8,0XE9,0XEA,0XED,0XEE,0XF1,0XF3,0XF4,0XF5,0XF6,0XFA,0XFB,0XFC,0X105,0X106,0X107,0X119,0X11F,0X130,0X131,0X141,0X142,0X144,0X152,0X15A,0X15B,0X15E,0X15F,0X17A,0X17C,0X410,0X411,0X412,0X413,0X414,0X415,0X416,0X417,0X418,0X419,0X41A,0X41B,0X41C,0X41D,0X41E,0X41F,0X420,0X421,0X422,0X423,0X424,0X425,0X426,0X427,0X428,0X42D,0X42E,0X42F,0X430,0X431,0X432,0X433,0X434,0X435,0X436,0X437,0X438,0X439,0X43A,0X43B,0X43C,0X43D,0X43E,0X43F,0X440,0X441,0X442,0X443,0X444,0X445,0X446,0X447,0X448,0X449,0X44A,0X44B,0X44C,0X44D,0X44E,0X44F,0X5D0,0X5D1,0X5D2,0X5D3,0X5D4,0X5D5,0X5D6,0X5D7,0X5D8,0X5D9,0X5DA,0X5DB,0X5DC,0X5DD,0X5DE,0X5DF,0X5E0,0X5E1,0X5E2,0X5E3,0X5E4,0X5E5,0X5E6,0X5E7,0X5E8,0X5E9,0X5EA,0X60C,0X61B,0X61F,0X621,0X622,0X623,0X624,0X625,0X626,0X627,0X628,0X629,0X62A,0X62B,0X62C,0X62D,0X62E,0X62F,0X630,0X631,0X632,0X633,0X634,0X635,0X636,0X637,0X638,0X639,0X63A,0X641,0X642,0X643,0X644,0X645,0X646,0X647,0X648,0X649,0X64A,0X64B,0X64D,0X64F,0X67E,0X686,0X698,0X6A9,0X6AF,0X6CC,0X6F1,0X6F2,0X6F3,0X6F4,0X6F5,0X6F6,0X200C,0X2026,0XFF01,0XFF08,0XFF09,0XFF1A,0XFF1B

文件差异内容过多而无法显示
+ 0 - 1
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_12_zhC.txt


+ 1 - 1
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_36.txt

@@ -1 +1 @@
-0X20-0X77,0X7A,0XE1,0XE4,0XE9,0XFC,0X142,0X415,0X430,0X432,0X434,0X435,0X436,0X438,0X43A,0X43D,0X43E,0X441,0X442,0X44C,0X44F,0X5D5,0X5D9,0X5DC,0X5DE,0X5E2,0X5E4,0X5EA,0X627,0X62A,0X631,0X632,0X634,0X637,0X639,0X641,0X644,0X645,0X646,0X647,0X648,0X64A,0X6CC,0X200C,0X5165,0X51FA,0X529F,0X8017,0X8F93
+0X20-0X77,0X78,0X79,0X7A,0XE1,0XE2,0XE3,0XE4,0XE7,0XE8,0XE9,0XEA,0XED,0XF1,0XF3,0XF4,0XF5,0XF6,0XFA,0XFC,0X107,0X119,0X11F,0X131,0X142,0X15B,0X15F,0X411,0X413,0X414,0X415,0X416,0X417,0X41A,0X41C,0X41D,0X41F,0X421,0X422,0X423,0X424,0X427,0X430,0X432,0X433,0X434,0X435,0X436,0X437,0X438,0X439,0X43A,0X43B,0X43C,0X43D,0X43E,0X43F,0X440,0X441,0X442,0X443,0X444,0X445,0X447,0X449,0X44B,0X44C,0X44F,0X5D0,0X5D1,0X5D2,0X5D3,0X5D4,0X5D5,0X5D6,0X5D7,0X5D8,0X5D9,0X5DC,0X5DD,0X5DE,0X5DF,0X5E0,0X5E1,0X5E2,0X5E4,0X5E5,0X5E6,0X5E7,0X5E8,0X5E9,0X5EA,0X623,0X625,0X627,0X628,0X629,0X62A,0X62B,0X62C,0X62D,0X62E,0X62F,0X631,0X632,0X633,0X634,0X635,0X636,0X637,0X638,0X639,0X63A,0X641,0X642,0X643,0X644,0X645,0X646,0X647,0X648,0X649,0X64A,0X686,0X698,0X6A9,0X6AF,0X6CC,0X200C,0X4E50,0X5065,0X50CF,0X5165,0X51FA,0X529B,0X529F,0X52A8,0X52A9,0X5357,0X5386,0X538B,0X5438,0X547C,0X5668,0X56FE,0X5929,0X5934,0X5973,0X5E38,0X5EB7,0X5F55,0X5FC3,0X6027,0X624B,0X627E,0X6307,0X65E5,0X65F6,0X673A,0X6C14,0X6C27,0X6D3B,0X7247,0X7387,0X7535,0X76F8,0X7720,0X7761,0X79D2,0X7B52,0X7B97,0X7F6E,0X8017,0X8840,0X8868,0X8BA1,0X8BB0,0X8BBE,0X8BDD,0X8BED,0X8F93,0X8FD0,0X9488,0X949F,0X95F9,0X97F3

+ 1 - 1
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_36_enG.txt

@@ -1 +1 @@
-0X20-0X77
+0X20-0X77,0X79

+ 1 - 1
application/aem_watch/boards/ats3085s4_dev_watch_ext_nor/res/txt/bt_watch_36_zhC.txt

@@ -1 +1 @@
-,0X5165,0X51FA,0X529F,0X8017,0X8F93
+,0X4E50,0X5065,0X50CF,0X5165,0X51FA,0X529B,0X529F,0X52A8,0X52A9,0X5357,0X5386,0X538B,0X5438,0X547C,0X5668,0X56FE,0X5929,0X5934,0X5973,0X5E38,0X5EB7,0X5F55,0X5FC3,0X6027,0X624B,0X627E,0X6307,0X65E5,0X65F6,0X673A,0X6C14,0X6C27,0X6D3B,0X7247,0X7387,0X7535,0X76F8,0X7720,0X7761,0X79D2,0X7B52,0X7B97,0X7F6E,0X8017,0X8840,0X8868,0X8BA1,0X8BB0,0X8BBE,0X8BDD,0X8BED,0X8F93,0X8FD0,0X9488,0X949F,0X95F9,0X97F3

二进制
application/aem_watch/resource/360x360/applist/png/icon/list_profile_photo.png


文件差异内容过多而无法显示
+ 1011 - 788
application/aem_watch/resource/360x360/bt_watch.ui


文件差异内容过多而无法显示
+ 74 - 74
application/aem_watch/resource/360x360/bt_watch_enG.c


+ 9 - 1
application/aem_watch/resource/360x360/bt_watch_sty.h

@@ -10,6 +10,7 @@
 #define  RES_WORKOUT_RECORD    0x5e98053a
 #define  RES_WORKOUT_ACTIVITY    0xc467512
 #define  RES_IN_OUT_POWER    0x1b23d52b
+#define  RES_PROFILE_PHOTO    0xe4aa14bd
 #define  RES_PHONE    0xa383224b
 #define  RES_HEARTRATE    0x3c124c81
 #define  RES_SPO2    0x13f3744f
@@ -473,6 +474,10 @@
 #define  STR_SCR_LOCK_EXIT_TIPS    0x2c33a192
 #define  PIC_DISPLAY_OFF    0xd3ad9129
 #define  PIC_DISPLAYS_OFF    0xcfee923c
+#define  PIC_DISPLAY_OFF_SETTING    0xb5f6c4d8
+#define  PIC_TIME_DATE_SETTING    0x526f7fd6
+#define  PIC_BLUETOOTH_SETTING    0x9f53bcb6
+#define  PIC_LINK    0xc36923c3
 #define  SCENE_WF_EDIT    0x9be5abb3
 #define  PIC_WF_DEL    0x91d91fc6
 #define  PIC_EDIT    0xf12f015b
@@ -557,9 +562,11 @@
 #define  SCENE_IN_OUT_POWER    0xb84d2115
 #define  PIC_POINT_LINE    0xdd06e5e8
 #define  PIC_IN    0xd8449a9a
-#define  PIC_LINK    0xc36923c3
 #define  PIC_OUT    0x48fb4075
 #define  STR_IN_OUT_POWER    0xddae7726
+#define  SCENE_PROFILE_PHOTO    0x598f6bff
+#define  PIC_PHOTO_MALE    0x361b9093
+#define  PIC_PHOTO_FEMALE    0x4cc821d4
 #define  SCENE_MUSIC    0x32652fec
 #define  PIC_ANIM1    0x92937511
 #define  PIC_ANIM2    0x92937512
@@ -929,6 +936,7 @@
 #define  PIC_NO_WATCH    0x639581a2
 #define  PIC_ACTIVITY    0xf3d51854
 #define  PIC_IN_OUT_POWER    0x163fd0b5
+#define  PIC_PROFILE_PHOTO    0x54122bdf
 #define  PIC_SPORT    0xedb11a2f
 #define  PIC_ADD    0x53ec46ac
 #define  PIC_ADD_GRAY    0xc95227ea

文件差异内容过多而无法显示
+ 74 - 74
application/aem_watch/resource/360x360/bt_watch_zhC.c


二进制
application/aem_watch/resource/360x360/in_out_power/电压.png


二进制
application/aem_watch/resource/360x360/in_out_power/电流.png


二进制
application/aem_watch/resource/360x360/launch/profile_photo.png


二进制
application/aem_watch/resource/360x360/profile_photo/in白.png


二进制
application/aem_watch/resource/360x360/profile_photo/out白.png


二进制
application/aem_watch/resource/360x360/profile_photo/头像1.png


二进制
application/aem_watch/resource/360x360/profile_photo/头像2.png


二进制
application/aem_watch/resource/360x360/quick_settings/息屏设置.png


二进制
application/aem_watch/resource/360x360/quick_settings/时间日期.png


二进制
application/aem_watch/resource/360x360/quick_settings/蓝牙连接.png


二进制
application/aem_watch/resource/360x360/quick_settings/连接.png


+ 11 - 0
application/aem_watch/resource/360x360/res_include.h

@@ -8,6 +8,7 @@ extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_WORKOUT_PIC_ICON;
 extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_WORKOUT_RECORD_PIC_ICON; 
 extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_WORKOUT_ACTIVITY_PIC_ICON; 
 extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_IN_OUT_POWER_PIC_ICON; 
+extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_PROFILE_PHOTO_PIC_ICON; 
 extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_PHONE_PIC_ICON; 
 extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_HEARTRATE_PIC_ICON; 
 extern lv_img_dsc_t IMG_SCENE_APPLIST_RES_SPO2_PIC_ICON; 
@@ -268,6 +269,10 @@ extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_PHONE;
 extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_PHONES; 
 extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_DISPLAY_OFF; 
 extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_DISPLAYS_OFF; 
+extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_DISPLAY_OFF_SETTING; 
+extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_TIME_DATE_SETTING; 
+extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_BLUETOOTH_SETTING; 
+extern lv_img_dsc_t IMG_SCENE_QUICK_SETTINGS_PIC_LINK; 
 extern lv_img_dsc_t IMG_SCENE_WF_EDIT_PIC_WF_DEL; 
 extern lv_img_dsc_t IMG_SCENE_WF_EDIT_PIC_EDIT; 
 extern lv_img_dsc_t IMG_SCENE_WF_EDIT_PIC_WF_NO_DEL; 
@@ -295,6 +300,10 @@ extern lv_img_dsc_t IMG_SCENE_IN_OUT_POWER_PIC_POINT_LINE;
 extern lv_img_dsc_t IMG_SCENE_IN_OUT_POWER_PIC_IN; 
 extern lv_img_dsc_t IMG_SCENE_IN_OUT_POWER_PIC_LINK; 
 extern lv_img_dsc_t IMG_SCENE_IN_OUT_POWER_PIC_OUT; 
+extern lv_img_dsc_t IMG_SCENE_PROFILE_PHOTO_PIC_PHOTO_MALE; 
+extern lv_img_dsc_t IMG_SCENE_PROFILE_PHOTO_PIC_PHOTO_FEMALE; 
+extern lv_img_dsc_t IMG_SCENE_PROFILE_PHOTO_PIC_IN; 
+extern lv_img_dsc_t IMG_SCENE_PROFILE_PHOTO_PIC_OUT; 
 extern lv_img_dsc_t IMG_SCENE_MUSIC_PIC_ANIM1; 
 extern lv_img_dsc_t IMG_SCENE_MUSIC_PIC_ANIM2; 
 extern lv_img_dsc_t IMG_SCENE_MUSIC_PIC_BG; 
@@ -549,6 +558,7 @@ extern lv_img_dsc_t IMG_SCENE_WIDGET_PIC_RED_OK;
 extern lv_img_dsc_t IMG_SCENE_LAUNCH_PIC_NO_WATCH; 
 extern lv_img_dsc_t IMG_SCENE_LAUNCH_PIC_ACTIVITY; 
 extern lv_img_dsc_t IMG_SCENE_LAUNCH_PIC_IN_OUT_POWER; 
+extern lv_img_dsc_t IMG_SCENE_LAUNCH_PIC_PROFILE_PHOTO; 
 extern lv_img_dsc_t IMG_SCENE_LAUNCH_PIC_HR; 
 extern lv_img_dsc_t IMG_SCENE_LAUNCH_PIC_MUSIC; 
 extern lv_img_dsc_t IMG_SCENE_LAUNCH_PIC_SPORT; 
@@ -1010,6 +1020,7 @@ typedef enum{
 	ID_KEY_WIDGET_IN_OUT_POWER,
 	ID_KEY_WIDGET_LIFE,
 	ID_KEY_WIDGET_MEASURING,
+	ID_KEY_WIDGET_PROFILE_PHOTO,
 	ID_KEY_WIDGET_WORKOUT,
 	ID_KEY_WIDGETS,
 	ID_KEY_WORKOUT_AGPS_DATA,

+ 76 - 75
application/aem_watch/resource/360x360/res_string_id.c

@@ -1,6 +1,6 @@
 #include <res_manager_api.h>
 
-res_string_item_t RES_STRING_ID_DIC[416] = {
+res_string_item_t RES_STRING_ID_DIC[417] = {
 		{.key = NULL,		.value = 0},
 		{.key = "key_OTA_downloading",		.value = 181},
 		{.key = "key_OTA_failed",		.value = 182},
@@ -343,78 +343,79 @@ res_string_item_t RES_STRING_ID_DIC[416] = {
 		{.key = "key_widget_in_out_power",		.value = 339},
 		{.key = "key_widget_life",		.value = 340},
 		{.key = "key_widget_measuring",		.value = 341},
-		{.key = "key_widget_workout",		.value = 342},
-		{.key = "key_widgets",		.value = 343},
-		{.key = "key_workout_agps_data",		.value = 344},
-		{.key = "key_workout_ai_ahead",		.value = 345},
-		{.key = "key_workout_ai_behind",		.value = 346},
-		{.key = "key_workout_aver_pace",		.value = 347},
-		{.key = "key_workout_aver_step_freq",		.value = 348},
-		{.key = "key_workout_badminton",		.value = 349},
-		{.key = "key_workout_bpm",		.value = 350},
-		{.key = "key_workout_calorie",		.value = 351},
-		{.key = "key_workout_click_to_pause",		.value = 352},
-		{.key = "key_workout_cycle_indoor",		.value = 353},
-		{.key = "key_workout_cycle_outdoor",		.value = 354},
-		{.key = "key_workout_distance",		.value = 355},
-		{.key = "key_workout_distance_unit_km",		.value = 356},
-		{.key = "key_workout_distance_unit_mile",		.value = 357},
-		{.key = "key_workout_duration_end",		.value = 358},
-		{.key = "key_workout_end_confirm",		.value = 359},
-		{.key = "key_workout_exercised",		.value = 360},
-		{.key = "key_workout_goal_settings",		.value = 361},
-		{.key = "key_workout_gps",		.value = 362},
-		{.key = "key_workout_gps_error",		.value = 363},
-		{.key = "key_workout_gps_tips",		.value = 364},
-		{.key = "key_workout_hike",		.value = 365},
-		{.key = "key_workout_hr_max_hr",		.value = 366},
-		{.key = "key_workout_hr_min_hr",		.value = 367},
-		{.key = "key_workout_interval_reminder",		.value = 368},
-		{.key = "key_workout_jump",		.value = 369},
-		{.key = "key_workout_kcal",		.value = 370},
-		{.key = "key_workout_kilocalorie",		.value = 371},
-		{.key = "key_workout_kilometer",		.value = 372},
-		{.key = "key_workout_km",		.value = 373},
-		{.key = "key_workout_km_h",		.value = 374},
-		{.key = "key_workout_km_km",		.value = 375},
-		{.key = "key_workout_manager",		.value = 376},
-		{.key = "key_workout_mi_h",		.value = 377},
-		{.key = "key_workout_mi_mi",		.value = 378},
-		{.key = "key_workout_mile",		.value = 379},
-		{.key = "key_workout_min_min",		.value = 380},
-		{.key = "key_workout_move_open_area",		.value = 381},
-		{.key = "key_workout_moving",		.value = 382},
-		{.key = "key_workout_no_reminder",		.value = 383},
-		{.key = "key_workout_open_goal",		.value = 384},
-		{.key = "key_workout_open_water_swim",		.value = 385},
-		{.key = "key_workout_pace",		.value = 386},
-		{.key = "key_workout_pause",		.value = 387},
-		{.key = "key_workout_pool_length",		.value = 388},
-		{.key = "key_workout_pool_swim",		.value = 389},
-		{.key = "key_workout_positioning_failed",		.value = 390},
-		{.key = "key_workout_positioning_successf",		.value = 391},
-		{.key = "key_workout_recent_sports",		.value = 392},
-		{.key = "key_workout_repositioning",		.value = 393},
-		{.key = "key_workout_rope_skipping",		.value = 394},
-		{.key = "key_workout_run_indoor",		.value = 395},
-		{.key = "key_workout_run_outdoor",		.value = 396},
-		{.key = "key_workout_settings",		.value = 397},
-		{.key = "key_workout_settings_auto_pause",		.value = 398},
-		{.key = "key_workout_settings_auto_recogn",		.value = 399},
-		{.key = "key_workout_settings_hr_tips",		.value = 400},
-		{.key = "key_workout_settings_hr_warning",		.value = 401},
-		{.key = "key_workout_settings_hr_warningl",		.value = 402},
-		{.key = "key_workout_skip",		.value = 403},
-		{.key = "key_workout_speed",		.value = 404},
-		{.key = "key_workout_spm",		.value = 405},
-		{.key = "key_workout_start",		.value = 406},
-		{.key = "key_workout_step_frequency",		.value = 407},
-		{.key = "key_workout_steps",		.value = 408},
-		{.key = "key_workout_steps_steps",		.value = 409},
-		{.key = "key_workout_tennis",		.value = 410},
-		{.key = "key_workout_time",		.value = 411},
-		{.key = "key_workout_unit_pcs",		.value = 412},
-		{.key = "key_workout_wait",		.value = 413},
-		{.key = "key_workout_yd",		.value = 414},
-		{.key = "key_workout_yoga",		.value = 415},
+		{.key = "key_widget_profile_photo",		.value = 342},
+		{.key = "key_widget_workout",		.value = 343},
+		{.key = "key_widgets",		.value = 344},
+		{.key = "key_workout_agps_data",		.value = 345},
+		{.key = "key_workout_ai_ahead",		.value = 346},
+		{.key = "key_workout_ai_behind",		.value = 347},
+		{.key = "key_workout_aver_pace",		.value = 348},
+		{.key = "key_workout_aver_step_freq",		.value = 349},
+		{.key = "key_workout_badminton",		.value = 350},
+		{.key = "key_workout_bpm",		.value = 351},
+		{.key = "key_workout_calorie",		.value = 352},
+		{.key = "key_workout_click_to_pause",		.value = 353},
+		{.key = "key_workout_cycle_indoor",		.value = 354},
+		{.key = "key_workout_cycle_outdoor",		.value = 355},
+		{.key = "key_workout_distance",		.value = 356},
+		{.key = "key_workout_distance_unit_km",		.value = 357},
+		{.key = "key_workout_distance_unit_mile",		.value = 358},
+		{.key = "key_workout_duration_end",		.value = 359},
+		{.key = "key_workout_end_confirm",		.value = 360},
+		{.key = "key_workout_exercised",		.value = 361},
+		{.key = "key_workout_goal_settings",		.value = 362},
+		{.key = "key_workout_gps",		.value = 363},
+		{.key = "key_workout_gps_error",		.value = 364},
+		{.key = "key_workout_gps_tips",		.value = 365},
+		{.key = "key_workout_hike",		.value = 366},
+		{.key = "key_workout_hr_max_hr",		.value = 367},
+		{.key = "key_workout_hr_min_hr",		.value = 368},
+		{.key = "key_workout_interval_reminder",		.value = 369},
+		{.key = "key_workout_jump",		.value = 370},
+		{.key = "key_workout_kcal",		.value = 371},
+		{.key = "key_workout_kilocalorie",		.value = 372},
+		{.key = "key_workout_kilometer",		.value = 373},
+		{.key = "key_workout_km",		.value = 374},
+		{.key = "key_workout_km_h",		.value = 375},
+		{.key = "key_workout_km_km",		.value = 376},
+		{.key = "key_workout_manager",		.value = 377},
+		{.key = "key_workout_mi_h",		.value = 378},
+		{.key = "key_workout_mi_mi",		.value = 379},
+		{.key = "key_workout_mile",		.value = 380},
+		{.key = "key_workout_min_min",		.value = 381},
+		{.key = "key_workout_move_open_area",		.value = 382},
+		{.key = "key_workout_moving",		.value = 383},
+		{.key = "key_workout_no_reminder",		.value = 384},
+		{.key = "key_workout_open_goal",		.value = 385},
+		{.key = "key_workout_open_water_swim",		.value = 386},
+		{.key = "key_workout_pace",		.value = 387},
+		{.key = "key_workout_pause",		.value = 388},
+		{.key = "key_workout_pool_length",		.value = 389},
+		{.key = "key_workout_pool_swim",		.value = 390},
+		{.key = "key_workout_positioning_failed",		.value = 391},
+		{.key = "key_workout_positioning_successf",		.value = 392},
+		{.key = "key_workout_recent_sports",		.value = 393},
+		{.key = "key_workout_repositioning",		.value = 394},
+		{.key = "key_workout_rope_skipping",		.value = 395},
+		{.key = "key_workout_run_indoor",		.value = 396},
+		{.key = "key_workout_run_outdoor",		.value = 397},
+		{.key = "key_workout_settings",		.value = 398},
+		{.key = "key_workout_settings_auto_pause",		.value = 399},
+		{.key = "key_workout_settings_auto_recogn",		.value = 400},
+		{.key = "key_workout_settings_hr_tips",		.value = 401},
+		{.key = "key_workout_settings_hr_warning",		.value = 402},
+		{.key = "key_workout_settings_hr_warningl",		.value = 403},
+		{.key = "key_workout_skip",		.value = 404},
+		{.key = "key_workout_speed",		.value = 405},
+		{.key = "key_workout_spm",		.value = 406},
+		{.key = "key_workout_start",		.value = 407},
+		{.key = "key_workout_step_frequency",		.value = 408},
+		{.key = "key_workout_steps",		.value = 409},
+		{.key = "key_workout_steps_steps",		.value = 410},
+		{.key = "key_workout_tennis",		.value = 411},
+		{.key = "key_workout_time",		.value = 412},
+		{.key = "key_workout_unit_pcs",		.value = 413},
+		{.key = "key_workout_wait",		.value = 414},
+		{.key = "key_workout_yd",		.value = 415},
+		{.key = "key_workout_yoga",		.value = 416},
 	};

文件差异内容过多而无法显示
+ 143 - 115
application/aem_watch/resource/360x360/res_style_bitmap.c


二进制
application/aem_watch/resource/multiLang_translate_table.xls


+ 5 - 0
application/aem_watch/simulator/LVGL.Simulator/LVGL.Simulator.vcxproj

@@ -194,6 +194,8 @@
     <ClInclude Include="..\..\src\application\phone\aem_phone.h" />
     <ClInclude Include="..\..\src\application\power_onoff\aem_power.h" />
     <ClInclude Include="..\..\src\application\power_saving_mode\aem_power_saving_mode.h" />
+    <ClInclude Include="..\..\src\application\profile_photo\aem_profile_photo.h" />
+    <ClInclude Include="..\..\src\application\profile_photo\aem_profile_photo_screen.h" />
     <ClInclude Include="..\..\src\application\quick_settings\include\aem_quick_setting.h" />
     <ClInclude Include="..\..\src\application\quick_settings\scr_lock\aem_scr_lock.h" />
     <ClInclude Include="..\..\src\application\settings\aem_settings.h" />
@@ -437,6 +439,9 @@
     <ClCompile Include="..\..\src\application\power_onoff\aem_power.c" />
     <ClCompile Include="..\..\src\application\power_saving_mode\aem_power_saving_mode.c" />
     <ClCompile Include="..\..\src\application\power_saving_mode\aem_power_saving_tips.c" />
+    <ClCompile Include="..\..\src\application\profile_photo\aem_profile_photo.c" />
+    <ClCompile Include="..\..\src\application\profile_photo\aem_profile_photo_screen.c" />
+    <ClCompile Include="..\..\src\application\profile_photo\aem_widget_profile_photo.c" />
     <ClCompile Include="..\..\src\application\quick_settings\aem_quick_setting.c" />
     <ClCompile Include="..\..\src\application\quick_settings\aem_quick_setting_alarm.c" />
     <ClCompile Include="..\..\src\application\quick_settings\aem_quick_setting_app_settings.c" />

+ 18 - 0
application/aem_watch/simulator/LVGL.Simulator/LVGL.Simulator.vcxproj.filters

@@ -698,6 +698,12 @@
     <ClInclude Include="..\..\src\application\in_out_power\aem_in_out_power_screen.h">
       <Filter>aem_watch\application\in_out_power</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\application\profile_photo\aem_profile_photo.h">
+      <Filter>aem_watch\application\profile_photo</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\application\profile_photo\aem_profile_photo_screen.h">
+      <Filter>aem_watch\application\profile_photo</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <Manifest Include="LVGL.Simulator.manifest" />
@@ -1538,6 +1544,15 @@
     <ClCompile Include="..\..\src\application\in_out_power\aem_widget_in_out_power.c">
       <Filter>aem_watch\application\in_out_power</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\application\profile_photo\aem_profile_photo.c">
+      <Filter>aem_watch\application\profile_photo</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\application\profile_photo\aem_profile_photo_screen.c">
+      <Filter>aem_watch\application\profile_photo</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\application\profile_photo\aem_widget_profile_photo.c">
+      <Filter>aem_watch\application\profile_photo</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="LVGL.Simulator.rc" />
@@ -1931,6 +1946,9 @@
     <Filter Include="aem_watch\application\in_out_power">
       <UniqueIdentifier>{0239b7ed-b5c4-4637-b445-b78c70e34eaf}</UniqueIdentifier>
     </Filter>
+    <Filter Include="aem_watch\application\profile_photo">
+      <UniqueIdentifier>{22c48113-1179-46fc-a9c6-646a6dbe930e}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <Library Include="..\lib\aem_gui_fwk.lib" />

+ 36 - 17
application/aem_watch/simulator/LVGL.Simulator/bt_watch_simulator.c

@@ -45,6 +45,7 @@ extern void aem_breathe_create(void);
 extern void aem_shutter_create(void);
 extern void aem_activity_app_create(void);
 extern void aem_in_out_power_create(void);
+extern void aem_profile_photo_create(void);
 extern void aem_music_create(void);
 extern void aem_find_phone_create(void);
 extern void aem_calculator_create(void);
@@ -151,6 +152,12 @@ aem_app_info_desc_t aem_app_info_begin[] =
             .key_id = ID_KEY_WIDGET_IN_OUT_POWER,
             .icon = &IMG_SCENE_APPLIST_RES_IN_OUT_POWER_PIC_ICON,
         },
+        {
+            .app_id = AEM_APP_ID_PROFILE_PHOTO,
+            .app_entry = aem_profile_photo_create,
+            .key_id = ID_KEY_WIDGET_PROFILE_PHOTO,
+            .icon = &IMG_SCENE_APPLIST_RES_PROFILE_PHOTO_PIC_ICON,
+        },
         {
             .app_id = AEM_APP_ID_CALENDAR,
             .app_entry = aem_calendar_create,
@@ -555,6 +562,7 @@ extern aem_clock_ops_t workout_ops;
 extern aem_clock_ops_t activity_ops;
 extern aem_clock_ops_t wf_heart_rate_ops;
 extern aem_clock_ops_t in_out_power_ops;
+extern aem_clock_ops_t profile_photo_ops;
 aem_clock_desc_t aem_watchface_db_begin[] =
     {
         {
@@ -567,6 +575,11 @@ aem_clock_desc_t aem_watchface_db_begin[] =
             .editable = 0,
             .op = &in_out_power_ops,
         },
+        {
+            .clock_id = WIDGET_ID_PROFILE_PHOTO,
+            .editable = 0,
+            .op = &profile_photo_ops,
+        },
         {
             .clock_id = WIDGET_ID_OFTEN_WORKOUT,
             .editable = 0,
@@ -614,38 +627,29 @@ aem_launch_desc_t aem_launch_db_begin[] =
 
 aem_launch_desc_t *aem_launch_db_end = NULL;
 
+extern const aem_quick_setting_ops_t quick_setting_app_settings_ops;
+extern const aem_quick_setting_ops_t quick_setting_display_off_ops;
+#if 0
 extern const aem_quick_setting_ops_t quick_setting_mute_mode_ops;
 extern const aem_quick_setting_ops_t quick_setting_screen_lock_ops;
-extern const aem_quick_setting_ops_t quick_setting_app_settings_ops;
 extern const aem_quick_setting_ops_t quick_setting_brightness_ops;
 extern const aem_quick_setting_ops_t quick_setting_phone_mode_ops;
-extern const aem_quick_setting_ops_t quick_setting_display_off_ops;
 extern const aem_quick_setting_ops_t quick_setting_dnd_ops;
 extern const aem_quick_setting_ops_t quick_setting_flash_light_ops;
 extern const aem_quick_setting_ops_t quick_setting_drain_ops;
 extern const aem_quick_setting_ops_t quick_setting_raise_up_ops;
 extern const aem_quick_setting_ops_t quick_setting_find_phone_ops;
 extern const aem_quick_setting_ops_t quick_setting_power_save_mode_ops;
+#endif
 extern const aem_quick_setting_ops_t quick_setting_alarm_ops;
 
 aem_quick_setting_desc_t aem_quick_setting_db_begin[] =
-    {
-        {
-            .priority = AEM_QUICK_SETTING_MUTE_MODE,
-            .op = &quick_setting_mute_mode_ops,
-        },
-        {
-            .priority = AEM_QUICK_SETTING_SCREEN_LOCK,
-            .op = &quick_setting_screen_lock_ops,
-        },
+    {  
         {
             .priority = AEM_QUICK_SETTING_SETTINGS,
             .op = &quick_setting_app_settings_ops,
         },
-        {
-            .priority = AEM_QUICK_SETTING_BRIGHTNESS,
-            .op = &quick_setting_brightness_ops,
-        },
+
 #if CONFIG_AEM_APPLICATION_LOCAL_MUSIC
         {
             .priority = AEM_QUICK_SETTING_PHONE_MODE,
@@ -657,10 +661,24 @@ aem_quick_setting_desc_t aem_quick_setting_db_begin[] =
             .op = &quick_setting_display_off_ops,
         },
 #endif
+    #if 0
+        {
+            .priority = AEM_QUICK_SETTING_MUTE_MODE,
+            .op = &quick_setting_mute_mode_ops,
+        },
+        {
+            .priority = AEM_QUICK_SETTING_SCREEN_LOCK,
+            .op = &quick_setting_screen_lock_ops,
+        }, 
+        {
+            .priority = AEM_QUICK_SETTING_BRIGHTNESS,
+            .op = &quick_setting_brightness_ops,
+        },
         {
             .priority = AEM_QUICK_SETTING_DND,
             .op = &quick_setting_dnd_ops,
         },
+       
         {
             .priority = AEM_QUICK_SETTING_FLASHLIGHT,
             .op = &quick_setting_flash_light_ops,
@@ -669,11 +687,11 @@ aem_quick_setting_desc_t aem_quick_setting_db_begin[] =
             .priority = AEM_QUICK_SETTING_DRAIN,
             .op = &quick_setting_drain_ops,
         },
+        
         {
             .priority = AEM_QUICK_SETTING_RAISE_UP,
             .op = &quick_setting_raise_up_ops,
         },
-
         {
             .priority = AEM_QUICK_SETTING_FIND_PHONE,
             .op = &quick_setting_find_phone_ops,
@@ -682,10 +700,11 @@ aem_quick_setting_desc_t aem_quick_setting_db_begin[] =
             .priority = AEM_QUICK_SETTING_POWER_SAVE_MODE,
             .op = &quick_setting_power_save_mode_ops,
         },
+    #endif    
         {
             .priority = AEM_QUICK_SETTING_ALARM,
             .op = &quick_setting_alarm_ops,
-        },
+        }, 
 };
 
 aem_quick_setting_desc_t *aem_quick_setting_db_end = NULL;

+ 1 - 0
application/aem_watch/src/application/CMakeLists.txt

@@ -17,6 +17,7 @@ add_subdirectory_ifdef(CONFIG_AEM_APPLICATION_MINI_CHARGER mini_charger)
 add_subdirectory(tool)
 add_subdirectory(activity)
 add_subdirectory(in_out_power)
+add_subdirectory(profile_photo)
 add_subdirectory(breathe)
 add_subdirectory(calendar)
 add_subdirectory(health)

+ 5 - 596
application/aem_watch/src/application/in_out_power/aem_in_out_power.c

@@ -17,11 +17,11 @@
 #include "aem_data_share.h"
 #include "aem_in_out_power_screen.h"
 //#include "aem_activity_his_data.h"
-#define LV_COLOR_ACTIVTY_DURATION LV_COLOR_MAKE(0x51, 0x87, 0xf7)
-#define LV_COLOR_ACTIVTY_CAL LV_COLOR_MAKE(0xec, 0x48, 0x5a)
-#define LV_COLOR_ACTIVTY_STEPS LV_COLOR_MAKE(0x5e, 0xee, 0x3f)
+//#define LV_COLOR_ACTIVTY_DURATION LV_COLOR_MAKE(0x51, 0x87, 0xf7)
+//#define LV_COLOR_ACTIVTY_CAL LV_COLOR_MAKE(0xec, 0x48, 0x5a)
+//#define LV_COLOR_ACTIVTY_STEPS LV_COLOR_MAKE(0x5e, 0xee, 0x3f)
 
-#define BAR_NUM 24
+//#define BAR_NUM 24
 
 typedef struct
 {
@@ -57,600 +57,14 @@ typedef struct
 
 static activity_ui_data_t *activity_ui_data = NULL;
 
-static void get_activity_chart_series(lv_chart_series_t *series, activity_type_e type);
-
-static void draw_event_cb(lv_event_t *e)
-{
-    lv_event_code_t code = lv_event_get_code(e);
-    if (code == LV_EVENT_DRAW_PART_BEGIN)
-    {
-        lv_obj_draw_part_dsc_t *dsc = lv_event_get_param(e);
-
-        if (dsc->part == LV_PART_ITEMS)
-        {
-            dsc->rect_dsc->bg_opa = LV_OPA_TRANSP; /*We will draw it later*/
-        }
-
-        if (dsc->part == LV_PART_MAIN)
-        {
-            if (dsc->line_dsc == NULL)
-                return;
-
-            if (dsc->id == 1)
-            {
-
-                dsc->line_dsc->width = 2;
-                dsc->line_dsc->dash_gap = 6;
-                dsc->line_dsc->dash_width = 4;
-                dsc->line_dsc->color = lv_color_white();
-            }
-            else
-            {
-                dsc->line_dsc->width = 0;
-                dsc->line_dsc->dash_gap = 0;
-                dsc->line_dsc->dash_width = 0;
-            }
-        }
-    }
-    if (code == LV_EVENT_DRAW_PART_END)
-    {
-        lv_obj_draw_part_dsc_t *dsc = lv_event_get_param(e);
-        if (dsc->part == LV_PART_ITEMS)
-        {
-            lv_draw_rect_dsc_t draw_rect_dsc;
-            lv_draw_rect_dsc_init(&draw_rect_dsc);
-            lv_coord_t h = lv_area_get_height(dsc->draw_area);
-            lv_area_t a;
-            a.x1 = dsc->draw_area->x1;
-            a.x2 = dsc->draw_area->x2;
-            a.y1 = dsc->draw_area->y1;
-            a.y2 = dsc->draw_area->y2;
-            draw_rect_dsc.radius = 5;
-            draw_rect_dsc.bg_color = lv_color_hex((uint32_t)e->user_data);
-            lv_draw_rect(dsc->draw_ctx, &draw_rect_dsc, &a);
-        }
-    }
-}
-
-static lv_obj_t *aem_create_day_data_chart(lv_obj_t *parent, activity_type_e type, lv_color_t value_color, lv_color_t bg_color)
-{
-    uint32_t day_value[DAY_NUM] = {0};
-    get_day_training_value_by_type(type, day_value, DAY_NUM);
-
-    lv_obj_t *chart = lv_chart_create(parent);
-    if (!chart)
-        return NULL;
-
-    lv_obj_set_size(chart, AEM_SIZE_HOR_FACTOR_466(390), AEM_SIZE_VER_FACTOR_466(150));
-    lv_obj_align(chart, LV_ALIGN_TOP_MID, 0, 0);
-    lv_chart_set_type(chart, LV_CHART_TYPE_BAR);
-    lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 100);
-    lv_chart_set_update_mode(chart, LV_CHART_UPDATE_MODE_CIRCULAR);
-    lv_chart_set_div_line_count(chart, 0, 0);
-    lv_chart_set_point_count(chart, BAR_NUM);
-    lv_obj_set_style_bg_opa(chart, LV_OPA_TRANSP, LV_PART_MAIN);
-    lv_obj_set_style_outline_width(chart, 0, LV_PART_MAIN);
-    lv_obj_set_style_border_side(chart, LV_BORDER_SIDE_FULL, LV_PART_MAIN);
-    lv_obj_set_style_border_width(chart, 0, 0);
-    lv_obj_set_style_pad_column(chart, 6, 0);
-    lv_obj_clear_flag(chart, LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_MOMENTUM);
-    lv_obj_add_event_cb(chart, draw_event_cb, LV_EVENT_ALL, (void *)lv_color_to32(bg_color));
-    lv_chart_series_t *ser2 = lv_chart_add_series(chart, bg_color, LV_CHART_AXIS_PRIMARY_Y);
-    if (ser2)
-    {
-        for (uint8_t i = 0; i < BAR_NUM; i++)
-        {
-            lv_chart_set_next_value(chart, ser2, 100);
-        }
-    }
-
-    lv_obj_t *chart1 = lv_chart_create(parent);
-    if (chart1)
-    {
-        lv_obj_set_size(chart1, AEM_SIZE_HOR_FACTOR_466(390), AEM_SIZE_VER_FACTOR_466(150));
-        lv_obj_align(chart1, LV_ALIGN_TOP_MID, 0, 0);
-        lv_chart_set_type(chart1, LV_CHART_TYPE_BAR);
-        lv_chart_set_range(chart1, LV_CHART_AXIS_PRIMARY_Y, 0, 100);
-        lv_chart_set_update_mode(chart1, LV_CHART_UPDATE_MODE_CIRCULAR);
-        lv_chart_set_div_line_count(chart1, 0, 0);
-        lv_chart_set_point_count(chart1, BAR_NUM);
-        lv_obj_set_style_bg_opa(chart1, LV_OPA_TRANSP, LV_PART_MAIN);
-        lv_obj_set_style_border_side(chart1, LV_BORDER_SIDE_FULL, 0);
-        lv_obj_set_style_border_width(chart1, 0, 0);
-        lv_obj_set_style_pad_column(chart1, 6, 0);
-        lv_obj_add_event_cb(chart1, draw_event_cb, LV_EVENT_ALL, (void *)lv_color_to32(value_color));
-        lv_chart_series_t *ser1 = lv_chart_add_series(chart1, value_color, LV_CHART_AXIS_PRIMARY_Y);
-        for (uint8_t i = 0; i < BAR_NUM; i++)
-        {
-            uint8_t value = day_value[i];
-            if (value > 0)
-            {
-                lv_chart_set_value_by_id(chart1, ser1, i, value);
-            }
-        }
-        lv_chart_refresh(chart1);
-        get_activity_chart_series(ser1, type);
-    }
-
-    return chart;
-}
-#if 0
-static lv_img_dsc_t *get_activity_unit_img(activity_type_e type)
-{
-    lv_img_dsc_t *src = &IMG_SCENE_ACTIVITY_PIC_ACT_UNIT_STEP;
-    switch (type)
-    {
-        case ACTIVITY_STEPS:
-            src = &IMG_SCENE_ACTIVITY_PIC_ACT_UNIT_STEP;
-            break;
-        case ACTIVITY_CALORIES:
-            src = &IMG_SCENE_ACTIVITY_PIC_ACT_UNIT_CALORIE;
-            break;
-        case ACTIVITY_RUNTIME:
-            src = &IMG_SCENE_ACTIVITY_PIC_ACT_UNIT_DURATION;
-            break;
-        default:
-            break;
-    }
-    return src;
-}
-
-static char *get_activity_unit_string(activity_type_e type)
-{
-    char *str = "";
-    switch (type)
-    {
-        case ACTIVITY_STEPS:
-            str = res_manager_get_string_from_id(ID_KEY_ACTIVITY_STEP_UNIT);
-            break;
-        case ACTIVITY_CALORIES:
-            str = res_manager_get_string_from_id(ID_KEY_ACTIVITY_CALORIE_UNIT);
-            break;
-        case ACTIVITY_RUNTIME:
-            str = res_manager_get_string_from_id(ID_KEY_ACTIVITY_DURATION_UNIT);
-            break;
-        default:
-            break;
-    }
-    return str;
-}
-#endif
-static void activity_steps_screen_update()
-{
-    activity_day_data_t day_data = get_today_training_day_data();
-    if (day_data.steps != activity_ui_data->step_val)
-    {
-        // update label
-        activity_ui_data->step_val = day_data.steps;
-        if (activity_ui_data->steps_chart_value != NULL)
-        {
-            text_canvas_set_text_fmt(activity_ui_data->steps_chart_value, "%04d", day_data.steps);
-        }
-
-        // update chart
-        uint32_t step_value[DAY_NUM] = {0};
-        get_day_training_value_by_type(ACTIVITY_STEPS, step_value, DAY_NUM);
-        for (uint8_t i = 0; i < DAY_NUM; i++)
-        {
-            uint8_t value = step_value[i];
-
-            if (value > 0 && activity_ui_data->steps_chart != NULL && activity_ui_data->steps_series != NULL)
-            {
-                lv_chart_set_value_by_id(activity_ui_data->steps_chart, activity_ui_data->steps_series, i, value);
-            }
-        }
-    }
-}
-
-static void activity_calories_screen_update()
-{
-    activity_day_data_t day_data = get_today_training_day_data();
-    if (day_data.calories != activity_ui_data->calories_val)
-    {
-        // update label
-        activity_ui_data->calories_val = day_data.calories;
-        if (activity_ui_data->calorie_chart_value != NULL)
-        {
-            text_canvas_set_text_fmt(activity_ui_data->calorie_chart_value, "%04d", day_data.calories);
-        }
-
-        // update chart
-        uint32_t calories_value[DAY_NUM] = {0};
-        get_day_training_value_by_type(ACTIVITY_CALORIES, calories_value, DAY_NUM);
-        for (uint8_t i = 0; i < DAY_NUM; i++)
-        {
-            uint8_t value = calories_value[i];
-            if (value > 0 && activity_ui_data->calorie_chart != NULL && activity_ui_data->calorie_series != NULL)
-            {
-                lv_chart_set_value_by_id(activity_ui_data->calorie_chart, activity_ui_data->calorie_series, i, value);
-            }
-        }
-    }
-}
-static void activity_duration_screen_update(void)
-{
-    AEM_LOG_I("activity_duration_screen_update ...\r\n");
-    activity_day_data_t day_data = get_today_training_day_data();
-    if (day_data.durmin != activity_ui_data->runtime_val)
-    {
-        // update label
-        AEM_LOG_I("activity_duration_screen_update update label \r\n");
-        activity_ui_data->runtime_val = day_data.durmin;
-        if (activity_ui_data->duration_chart_value != NULL)
-        {
-            text_canvas_set_text_fmt(activity_ui_data->duration_chart_value, "%04d", day_data.durmin);
-        }
-
-        // update chart
-        AEM_LOG_I("activity_duration_screen_update update chart \r\n");
-        uint32_t runtime_value[DAY_NUM] = {0};
-        get_day_training_value_by_type(ACTIVITY_RUNTIME, runtime_value, DAY_NUM);
-        for (uint8_t i = 0; i < DAY_NUM; i++)
-        {
-            uint8_t value = runtime_value[i];
-            if (value > 0 && activity_ui_data->duration_chart != NULL && activity_ui_data->duration_series != NULL)
-            {
-                lv_chart_set_value_by_id(activity_ui_data->duration_chart, activity_ui_data->duration_series, i, value);
-            }
-        }
-    }
-}
-
 static void refresh_in_out_power_ui(void)
 {
     if (activity_ui_data != NULL && activity_ui_data->page_complete)
     {
         aem_in_out_power_screen_update(activity_ui_data->arc_screen);
-
-        activity_steps_screen_update();
-        activity_calories_screen_update();
-        activity_duration_screen_update();
-    }
-}
-#if 0
-static char *get_activity_goal_str_fmt(activity_type_e type)
-{
-    char *str = "%d";
-    switch (type)
-    {
-        case ACTIVITY_STEPS:
-            str = res_manager_get_string_from_id(ID_KEY_ACTIVITY_STEP_GOAL);
-            break;
-        case ACTIVITY_CALORIES:
-            str = res_manager_get_string_from_id(ID_KEY_ACTIVITY_CALORIE_GOAL);
-            break;
-        case ACTIVITY_RUNTIME:
-            str = res_manager_get_string_from_id(ID_KEY_ACTIVITY_DURATION_GOAL);
-            break;
-        default:
-            break;
     }
-    return str;
-}
-
-static void refresh_activity_goal(void)
-{
-    if (activity_ui_data != NULL && activity_ui_data->page_complete)
-    {
-        text_canvas_set_text_fmt(activity_ui_data->steps_chart_goal, 
-            get_activity_goal_str_fmt(ACTIVITY_STEPS), get_goal_value_by_type(ACTIVITY_STEPS));
-
-        text_canvas_set_text_fmt(activity_ui_data->calorie_chart_goal,
-            get_activity_goal_str_fmt(ACTIVITY_CALORIES), get_goal_value_by_type(ACTIVITY_CALORIES));
-
-        text_canvas_set_text_fmt(activity_ui_data->duration_chart_goal,
-            get_activity_goal_str_fmt(ACTIVITY_RUNTIME), get_goal_value_by_type(ACTIVITY_RUNTIME));
-    }
-}
-#endif
-static lv_obj_t *title_create(lv_obj_t *parent, const char *type_name, lv_color_t color)
-{
-    lv_obj_t *title_label = text_canvas_create(parent);
-    if (title_label)
-    {
-        text_canvas_set_text(title_label, type_name);
-        text_canvas_set_long_mode(title_label, TEXT_CANVAS_LONG_WRAP);
-        lv_obj_set_width(title_label, AEM_SIZE_HOR_FACTOR_466(282));
-        lv_obj_set_style_text_align(title_label, LV_TEXT_ALIGN_CENTER, 0);
-        lv_obj_set_style_text_color(title_label, color, LV_PART_MAIN);
-        lv_obj_set_style_text_font(title_label, aem_font_def(), 0);
-        lv_obj_align(title_label, LV_ALIGN_TOP_MID, 0, AEM_SIZE_VER_FACTOR_466(30));
-    }
-
-    return title_label;
-}
-
-static lv_obj_t *aem_activity_goal_label_create(lv_obj_t *bg, activity_type_e type)
-{
-    lv_obj_t *label_goal = text_canvas_create(bg);
-    if (label_goal)
-    {
-        lv_obj_set_width(label_goal, LV_PCT(100));
-        text_canvas_set_long_mode(label_goal, LV_LABEL_LONG_WRAP);
-        lv_obj_clear_flag(label_goal, LV_OBJ_FLAG_CLICKABLE);
-        lv_obj_set_style_text_align(label_goal, LV_TEXT_ALIGN_CENTER, 0);
-        lv_obj_set_style_text_color(label_goal, lv_palette_main(LV_PALETTE_GREY), LV_PART_MAIN);
-        lv_obj_set_style_text_font(label_goal, aem_font_sub(), LV_PART_MAIN);
-        //text_canvas_set_text_fmt(label_goal, get_activity_goal_str_fmt(type), get_goal_value_by_type(type));
-    }
-
-    return label_goal;
-}
-
-static lv_obj_t *aem_activity_value_label_create(lv_obj_t *bg, uint16_t value)
-{
-    lv_obj_t *value_label = text_canvas_create(bg);
-    if (value_label)
-    {
-        lv_obj_set_width(value_label, AEM_SIZE_HOR_FACTOR_466(250));
-        text_canvas_set_long_mode(value_label, LV_LABEL_LONG_WRAP);
-        lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
-        lv_obj_set_style_text_align(value_label, LV_TEXT_ALIGN_CENTER, 0);
-
-        lv_obj_set_style_text_color(value_label, lv_color_hex(0xffffff), LV_PART_MAIN);
-        lv_obj_set_style_text_font(value_label, aem_font_xxlarge(), LV_PART_MAIN);
-        text_canvas_set_text_fmt(value_label, "%04d", value);
-    }
-
-    return value_label;
 }
 
-static lv_obj_t *aem_activity_unit_label_create(lv_obj_t *bg, char *unit)
-{
-    if (bg == NULL || unit == NULL)
-    {
-        return NULL;
-    }
-
-    lv_obj_t *value_label = text_canvas_create(bg);
-    if (value_label)
-    {
-        lv_obj_set_style_text_color(value_label, lv_color_hex(0x808080), LV_PART_MAIN);
-        lv_obj_set_style_text_font(value_label, aem_font_sub(), LV_PART_MAIN);
-        text_canvas_set_text(value_label, unit);
-    }
-
-    return value_label;
-}
-
-static lv_obj_t *create_hour_system_label(lv_obj_t *par, char *src)
-{
-    if (par == NULL)
-    {
-        return NULL;
-    }
-
-    lv_obj_t *title_label = text_canvas_create(par);
-    if (title_label)
-    {
-        lv_obj_set_width(title_label, 90);
-        lv_obj_set_style_text_color(title_label, lv_color_hex(0x606060), 0);
-        lv_obj_set_style_text_font(title_label, aem_font_small(), LV_PART_MAIN);
-        text_canvas_set_text(title_label, src);
-    }
-
-    return title_label;
-}
-
-static void create_hours_label(lv_obj_t *par)
-{
-    if (par == NULL)
-    {
-        return;
-    }
-
-    lv_obj_t *hour_bg = aem_bg_create(par, 376, LV_SIZE_CONTENT, lv_color_hex(0x000000));
-    if (hour_bg == NULL)
-    {
-        return;
-    }
-
-    lv_obj_align(hour_bg, LV_ALIGN_BOTTOM_LEFT, 30, -100);
-    lv_obj_set_style_bg_opa(hour_bg, LV_OPA_COVER, 0);
-
-    aem_language_type_e cur_language = aem_share_get_language();
-    lv_obj_t *label0 = NULL;
-    lv_obj_t *label6 = NULL;
-    lv_obj_t *label12 = NULL;
-    lv_obj_t *label18 = NULL;
-
-    aem_time_t *time = aem_get_system_time();
-    if (false) // TODO, am pm
-    {
-        if (cur_language == AEM_LANGUAGE_CS_CZ)
-        {
-            label0 = create_hour_system_label(hour_bg, "12:00DOP.");
-            label6 = create_hour_system_label(hour_bg, "06:00");
-            label12 = create_hour_system_label(hour_bg, "12:00ODP.");
-            label18 = create_hour_system_label(hour_bg, "06:00");
-        }
-        else
-        {
-            label0 = create_hour_system_label(hour_bg, "12:00AM");
-            label6 = create_hour_system_label(hour_bg, "6:00");
-            label12 = create_hour_system_label(hour_bg, "12:00PM");
-            label18 = create_hour_system_label(hour_bg, "6:00");
-        }
-    }
-    else
-    {
-        label0 = create_hour_system_label(hour_bg, "00:00");
-        label6 = create_hour_system_label(hour_bg, "06:00");
-        label12 = create_hour_system_label(hour_bg, "12:00");
-        label18 = create_hour_system_label(hour_bg, "18:00");
-    }
-
-    if (label0 && label6 && label12 && label18)
-    {
-        lv_obj_align(label0, LV_ALIGN_LEFT_MID, 6, 0);
-        lv_obj_align(label6, LV_ALIGN_LEFT_MID, 100, 0);
-        lv_obj_align(label12, LV_ALIGN_LEFT_MID, 200, 0);
-        lv_obj_align(label18, LV_ALIGN_LEFT_MID, 300, 0);
-    }
-}
-
-static void get_activity_chart_series(lv_chart_series_t *series, activity_type_e type)
-{
-    switch (type)
-    {
-        case ACTIVITY_STEPS:
-            activity_ui_data->steps_series = series;
-            break;
-        case ACTIVITY_RUNTIME:
-            activity_ui_data->duration_series = series;
-            break;
-        case ACTIVITY_CALORIES:
-            activity_ui_data->calorie_series = series;
-            break;
-        default:
-            break;
-    }
-}
-
-static void get_activity_type_goal_label(lv_obj_t *lable, activity_type_e type)
-{
-    switch (type)
-    {
-        case ACTIVITY_STEPS:
-            activity_ui_data->steps_chart_goal = lable;
-            break;
-        case ACTIVITY_RUNTIME:
-            activity_ui_data->duration_chart_goal = lable;
-            break;
-        case ACTIVITY_CALORIES:
-            activity_ui_data->calorie_chart_goal = lable;
-            break;
-        default:
-            break;
-    }
-}
-
-static void set_activity_type_value_label(lv_obj_t *lable, activity_type_e type)
-{
-    switch (type)
-    {
-        case ACTIVITY_STEPS:
-            activity_ui_data->steps_chart_value = lable;
-            break;
-        case ACTIVITY_RUNTIME:
-            activity_ui_data->duration_chart_value = lable;
-            break;
-        case ACTIVITY_CALORIES:
-            activity_ui_data->calorie_chart_value = lable;
-            break;
-        default:
-            break;
-    }
-}
-
-static void get_activity_type_chart(lv_obj_t *chart, activity_type_e type)
-{
-    switch (type)
-    {
-        case ACTIVITY_STEPS:
-            activity_ui_data->steps_chart = chart;
-            break;
-        case ACTIVITY_RUNTIME:
-            activity_ui_data->duration_chart = chart;
-            break;
-        case ACTIVITY_CALORIES:
-            activity_ui_data->calorie_chart = chart;
-            break;
-        default:
-            break;
-    }
-}
-#if 0
-static void aem_activity_chart_create(lv_obj_t *parent, activity_type_e type, lv_color_t value_color, lv_color_t bg_color)
-{
-    // chart bg
-    lv_obj_t *bg_value = aem_bg_create(parent, LV_SIZE_CONTENT, AEM_SIZE_VER_FACTOR_466(90), lv_color_black());
-    if (bg_value)
-    {
-        lv_obj_align(bg_value, LV_ALIGN_TOP_MID, 0, AEM_SIZE_VER_FACTOR_466(86));
-
-        // rt value
-        lv_obj_t *day_value_lable = aem_activity_value_label_create(bg_value, get_today_value_by_type(type));
-        if (day_value_lable)
-        {
-            lv_obj_align(day_value_lable, LV_ALIGN_LEFT_MID, 0, 0);
-            set_activity_type_value_label(day_value_lable, type);
-
-            // unit
-            //lv_obj_t *unit_lable = aem_activity_unit_label_create(bg_value, get_activity_unit_string(type));
-            //if (unit_lable)
-            //{
-            //    lv_obj_align_to(unit_lable, day_value_lable, LV_ALIGN_OUT_RIGHT_BOTTOM, AEM_SIZE_HOR_FACTOR_466(10), AEM_SIZE_VER_FACTOR_466(-14));
-            //}
-
-            // icon
-            //lv_obj_t *icon = lv_img_create(bg_value);
-            //if (icon)
-            //{
-            //    lv_img_set_src(icon, get_activity_unit_img(type));
-            //    lv_obj_align_to(icon, day_value_lable, LV_ALIGN_OUT_RIGHT_TOP, AEM_SIZE_HOR_FACTOR_466(10), AEM_SIZE_VER_FACTOR_466(10));
-            //}
-        }
-    }
-
-    // chart bg
-    lv_obj_t *bg_chart = aem_bg_create(parent, AEM_SIZE_HOR_FACTOR_466(400), AEM_SIZE_VER_FACTOR_466(200), lv_color_hex(0x1C1C1C));
-    if (bg_chart)
-    {
-        lv_obj_align(bg_chart, LV_ALIGN_TOP_MID, 0, AEM_SIZE_VER_FACTOR_466(184));
-        lv_obj_set_style_radius(bg_chart, 20, LV_PART_MAIN);
-        lv_obj_set_style_opa(bg_chart, LV_OPA_TRANSP, LV_PART_MAIN);
-
-        // chart
-        lv_obj_t *chart = aem_create_day_data_chart(bg_chart, type, value_color, bg_color);
-        if (chart)
-        {
-            get_activity_type_chart(chart, type);
-        }
-    }
-
-    // hours label
-    create_hours_label(parent);
-
-    // goal label
-    lv_obj_t *goal_lable = aem_activity_goal_label_create(parent, type);
-    if (goal_lable)
-    {
-        lv_obj_align(goal_lable, LV_ALIGN_BOTTOM_MID, 0, AEM_SIZE_VER_FACTOR_466(-30));
-        get_activity_type_goal_label(goal_lable, type);
-    }
-}
-
-static void delay_create_other_screen(void)
-{
-    if (activity_ui_data == NULL || activity_ui_data->s_app_bg == NULL)
-    {
-        return;
-    }
-
-    lv_obj_t *bg = activity_ui_data->s_app_bg;
-    lv_obj_t *screen2 = aem_bg_create(bg, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
-    if (screen2)
-    {
-        title_create(screen2, res_manager_get_string_from_id(ID_KEY_WORKOUT_STEPS), lv_color_white());
-        aem_activity_chart_create(screen2, ACTIVITY_STEPS, (lv_color_t)LV_COLOR_ACTIVTY_STEPS, lv_color_hex(0x1a1a1a));
-    }
-
-    lv_obj_t *screen3 = aem_bg_create(bg, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
-    if (screen3)
-    {
-        title_create(screen3, res_manager_get_string_from_id(ID_KEY_WORKOUT_CALORIE), lv_color_white());
-        aem_activity_chart_create(screen3, ACTIVITY_CALORIES, (lv_color_t)LV_COLOR_ACTIVTY_CAL, lv_color_hex(0x1a1a1a));
-    }
-
-    lv_obj_t *screen4 = aem_bg_create(bg, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
-    if (screen4)
-    {
-        title_create(screen4, res_manager_get_string_from_id(ID_KEY_WORKOUT_TIME), lv_color_white());
-        aem_activity_chart_create(screen4, ACTIVITY_RUNTIME, (lv_color_t)LV_COLOR_ACTIVTY_DURATION, lv_color_hex(0x1a1a1a));
-    }
-}
-#endif
 static void delay_timer_cb(struct _lv_timer_t *timer)
 {
     if (activity_ui_data->timer)
@@ -771,14 +185,9 @@ static void on_stop(void)
     activity_ui_data = NULL;
 }
 
-static int32_t homekey_handler(lv_key_t key, lv_indev_state_t event)
-{
-    return 1;
-}
-
 static void on_ui_refresh(aem_msg_t *msg)
 {
-    AEM_LOG_I("activity on_ui_refresh, msg:%d\n", msg->sub_type);
+    AEM_LOG_I("in_out_power on_ui_refresh, msg:%d\n", msg->sub_type);
     if (msg->sub_type == UI_IN_OUT_POWER_REFRESH && activity_ui_data->page_complete)
     {
         refresh_in_out_power_ui();

+ 13 - 5
application/aem_watch/src/application/in_out_power/aem_in_out_power_screen.c

@@ -10,6 +10,7 @@
 #include "aem_app_fwk.h"
 #include "text_canvas.h"
 #include "aem_txt.h"
+#include "aem_gesture.h"
 
 #define ARC_WIDTH 54
 
@@ -284,6 +285,8 @@ lv_obj_t *aem_in_out_power_screen_create(lv_obj_t *par, bool widget_start)
         lv_obj_add_event_cb(screen1, bg_event_cb, LV_EVENT_SHORT_CLICKED, ext_data);
 
         aem_in_out_power_arc_show_create(screen1);
+
+        aem_gesture_enable();  //Enable gesture
     }
 
     return screen1;
@@ -304,18 +307,23 @@ void aem_in_out_power_screen_del(lv_obj_t *par)
         lv_obj_set_user_data(par, NULL);
     }
 }
+#define RELEASE_FW_EN 0
+
+#if RELEASE_FW_EN
 extern float f_BusVoltage[2];
 extern float f_Power[2];
 extern float f_Current[2];
+#endif
 void aem_in_out_power_screen_update(lv_obj_t *par)
 {
     in_out_power_scr_ui_data_t *power_volt_cur_data = lv_obj_get_user_data(par);
 
-    
-    //float f_Power[2] = {10.0, 12.0};
-    //float f_BusVoltage[2] = {5.00, 4.00};
-    //float f_Current[2] = {2.00, 3.00};
-    
+#if (RELEASE_FW_EN == 0)
+    float f_Power[2] = {10.0, 12.0};
+    float f_BusVoltage[2] = {5.00, 4.00};
+    float f_Current[2] = {2.00, 3.00};
+#endif
+
     if (power_volt_cur_data)
     {
         char str_data[32] = {0};

+ 9 - 0
application/aem_watch/src/application/profile_photo/CMakeLists.txt

@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: Apache-2.0
+zephyr_include_directories(
+	.
+	include
+)
+
+zephyr_library_sources( aem_profile_photo.c)
+zephyr_library_sources( aem_widget_profile_photo.c)
+zephyr_library_sources( aem_profile_photo_screen.c)

+ 177 - 0
application/aem_watch/src/application/profile_photo/aem_profile_photo.c

@@ -0,0 +1,177 @@
+#include "aem_profile_photo.h"
+#include "aem_activity_data_if.h"
+#include "aem_icon_double_label_item.h"
+#include "aem_bg.h"
+#include "aem_page.h"
+#include "aem_app_activity.h"
+#include "app_ui.h"
+#include "aem_workout_res.h"
+#include "aem_log.h"
+#include <lvgl/lvgl_res_loader.h>
+#include <lvgl/lvgl_bitmap_font.h>
+#include "simple_img.h"
+#include "text_canvas.h"
+#include "aem_sys_function_interface.h"
+#include "aem_title.h"
+#include "aem_app_fwk.h"
+#include "aem_data_share.h"
+#include "aem_profile_photo_screen.h"
+//#include "aem_activity_his_data.h"
+
+typedef struct
+{
+    lv_obj_t *arc_screen;
+
+    bool s_is_frist;
+    bool page_complete;
+    lv_obj_t *s_app_bg;
+
+    lv_timer_t *timer;
+
+} activity_ui_data_t;
+
+static activity_ui_data_t *activity_ui_data = NULL;
+
+static void refresh_profile_photo_ui(void)
+{
+    if (activity_ui_data != NULL && activity_ui_data->page_complete)
+    {
+        aem_profile_photo_screen_update(activity_ui_data->arc_screen);
+    }
+}
+
+static void delay_timer_cb(struct _lv_timer_t *timer)
+{
+    if (activity_ui_data->timer)
+    {
+        lv_timer_del(activity_ui_data->timer);
+        activity_ui_data->timer = NULL;
+    }
+
+    //delay_create_other_screen();
+    activity_ui_data->page_complete = true;
+    refresh_profile_photo_ui();
+}
+
+static void sim_timer_cb(struct _lv_timer_t *timer)
+{
+    refresh_profile_photo_ui();
+}
+
+lv_obj_t *profile_photo_ui_init(lv_obj_t *par)
+{
+    if (par == NULL)
+    {
+        par = lv_scr_act();
+    }
+
+    // page
+    lv_obj_t *bg = aem_page_create(lv_scr_act());
+    if (bg == NULL)
+    {
+        return NULL;
+    }
+
+    lv_obj_set_user_data(bg, activity_ui_data);
+    activity_ui_data->s_app_bg = bg;
+    aem_page_set_auto_align(bg, true);
+
+    lv_obj_t *screen1 = aem_bg_create(bg, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
+    if (screen1)
+    {
+        activity_ui_data->arc_screen = aem_profile_photo_screen_create(screen1, false);
+    }
+
+    activity_ui_data->timer = lv_timer_create(delay_timer_cb, 300, NULL);
+    if (activity_ui_data->timer)
+    {
+        lv_timer_set_repeat_count(activity_ui_data->timer, 1);
+    }
+
+#ifdef CONFIG_SIMULATOR
+    lv_timer_create(sim_timer_cb, 1000, NULL);
+#endif
+
+    return bg;
+}
+
+static void load_font(void)
+{
+}
+
+static void on_start(void)
+{
+    // app data
+    if (activity_ui_data == NULL)
+    {
+        activity_ui_data = lv_mem_alloc(sizeof(activity_ui_data_t));
+        if (activity_ui_data != NULL)
+        {
+            lv_memset(activity_ui_data, 0, sizeof(activity_ui_data_t));
+            activity_ui_data->s_is_frist = true;
+        }
+    }
+
+    load_font();
+    ///*测试接口数据activity_his_yesterday_data_get*/
+    //activity_his_data_diatance_t data = {0};
+    //uint8_t ret = activity_his_yesterday_data_get(&data);
+    //AEM_LOG_I("activity_his_yesterday_data_get:%d ,%lu ,%lu\r\n", data.distance, data.his_data.head.day_step_count, data.his_data.head.day_active_time);
+    //AEM_LOG_I("activity_his_yesterday_time:%d ,%d\r\n", data.his_data.head.date.day, data.his_data.head.date.month);
+    //AEM_LOG_I("TT_ACTIVITY_ONSTART:%d\r\n", ret);
+}
+
+static void on_resume(void)
+{
+    if (activity_ui_data && activity_ui_data->s_is_frist)
+    {
+        profile_photo_ui_init(NULL);
+        activity_ui_data->s_is_frist = false;
+    }
+}
+
+static void on_pause(void)
+{
+}
+
+static void on_stop(void)
+{
+    if (activity_ui_data == NULL)
+    {
+        return;
+    }
+
+    activity_ui_data->page_complete = false;
+    aem_profile_photo_screen_del(activity_ui_data->arc_screen);
+
+    if (activity_ui_data->s_app_bg != NULL)
+    {
+        lv_obj_del(activity_ui_data->s_app_bg);
+        activity_ui_data->s_app_bg = NULL;
+    }
+
+    if (activity_ui_data->timer)
+    {
+        lv_timer_del(activity_ui_data->timer);
+        activity_ui_data->timer = NULL;
+    }
+
+    lv_mem_free(activity_ui_data);
+    activity_ui_data = NULL;
+}
+
+static void on_ui_refresh(aem_msg_t *msg)
+{
+    AEM_LOG_I("profile_photo on_ui_refresh, msg:%d\n", msg->sub_type);
+    if (msg->sub_type == UI_PROFILE_PHOTO_REFRESH && activity_ui_data->page_complete)
+    {
+        refresh_profile_photo_ui();
+    }
+}
+
+void aem_profile_photo_create(void)
+{
+    aem_app_launch(AEM_APP_ID_PROFILE_PHOTO, AEM_APP_PROFILE_PHOTO, on_start, on_resume, on_pause, on_stop, on_ui_refresh, NULL);
+}
+
+AEM_APP_DEFINE(AEM_APP_ID_PROFILE_PHOTO, AEM_DEFAULT_APP, ID_KEY_WIDGET_PROFILE_PHOTO, IMG_SCENE_APPLIST_RES_PROFILE_PHOTO_PIC_ICON, aem_profile_photo_create);

+ 8 - 0
application/aem_watch/src/application/profile_photo/aem_profile_photo.h

@@ -0,0 +1,8 @@
+#ifndef _AEM_ACTIVITY_H_
+#define _AEM_ACTIVITY_H_
+
+#include "aem_activity_data_if.h"
+#include "lvgl.h"
+
+void aem_profile_photo_create(void);
+#endif

+ 255 - 0
application/aem_watch/src/application/profile_photo/aem_profile_photo_screen.c

@@ -0,0 +1,255 @@
+
+
+#include "aem_profile_photo_screen.h"
+#include "app_ui.h"
+
+#include "aem_workout_res.h"
+#include "aem_sys_function_interface.h"
+#include "aem_bg.h"
+#include "aem_profile_photo.h"
+#include "aem_app_fwk.h"
+#include "text_canvas.h"
+#include "aem_txt.h"
+
+#define ARC_WIDTH 54
+
+#define LV_COLOR_BLUE LV_COLOR_MAKE(0x36, 0xdc, 0xff)
+#define LV_COLOR_GREEN LV_COLOR_MAKE(0x88, 0xff, 0x56)
+#define LV_COLOR_BLACK LV_COLOR_MAKE(0x00, 0x00, 0x00)
+#define LV_COLOR_WHITE LV_COLOR_MAKE(0xff, 0xff, 0xff)
+
+typedef struct
+{
+    lv_obj_t *in_power_value;
+    lv_obj_t *in_voltage_value;
+    lv_obj_t *in_current_value;
+    
+    lv_obj_t *out_power_value;
+    lv_obj_t *out_voltage_value;
+    lv_obj_t *out_current_value;
+    bool widget_start;
+
+} profile_photo_scr_ui_data_t;
+
+static void *load_res()
+{
+    profile_photo_scr_ui_data_t *ext_data = lv_mem_alloc(sizeof(profile_photo_scr_ui_data_t));
+    if (ext_data == NULL)
+    {
+        return NULL;
+    }
+    lv_memset(ext_data, 0, sizeof(profile_photo_scr_ui_data_t));
+
+    return ext_data;
+}
+
+static lv_obj_t *activity_value_item_create(lv_obj_t *par, lv_color_t value_color,
+                                            char *value, lv_coord_t hight, const lv_font_t *value_font)
+{
+    if (par == NULL)
+    {
+        return NULL;
+    }
+
+    lv_obj_t *bg = aem_bg_create(par, AEM_SIZE_HOR_FACTOR_466(360), AEM_SIZE_VER_FACTOR_466(hight), lv_color_black());
+    if (bg == NULL)
+    {
+        return NULL;
+    }
+
+    lv_obj_set_style_bg_opa(bg, LV_OPA_TRANSP, LV_PART_MAIN);  //设置背景透明度
+    //lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
+
+    lv_obj_t *value_label = text_canvas_create(bg);
+    if (value_label)
+    {
+        lv_obj_set_width(value_label, AEM_SIZE_HOR_FACTOR_466(140));
+        text_canvas_set_long_mode(value_label, LV_LABEL_LONG_SCROLL_CIRCULAR);
+        lv_obj_set_style_text_align(value_label, LV_TEXT_ALIGN_LEFT, 0);
+        //lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
+        lv_obj_set_style_text_color(value_label, value_color, 0);
+        lv_obj_set_style_text_font(value_label, value_font, 0);
+        text_canvas_set_text(value_label, value);
+        lv_obj_align(value_label, LV_ALIGN_CENTER, 0, 0);
+    }
+
+    return bg;
+}
+
+#define POWER_WIDTH 140
+static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
+{
+    profile_photo_scr_ui_data_t *activity_ui_data = lv_obj_get_user_data(par);
+    activity_day_data_t day_data = get_today_training_day_data();
+
+    // Arcs
+    lv_obj_t *arc_bg = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
+    if (arc_bg)
+    {
+        lv_obj_t *photo_icon = lv_img_create(arc_bg);
+        if (photo_icon)
+        {
+            //lv_obj_clear_flag(photo_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_img_set_src(photo_icon, &IMG_SCENE_PROFILE_PHOTO_PIC_PHOTO_MALE);
+            lv_obj_align(photo_icon, LV_ALIGN_CENTER, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
+        }
+
+        char *in_power_data = aem_auto_release_txt_fmt("%d", day_data.steps);
+        lv_obj_t *in_power_item = activity_value_item_create(par, (lv_color_t)LV_COLOR_WHITE, in_power_data, 50, aem_font_sub());
+        //lv_obj_set_style_bg_color(in_power_item, (lv_color_t)LV_COLOR_GREEN, 0);
+        //lv_obj_set_style_radius(in_power_item, AEM_SIZE_FACTOR_466(10), 0);
+        lv_obj_set_style_width(in_power_item, AEM_SIZE_FACTOR_466(POWER_WIDTH), 0);
+
+        if (in_power_item)
+        {
+            activity_ui_data->in_power_value = lv_obj_get_child(in_power_item, 0);
+        }
+
+        lv_obj_align(in_power_item, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(195), AEM_SIZE_VER_FACTOR_466(135));
+        
+        lv_obj_t *in_power_unit_label = text_canvas_create(in_power_item);
+        if (in_power_unit_label)
+        {
+            lv_obj_set_style_text_font(in_power_unit_label, aem_font_small(), 0);
+            text_canvas_set_text(in_power_unit_label, "mW");
+            lv_obj_set_style_text_color(in_power_unit_label, (lv_color_t)LV_COLOR_WHITE, 0);
+            lv_obj_align(in_power_unit_label, LV_ALIGN_TOP_MID, AEM_SIZE_HOR_FACTOR_466(34), AEM_SIZE_VER_FACTOR_466(18));
+        }
+
+        char *out_power_data = aem_auto_release_txt_fmt("%d", day_data.steps);
+        lv_obj_t *out_power_item = activity_value_item_create(par, (lv_color_t)LV_COLOR_WHITE, out_power_data, 50, aem_font_sub());
+        //lv_obj_set_style_bg_color(out_power_item, (lv_color_t)LV_COLOR_GREEN, 0);
+        //lv_obj_set_style_radius(out_power_item, AEM_SIZE_FACTOR_466(10), 0);
+        lv_obj_set_style_width(out_power_item, AEM_SIZE_FACTOR_466(POWER_WIDTH), 0);
+
+        if (out_power_item)
+        {
+            activity_ui_data->out_power_value = lv_obj_get_child(out_power_item, 0);
+        }
+
+        lv_obj_align(out_power_item, LV_ALIGN_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(-180), AEM_SIZE_VER_FACTOR_466(185));
+
+        lv_obj_t *out_power_unit_label = text_canvas_create(out_power_item);
+        if (out_power_unit_label)
+        {
+            lv_obj_set_style_text_font(out_power_unit_label, aem_font_small(), 0);
+            text_canvas_set_text(out_power_unit_label, "mW");
+            lv_obj_set_style_text_color(out_power_unit_label, (lv_color_t)LV_COLOR_WHITE, 0);
+            lv_obj_align(out_power_unit_label, LV_ALIGN_TOP_MID, AEM_SIZE_HOR_FACTOR_466(34), AEM_SIZE_VER_FACTOR_466(18));
+        }
+
+        lv_obj_t *in_icon = lv_img_create(arc_bg);
+        if (in_icon)
+        {
+            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_img_set_src(in_icon, &IMG_SCENE_PROFILE_PHOTO_PIC_IN);
+            lv_obj_align(in_icon, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(150), AEM_SIZE_VER_FACTOR_466(135));
+        }
+
+        lv_obj_t *out_icon = lv_img_create(arc_bg);
+        if (out_icon)
+        {
+            //lv_obj_clear_flag(out_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_img_set_src(out_icon, &IMG_SCENE_PROFILE_PHOTO_PIC_OUT);
+            lv_obj_align(out_icon, LV_ALIGN_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(-150), AEM_SIZE_VER_FACTOR_466(185));
+        } 
+    }
+
+    return par;
+}
+
+static void bg_event_cb(lv_event_t *event)
+{
+    if (event->code == LV_EVENT_SHORT_CLICKED)
+    {
+        profile_photo_scr_ui_data_t *ext_data = event->user_data;
+        if (ext_data && ext_data->widget_start)
+        {
+            aem_app_run(AEM_APP_ID_PROFILE_PHOTO);
+        }
+    }
+}
+
+lv_obj_t *aem_profile_photo_screen_create(lv_obj_t *par, bool widget_start)
+{
+    profile_photo_scr_ui_data_t *ext_data = load_res();
+    if (ext_data == NULL)
+    {
+        return NULL;
+    }
+   
+    ext_data->widget_start = widget_start;
+    lv_obj_t *screen1 = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
+    if (screen1)
+    {
+        lv_obj_set_user_data(screen1, ext_data);
+        lv_obj_add_event_cb(screen1, bg_event_cb, LV_EVENT_SHORT_CLICKED, ext_data);
+
+        aem_profile_photo_arc_show_create(screen1);
+    }
+
+    return screen1;
+}
+
+void aem_profile_photo_screen_del(lv_obj_t *par)
+{
+    if (par == NULL)
+    {
+        return;
+    }
+
+    profile_photo_scr_ui_data_t *ext_data = lv_obj_get_user_data(par);
+    if (ext_data)
+    {
+        lv_mem_free(ext_data);
+        ext_data = NULL;
+        lv_obj_set_user_data(par, NULL);
+    }
+}
+#define RELEASE_FW_EN 0
+
+#if RELEASE_FW_EN
+//extern float f_BusVoltage[2];
+extern float f_Power[2];
+//extern float f_Current[2];
+#endif
+void aem_profile_photo_screen_update(lv_obj_t *par)
+{
+    profile_photo_scr_ui_data_t *power_volt_cur_data = lv_obj_get_user_data(par);
+
+#if (RELEASE_FW_EN == 0)
+    float f_Power[2] = {10.0, 12.0};
+    //float f_BusVoltage[2] = {5.00, 4.00};
+    //float f_Current[2] = {2.00, 3.00};
+#endif
+
+    if (power_volt_cur_data)
+    {
+        char str_data[32] = {0};
+
+        //if (power_volt_cur_data->in_power_value)
+        {
+            sprintf(str_data, "%05.2f", f_Power[1]);
+            text_canvas_set_text(power_volt_cur_data->in_power_value, str_data);
+            
+            sprintf(str_data, "%05.2f", f_Power[0]);
+            text_canvas_set_text(power_volt_cur_data->out_power_value, str_data);
+        }
+        //if (power_volt_cur_data->in_voltage_value)
+        {
+            //sprintf(str_data, "%05.2f", f_BusVoltage[1]);
+            //text_canvas_set_text(power_volt_cur_data->in_voltage_value, str_data);
+            
+            //sprintf(str_data, "%05.2f", f_BusVoltage[0]);
+            //text_canvas_set_text(power_volt_cur_data->out_voltage_value, str_data);
+        }
+        //if (power_volt_cur_data->in_current_value)
+        {
+            //sprintf(str_data, "%05.2f", f_Current[1]);
+            //text_canvas_set_text(power_volt_cur_data->in_current_value, str_data);
+            
+            //sprintf(str_data, "%05.2f", f_Current[0]);
+            //text_canvas_set_text(power_volt_cur_data->out_current_value, str_data);
+        }
+    }
+}

+ 12 - 0
application/aem_watch/src/application/profile_photo/aem_profile_photo_screen.h

@@ -0,0 +1,12 @@
+#ifndef AEM_ACTIVITY_SCREEN_H
+#define AEM_ACTIVITY_SCREEN_H
+
+#include "aem_activity_data_if.h"
+#include "lvgl.h"
+
+lv_obj_t *aem_profile_photo_screen_create(lv_obj_t *par, bool widget_start);
+
+void aem_profile_photo_screen_update(lv_obj_t *par);
+void aem_profile_photo_screen_del(lv_obj_t *par);
+
+#endif

+ 153 - 0
application/aem_watch/src/application/profile_photo/aem_widget_profile_photo.c

@@ -0,0 +1,153 @@
+/**
+ * @FileName     : aem_widget_profile_photo.c
+ * @Author       : wingcool_group
+ * @CreateDate   : 2024/11/29 15:52:32
+ * @Description  : profile_photo
+ **/
+
+#include "aem_watchface_mgr.h"
+#include "aem_app_activity.h"
+#include "aem_time.h"
+#include "aem_log.h"
+#include "aem_bg.h"
+#include "aem_sys_function_interface.h"
+#include "aem_profile_photo_screen.h"
+#include "res_include.h"
+#include "app_ui.h"
+
+typedef struct
+{
+    lv_obj_t *bg;
+    lv_timer_t *timer;
+} aem_wf_profile_photo_t;
+
+static aem_wf_profile_photo_t *s_wf_profile_photo = NULL;
+
+static void timer_cb(lv_timer_t *t)
+{
+    if (s_wf_profile_photo == NULL)
+        return;
+    if (s_wf_profile_photo->bg == NULL)
+        return;
+
+    aem_profile_photo_screen_update(s_wf_profile_photo->bg);
+}
+
+static int32_t keypad_evt_handler(aem_key_evt_info_t *evt_info)
+{
+    return 0;
+}
+
+static const aem_sys_evt_ops_t ops = {
+    .key_evt_func = keypad_evt_handler,
+};
+
+static lv_obj_t *on_start(lv_obj_t *par)
+{
+    if (s_wf_profile_photo == NULL)
+    {
+        s_wf_profile_photo = lv_mem_alloc(sizeof(aem_wf_profile_photo_t));
+        if (s_wf_profile_photo)
+        {
+            memset(s_wf_profile_photo, 0, sizeof(aem_wf_profile_photo_t));
+            s_wf_profile_photo->bg = aem_profile_photo_screen_create(par, true);
+            return s_wf_profile_photo->bg;
+        }
+    }
+
+    return NULL;
+}
+
+static void on_resume()
+{
+    if (s_wf_profile_photo == NULL)
+        return;
+
+    if (s_wf_profile_photo->timer == NULL)
+    {
+        s_wf_profile_photo->timer = lv_timer_create(timer_cb, 1000, NULL);
+        if (s_wf_profile_photo->timer)
+        {
+            lv_timer_ready(s_wf_profile_photo->timer);            
+        }
+
+    }
+    else
+    {
+        lv_timer_resume(s_wf_profile_photo->timer);
+    }
+}
+
+static void on_suspend()
+{
+    if (s_wf_profile_photo == NULL)
+        return;
+
+    if (s_wf_profile_photo->timer)
+    {
+        lv_timer_pause(s_wf_profile_photo->timer);
+    }
+}
+
+static void on_close()
+{
+    if (s_wf_profile_photo == NULL)
+        return;
+
+    if (s_wf_profile_photo->timer)
+    {
+        lv_timer_del(s_wf_profile_photo->timer);
+        s_wf_profile_photo->timer = NULL;
+    }
+    if (s_wf_profile_photo->bg)
+    {
+        aem_profile_photo_screen_del(s_wf_profile_photo->bg);
+
+        lv_obj_del(s_wf_profile_photo->bg);
+        s_wf_profile_photo->bg = NULL;
+    }
+    lv_mem_free(s_wf_profile_photo);
+    s_wf_profile_photo = NULL;
+}
+
+static void on_ui_refresh(aem_msg_t *msg)
+{
+}
+
+static void on_edit(lv_obj_t *edit_img)
+{
+}
+
+static char *get_name(void)
+{
+    return res_manager_get_string_from_id(ID_KEY_WIDGET_PROFILE_PHOTO);
+}
+
+static void *get_edit_img(void)
+{
+    return &IMG_SCENE_LAUNCH_PIC_PROFILE_PHOTO;
+}
+
+static void update_visible(aem_time_t *current_time)
+{
+}
+
+static void update_invisible(aem_time_t *current_time)
+{
+}
+
+const aem_clock_ops_t profile_photo_ops =
+{
+    .start = on_start,
+    .pause = on_suspend,
+    .resume = on_resume,
+    .stop = on_close,
+    .edit = on_edit,
+    .edit_img = get_edit_img,
+    .name = get_name,
+    .update_visible = update_visible,
+    .update_invisible = update_invisible,
+    .refresh = on_ui_refresh,
+};
+
+AEM_BUILTIN_WATCHFACE_REGISTER(WIDGET_ID_PROFILE_PHOTO, 0, NULL, &profile_photo_ops);

+ 27 - 10
application/aem_watch/src/application/quick_settings/aem_quick_setting.c

@@ -50,9 +50,10 @@ typedef struct
     lv_obj_t *ble;
     lv_obj_t *date;
     lv_obj_t *time;
-    lv_obj_t *bat_bar;
-    lv_obj_t *bat_text;
-    lv_obj_t *bat_img;
+    //lv_obj_t *bat_bar;
+    //lv_obj_t *bat_text;
+    //lv_obj_t *bat_img;
+    lv_obj_t *link_img;
     lv_obj_t *tips;
     lv_timer_t *timer;
     bool bg_anim_completed;
@@ -63,17 +64,18 @@ static lv_obj_t *ctr_center_bg = NULL;
 
 static lv_obj_t *create_cards(lv_obj_t *par);
 static lv_obj_t *create_status_bar(lv_obj_t *par);
-static void create_battery(lv_obj_t *par);
-static void create_battery_img_status(void);
+//static void create_battery(lv_obj_t *par);
+//static void create_battery_img_status(void);
 static void del_cards(void);
 static void del_tips(lv_timer_t *t);
 static void on_ui_refresh(aem_msg_t *msg);
 static int32_t keypad_evt_handler(aem_key_evt_info_t *evt_info);
 
-static lv_img_dsc_t *get_img[2] =
+static lv_img_dsc_t *get_img[3] =
 {
     &IMG_SCENE_POWER_SAVING_PIC_DISCONNECT,
     &IMG_SCENE_POWER_SAVING_PIC_CONNECT,
+    &IMG_SCENE_QUICK_SETTINGS_PIC_LINK,
 };
 
 static res_string_id_e week_str[7] =
@@ -220,7 +222,8 @@ static lv_obj_t *create_status_bar(lv_obj_t *par)
     {
         lv_obj_align(bg, LV_ALIGN_BOTTOM_MID, 0, 0);
     }
-
+    
+#if 1
     // week and date
     quick_settings->date = text_canvas_create(bg);
     if (quick_settings->date)
@@ -235,7 +238,8 @@ static lv_obj_t *create_status_bar(lv_obj_t *par)
     }
 
     // battery
-    create_battery(bg);
+    //create_battery(bg);
+
 
     // time
     quick_settings->time = text_canvas_create(bg);
@@ -250,6 +254,15 @@ static lv_obj_t *create_status_bar(lv_obj_t *par)
         lv_obj_set_width(quick_settings->time, 200);
         lv_obj_align(quick_settings->time, LV_ALIGN_BOTTOM_MID, 0, AEM_SIZE_FACTOR_466(quick_status_time_y));
     }
+#endif
+    quick_settings->link_img = simple_img_create(bg);
+    if (quick_settings->link_img)
+    {
+        simple_img_set_src(quick_settings->link_img, &get_img[2]);
+        simple_img_set_pivot(quick_settings->link_img, get_img[2]->header.w >> 1, get_img[2]->header.h >> 1);
+        simple_img_set_angle(quick_settings->link_img, quick_max_angle + quick_rotate_angle);
+        lv_obj_align(quick_settings->link_img, LV_ALIGN_BOTTOM_MID, AEM_SIZE_FACTOR_466(-quick_status_ble_x), AEM_SIZE_FACTOR_466(quick_status_ble_y));
+    }
 
     quick_settings->ble = simple_img_create(bg);
     if (quick_settings->ble)
@@ -262,7 +275,7 @@ static lv_obj_t *create_status_bar(lv_obj_t *par)
 
     return bg;
 }
-
+#if 0
 static void create_battery(lv_obj_t *par)
 {
     if (par == NULL)
@@ -337,7 +350,7 @@ static void create_battery_img_status(void)
         lv_obj_add_flag(quick_settings->bat_img, LV_OBJ_FLAG_HIDDEN);
     }
 }
-
+#endif
 static void del_tips(lv_timer_t *t)
 {
     if (ctr_center_bg == NULL || quick_settings == NULL)
@@ -453,6 +466,7 @@ static void on_ui_refresh(aem_msg_t *msg)
         text_canvas_set_text_fmt(quick_settings->time, "%02d:%02d", time->hour, time->min);
     }
 
+#if 0    
     create_battery_img_status();
     battery_info_t *bat_info = aem_share_get_battery_info();
     if (quick_settings->bat_text != NULL)
@@ -465,11 +479,14 @@ static void on_ui_refresh(aem_msg_t *msg)
         lv_obj_set_style_bg_color(quick_settings->bat_bar, aem_get_battery_color(), LV_PART_INDICATOR);
         lv_bar_set_value(quick_settings->bat_bar, bat_info->level, LV_ANIM_ON);
     }
+#endif    
     if (quick_settings->ble != NULL)
     {
         simple_img_set_src(quick_settings->ble, get_img[aem_share_get_ble_connect_status()]);
     }
 
+    simple_img_set_src(quick_settings->link_img, get_img[2]);
+
     if (msg == NULL)
         return;
 

+ 6 - 5
application/aem_watch/src/application/quick_settings/aem_quick_setting_alarm.c

@@ -4,16 +4,15 @@
 // #include "quick_setting_service.h"
 #include "aem_app_fwk.h"
 #include "simple_img.h"
-
+#if 1
 typedef struct
 {
     lv_obj_t *btn;
 } alarm_ui_t;
 static alarm_ui_t *s_ui = NULL;
 
-static lv_img_dsc_t *get_img[2] = {
-    &IMG_SCENE_QUICK_SETTINGS_PIC_ALARM,
-    &IMG_SCENE_QUICK_SETTINGS_PIC_ALARMS,
+static lv_img_dsc_t *get_img[1] = {
+    &IMG_SCENE_QUICK_SETTINGS_PIC_TIME_DATE_SETTING,
 };
 
 static void card_event_cb(lv_event_t *e)
@@ -23,7 +22,7 @@ static void card_event_cb(lv_event_t *e)
 
     if (LV_EVENT_PRESSED == e->code)
     {
-        simple_img_set_src(s_ui->btn, get_img[1]);
+        simple_img_set_src(s_ui->btn, get_img[0]);
     }
     else if (LV_EVENT_RELEASED == e->code)
     {
@@ -48,6 +47,7 @@ void alarm_btn_create(lv_obj_t *card_bg)
     lv_memset(s_ui, 0, sizeof(alarm_ui_t));
 
     s_ui->btn = aem_waterfall_btn_create(card_bg, QUICK_SETTING_CARD_SIZE, QUICK_SETTING_CARD_SIZE, get_img[0]);
+    lv_obj_align(s_ui->btn, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(0), 0);
     lv_obj_add_event_cb(s_ui->btn, card_event_cb, LV_EVENT_ALL, NULL);
 }
 
@@ -73,3 +73,4 @@ const aem_quick_setting_ops_t quick_setting_alarm_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_ALARM, (aem_quick_setting_ops_t *)&quick_setting_alarm_ops);
+#endif

+ 5 - 5
application/aem_watch/src/application/quick_settings/aem_quick_setting_app_settings.c

@@ -11,10 +11,9 @@ typedef struct
 } app_settings_ui_t;
 static app_settings_ui_t *s_ui = NULL;
 
-static lv_img_dsc_t *get_img[2] =
-    {
-        &IMG_SCENE_QUICK_SETTINGS_PIC_SETTING,
-        &IMG_SCENE_QUICK_SETTINGS_PIC_SETTINGS,
+static lv_img_dsc_t *get_img[1] =
+{
+    &IMG_SCENE_QUICK_SETTINGS_PIC_BLUETOOTH_SETTING,
 };
 
 static void card_event_cb(lv_event_t *e)
@@ -24,7 +23,7 @@ static void card_event_cb(lv_event_t *e)
 
     if (LV_EVENT_PRESSED == e->code)
     {
-        simple_img_set_src(s_ui->btn, get_img[1]);
+        simple_img_set_src(s_ui->btn, get_img[0]);
     }
     else if (LV_EVENT_RELEASED == e->code)
     {
@@ -49,6 +48,7 @@ static void app_settings_btn_create(lv_obj_t *card_bg)
     lv_memset(s_ui, 0, sizeof(app_settings_ui_t));
 
     s_ui->btn = aem_waterfall_btn_create(card_bg, QUICK_SETTING_CARD_SIZE, QUICK_SETTING_CARD_SIZE, get_img[0]);
+    lv_obj_align(s_ui->btn, LV_ALIGN_CENTER, AEM_SIZE_HOR_FACTOR_466(0), 0);
     lv_obj_add_event_cb(s_ui->btn, card_event_cb, LV_EVENT_ALL, NULL);
 }
 

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_brightness.c

@@ -8,7 +8,7 @@
 #include "aem_device.h"
 #endif // !CONFIG_SIMULATOR
 #include "simple_img.h"
-
+#if 0
 #define BRIGHTNESS_LEVEL_CNT 5
 
 typedef struct
@@ -158,3 +158,4 @@ const aem_quick_setting_ops_t quick_setting_brightness_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_BRIGHTNESS, (aem_quick_setting_ops_t *)&quick_setting_brightness_ops);
+#endif

+ 4 - 4
application/aem_watch/src/application/quick_settings/aem_quick_setting_display_off.c

@@ -9,9 +9,8 @@ typedef struct
 } display_off_ui_t;
 static display_off_ui_t *s_ui = NULL;
 
-static lv_img_dsc_t *get_img[2] = {
-    &IMG_SCENE_QUICK_SETTINGS_PIC_DISPLAY_OFF,
-    &IMG_SCENE_QUICK_SETTINGS_PIC_DISPLAYS_OFF,
+static lv_img_dsc_t *get_img[1] = {
+    &IMG_SCENE_QUICK_SETTINGS_PIC_DISPLAY_OFF_SETTING,
 };
 
 static void card_event_cb(lv_event_t *e)
@@ -21,7 +20,7 @@ static void card_event_cb(lv_event_t *e)
 
     if (LV_EVENT_PRESSED == e->code)
     {
-        simple_img_set_src(s_ui->btn, get_img[1]);
+        simple_img_set_src(s_ui->btn, get_img[0]);
     }
     else if (LV_EVENT_RELEASED == e->code)
     {
@@ -46,6 +45,7 @@ static void display_off_btn_create(lv_obj_t *card_bg)
     lv_memset(s_ui, 0, sizeof(display_off_ui_t));
 
     s_ui->btn = aem_waterfall_btn_create(card_bg, QUICK_SETTING_CARD_SIZE, QUICK_SETTING_CARD_SIZE, get_img[0]);
+    lv_obj_align(s_ui->btn, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(0), 0);
     lv_obj_add_event_cb(s_ui->btn, card_event_cb, LV_EVENT_ALL, NULL);
 }
 

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_dnd.c

@@ -6,7 +6,7 @@
 #include "aem_ble_data_share.h"
 #include "aem_app_comm.h"
 #include "data_default_cfg.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -86,3 +86,4 @@ const aem_quick_setting_ops_t quick_setting_dnd_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_DND, (aem_quick_setting_ops_t *)&quick_setting_dnd_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_drain.c

@@ -1,7 +1,7 @@
 #include "aem_quick_setting_fwk.h"
 #include "data_default_cfg.h"
 #include "aem_quick_setting.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -71,3 +71,4 @@ const aem_quick_setting_ops_t quick_setting_drain_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_DRAIN, (aem_quick_setting_ops_t *)&quick_setting_drain_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_find_phone.c

@@ -7,7 +7,7 @@
 #include "aem_data_share.h"
 #include "aem_ble_data_share.h"
 #include "data_default_cfg.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -76,3 +76,4 @@ const aem_quick_setting_ops_t quick_setting_find_phone_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_FIND_PHONE, (aem_quick_setting_ops_t *)&quick_setting_find_phone_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_flash_light.c

@@ -4,7 +4,7 @@
 // #include "quick_setting_service.h"
 #include "aem_app_fwk.h"
 #include "simple_img.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -73,3 +73,4 @@ const aem_quick_setting_ops_t quick_setting_flash_light_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_FLASHLIGHT, (aem_quick_setting_ops_t *)&quick_setting_flash_light_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_mute_mode.c

@@ -5,7 +5,7 @@
 // #include "quick_setting_service.h"
 #include "aem_app_fwk.h"
 #include "simple_img.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -94,3 +94,4 @@ const aem_quick_setting_ops_t quick_setting_mute_mode_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_MUTE_MODE, (aem_quick_setting_ops_t *)&quick_setting_mute_mode_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_phone_mode.c

@@ -5,7 +5,7 @@
 #include "aem_app_fwk.h"
 #include "simple_img.h"
 #include "aem_data_share.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -99,3 +99,4 @@ const aem_quick_setting_ops_t quick_setting_phone_mode_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_PHONE_MODE, (aem_quick_setting_ops_t *)&quick_setting_phone_mode_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_power_save_mode.c

@@ -7,7 +7,7 @@
 #include "aem_bg.h"
 #include "aem_log.h"
 #include "text_canvas.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -77,3 +77,4 @@ const aem_quick_setting_ops_t quick_setting_power_save_mode_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_POWER_SAVE_MODE, (aem_quick_setting_ops_t *)&quick_setting_power_save_mode_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_raise_up.c

@@ -6,7 +6,7 @@
 #include "aem_quick_setting.h"
 #include "simple_img.h"
 #include "data_default_cfg.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -87,3 +87,4 @@ const aem_quick_setting_ops_t quick_setting_raise_up_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_RAISE_UP, (aem_quick_setting_ops_t *)&quick_setting_raise_up_ops);
+#endif

+ 2 - 1
application/aem_watch/src/application/quick_settings/aem_quick_setting_screen_lock.c

@@ -4,7 +4,7 @@
 // #include "quick_setting_service.h"
 #include "aem_app_fwk.h"
 #include "simple_img.h"
-
+#if 0
 typedef struct
 {
     lv_obj_t *btn;
@@ -73,3 +73,4 @@ const aem_quick_setting_ops_t quick_setting_screen_lock_ops = {
 };
 
 AEM_QUICK_SETTING_REGISTER(AEM_QUICK_SETTING_SCREEN_LOCK, (aem_quick_setting_ops_t *)&quick_setting_screen_lock_ops);
+#endif

+ 1 - 1
application/aem_watch/src/user_cfg/data_default_cfg.h

@@ -23,7 +23,7 @@ const static char *s_def_datetime_str = "2024-03-01 08:00:00"; // 默认系统
 #define DEFAULT_HOUR_MODE (0x00)                               // 0:24小时制; 1:12小时制
 
 // 默认系统语言
-#define DEFAULT_LANGUAGE AEM_LANGUAGE_ZH_CN // 系统默认语言
+#define DEFAULT_LANGUAGE AEM_LANGUAGE_EN_GB // 系统默认语言
 
 // 亮度默认配置
 #define BRIGHTNESS_LEVEL (153) // 亮度级别 0-255

+ 10 - 8
thirdparty/lib/aem/adapter/def_settings/aem_adapter_def_settings.c

@@ -14,19 +14,19 @@
 
 #define WF_INFO_MAGIC (0x10000000)
 
-#define RELEASE_WF 1 
+#define RELEASE_FW 0 
 
 static aem_lang_all_support_t s_aem_language_support;
 
 const static aem_language_table_t s_aem_language_table[] =
     {
-        {AEM_LANGUAGE_ZH_CN, "简体中文", RES_STRING_BT_WATCH_ZHC, &RES_STRING_BT_WATCH_ZHC_CNT},
         {AEM_LANGUAGE_EN_GB, "English", RES_STRING_BT_WATCH_ENG, &RES_STRING_BT_WATCH_ENG_CNT},
+        {AEM_LANGUAGE_ZH_CN, "简体中文", RES_STRING_BT_WATCH_ZHC, &RES_STRING_BT_WATCH_ZHC_CNT},
 };
 
 // 内置表盘id数组,第一个为默认表盘。跟项目走, 添加视频表盘, 空间调整为2M
 #ifdef CONFIG_BOARD_ATS3085S4_DEV_WATCH_EXT_NOR
-#if RELEASE_WF
+#if RELEASE_FW
 // 预置表盘,文件不可删除,默认表盘为此数组第一个表盘
 const static uint32_t s_inside_wf[] = {
     80,
@@ -48,7 +48,7 @@ const static uint32_t s_outside_wf[] = {
 };
 #endif
 #else
-#if RELEASE_WF
+#if RELEASE_FW
 // 预置表盘,文件不可删除,默认表盘为此数组第一个表盘
 const static uint32_t s_inside_wf[] = {
     10,
@@ -75,13 +75,15 @@ const static uint32_t s_outside_wf[] = {
 const static aem_widgets_sort_item_t s_widgets[] = {
     {.id = WIDGET_ID_IN_OUT_POWER, .visible = AEM_WF_VISIBLE},
 
-    {.id = WIDGET_ID_ACTIVITY, .visible = AEM_WF_VISIBLE},
+    {.id = WIDGET_ID_PROFILE_PHOTO, .visible = AEM_WF_VISIBLE},
+
+    //{.id = WIDGET_ID_ACTIVITY, .visible = AEM_WF_VISIBLE},
 
-    {.id = WIDGET_ID_HEART_RATE, .visible = AEM_WF_VISIBLE},
+    //{.id = WIDGET_ID_HEART_RATE, .visible = AEM_WF_VISIBLE},
 
-    {.id = WIDGET_ID_WEATHER, .visible = AEM_WF_VISIBLE},
+    //{.id = WIDGET_ID_WEATHER, .visible = AEM_WF_VISIBLE},
 
-    {.id = WIDGET_ID_MUSIC, .visible = AEM_WF_VISIBLE},
+    //{.id = WIDGET_ID_MUSIC, .visible = AEM_WF_VISIBLE},
 
     //{.id = WIDGET_ID_OFTEN_WORKOUT, .visible = AEM_WF_VISIBLE},
 };

+ 2 - 0
thirdparty/lib/aem/include/aem_app_id.h

@@ -14,6 +14,7 @@ typedef enum
     AEM_APP_ID_WORKOUT_RECORD,
     AEM_APP_ID_ACTIVITY,
     AEM_APP_ID_IN_OUT_POWER,
+    AEM_APP_ID_PROFILE_PHOTO,
     AEM_APP_ID_PHONE,
     AEM_APP_ID_HEART_RATE,
     AEM_APP_ID_SPO2,
@@ -66,6 +67,7 @@ typedef enum
 #define AEM_APP_WORKOUT "workout"
 #define AEM_APP_WORKOUT_RECORD "workout_record"
 #define AEM_APP_IN_OUT_POWER "in_out_power"
+#define AEM_APP_PROFILE_PHOTO "profile_photo"
 #define AEM_APP_HEARTRATE "heartrate"
 #define AEM_APP_SPO2 "spo2"
 #define AEM_APP_FEMALE_HEALTH "female_health"

+ 1 - 0
thirdparty/lib/aem/include/framework/core/app_mgr/include/aem_ui_refr.h

@@ -45,6 +45,7 @@ typedef enum
     UI_RT_BAROMETER_SYNC        = 0x22,
     UI_DATA_RESET_END           = 0x23,
     UI_IN_OUT_POWER_REFRESH     = 0x24,
+    UI_PROFILE_PHOTO_REFRESH    = 0x25,
 
     UI_REFRESH_END_ID           = 0xFF, // 需要按现有顺序定义在UI_REFRESH_END_ID之前
 } ui_refr_evt_type_t;

+ 1 - 0
thirdparty/lib/aem/include/framework/core/watch_fwk/watch_face/aem_watchface_mgr.h

@@ -53,6 +53,7 @@ typedef enum
 {
 	WIDGET_ID_INVALID,		 // 无效
 	WIDGET_ID_IN_OUT_POWER,	 // 输入输出功率
+	WIDGET_ID_PROFILE_PHOTO, // 头像图片
 	WIDGET_ID_ACTIVITY,		 // 三环数据
 	WIDGET_ID_OFTEN_WORKOUT, // 常用运动
 	WIDGET_ID_WEATHER,		 // 天气

+ 3 - 3
zephyr/drivers/input/sd8563_timer_acts.c

@@ -345,7 +345,7 @@ static void _sd8563_read_time(const struct device *i2c_dev)
 	//static uint8_t read_time_data[7] = {0};
 	int ret = 0;
 
-	printk("_sd8563_read_time\n");
+	//printk("_sd8563_read_time\n");
 
 	ret = i2c_write_read(i2c_dev, rtc_slaver_addr, write_cmd, 1, read_time_data, 7);
 	//ret = i2c_burst_read(i2c_dev, rtc_slaver_addr, 0x02, read_cmd, 3);
@@ -374,8 +374,8 @@ static void _sd8563_read_time(const struct device *i2c_dev)
     uart2_poll_out_ch(check_sum);  //checksum
     //uart2 send data end ==============================================//
 
-	printk("y:20%d, mon:%d, week:%d, d:%d, h:%d, min:%d, sec:%d\n",
-			read_time_data[6], read_time_data[5], read_time_data[4], read_time_data[3], read_time_data[2], read_time_data[1], read_time_data[0]);
+	//printk("y:20%d, mon:%d, week:%d, d:%d, h:%d, min:%d, sec:%d\n",
+	//		read_time_data[6], read_time_data[5], read_time_data[4], read_time_data[3], read_time_data[2], read_time_data[1], read_time_data[0]);
 
 #endif	
 }

+ 11 - 11
zephyr/drivers/input/sgm832a_acts.c

@@ -119,7 +119,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	static uint16_t read_data[1] = {0};
 	int ret = 0;
 
-	printk("sgm832 typec%d get data\n", typec_num);
+	//printk("sgm832 typec%d get data\n", typec_num);
 
     //00H Configuartion Register
 	ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, write_cmd, 1, read_data, 2);
@@ -129,7 +129,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	}
 	
 	read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
-	printk("ConfigReg: 0x%04x\n", read_data[0]);
+	//printk("ConfigReg: 0x%04x\n", read_data[0]);
 
     //01H Shunt Voltage Register
 	ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[1], 1, read_data, 2);
@@ -147,7 +147,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	{
 		printk("sgm832 typec%d i2c_write_read Shunt_Voltage ERR\n", typec_num);
 	}
-    printk("Shunt_Voltage: %.4f mV\n", f_ShuntVoltage[typec_num]);
+    //printk("Shunt_Voltage: %.4f mV\n", f_ShuntVoltage[typec_num]);
 	//printk("ConfigReg: 0x%04x, ShuntVoltage: %.4f mV, BusVoltage: %.3f V, Power: 0x%04x, Current: 0x%04x, Calibration: 0x%04x, MaskEnable: 0x%04x, AlertLimit: 0x%04x\n",
 	//		read_data[0], f_ShuntVoltage, f_BusVoltage, read_data[3], read_data[4], read_data[5], read_data[6], read_data[7]);
 
@@ -161,7 +161,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
     read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
     f_BusVoltage[typec_num] = (float)read_data[0] * 1.25 * 0.001;
 	
-	printk("Bus_Voltage: %.3f V\n", f_BusVoltage[typec_num]);
+	//printk("Bus_Voltage: %.3f V\n", f_BusVoltage[typec_num]);
 
     //03H Power Register
     ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[3], 1, read_data, 2);
@@ -172,7 +172,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 
 	read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
 	f_Power[typec_num] = (float)read_data[0] * 25 * 0.001;
-	printk("Power: %.3f mW\n", f_Power[typec_num]);
+	//printk("Power: %.3f mW\n", f_Power[typec_num]);
 
 	//04H Current Register
     ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[4], 1, read_data, 2);
@@ -190,7 +190,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	{
 		printk("sgm832 typec%d i2c_write_read Current Register ERR\n", typec_num);
 	}
-	printk("Current: %.3f mA\n", f_Current[typec_num]);
+	//printk("Current: %.3f mA\n", f_Current[typec_num]);
 
 	//05H Calibration Register
     ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[5], 1, read_data, 2);
@@ -200,7 +200,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	}
 
 	read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
-	printk("Calibration: 0x%04x\n", read_data[0]);
+	//printk("Calibration: 0x%04x\n", read_data[0]);
 
 	//06H Mask/Enable Register
     ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[6], 1, read_data, 2);
@@ -210,7 +210,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	}
 
 	read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
-	printk("Mask/Enable: 0x%04x\n", read_data[0]);
+	//printk("Mask/Enable: 0x%04x\n", read_data[0]);
 
 	//07H AlertLimit Register
     ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[7], 1, read_data, 2);
@@ -220,7 +220,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	}
 
 	read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
-	printk("AlertLimit: 0x%04x\n", read_data[0]);
+	//printk("AlertLimit: 0x%04x\n", read_data[0]);
 
     //FEH Manufacturer ID Register
     ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[8], 1, read_data, 2);
@@ -230,7 +230,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	}
 
 	read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
-	printk("Manufacturer_ID: 0x%04x\n", read_data[0]);
+	//printk("Manufacturer_ID: 0x%04x\n", read_data[0]);
 
     //FFH Die ID Register
 	ret = i2c_write_read(i2c_dev, sgm832_typec_slaver_addr, &write_cmd[9], 1, read_data, 2);
@@ -240,7 +240,7 @@ static void sgm832_typec_get_data(const struct device *i2c_dev, uint16_t sgm832_
 	}
 
 	read_data[0] = ((read_data[0]  & 0xFF00) >> 8) + ((read_data[0] & 0x00FF) << 8);
-	printk("Die_ID: 0x%04x\n", read_data[0]);		
+	//printk("Die_ID: 0x%04x\n", read_data[0]);		
 
 #endif	
 }

部分文件因为文件数量过多而无法显示