Browse Source

recode

master
zhaohe 1 year ago
parent
commit
0db5ed0103
  1. 210
      app/app.uvoptx
  2. 190
      app/app.uvprojx
  3. 0
      app/src/_board/ads129x/ads129x.c
  4. 0
      app/src/_board/ads129x/ads129x.h
  5. 0
      app/src/_board/ads129x/ads129x_type.h
  6. 0
      app/src/_board/board_battery_state.c
  7. 0
      app/src/_board/board_battery_state.h
  8. 0
      app/src/_board/board_eeprom_driver.c
  9. 0
      app/src/_board/board_eeprom_driver.h
  10. 0
      app/src/_board/board_light_ctrl.c
  11. 0
      app/src/_board/board_light_ctrl.h
  12. 0
      app/src/_board/board_power_mgr.c
  13. 0
      app/src/_board/board_power_mgr.h
  14. 0
      app/src/_board/board_ssd1306_interface.c
  15. 0
      app/src/_board/board_ssd1306_interface.h
  16. 0
      app/src/_board/soc_public_res_mgr.c
  17. 0
      app/src/_board/soc_public_res_mgr.h
  18. 0
      app/src/_board/ssd1306/driver_ssd1306.c
  19. 0
      app/src/_board/ssd1306/driver_ssd1306.h
  20. 0
      app/src/_board/ssd1306/driver_ssd1306_basic.c
  21. 0
      app/src/_board/ssd1306/driver_ssd1306_basic.h
  22. 0
      app/src/_board/ssd1306/driver_ssd1306_font.h
  23. 0
      app/src/_board/ssd1306/driver_ssd1306_interface.h
  24. 0
      app/src/_board/ssd1306/fontlib.c
  25. 0
      app/src/_board/ssd1306/fontlib.h
  26. 0
      app/src/_board/ssd1306/wave_drawer.c
  27. 0
      app/src/_board/ssd1306/wave_drawer.h
  28. 2
      app/src/app_basic_service/basic/event.h
  29. 2
      app/src/app_service/battery_mgr_service.c
  30. 24
      app/src/app_service/beep_ctrl.c
  31. 443
      app/src/app_service/display_ctrl_service/display_manager.bak.c
  32. 81
      app/src/app_service/display_ctrl_service/display_manager.bak.h
  33. 24
      app/src/app_service/display_ctrl_service/display_mgr.c
  34. 1
      app/src/app_service/display_ctrl_service/font.h
  35. 2
      app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306.c
  36. 8
      app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306_basic.c
  37. 4
      app/src/app_service/ecg_service/algo/ecg_data_analyszer.c
  38. 10
      app/src/app_service/ecg_service/algo/iflytop_simple_filter.c
  39. 1
      app/src/app_service/ecg_service/ecg_data_mgr.c
  40. 51
      app/src/app_service/ecg_service/ecg_service.c
  41. 3
      app/src/app_service/ecg_service/ecg_service.h
  42. 2
      app/src/app_service/light_ctrl.c
  43. 6
      app/src/one_conduction_main.c

210
app/app.uvoptx

@ -386,8 +386,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\one_conduction_main.c</PathWithFileName>
<FilenameWithoutPath>one_conduction_main.c</FilenameWithoutPath>
<PathWithFileName>.\src\main.c</PathWithFileName>
<FilenameWithoutPath>main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -398,8 +398,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\main.c</PathWithFileName>
<FilenameWithoutPath>main.c</FilenameWithoutPath>
<PathWithFileName>.\src\one_conduction_main.c</PathWithFileName>
<FilenameWithoutPath>one_conduction_main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -410,8 +410,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_basic_service\device_version_info_mgr.c</PathWithFileName>
<FilenameWithoutPath>device_version_info_mgr.c</FilenameWithoutPath>
<PathWithFileName>.\src\app_basic_service\zapp.c</PathWithFileName>
<FilenameWithoutPath>zapp.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -422,8 +422,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_basic_service\zapp.c</PathWithFileName>
<FilenameWithoutPath>zapp.c</FilenameWithoutPath>
<PathWithFileName>.\src\app_basic_service\device_version_info_mgr.c</PathWithFileName>
<FilenameWithoutPath>device_version_info_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -431,7 +431,7 @@
<Group>
<GroupName>Board Definition</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@ -627,7 +627,7 @@
<Group>
<GroupName>nRF_Drivers</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@ -875,7 +875,7 @@
<Group>
<GroupName>nRF_Libraries</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@ -1530,8 +1530,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\adc_mgr.c</PathWithFileName>
<FilenameWithoutPath>adc_mgr.c</FilenameWithoutPath>
<PathWithFileName>.\src\app_service\ecg_service\ecg_service.c</PathWithFileName>
<FilenameWithoutPath>ecg_service.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -1542,8 +1542,188 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\ecg_service\ecg_service.c</PathWithFileName>
<FilenameWithoutPath>ecg_service.c</FilenameWithoutPath>
<PathWithFileName>.\src\app_service\base_hardware\adc_mgr.c</PathWithFileName>
<FilenameWithoutPath>adc_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\base_hardware\hardware_power_mgr.c</PathWithFileName>
<FilenameWithoutPath>hardware_power_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\beep_ctrl.c</PathWithFileName>
<FilenameWithoutPath>beep_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\light_ctrl.c</PathWithFileName>
<FilenameWithoutPath>light_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\display_ctrl_service\display_mgr.c</PathWithFileName>
<FilenameWithoutPath>display_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\display_ctrl_service\ssd1306_if_impl.c</PathWithFileName>
<FilenameWithoutPath>ssd1306_if_impl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306_basic.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306_basic.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>97</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\display_ctrl_service\ssd1306\fontlib.c</PathWithFileName>
<FilenameWithoutPath>fontlib.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>98</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\display_ctrl_service\ssd1306\wave_drawer.c</PathWithFileName>
<FilenameWithoutPath>wave_drawer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>99</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\ecg_service\ecg_algo.c</PathWithFileName>
<FilenameWithoutPath>ecg_algo.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>100</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\ecg_service\ecg_data_mgr.c</PathWithFileName>
<FilenameWithoutPath>ecg_data_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>101</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\ecg_service\algo\ecg_data_analyszer.c</PathWithFileName>
<FilenameWithoutPath>ecg_data_analyszer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>102</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\ecg_service\algo\iflytop_simple_filter.c</PathWithFileName>
<FilenameWithoutPath>iflytop_simple_filter.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>103</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\ecg_service\algo\iflytop_simple_filter_ext.c</PathWithFileName>
<FilenameWithoutPath>iflytop_simple_filter_ext.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>104</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\ecg_service\algo\iflytop_simple_qrs.c</PathWithFileName>
<FilenameWithoutPath>iflytop_simple_qrs.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>

190
app/app.uvprojx

@ -389,25 +389,25 @@
<FilePath>.\config\sdk_config.h</FilePath>
</File>
<File>
<FileName>one_conduction_main.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\one_conduction_main.c</FilePath>
</File>
<File>
<FileName>main.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\main.c</FilePath>
</File>
<File>
<FileName>device_version_info_mgr.c</FileName>
<FileName>one_conduction_main.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_basic_service\device_version_info_mgr.c</FilePath>
<FilePath>.\src\one_conduction_main.c</FilePath>
</File>
<File>
<FileName>zapp.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_basic_service\zapp.c</FilePath>
</File>
<File>
<FileName>device_version_info_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_basic_service\device_version_info_mgr.c</FilePath>
</File>
</Files>
</Group>
<Group>
@ -3796,14 +3796,89 @@
<FilePath>.\src\app_service\battery_mgr_service.c</FilePath>
</File>
<File>
<FileName>ecg_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_service.c</FilePath>
</File>
<File>
<FileName>adc_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\adc_mgr.c</FilePath>
<FilePath>.\src\app_service\base_hardware\adc_mgr.c</FilePath>
</File>
<File>
<FileName>ecg_service.c</FileName>
<FileName>hardware_power_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_service.c</FilePath>
<FilePath>.\src\app_service\base_hardware\hardware_power_mgr.c</FilePath>
</File>
<File>
<FileName>beep_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\beep_ctrl.c</FilePath>
</File>
<File>
<FileName>light_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\light_ctrl.c</FilePath>
</File>
<File>
<FileName>display_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\display_mgr.c</FilePath>
</File>
<File>
<FileName>ssd1306_if_impl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306_if_impl.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306_basic.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306_basic.c</FilePath>
</File>
<File>
<FileName>fontlib.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\fontlib.c</FilePath>
</File>
<File>
<FileName>wave_drawer.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\wave_drawer.c</FilePath>
</File>
<File>
<FileName>ecg_algo.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_algo.c</FilePath>
</File>
<File>
<FileName>ecg_data_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_data_mgr.c</FilePath>
</File>
<File>
<FileName>ecg_data_analyszer.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\ecg_data_analyszer.c</FilePath>
</File>
<File>
<FileName>iflytop_simple_filter.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\iflytop_simple_filter.c</FilePath>
</File>
<File>
<FileName>iflytop_simple_filter_ext.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\iflytop_simple_filter_ext.c</FilePath>
</File>
<File>
<FileName>iflytop_simple_qrs.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\iflytop_simple_qrs.c</FilePath>
</File>
</Files>
</Group>
@ -4198,25 +4273,25 @@
<FilePath>.\config\sdk_config.h</FilePath>
</File>
<File>
<FileName>one_conduction_main.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\one_conduction_main.c</FilePath>
</File>
<File>
<FileName>main.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\main.c</FilePath>
</File>
<File>
<FileName>device_version_info_mgr.c</FileName>
<FileName>one_conduction_main.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_basic_service\device_version_info_mgr.c</FilePath>
<FilePath>.\src\one_conduction_main.c</FilePath>
</File>
<File>
<FileName>zapp.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_basic_service\zapp.c</FilePath>
</File>
<File>
<FileName>device_version_info_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_basic_service\device_version_info_mgr.c</FilePath>
</File>
</Files>
</Group>
<Group>
@ -7605,14 +7680,89 @@
<FilePath>.\src\app_service\battery_mgr_service.c</FilePath>
</File>
<File>
<FileName>ecg_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_service.c</FilePath>
</File>
<File>
<FileName>adc_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\adc_mgr.c</FilePath>
<FilePath>.\src\app_service\base_hardware\adc_mgr.c</FilePath>
</File>
<File>
<FileName>ecg_service.c</FileName>
<FileName>hardware_power_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_service.c</FilePath>
<FilePath>.\src\app_service\base_hardware\hardware_power_mgr.c</FilePath>
</File>
<File>
<FileName>beep_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\beep_ctrl.c</FilePath>
</File>
<File>
<FileName>light_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\light_ctrl.c</FilePath>
</File>
<File>
<FileName>display_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\display_mgr.c</FilePath>
</File>
<File>
<FileName>ssd1306_if_impl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306_if_impl.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306_basic.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306_basic.c</FilePath>
</File>
<File>
<FileName>fontlib.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\fontlib.c</FilePath>
</File>
<File>
<FileName>wave_drawer.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\display_ctrl_service\ssd1306\wave_drawer.c</FilePath>
</File>
<File>
<FileName>ecg_algo.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_algo.c</FilePath>
</File>
<File>
<FileName>ecg_data_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\ecg_data_mgr.c</FilePath>
</File>
<File>
<FileName>ecg_data_analyszer.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\ecg_data_analyszer.c</FilePath>
</File>
<File>
<FileName>iflytop_simple_filter.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\iflytop_simple_filter.c</FilePath>
</File>
<File>
<FileName>iflytop_simple_filter_ext.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\iflytop_simple_filter_ext.c</FilePath>
</File>
<File>
<FileName>iflytop_simple_qrs.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\ecg_service\algo\iflytop_simple_qrs.c</FilePath>
</File>
</Files>
</Group>

0
app/src/board/ads129x/ads129x.c → app/src/_board/ads129x/ads129x.c

0
app/src/board/ads129x/ads129x.h → app/src/_board/ads129x/ads129x.h

0
app/src/board/ads129x/ads129x_type.h → app/src/_board/ads129x/ads129x_type.h

0
app/src/board/board_battery_state.c → app/src/_board/board_battery_state.c

0
app/src/board/board_battery_state.h → app/src/_board/board_battery_state.h

0
app/src/board/board_eeprom_driver.c → app/src/_board/board_eeprom_driver.c

0
app/src/board/board_eeprom_driver.h → app/src/_board/board_eeprom_driver.h

0
app/src/board/board_light_ctrl.c → app/src/_board/board_light_ctrl.c

0
app/src/board/board_light_ctrl.h → app/src/_board/board_light_ctrl.h

0
app/src/board/board_power_mgr.c → app/src/_board/board_power_mgr.c

0
app/src/board/board_power_mgr.h → app/src/_board/board_power_mgr.h

0
app/src/board/board_ssd1306_interface.c → app/src/_board/board_ssd1306_interface.c

0
app/src/board/board_ssd1306_interface.h → app/src/_board/board_ssd1306_interface.h

0
app/src/board/soc_public_res_mgr.c → app/src/_board/soc_public_res_mgr.c

0
app/src/board/soc_public_res_mgr.h → app/src/_board/soc_public_res_mgr.h

0
app/src/board/ssd1306/driver_ssd1306.c → app/src/_board/ssd1306/driver_ssd1306.c

0
app/src/board/ssd1306/driver_ssd1306.h → app/src/_board/ssd1306/driver_ssd1306.h

0
app/src/board/ssd1306/driver_ssd1306_basic.c → app/src/_board/ssd1306/driver_ssd1306_basic.c

0
app/src/board/ssd1306/driver_ssd1306_basic.h → app/src/_board/ssd1306/driver_ssd1306_basic.h

0
app/src/board/ssd1306/driver_ssd1306_font.h → app/src/_board/ssd1306/driver_ssd1306_font.h

0
app/src/board/ssd1306/driver_ssd1306_interface.h → app/src/_board/ssd1306/driver_ssd1306_interface.h

0
app/src/board/ssd1306/fontlib.c → app/src/_board/ssd1306/fontlib.c

0
app/src/board/ssd1306/fontlib.h → app/src/_board/ssd1306/fontlib.h

0
app/src/board/ssd1306/wave_drawer.c → app/src/_board/ssd1306/wave_drawer.c

0
app/src/board/ssd1306/wave_drawer.h → app/src/_board/ssd1306/wave_drawer.h

2
app/src/app_basic_service/basic/event.h

@ -8,6 +8,8 @@
#define ECG_DATA_REPORT_FRAME_NUM 32 // ecg每次上报的帧数
typedef enum {
kevent_tmr_scheduler_event,
kecg_data_report_event, // ecg数据上报事件
kappevent_battery_start_charge, //
kappevent_battery_end_charge, //

2
app/src/app_service/battery_mgr_service.c

@ -77,7 +77,7 @@ static int16_t _battery_mgr_service_get_battery_level() { //
percent_int = 100;
}
return battery_level_filter(percent_int);
return _battery_level_filter(percent_int);
}
/***********************************************************************************************************************

24
app/src/app_service/beep_ctrl.c

@ -30,12 +30,12 @@ static uint32_t m_beep_cnt = 0;
static void beep_tmr_handler(void *context) {
if (m_beep_effect == kBoardBeepEffect_none) {
board_beep_ctrl_set(false);
beep_set(false);
} else if (m_beep_effect == kBoardBeepEffect_oneShortBeep) {
if (m_beep_cnt == 0) {
board_beep_ctrl_set(true);
beep_set(true);
} else if (m_beep_cnt >= 1) {
board_beep_ctrl_set(false);
beep_set(false);
app_timer_stop(m_beep_tmr);
m_beep_effect = kBoardBeepEffect_none;
}
@ -43,9 +43,9 @@ static void beep_tmr_handler(void *context) {
else if (m_beep_effect == kBoardBeepEffect_oneShortLongBeep) {
if (m_beep_cnt == 0) {
board_beep_ctrl_set(true);
beep_set(true);
} else if (m_beep_cnt >= 6) {
board_beep_ctrl_set(false);
beep_set(false);
app_timer_stop(m_beep_tmr);
m_beep_effect = kBoardBeepEffect_none;
}
@ -54,12 +54,12 @@ static void beep_tmr_handler(void *context) {
else if (m_beep_effect == kBoardBeepEffect_threeShortBeep) {
if (m_beep_cnt < 6) {
if (m_beep_cnt % 2 == 0) {
board_beep_ctrl_set(true);
beep_set(true);
} else if (m_beep_cnt % 2 == 1) {
board_beep_ctrl_set(false);
beep_set(false);
}
} else {
board_beep_ctrl_set(false);
beep_set(false);
app_timer_stop(m_beep_tmr);
m_beep_effect = kBoardBeepEffect_none;
}
@ -68,9 +68,9 @@ static void beep_tmr_handler(void *context) {
// ÿ¸ô1ÃëÏìÈýÉù
if (m_beep_cnt < 6) {
if (m_beep_cnt % 2 == 0) {
board_beep_ctrl_set(true);
beep_set(true);
} else if (m_beep_cnt % 2 == 1) {
board_beep_ctrl_set(false);
beep_set(false);
}
} else {
if (BEEP_TIMER_INTERVAL * m_beep_cnt >= 10000) {
@ -96,7 +96,7 @@ void beep_load() { //
void beep_unload() {
if (!m_beep_loaded) return;
board_beep_ctrl_set(0);
beep_set(0);
nrfx_pwm_uninit(&m_beep_pwm0);
m_beep_loaded = false;
}
@ -118,7 +118,7 @@ void beep_set_effect(board_beep_effect_t effect) {
app_timer_stop(m_beep_tmr);
m_beep_cnt = 0;
if (m_beep_effect == kBoardBeepEffect_none) {
board_beep_ctrl_set(false);
beep_set(false);
} else {
app_timer_start(m_beep_tmr, APP_TIMER_TICKS(BEEP_TIMER_INTERVAL), NULL);
}

443
app/src/app_service/display_ctrl_service/display_manager.bak.c

@ -1,443 +0,0 @@
#include "display_manager.h"
#include "../../../screen_res/logo_mono.c"
//
#include <stdarg.h>
#include "board/board_battery_state.h"
#include "board/board_ssd1306_interface.h"
#include "aproject_config/config.h"
#include "font.h"
PageState_t g_pageState;
void dsp_mgr_change_to_page(page_t page) { //
g_pageState.page = page;
g_pageState.last_page = page;
g_pageState.page_change_to_page_time = znordic_getpower_on_s();
g_pageState.in_prompt = false;
memset(g_pageState.prompt, 0, sizeof(g_pageState.prompt));
}
uint32_t dsp_mgr_get_page_elapsed_time_s(void) { //
return znordic_getpower_on_s() - g_pageState.page_change_to_page_time;
}
void dsp_mgr_schedule(void) {}
PageState_t* dsp_mgr_get_state(void) { return NULL; }
int compute_x_pos_by_center(int16_t x, int16_t width) { return x - width / 2; }
int compute_y_pos_by_center(int16_t y, int16_t height) { return y - height / 2; }
#define SCREEN_CENTER_X 64
#define SCREEN_CENTER_Y 32
#define CHARGE_BATTERY_WIDTH (12 * 1.2)
#define CHARGE_BATTERY_HEIGHT (22 * 1.2)
#define MAIN_PAGE_BATTERY_WIDTH (12) // 首页电池宽度
#define MAIN_PAGE_BATTERY_HEIGHT (22) // 首页电池高度
/*******************************************************************************
* *
*******************************************************************************/
/**
* :
* 1.
* ---------------
* | _ |
* | | | |
* | |
* ---------------
*
* :
* 1.
*
*/
static uint32_t m_nowshowbatterylevel; //
void dsp_mgr_change_to_chargingPage() {
ssd1306_basic_clear();
uint8_t x = compute_x_pos_by_center(SCREEN_CENTER_X, CHARGE_BATTERY_WIDTH);
uint8_t y = compute_y_pos_by_center(SCREEN_CENTER_Y, CHARGE_BATTERY_HEIGHT);
uint8_t xchange, ychange;
ssd1306_basic_draw_battery_level(x, y, &xchange, &ychange, BoardBattery_get_battery_level(), CHARGE_BATTERY_WIDTH, CHARGE_BATTERY_HEIGHT);
m_nowshowbatterylevel = BoardBattery_get_battery_level();
ssd1306_basic_gram_update();
dsp_mgr_change_to_page(kPage_chargingPage);
}
void chargingPage_set_batteryLevel(int batteryLevel) {
uint8_t x = compute_x_pos_by_center(SCREEN_CENTER_X, CHARGE_BATTERY_WIDTH);
uint8_t y = compute_y_pos_by_center(SCREEN_CENTER_Y, CHARGE_BATTERY_HEIGHT);
uint8_t xchange, ychange;
ssd1306_basic_draw_battery_level(x, y, &xchange, &ychange, batteryLevel, CHARGE_BATTERY_WIDTH, CHARGE_BATTERY_HEIGHT);
ssd1306_basic_gram_update();
}
void chargingPage_schedule() { //
static uint32_t last_update_time = 0;
if (znordic_haspassed_ms(last_update_time) < 300) {
return;
}
last_update_time = znordic_getpower_on_ms();
m_nowshowbatterylevel += 5;
if (m_nowshowbatterylevel > 100) {
m_nowshowbatterylevel = BoardBattery_get_battery_level();
}
chargingPage_set_batteryLevel(m_nowshowbatterylevel);
}
/*******************************************************************************
* *
*******************************************************************************/
void dsp_mgr_change_to_welcome() {
/**
* @brief
* 1.
* 2.
* 3.
*/
// ssd1306_basic_string(0, 0, "123456789123456789123", 21, 0, SSD1306_FONT_12);
ssd1306_basic_draw_screen((const char*)gImage_logo_mono);
ssd1306_basic_gram_update();
dsp_mgr_change_to_page(kPage_welcome);
}
void welcomePage_schedule() {}
/*******************************************************************************
* *
*******************************************************************************/
static bool m_main_page_colon_state = false;
void mainPage_show(bool colon_state) {
static ztm_t now;
int16_t batterylevel;
uint8_t xchange, ychange;
uint8_t x, y;
x = compute_x_pos_by_center(SCREEN_CENTER_X, fontclocklib.widthPixel * 5 + MAIN_PAGE_BATTERY_WIDTH);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, fontclocklib.heightPixel + 1);
znordic_rtc_gettime(&now);
batterylevel = BoardBattery_get_battery_level();
ssd1306_basic_clear_gram();
// ZLOGI("mainPage_show %d %d", colon_state, x, y);
ssd1306_basic_draw_str(x, y, &xchange, &ychange, fmt("%02d:%02d", now.tm_hour, now.tm_min), &fontclocklib);
x = x + 6 + xchange;
ssd1306_basic_draw_battery_level(x, y, &xchange, &ychange, batterylevel, MAIN_PAGE_BATTERY_WIDTH, MAIN_PAGE_BATTERY_HEIGHT);
ssd1306_basic_gram_update();
m_main_page_colon_state = colon_state;
dsp_mgr_change_to_page(kPage_main);
}
void dsp_mgr_change_to_main() { mainPage_show(true); }
void mainPage_updateState() { mainPage_show(!m_main_page_colon_state); }
void mainPage_schedule() {
static uint32_t last_update_time = 0;
if (znordic_haspassed_ms(last_update_time) < 300) {
return;
}
last_update_time = znordic_getpower_on_ms();
mainPage_updateState();
}
/*******************************************************************************
* *
*******************************************************************************/
static int m_prepare_page_progress = 0;
void PreparePage_show(int progress) {
m_prepare_page_progress = progress;
ssd1306_basic_clear_gram();
uint8_t x = 0;
uint8_t y = 0;
uint8_t xchange, ychange;
x = compute_x_pos_by_center(SCREEN_CENTER_X, font24x24_zh_lib.widthPixel * 4);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, font24x24_zh_lib.heightPixel);
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "保持静止", &font24x24_zh_lib);
if (progress == 0) {
ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "xxxx", &font8x8_xo_lib);
} else if (progress == 1) {
ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "oxxx", &font8x8_xo_lib);
} else if (progress == 2) {
ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "ooxx", &font8x8_xo_lib);
} else if (progress == 3) {
ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "ooox", &font8x8_xo_lib);
} else if (progress == 4) {
ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "oooo", &font8x8_xo_lib);
}
ssd1306_basic_gram_update();
}
void dsp_mgr_change_to_preparePage() {
PreparePage_show(0);
dsp_mgr_change_to_page(kPage_preparePage);
}
void dsp_mgr_preparePage_set_progress(int progress) { PreparePage_show(progress); }
int dsp_mgr_preparePage_get_progress() { return m_prepare_page_progress; }
void PreparePage_schedule() {}
/*******************************************************************************
* *
*******************************************************************************/
#define SMAPLE_PAGE_START_X 1
#define SMAPLE_PAGE_START_Y 1
typedef struct {
wave_drawer_t wave_drawer;
int wave_drawser_x;
int wave_drawser_y;
int wave_drawser_hight;
int wave_drawser_width;
int progress_x;
int progress_y;
int progress_width;
int progress_hight;
int heartrate_x;
int heartrate_y;
} sample_page_state_t;
sample_page_state_t m_sample_page_state;
#if 0
void dsp_mgr_change_to_sampling(int progress_s, int heartrate) { //
sample_page_state_t* sps = &m_sample_page_state;
sps->wave_drawser_x = SMAPLE_PAGE_START_X;
sps->wave_drawser_y = SMAPLE_PAGE_START_Y;
sps->wave_drawser_hight = 40;
sps->wave_drawser_width = 120;
sps->progress_x = SMAPLE_PAGE_START_X + 1;
sps->progress_y = SMAPLE_PAGE_START_Y + sps->wave_drawser_hight + 3 + 4;
sps->progress_width = 80;
sps->progress_hight = 8;
sps->heartrate_x = sps->progress_x + sps->progress_width + 2;
sps->heartrate_y = sps->progress_y - 4;
int progress = progress_s / SAMPLE_MIN_TIME_S * 25;
ssd1306_basic_clear_gram();
wave_drawer_init(&sps->wave_drawer, sps->wave_drawser_x, sps->wave_drawser_y, sps->wave_drawser_width, sps->wave_drawser_hight);
wave_drawer_draw_border(&sps->wave_drawer);
uint8_t xchange, ychange;
ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress);
if (heartrate <= 0) {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, "<>-- ", &font_asicc16x8_lib);
} else {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, fmt("<>%3d", heartrate), &font_asicc16x8_lib);
}
ssd1306_basic_gram_update();
dsp_mgr_change_to_page(kPage_sampling);
}
void samplePage_update_state(int progress_s, int wave_y, int heartrate, bool update_screen) { //
sample_page_state_t* sps = &m_sample_page_state;
uint8_t xchange, ychange;
int progress = progress_s / SAMPLE_MIN_TIME_S * 25;
if (progress_s / 10 == 0) {
ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "xxx", &font8x8_xo_lib);
} else if (progress_s / 10 == 1) {
ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "oxx", &font8x8_xo_lib);
} else if (progress_s / 10 == 2) {
ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "oox", &font8x8_xo_lib);
} else if (progress_s / 10 == 3) {
ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "ooo", &font8x8_xo_lib);
}
wave_drawer_draw_next_point(&sps->wave_drawer, wave_y);
ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress);
if (heartrate <= 0) {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, "<>-- ", &font_asicc16x8_lib);
} else {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, fmt("<>%3d", heartrate), &font_asicc16x8_lib);
}
if (update_screen) ssd1306_basic_gram_update();
}
#endif
void dsp_mgr_change_to_sampling(int progress_s, int heartrate) { //
sample_page_state_t* sps = &m_sample_page_state;
sps->progress_x = SMAPLE_PAGE_START_X + 10;
sps->progress_y = SMAPLE_PAGE_START_Y + 3;
sps->progress_width = 100;
sps->progress_hight = 8;
sps->wave_drawser_x = SMAPLE_PAGE_START_X + 5;
sps->wave_drawser_y = SMAPLE_PAGE_START_Y + sps->progress_hight + 5;
sps->wave_drawser_hight = 45;
sps->wave_drawser_width = 85;
sps->heartrate_x = sps->wave_drawser_x + sps->wave_drawser_width + 1;
sps->heartrate_y = sps->wave_drawser_y + 5;
int progress = progress_s / SAMPLE_MIN_TIME_S * 25;
uint8_t xchange, ychange;
ssd1306_basic_clear_gram();
/**
* @brief
* =================
* | |
* | wave |
* | |
*/
ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress);
// ssd1306_basic_draw_str(sps->progress_x + sps->progress_width + 2, sps->progress_y, &xchange, &ychange, "x", &font8x8_xo_lib);
wave_drawer_init(&sps->wave_drawer, sps->wave_drawser_x, sps->wave_drawser_y, sps->wave_drawser_width, sps->wave_drawser_hight);
// wave_drawer_draw_border(&sps->wave_drawer);
ssd1306_basic_draw_str(sps->heartrate_x + 2, sps->heartrate_y, &xchange, &ychange, "<>", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x + 4, sps->heartrate_y + 20, &xchange, &ychange, "-- ", &font_asicc16x8_lib);
ssd1306_basic_gram_update();
dsp_mgr_change_to_page(kPage_sampling);
}
void samplePage_update_state(int progress_s, int wave_y, int heartrate, bool updateHeart, bool update_screen) { //
sample_page_state_t* sps = &m_sample_page_state;
uint8_t xchange, ychange;
static bool heart_logo_state = false;
int progress = progress_s / SAMPLE_MIN_TIME_S * 25;
ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress);
// if (progress_s / 10 >= 3) {
// ssd1306_basic_draw_str(sps->progress_x + sps->progress_width + 2, sps->progress_y, &xchange, &ychange, "o", &font8x8_xo_lib);
// } else {
// ssd1306_basic_draw_str(sps->progress_x + sps->progress_width + 2, sps->progress_y, &xchange, &ychange, "x", &font8x8_xo_lib);
// }
if (update_screen && updateHeart) {
if (heart_logo_state) {
ssd1306_basic_draw_str(sps->heartrate_x + 2, sps->heartrate_y, &xchange, &ychange, "<>", &font_asicc16x8_lib);
} else {
ssd1306_basic_draw_str(sps->heartrate_x + 2, sps->heartrate_y, &xchange, &ychange, " ", &font_asicc16x8_lib);
}
heart_logo_state = !heart_logo_state;
}
if (heartrate <= 0) {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, " ", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x + 4, sps->heartrate_y + 20, &xchange, &ychange, "-- ", &font_asicc16x8_lib);
} else {
if (heartrate >= 100) {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, " ", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, fmt("%d", heartrate), &font_asicc16x8_lib);
} else {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, " ", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x + 4, sps->heartrate_y + 20, &xchange, &ychange, fmt("%d", heartrate), &font_asicc16x8_lib);
}
}
wave_drawer_draw_next_point(&sps->wave_drawer, wave_y);
if (update_screen) ssd1306_basic_gram_update();
}
void samplePage_schedule() {
static int count = 0;
count++;
int capturetime = hwss_has_captured_time_ms();
int wave_y = (int)hwss_read_val();
int heartrate = (int)hwss_read_heart_rate();
// ZLOGI("samplePage_schedule %d %d %d", capturetime, wave_y, heartrate);
samplePage_update_state(capturetime / 1000, wave_y, hwss_read_heart_rate(), count % 30 == 0, count % 10 == 0);
}
/*******************************************************************************
* samplingError *
*******************************************************************************/
void dsp_mgr_change_to_samplingError() {
/**
* @brief
* 30[X]
*/
ssd1306_basic_clear_gram();
uint8_t x;
uint8_t y;
x = compute_x_pos_by_center(SCREEN_CENTER_X, font24x24_zh_lib.widthPixel * 3 + font12x24_asiic_lib.widthPixel * 2);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, font24x24_zh_lib.heightPixel);
uint8_t xchange, ychange;
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "不足", &font24x24_zh_lib);
x = x + xchange;
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "30", &font12x24_asiic_lib);
x = x + xchange;
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "", &font24x24_zh_lib);
x = x + xchange;
ssd1306_basic_gram_update();
dsp_mgr_change_to_page(kPage_samplingError);
}
void dsp_mgr_change_to_sampleSuc() {
/**
* @brief
* 1.
* 2.
*/
ssd1306_basic_clear();
uint8_t x = 0;
uint8_t y = 0;
uint8_t xchange, ychange;
x = compute_x_pos_by_center(SCREEN_CENTER_X, font24x24_zh_lib.widthPixel * 4);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, font24x24_zh_lib.heightPixel);
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "采集完成", &font24x24_zh_lib);
ssd1306_basic_gram_update();
dsp_mgr_change_to_page(kPage_storagingSuc);
}
/*******************************************************************************
* SCHEDULE *
*******************************************************************************/
APP_TIMER_DEF(m_dsp_mgr_schedule_tmr);
static void dsp_mgr_schedule_tmr_cb(void* p_context) { //
if (g_pageState.page == kPage_chargingPage) {
chargingPage_schedule();
} else if (g_pageState.page == kPage_welcome) {
welcomePage_schedule();
} else if (g_pageState.page == kPage_main) {
mainPage_schedule();
} else if (g_pageState.page == kPage_preparePage) {
PreparePage_schedule();
} else if (g_pageState.page == kPage_sampling) {
samplePage_schedule();
}
}
void dsp_mgr_init(void) {
static bool timer_inited = false;
board_screen_init();
if (!timer_inited) {
ZERROR_CHECK(app_timer_create(&m_dsp_mgr_schedule_tmr, APP_TIMER_MODE_REPEATED, dsp_mgr_schedule_tmr_cb));
}
//
ZERROR_CHECK(app_timer_start(m_dsp_mgr_schedule_tmr, APP_TIMER_TICKS(12), NULL));
timer_inited = true;
}
void dsp_mgr_uninit(void) {
app_timer_stop(m_dsp_mgr_schedule_tmr);
board_screen_deinit();
}

81
app/src/app_service/display_ctrl_service/display_manager.bak.h

@ -1,81 +0,0 @@
#pragma once
#include "znordic.h"
//
#include "app_timer.h"
#include "diskio_blkdev.h"
#include "ff.h"
#include "nrf_block_dev_sdc.h"
#include "nrf_delay.h"
#include "nrf_drv_pwm.h"
#include "nrf_drv_saadc.h"
#include "nrf_drv_twi.h"
#include "nrf_drv_wdt.h"
#include "nrf_gpio.h"
/**
* @brief
*
*
* close <---------------------
* |
* button ---> welcome ---> main ---> preparePage ---> sampling ---> storaging ---> storagingSuc
* ^ ---> samplingError |
* |-------------------------------------------| |
* |-----------------------------------------------------------|
*
*/
typedef enum {
kPage_poweroff,
kPage_welcome,
kPage_main,
kPage_preparePage,
kPage_sampling,
kPage_samplingError,
kPage_storaging,
kPage_storagingSuc,
kPage_chargingPage,
} page_t;
typedef struct {
/**
* @brief
*/
page_t page; //
page_t last_page; //
uint32_t page_change_to_page_time; //
bool in_prompt; //
char prompt[32]; //
/**
* @brief
*/
} PageState_t;
void dsp_mgr_init(void);
void dsp_mgr_uninit(void);
void dsp_mgr_schedule(void);
PageState_t* dsp_mgr_get_state(void);
uint32_t dsp_mgr_get_page_elapsed_time_s(void);
void dsp_mgr_change_to_poweroff();
void dsp_mgr_change_to_welcome();
void dsp_mgr_change_to_main();
void dsp_mgr_change_to_chargingPage();
//
void dsp_mgr_change_to_preparePage();
void dsp_mgr_preparePage_set_progress(int progress);
int dsp_mgr_preparePage_get_progress();
//
void dsp_mgr_change_to_sampling(int progress_s, int heartrate);
//
void dsp_mgr_change_to_samplingError();
//
void dsp_mgr_change_to_sampleSuc();

24
app/src/app_service/display_ctrl_service/display_mgr.c

@ -4,11 +4,14 @@
//
#include <stdarg.h>
#include "app_service/battery_mgr_service.h"
#include "aproject_config/config.h"
#include "board/board_battery_state.h"
#include "font.h"
#include "ssd1306/driver_ssd1306_basic.h"
#include "ssd1306/wave_drawer.h"
//
#include "app_service/ecg_service/ecg_service.h"
#include "ssd1306_if_impl.h"
/***********************************************************************************************************************
* MARCO *
@ -24,7 +27,6 @@
typedef struct {
page_t page;
uint32_t page_get_schedule_period;
void (*on_page_load)();
void (*on_page_scheduler)();
@ -89,6 +91,9 @@ static void _page_change(page_t page) {
}
}
int compute_x_pos_by_center(int16_t x, int16_t width) { return x - width / 2; }
int compute_y_pos_by_center(int16_t y, int16_t height) { return y - height / 2; }
/***********************************************************************************************************************
* PAGE_IMPL *
***********************************************************************************************************************/
@ -125,7 +130,7 @@ static void page_main_load() {
x = compute_x_pos_by_center(SCREEN_CENTER_X, fontclocklib.widthPixel * 5 + MAIN_PAGE_BATTERY_WIDTH);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, fontclocklib.heightPixel + 1);
znordic_rtc_gettime(&now);
batterylevel = BoardBattery_get_battery_level();
batterylevel = battery_mgr_service_get_battery_level();
ssd1306_basic_clear_gram();
@ -136,9 +141,7 @@ static void page_main_load() {
}
static void page_main_unload() {}
static uint32_t page_main_get_scheduler_period() { return 300; }
static void page_main_tmr_cb() {
page_main_load();
}
static void page_main_tmr_cb() { page_main_load(); }
/***********************************************************************************************************************
* ²ÉÑùÒ³Ãæ *
***********************************************************************************************************************/
@ -240,11 +243,11 @@ static uint32_t page_sampling_get_scheduler_period() { return 10; }
static void page_sampling_tmr_cb() {
static int count = 0;
count++;
int capturetime = hwss_has_captured_time_ms();
int wave_y = (int)hwss_read_val();
int heartrate = (int)hwss_read_heart_rate();
int capturetime = ecg_service_has_captured_time();
int wave_y = (int)ecg_service_get_display_val();
int heartrate = (int)ecg_service_get_heart_rate();
samplePage_update_state(capturetime / 1000, wave_y, hwss_read_heart_rate(), count % 30 == 0, count % 10 == 0);
samplePage_update_state(capturetime / 1000, wave_y, heartrate, count % 30 == 0, count % 10 == 0);
}
/***********************************************************************************************************************
@ -294,7 +297,6 @@ static void page_charging_page_load() {
static void page_charging_page_unload() {}
static uint32_t page_charging_page_get_scheduler_period() { return 300; }
static void page_charging_page_tmr_cb() {
charging_page__batterylevel += 5;
if (charging_page__batterylevel > 100) {
charging_page__batterylevel = battery_mgr_service_get_battery_level();

1
app/src/app_service/display_ctrl_service/font.h

@ -1,6 +1,7 @@
// https://www.23bei.com/tool-965.html
#include <stdint.h>
#include "ssd1306/fontlib.h"
#if 0
const uint8_t fontclocklib_code[] = {
0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0x80, 0x78, 0x06, //

2
app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306.c

@ -513,7 +513,7 @@ uint8_t ssd1306_write_point(ssd1306_handle_t *handle, uint8_t x, uint8_t y, uint
return 0; /* success return 0 */
}
#endif
return 0;
}
/**

8
app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306_basic.c

@ -566,7 +566,7 @@ uint8_t ssd1306_basic_draw_str(uint8_t xs, uint8_t ys, uint8_t *xchange, uint8_t
str_iterator_start(&iterator, frontlib->fontCode, str);
char *nowchr = NULL;
while (true) {
str_iterator_next(&iterator, &nowchr);
str_iterator_next(&iterator, (const char **)&nowchr);
if (!nowchr) {
break;
}
@ -595,8 +595,8 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang
level = 100;
}
uint8_t xoff = 0;
uint8_t yoff = 0;
//uint8_t xoff = 0;
//uint8_t yoff = 0;
int batteryHeaderHigh = 2;
int batteryHeaderWidth = 7;
@ -717,6 +717,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang
*xchange = batteryBodyWidth;
*ychange = batteryBodyHigh + batteryHeaderHigh;
return 0;
}
uint8_t ssd1306_basic_draw_progress(uint8_t xs, uint8_t ys, uint16_t width, uint16_t high, uint16_t markpos, uint16_t progress) {
@ -789,4 +790,5 @@ uint8_t ssd1306_basic_draw_line(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
y1 += sy;
}
}
return 0;
}

4
app/src/app_service/ecg_service/algo/ecg_data_analyszer.c

@ -3,5 +3,5 @@
void ecg_data_analyszer_init() {}
void ecg_data_analyszer_push_data(int32_t data) {}
float ecg_data_analyszer_get_display_data() {}
float ecg_data_analyszer_get_heart_rate() {}
float ecg_data_analyszer_get_display_data() { return 50; }
float ecg_data_analyszer_get_heart_rate() { return 50; }

10
app/src/app_service/ecg_service/algo/iflytop_simple_filter.c

@ -95,12 +95,12 @@ void NOTCHFilter_Init(NOTCHFilter_t *filter, float centerFreqHz, float notchWidt
float ww_rps = 2.0 * PI * notchWidthHz;
// pre warp center frequency
float w0_pw_rps = (2.0 / sampleTimeS) * tanf(0.5 * w0_rps * sampleTimeS);
float w0_pw_rps = (2.0f / sampleTimeS) * tanf(0.5f * w0_rps * sampleTimeS);
// computing filter coefficients
filter->alpha = 4.0 + w0_rps * w0_pw_rps * sampleTimeS * sampleTimeS;
filter->beta = 2.0 * ww_rps * sampleTimeS;
filter->alpha = 4.0f + w0_rps * w0_pw_rps * sampleTimeS * sampleTimeS;
filter->beta = 2.0f * ww_rps * sampleTimeS;
// clearing input and output buffers
@ -124,8 +124,8 @@ float NOTCHFilter_Update(NOTCHFilter_t *filter, float vin) {
filter->vin[0] = vin;
// compute new output
filter->vout[0] = (filter->alpha * filter->vin[0] + 2.0 * (filter->alpha - 8.0) * filter->vin[1] + filter->alpha * filter->vin[2] -
(2.0f * (filter->alpha - 8.0) * filter->vout[1] + (filter->alpha - filter->beta) * filter->vout[2])) /
filter->vout[0] = (filter->alpha * filter->vin[0] + 2.0f * (filter->alpha - 8.0f) * filter->vin[1] + filter->alpha * filter->vin[2] -
(2.0f * (filter->alpha - 8.0f) * filter->vout[1] + (filter->alpha - filter->beta) * filter->vout[2])) /
(filter->alpha + filter->beta);
return (filter->vout[0]);

1
app/src/app_service/ecg_service/ecg_data_mgr.c

@ -1,4 +1,5 @@
#include "ecg_data_mgr.h"
#include <string.h>
static ecg_report_data_t m_report_data_cache;

51
app/src/app_service/ecg_service/ecg_service.c

@ -55,11 +55,11 @@ uint8_t ads129x_send_cmd(uint8_t cmd) {
uint8_t rx = 0;
ADS129X_CS_RESET(); /* 选中设备 */
port_ads129x_delay_us(100);
nrf_delay_us(100);
rx = port_spi_transmit_receive(cmd);
port_ads129x_delay_us(100);
nrf_delay_us(100);
ADS129X_CS_SET(); /* 释放设备 */
return rx;
@ -70,7 +70,7 @@ uint8_t ads129x_rw_reg(uint8_t cmd, uint8_t data) {
uint8_t rx = 0;
ADS129X_CS_RESET(); /* 选中设备 */
port_ads129x_delay_us(1);
nrf_delay_us(1);
port_spi_transmit_receive(cmd); /* 发送读写指令 */
port_spi_transmit_receive(0X00); /* 只写一个数据 */
@ -80,7 +80,7 @@ uint8_t ads129x_rw_reg(uint8_t cmd, uint8_t data) {
else
rx = port_spi_transmit_receive(data); /* 写入数值 */
port_ads129x_delay_us(1);
nrf_delay_us(1);
ADS129X_CS_SET(); /* 释放设备 */
return rx;
@ -91,19 +91,19 @@ void ads129x_write_multiregs(uint8_t reg, uint8_t* ch, uint8_t size) {
uint8_t i;
ADS129X_CS_RESET(); /* 选中设备 */
port_ads129x_delay_us(100);
nrf_delay_us(100);
port_spi_transmit_receive(ADS129X_COMMAND_WREG | reg);
port_ads129x_delay_us(100);
nrf_delay_us(100);
port_spi_transmit_receive(size - 1);
for (i = 0; i < size; i++) {
port_ads129x_delay_us(100);
nrf_delay_us(100);
port_spi_transmit_receive(*ch);
ch++;
}
port_ads129x_delay_us(100);
nrf_delay_us(100);
ADS129X_CS_SET();
}
@ -112,19 +112,19 @@ void ads129x_read_multiregs(uint8_t reg, uint8_t* ch, uint8_t size) {
uint8_t i;
ADS129X_CS_RESET(); /* 选中设备 */
port_ads129x_delay_us(100);
nrf_delay_us(100);
port_spi_transmit_receive(ADS129X_COMMAND_RREG | reg);
port_ads129x_delay_us(100);
nrf_delay_us(100);
port_spi_transmit_receive(size - 1);
for (i = 0; i < size; i++) {
port_ads129x_delay_us(100);
nrf_delay_us(100);
*ch = port_spi_transmit_receive(0);
ch++;
}
port_ads129x_delay_us(100);
nrf_delay_us(100);
ADS129X_CS_SET();
}
@ -167,10 +167,10 @@ void ads129x_read_data(ads129x_capture_data_t* capture_data) {
uint8_t rddata[9];
ADS129X_CS_RESET(); /* 选中设备 */
port_ads129x_delay_us(10);
nrf_delay_us(10);
port_spi_transmit_receive(ADS129X_COMMAND_RDATA);
port_ads129x_delay_us(1);
nrf_delay_us(1);
for (int i = 0; i < 9; i++) {
rddata[i] = port_spi_transmit_receive(0);
}
@ -258,16 +258,16 @@ void ecg_service_load() {
ADS129X_REST_RESET();
ADS129X_START_RESET();
port_ads129x_delay_ms(1000);
nrf_delay_ms(1000);
ADS129X_REST_SET();
port_ads129x_delay_ms(100); /* 硬件复位 */
nrf_delay_ms(100); /* 硬件复位 */
ads129x_send_cmd(ADS129X_COMMAND_SDATAC); /* 软件复位,并停止连续读状态 */
port_ads129x_delay_ms(100);
nrf_delay_ms(100);
ads129x_send_cmd(ADS129X_COMMAND_RESET);
port_ads129x_delay_ms(1000);
nrf_delay_ms(1000);
ads129x_send_cmd(ADS129X_COMMAND_SDATAC);
port_ads129x_delay_ms(100);
nrf_delay_ms(100);
static ads129x_regs_t regcache;
ads129x_readback_regs(&regcache);
@ -296,13 +296,26 @@ void ecg_service_unload() {
nrf_gpio_cfg_default(ADS1291_READY_PIN);
}
static uint32_t ecg_service_captured_time = 0;
void ecg_service_start_capture() { //
ecg_data_mgr_clear_buffer();
ads129x_send_cmd(ADS129X_COMMAND_START); /* 发送开始数据转换(等效于拉高START引脚) */
ecg_service_captured_time = znordic_getpower_on_ms();
}
void ecg_service_stop_capture() { //
ads129x_send_cmd(ADS129X_COMMAND_STOP); /* 发送停止数据转换(等效于拉低START引脚) */
}
uint32_t ecg_service_has_captured_time() { return znordic_haspassed_ms(ecg_service_captured_time); }
void ecg_service_subic_write_reg(uint8_t addr, uint8_t val) { ads129x_rw_reg(ADS129X_COMMAND_WREG | addr, val); }
uint8_t ecg_service_subic_read_reg(uint8_t addr) { return ads129x_rw_reg(ADS129X_COMMAND_RREG | addr, 0); }
int32_t ecg_service_get_display_val(){
return ecg_algo_get_display_data();
}
int32_t ecg_service_get_heart_rate(){
return ecg_algo_get_heart_rate();
}

3
app/src/app_service/ecg_service/ecg_service.h

@ -28,6 +28,9 @@ void ecg_service_unload();
void ecg_service_start_capture();
void ecg_service_stop_capture();
uint32_t ecg_service_has_captured_time();
int32_t ecg_service_get_display_val();
int32_t ecg_service_get_heart_rate();
void ecg_service_subic_write_reg(uint8_t addr, uint8_t val);
uint8_t ecg_service_subic_read_reg(uint8_t addr);

2
app/src/app_service/light_ctrl.c

@ -37,7 +37,7 @@ static void light_ctrl_effect_tmr_handler(void* p_context) { //
}
} else if (m_led_green_light_effect == kLightEffect_quickFlash) {
if (BLINK_PERIOD_MS * m_blink_cnt >= QUICK_BLINK_PERIOD_MS) {
board_light_toggle_green_light_state();
light_ctrl_toggle_green_light_state();
m_blink_cnt = 0;
return;
}

6
app/src/one_conduction_main.c

@ -136,12 +136,12 @@ void one_conduction_process_rx_packet(uint8_t* rx, int len) {
receipt->drop_state0 = (0);
receipt->drop_state1 = 0x00;
receipt->device_state0.sampling_state = (zapp_state_machine_now_state() == kdevice_state_sampling);
receipt->device_state0.preview_state = zapp_get_gstate()->is_preview;
receipt->device_state0.low_battery = (BatteryMgrService_get_battery_level() < APP_LOW_BATTERY_WARNING_LIMIT);
receipt->device_state0.report_state = 0;
receipt->device_state0.low_battery = (0 < APP_LOW_BATTERY_WARNING_LIMIT);
receipt->device_state0.full_storge = false;
receipt->device_state1 = 0;
receipt->powerlevel = BatteryMgrService_get_battery_level();
receipt->powerlevel = battery_mgr_service_get_battery_level();
receipt->storage_item_num = 0;
zdatachannel_data_send2(bletxbuf, sendlen);

Loading…
Cancel
Save