Browse Source

update

master
zhaohe 1 year ago
parent
commit
d19cf32a70
  1. 20
      .vscode/settings.json
  2. 356
      app/app.uvoptx
  3. 272
      app/app.uvprojx
  4. 2
      app/config/sdk_config.h
  5. 1
      app/src/app_event.h
  6. 14
      app/src/aproject_config/config.h
  7. 14
      app/src/basic/device_version_info_mgr.h
  8. 0
      app/src/basic/m24m02/m24m02.c
  9. 0
      app/src/basic/m24m02/m24m02.h
  10. 12
      app/src/basic/version.h
  11. 16
      app/src/basic_service/app_event.h
  12. 4
      app/src/basic_service/app_event_distribute.c
  13. 2
      app/src/basic_service/app_event_distribute.h
  14. 0
      app/src/basic_service/device_state.c
  15. 18
      app/src/basic_service/device_state.h
  16. 3
      app/src/basic_service/device_version_info_mgr.c
  17. 16
      app/src/basic_service/device_version_info_mgr.h
  18. 133
      app/src/board/ads1291/ads1291.c
  19. 28
      app/src/board/ads1291/ads1291.h
  20. 330
      app/src/board/ads1291/ads1291_type.h
  21. 337
      app/src/board/ads1291/ads1292r_typ.h
  22. 2
      app/src/board/board_adc_module_ctrl.h
  23. 2
      app/src/board/board_battery_state.c
  24. 2
      app/src/board/board_battery_state.h
  25. 2
      app/src/board/board_beep_ctrl.h
  26. 37
      app/src/board/board_ecg_sensor.c
  27. 2
      app/src/board/board_ecg_sensor.h
  28. 2
      app/src/board/board_eeprom_driver.c
  29. 3
      app/src/board/board_light_ctrl.c
  30. 2
      app/src/board/board_light_ctrl.h
  31. 6
      app/src/board/board_ssd1306_interface.c
  32. 4
      app/src/board/board_ssd1306_interface.h
  33. 0
      app/src/board/ssd1306/driver_ssd1306.c
  34. 0
      app/src/board/ssd1306/driver_ssd1306.h
  35. 0
      app/src/board/ssd1306/driver_ssd1306_basic.c
  36. 0
      app/src/board/ssd1306/driver_ssd1306_basic.h
  37. 0
      app/src/board/ssd1306/driver_ssd1306_font.h
  38. 0
      app/src/board/ssd1306/driver_ssd1306_interface.h
  39. 0
      app/src/board/ssd1306/fontlib.c
  40. 0
      app/src/board/ssd1306/fontlib.h
  41. 0
      app/src/board/ssd1306/wave_drawer.c
  42. 0
      app/src/board/ssd1306/wave_drawer.h
  43. 3
      app/src/config.h
  44. 0
      app/src/device_controler.c
  45. 0
      app/src/device_controler.h
  46. 5
      app/src/display_manager_res.h
  47. 9
      app/src/heart_ware_sample_data_mgr.h
  48. 107
      app/src/heart_wave_sample_data_pre_process.c
  49. 8
      app/src/main.c
  50. 18
      app/src/one_conduction_main.c
  51. 13
      app/src/service/ble_cmd_processer/ble_cmd_process_service.c
  52. 2
      app/src/service/ble_cmd_processer/ble_cmd_process_service.h
  53. 5
      app/src/service/display_mgr/display_manager.c
  54. 0
      app/src/service/display_mgr/display_manager.h
  55. 0
      app/src/service/display_mgr/font.h
  56. 6
      app/src/service/heart_wave_sample_service/heart_ware_sample_data_mgr.c
  57. 9
      app/src/service/heart_wave_sample_service/heart_ware_sample_data_mgr.h
  58. 12
      app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c
  59. 2
      app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.h
  60. 7
      app/src/service/heart_wave_sample_service/heart_wave_sample_service.c
  61. 0
      app/src/service/heart_wave_sample_service/heart_wave_sample_service.h
  62. 1
      app/src/service/storage/sample_data_manager.c
  63. 2
      app/src/service/storage/sample_data_manager.h
  64. 3
      app/src/service/storage/storage_service.h
  65. 0
      app/src/service/storage/zeeprom_fs.c
  66. 0
      app/src/service/storage/zeeprom_fs.h
  67. 0
      bak/FIR.c
  68. 0
      bak/FIR.h
  69. 0
      bak/HC_Chen_detect.c
  70. 0
      bak/HC_Chen_detect.h
  71. 0
      bak/Pan_Tompkins_detect.c
  72. 0
      bak/Pan_Tompkins_detect.h
  73. 0
      bak/QRS.h
  74. 0
      bak/So_Chen_detect.c
  75. 0
      bak/So_Chen_detect.h
  76. 0
      bak/adaptive_algorithm.c
  77. 0
      bak/adaptive_algorithm.h
  78. 0
      bak/qrs_time_domain_zh.c
  79. 0
      bak/qrs_time_domain_zh.h
  80. 2
      libznordic
  81. 2
      sdk

20
.vscode/settings.json

@ -89,9 +89,9 @@
"stdarg.h": "c",
"nrf_uarte.h": "c",
"heart_rate_sensor_protocol.h": "c",
"ble_cmd_process_service.h": "c",
"service/ble_cmd_processer/ble_cmd_process_service.h": "c",
"heart_wave_sample_service.h": "c",
"basic/device_version_info_mgr.h": "c",
"basic_service/device_version_info_mgr.h": "c",
"nrf_uart.h": "c",
"ads_cfg.h": "c",
"sdk_config.h": "c",
@ -103,11 +103,11 @@
"board_battery_state.h": "c",
"board_sdcard_driver.h": "c",
"board_button.h": "c",
"app_event_distribute.h": "c",
"basic_service/app_event_distribute.h": "c",
"board_beep_ctrl.h": "c",
"nrf_soc.h": "c",
"sample_data_manager_service.h": "c",
"app_event.h": "c",
"basic_service/app_event.h": "c",
"compiler_abstraction.h": "c",
"ble_nus_c.h": "c",
"device_version_info_mgr.h": "c",
@ -115,7 +115,7 @@
"filter.h": "c",
"filters.h": "c",
"nrfx_rtc.h": "c",
"device_state.h": "c",
"basic_service/device_state.h": "c",
"board_adc_module_ctrl.h": "c",
"board_ecg_sensor.h": "c",
"board_light_ctrl.h": "c",
@ -191,7 +191,15 @@
"heart_ware_sample_data_mgr.h": "c",
"time.h": "c",
"nrf_gpio.h": "c",
"nrf_drv_clock.h": "c"
"nrf_drv_clock.h": "c",
"ads1291_type.h": "c",
"qrs.h": "c",
"app_event.h": "c",
"app_event_distribute.h": "c",
"nrf_bootloader_info.h": "c",
"ble_cmd_process_service.h": "c",
"storage_service.h": "c",
"board_ssd1306_interface.h": "c"
},
"files.encoding": "gbk"
}

356
app/app.uvoptx

@ -386,8 +386,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\heart_wave_sample_service.c</PathWithFileName>
<FilenameWithoutPath>heart_wave_sample_service.c</FilenameWithoutPath>
<PathWithFileName>.\src\one_conduction_main.c</PathWithFileName>
<FilenameWithoutPath>one_conduction_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\app_event_distribute.c</PathWithFileName>
<FilenameWithoutPath>app_event_distribute.c</FilenameWithoutPath>
<PathWithFileName>.\src\main.c</PathWithFileName>
<FilenameWithoutPath>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\basic\m24m02\m24m02.c</PathWithFileName>
<FilenameWithoutPath>m24m02.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_beep_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_beep_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -422,8 +422,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\ssd1306\driver_ssd1306.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_adc_module_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_adc_module_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -434,8 +434,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\ssd1306\driver_ssd1306_basic.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306_basic.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_battery_state.c</PathWithFileName>
<FilenameWithoutPath>board_battery_state.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -446,8 +446,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\ssd1306\fontlib.c</PathWithFileName>
<FilenameWithoutPath>fontlib.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_ecg_sensor.c</PathWithFileName>
<FilenameWithoutPath>board_ecg_sensor.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -458,8 +458,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\ssd1306\wave_drawer.c</PathWithFileName>
<FilenameWithoutPath>wave_drawer.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_light_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_light_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -470,8 +470,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\ble_cmd_process_service.c</PathWithFileName>
<FilenameWithoutPath>ble_cmd_process_service.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_ssd1306_interface.c</PathWithFileName>
<FilenameWithoutPath>board_ssd1306_interface.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -482,8 +482,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\device_controler.c</PathWithFileName>
<FilenameWithoutPath>device_controler.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_eeprom_driver.c</PathWithFileName>
<FilenameWithoutPath>board_eeprom_driver.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -494,8 +494,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\device_state.c</PathWithFileName>
<FilenameWithoutPath>device_state.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\board_power_mgr.c</PathWithFileName>
<FilenameWithoutPath>board_power_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -506,8 +506,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\display_manager.c</PathWithFileName>
<FilenameWithoutPath>display_manager.c</FilenameWithoutPath>
<PathWithFileName>.\src\basic_service\device_state.c</PathWithFileName>
<FilenameWithoutPath>device_state.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -518,8 +518,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\basic_service\device_version_info_mgr.c</PathWithFileName>
<FilenameWithoutPath>device_version_info_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -530,8 +530,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\sample_data_manager.c</PathWithFileName>
<FilenameWithoutPath>sample_data_manager.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\ssd1306\driver_ssd1306.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -542,8 +542,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\zeeprom_fs.c</PathWithFileName>
<FilenameWithoutPath>zeeprom_fs.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\ssd1306\driver_ssd1306_basic.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306_basic.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -554,8 +554,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\device_version_info_mgr.c</PathWithFileName>
<FilenameWithoutPath>device_version_info_mgr.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\ssd1306\fontlib.c</PathWithFileName>
<FilenameWithoutPath>fontlib.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -566,8 +566,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\main.c</PathWithFileName>
<FilenameWithoutPath>main.c</FilenameWithoutPath>
<PathWithFileName>.\src\board\ssd1306\wave_drawer.c</PathWithFileName>
<FilenameWithoutPath>wave_drawer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -578,8 +578,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_beep_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_beep_ctrl.c</FilenameWithoutPath>
<PathWithFileName>.\src\service\ble_cmd_processer\ble_cmd_process_service.c</PathWithFileName>
<FilenameWithoutPath>ble_cmd_process_service.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -590,8 +590,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_adc_module_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_adc_module_ctrl.c</FilenameWithoutPath>
<PathWithFileName>.\src\service\display_mgr\display_manager.c</PathWithFileName>
<FilenameWithoutPath>display_manager.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -602,8 +602,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_battery_state.c</PathWithFileName>
<FilenameWithoutPath>board_battery_state.c</FilenameWithoutPath>
<PathWithFileName>.\src\service\heart_wave_sample_service\heart_ware_sample_data_mgr.c</PathWithFileName>
<FilenameWithoutPath>heart_ware_sample_data_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -614,8 +614,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_ecg_sensor.c</PathWithFileName>
<FilenameWithoutPath>board_ecg_sensor.c</FilenameWithoutPath>
<PathWithFileName>.\src\service\heart_wave_sample_service\heart_wave_sample_data_pre_process.c</PathWithFileName>
<FilenameWithoutPath>heart_wave_sample_data_pre_process.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -626,8 +626,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_light_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_light_ctrl.c</FilenameWithoutPath>
<PathWithFileName>.\src\service\heart_wave_sample_service\heart_wave_sample_service.c</PathWithFileName>
<FilenameWithoutPath>heart_wave_sample_service.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -638,8 +638,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\FIR.c</PathWithFileName>
<FilenameWithoutPath>FIR.c</FilenameWithoutPath>
<PathWithFileName>.\src\service\storage\sample_data_manager.c</PathWithFileName>
<FilenameWithoutPath>sample_data_manager.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -650,8 +650,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\HC_Chen_detect.c</PathWithFileName>
<FilenameWithoutPath>HC_Chen_detect.c</FilenameWithoutPath>
<PathWithFileName>.\src\service\storage\zeeprom_fs.c</PathWithFileName>
<FilenameWithoutPath>zeeprom_fs.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -662,104 +662,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\So_Chen_detect.c</PathWithFileName>
<FilenameWithoutPath>So_Chen_detect.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\adaptive_algorithm.c</PathWithFileName>
<FilenameWithoutPath>adaptive_algorithm.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\Pan_Tompkins_detect.c</PathWithFileName>
<FilenameWithoutPath>Pan_Tompkins_detect.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic\qrs_time_domain_zh.c</PathWithFileName>
<FilenameWithoutPath>qrs_time_domain_zh.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_ssd1306_interface.c</PathWithFileName>
<FilenameWithoutPath>board_ssd1306_interface.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_eeprom_driver.c</PathWithFileName>
<FilenameWithoutPath>board_eeprom_driver.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_power_mgr.c</PathWithFileName>
<FilenameWithoutPath>board_power_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\heart_ware_sample_data_mgr.c</PathWithFileName>
<FilenameWithoutPath>heart_ware_sample_data_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\heart_wave_sample_data_pre_process.c</PathWithFileName>
<FilenameWithoutPath>heart_wave_sample_data_pre_process.c</FilenameWithoutPath>
<PathWithFileName>.\src\basic_service\app_event_distribute.c</PathWithFileName>
<FilenameWithoutPath>app_event_distribute.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -773,7 +677,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>34</FileNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -793,7 +697,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>35</FileNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -805,7 +709,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>36</FileNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -825,7 +729,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>37</FileNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -845,7 +749,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>38</FileNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -857,7 +761,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>39</FileNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -869,7 +773,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>40</FileNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -881,7 +785,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>41</FileNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -893,7 +797,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>42</FileNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -905,7 +809,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>43</FileNumber>
<FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -917,7 +821,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>44</FileNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -929,7 +833,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>45</FileNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -949,7 +853,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>46</FileNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -963,13 +867,13 @@
<Group>
<GroupName>nRF_Drivers</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>47</FileNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -981,7 +885,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>48</FileNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -993,7 +897,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1005,7 +909,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1017,7 +921,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1029,7 +933,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1041,7 +945,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1053,7 +957,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1065,7 +969,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1077,7 +981,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1089,7 +993,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1101,7 +1005,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1113,7 +1017,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1125,7 +1029,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1137,7 +1041,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1149,7 +1053,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1161,7 +1065,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1173,7 +1077,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1185,7 +1089,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1197,7 +1101,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1217,7 +1121,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1229,7 +1133,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1241,7 +1145,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1253,7 +1157,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1265,7 +1169,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1277,7 +1181,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1289,7 +1193,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1301,7 +1205,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1313,7 +1217,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1325,7 +1229,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1337,7 +1241,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1349,7 +1253,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1361,7 +1265,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1373,7 +1277,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1385,7 +1289,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1397,7 +1301,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1409,7 +1313,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1421,7 +1325,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>84</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1433,7 +1337,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>85</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1445,7 +1349,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>86</FileNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1457,7 +1361,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>87</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1469,7 +1373,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>88</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1481,7 +1385,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>89</FileNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1493,7 +1397,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>90</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1505,7 +1409,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>91</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1517,7 +1421,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>92</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1529,7 +1433,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>93</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1549,7 +1453,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>94</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1561,7 +1465,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>95</FileNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1573,7 +1477,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>96</FileNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1585,7 +1489,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>97</FileNumber>
<FileNumber>89</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1597,7 +1501,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>98</FileNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1609,7 +1513,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>99</FileNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1629,7 +1533,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>100</FileNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1641,7 +1545,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>101</FileNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1653,7 +1557,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>102</FileNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1673,7 +1577,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>103</FileNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1685,7 +1589,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>104</FileNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1697,7 +1601,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>105</FileNumber>
<FileNumber>97</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1717,7 +1621,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>106</FileNumber>
<FileNumber>98</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1729,7 +1633,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>107</FileNumber>
<FileNumber>99</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1741,7 +1645,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>108</FileNumber>
<FileNumber>100</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1761,7 +1665,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>109</FileNumber>
<FileNumber>101</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1773,7 +1677,7 @@
</File>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>110</FileNumber>
<FileNumber>102</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1793,7 +1697,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>111</FileNumber>
<FileNumber>103</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1805,7 +1709,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>112</FileNumber>
<FileNumber>104</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1817,7 +1721,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>113</FileNumber>
<FileNumber>105</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1829,7 +1733,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>114</FileNumber>
<FileNumber>106</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

272
app/app.uvprojx
File diff suppressed because it is too large
View File

2
app/config/sdk_config.h

@ -7719,7 +7719,7 @@
#ifndef NRF_FPRINTF_DOUBLE_ENABLED
#define NRF_FPRINTF_DOUBLE_ENABLED 0
#define NRF_FPRINTF_DOUBLE_ENABLED 1
#endif
// </h>

1
app/src/app_event.h

@ -1 +0,0 @@
#include "device_state.h"

14
app/src/board/board.h → app/src/aproject_config/config.h

@ -1,5 +1,19 @@
#pragma once
/***********************************************************************************************************************
* É豸ÐÅÏ¢ÅäÖà *
***********************************************************************************************************************/
#define CATEGORY "M1001" // µ¥µ¼Áª
#define MANUFACTURER_NAME "iflytop"
#define FIRMWARE_VERSION (10)
#define BLESTACK_VERSION 1
#define BOOTLOADER_VERSION 1
#define HARDWARE_VERSION (1)
#define APP_COMPANY_IDENTIFIER 0xFFFF
/*******************************************************************************
* BEEP *
*******************************************************************************/

14
app/src/basic/device_version_info_mgr.h

@ -1,14 +0,0 @@
#pragma once
#include "znordic.h"
typedef struct {
uint8_t sn[14];
} sn_t;
void device_info_read_sn(sn_t *sn);
const char *device_info_read_sn_str();
uint16_t device_info_read_blestack_version(void);
uint16_t device_info_read_bootloader_version(void);
uint16_t device_info_read_firmware_version(void);
uint16_t device_info_read_hardware_version(void);

0
app/src/basic/m24m02/m24m02.c

0
app/src/basic/m24m02/m24m02.h

12
app/src/basic/version.h

@ -1,12 +0,0 @@
#pragma once
#define CATEGORY "M1001" // µ¥µ¼Áª
#define MANUFACTURER_NAME "iflytop"
#define FIRMWARE_VERSION (10)
#define BLESTACK_VERSION 1
#define BOOTLOADER_VERSION 1
#define HARDWARE_VERSION (1)
// https://www.bluetooth.com/specifications/assigned-numbers/
// #define APP_COMPANY_IDENTIFIER 0x0059 /**< Company identifier for Nordic Semiconductor ASA. as per www.bluetooth.org. */
#define APP_COMPANY_IDENTIFIER 0xFFFF /**< Company identifier for Nordic Semiconductor ASA. as per www.bluetooth.org. */

16
app/src/device_state.h → app/src/basic_service/app_event.h

@ -2,7 +2,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "board/board.h"
#include "aproject_config/config.h"
typedef enum {
kplod_connected_event = 0, //
kplod_disconnected_event, //
@ -74,17 +74,3 @@ static const char* device_state_to_str(device_state_t ds) {
}
}
void app_event_process_cb(void* p_event_data, uint16_t event_size);
void ds_change_to_state(device_state_t state);
uint32_t ds_cur_state_haspassed_ms();
device_state_t ds_now_state();
typedef struct {
bool is_over30s;
} sample_capture_state_t;
sample_capture_state_t* sample_capture_state_get();
void sample_capture_state_reset();
void sample_capture_state_set_is_over30s(bool over30s);

4
app/src/app_event_distribute.c → app/src/basic_service/app_event_distribute.c

@ -1,6 +1,6 @@
#include "app_event_distribute.h"
#include "basic_service/app_event_distribute.h"
#include "app_event.h"
#include "basic_service/app_event.h"
#include "app_scheduler.h"
static AppEventListener m_listener[10];

2
app/src/app_event_distribute.h → app/src/basic_service/app_event_distribute.h

@ -2,7 +2,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "app_event.h"
#include "basic_service/app_event.h"
typedef void (*app_event_listener_t)(void* p_event_data, uint16_t event_size);

0
app/src/device_state.c → app/src/basic_service/device_state.c

18
app/src/basic_service/device_state.h

@ -0,0 +1,18 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "aproject_config/config.h"
#include "basic_service/app_event.h"
void ds_change_to_state(device_state_t state);
uint32_t ds_cur_state_haspassed_ms();
device_state_t ds_now_state();
typedef struct {
bool is_over30s;
} sample_capture_state_t;
sample_capture_state_t* sample_capture_state_get();
void sample_capture_state_reset();
void sample_capture_state_set_is_over30s(bool over30s);

3
app/src/basic/device_version_info_mgr.c → app/src/basic_service/device_version_info_mgr.c

@ -1,9 +1,8 @@
#include "device_version_info_mgr.h"
#include "board/board.h"
#include "aproject_config/config.h"
#include "zble_module.h"
//
#include "version.h"
#include "znordic.h"
void device_info_read_sn(sn_t *sn) {
uint32_t lot = NRF_UICR->CUSTOMER[0];

16
app/src/basic_service/device_version_info_mgr.h

@ -0,0 +1,16 @@
#pragma once
#include "znordic.h"
typedef struct {
uint8_t sn[14];
} sn_t;
void device_info_read_sn(sn_t *sn);
const char *device_info_read_sn_str();
uint16_t device_info_read_blestack_version(void);
uint16_t device_info_read_bootloader_version(void);
uint16_t device_info_read_firmware_version(void);
uint16_t device_info_read_hardware_version(void);

133
app/src/board/ads1291/ads1291.c

@ -0,0 +1,133 @@
#include "ads1291.h"
#include "ads1291_type.h"
/** @addtogroup ADS1292R
* @{
*/
/* Private typedef -----------------------------------------------------------*/
typedef struct {
uint8_t id; /* id,ads1292r固定为0x73 ads1291 0x52 */
uint8_t cfg1; /* 设置寄存器 */
uint8_t cfg2; /* 设置寄存器 */
uint8_t loff; /* 导联 */
uint8_t ch1set; /* 通道一设置 */
uint8_t ch2set; /* 通道二设置 */
uint8_t rld_sens; /* 右腿驱动 */
uint8_t loff_sens; /* 导联 */
uint8_t loff_stat; /* 导联 */
uint8_t resp1; /* 呼吸 */
uint8_t resp2; /* 呼吸 */
uint8_t gpio; /* gpio1,2的控制 */
} ads1292r_regs_s;
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* 局部全局变量,包含ads1292寄存器默认值 */
static ads1292r_regs_s ads1292r_reg = {
/* 默认参数 */
0x73, /* 默认地址0x73 */
0x02, /* 连续转换,500sps采样率 */
0x80, /* 导联脱落比较器关,内部参考电压关,2.42v参考电压,晶振输出关,测试信号关,测试信号频率为0HZ */
0x10, /* 脱落比较器正端阈值为95%,负端为5%,引出模式电流大小6na,频率为0HZ */
0x00, /* 通道一关闭,6倍增益,正常电极输入 */
0x00, /* 通道二关闭,6倍增益,正常电极输入 */
0x00, /* 未启用 */
0x00, /* 未启用 */
0x00, /* fmod为clk四分频,其他未用 */
0x02, /* 呼吸相关配置 */
0x03, /* 呼吸相关配置 */
0x0c /* gpio1、2皆为输入模式 */
};
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
/* 不必要,尽量不要对外开放以下函数,最好设置成static类型 */
/* ads1292r发送指令 */
uint8_t ads1292r_send_cmd(uint8_t cmd) {
uint8_t rx = 0;
ADS1292_CS_RESET(); /* 选中设备 */
port_delay_us(100);
rx = port_spi_transmit_receive(cmd);
port_delay_us(100);
ADS1292_CS_SET(); /* 释放设备 */
return rx;
}
/* ads1292r读写寄存器,自动根据指令类型区分读和写操作 */
uint8_t ads1292r_rw_reg(uint8_t cmd, uint8_t data) {
uint8_t rx = 0;
ADS1292_CS_RESET(); /* 选中设备 */
port_delay_us(1);
port_spi_transmit_receive(cmd); /* 发送读写指令 */
port_spi_transmit_receive(0X00); /* 只写一个数据 */
if ((cmd & ADS1292R_COMMAND_RREG) == ADS1292R_COMMAND_RREG) /* 判断指令类型 */
rx = port_spi_transmit_receive(0X00); /* 返回寄存器值 */
else
rx = port_spi_transmit_receive(data); /* 写入数值 */
port_delay_us(1);
ADS1292_CS_SET(); /* 释放设备 */
return rx;
}
/* 从指定寄存器开始读写一定数量的寄存器 */
void ads1292r_write_multiregs(uint8_t reg, uint8_t *ch, uint8_t size) {
uint8_t i;
ADS1292_CS_RESET(); /* 选中设备 */
port_delay_us(100);
port_spi_transmit_receive(ADS1292R_COMMAND_WREG | reg);
port_delay_us(100);
port_spi_transmit_receive(size - 1);
for (i = 0; i < size; i++) {
port_delay_us(100);
port_spi_transmit_receive(*ch);
ch++;
}
port_delay_us(100);
ADS1292_CS_SET();
}
/* 从指定寄存器开始读写一定数量的寄存器 */
void ads1292r_read_multiregs(uint8_t reg, uint8_t *ch, uint8_t size) {
uint8_t i;
ADS1292_CS_RESET(); /* 选中设备 */
port_delay_us(100);
port_spi_transmit_receive(ADS1292R_COMMAND_RREG | reg);
port_delay_us(100);
port_spi_transmit_receive(size - 1);
for (i = 0; i < size; i++) {
port_delay_us(100);
*ch = port_spi_transmit_receive(0);
ch++;
}
port_delay_us(100);
ADS1292_CS_SET();
}
uint8_t ads1292r_init(uint8_t timeout);
void ads1292r_normal_adc_start(void);
void ads1292r_test_adc_start(void);
void ads1292r_get_value(uint8_t *ad_buf);

28
app/src/board/ads1291/ads1291.h

@ -0,0 +1,28 @@
#ifndef __ADS1292R_H
#define __ADS1292R_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
uint8_t ads1292r_init(uint8_t timeout);
/** @brief 开启双通道正常模式采样,用于心电采集
* @details 500sps6ad数据
* @retval NONE
*/
void ads1292r_normal_adc_start(void);
/** @brief 开启双测试信号adc转换。
* @details 500sps61HZ方波ad数据
* @retval NONE
*/
void ads1292r_test_adc_start(void);
void ads1292r_get_value(uint8_t *ad_buf);
#ifdef __cplusplus
}
#endif
#endif /* __ADS1292R_H */

330
app/src/board/ads1291/ads1291_type.h

@ -0,0 +1,330 @@
/**
******************************************************************************
* @file : ads1291_typ.h
* @brief : ads1291相关数据类型定义
* @details :
* @author :
* @date : 2020/9/2
* @version : V0.1
* @copyright : Copyright (C)
******************************************************************************
* @attention
* NONE
******************************************************************************
* @verbatim
* :
* 1. 2020/9/2
* Charmander
*
* @endverbatim
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __ADS1292_TYP_H
#define __ADS1292_TYP_H
#ifdef __cplusplus
extern "C" {
#endif
/** @defgroup ADS1291_TYP ADS1291 TYP
* @{
*/
/* Exported types ------------------------------------------------------------*/
/** @addtogroup ADS1291_TYP_Exported_types ADS1291 TYP Exported types
* @{
*/
/** @brief 寄存器地址枚举
* @details 11
*/
typedef enum {
ADS1291_REG_ID = 0x00,
ADS1291_REG_CONFIG1 = 0x01,
ADS1291_REG_CONFIG2 = 0x02,
ADS1291_REG_LOFF = 0x03,
ADS1291_REG_CH1SET = 0x04,
ADS1291_REG_CH2SET = 0x05,
ADS1291_REG_RLDSENS = 0x06,
ADS1291_REG_LOFFSENS = 0x07,
ADS1291_REG_LOFFSTAT = 0x08,
ADS1291_REG_RESP1 = 0x09,
ADS1291_REG_RESP2 = 0x0A,
ADS1291_REG_GPIO = 0x0B
} ADS1291_REG_E;
/**
* @}
*/
/** @addtogroup ADS1291_TYP_Exported_constants ADS1291 TYP Exported constants
* @brief +
* +
* @{
*/
/* Exported constants --------------------------------------------------------*/
#define ADS1291_REG_SIZE_MAX 12 /* ADS1291寄存器数量 */
/** @addtogroup ADS1291_TYP_REG_CONTENT ADS1291 TYP Exported content
* @brief
* @{
*/
/* 芯片ID */
#define ADS1291_ID 0x73
/* 属于ADS1291_REG_CONFIG1的寄存器设置 */
#define ADS1291_SINGLE_SHOT_OFF 0 /* 连续转换模式,默认 */
#define ADS1291_SINGLE_SHOT_ON 1 /* 单次转换模式 */
/* 采样率,该模块采用fclk为512k,0分频模式,其他配置下采样率会改变 */
#define ADS1291_OVERSAMPLING_125SPS 0
#define ADS1291_OVERSAMPLING_250SPS 1
#define ADS1291_OVERSAMPLING_500SPS 2 /* 默认 */
#define ADS1291_OVERSAMPLING_1000SPS 3
#define ADS1291_OVERSAMPLING_2000SPS 4
#define ADS1291_OVERSAMPLING_4000SPS 5
#define ADS1291_OVERSAMPLING_8000SPS 6
#define ADS1291_OVERSAMPLING_NONESPS 7
/* 属于ADS1291_REG_CONFIG2的寄存器设置 */
#define ADS1291_PDB_LOFF_COMP_OFF 0 /* 导联脱落比较器关,默认 */
#define ADS1291_PDB_LOFF_COMP_ON 1 /* 导联脱落比较器开 */
#define ADS1291_PDB_REFBUF_OFF 0 /* 内部参考电压关,默认 */
#define ADS1291_PDB_REFBUF_ON 1 /* 内部参考电压开 */
#define ADS1291_VREF_2420MV 0 /* 选择参考电压为2.42v,默认 */
#define ADS1291_VREF_4033MV 1 /* 选择参考电压为4.033v */
#define ADS1291_CLK_OUTPUT_OFF 0 /* 时钟输出关,默认 */
#define ADS1291_CLK_OUTPUT_ON 1 /* 时钟输出开 */
#define ADS1291_INT_TEST_OFF 0 /* 内部测试电压关,默认 */
#define ADS1291_INT_TEST_ON 1 /* 内部测试电压开 */
#define ADS1291_INT_FREQ_DC 0 /* 直流,默认 */
#define ADS1291_INT_FREQ_AC 1 /* 1HZ方波 */
/* 属于ADS1291_REG_LOFF的寄存器设置 */
/* 属于ADS1291_REG_CH1SET,与ADS1291_REG_CH2SET的寄存器设置 */
#define ADS1291_CHx_OFF 1 /* 禁止使用通道一 */
#define ADS1291_CHx_ON 0 /* 使用通道一,默认 */
#define ADS1291_GAIN_6 0 /* 使用通道一6倍增益,默认 */
#define ADS1291_GAIN_1 1 /* 使用通道一1倍增益 */
#define ADS1291_GAIN_2 2 /* 使用通道一2倍增益 */
#define ADS1291_GAIN_3 3 /* 使用通道一3倍增益 */
#define ADS1291_GAIN_4 4 /* 使用通道一4倍增益 */
#define ADS1291_GAIN_8 5 /* 使用通道一8倍增益 */
#define ADS1291_GAIN_12 6 /* 使用通道一12倍增益 */
/* 选择通道一的输入 */
#define ADS1291_CHx_INPUT_NORMAL 0 /* 正常电极输入,默认 */
#define ADS1291_CHx_INPUT_SHORTED 1 /* 短路,测偏执用 */
#define ADS1291_CHx_INPUT_RLD 2 /* 右腿驱动 */
/* For channel 1, (MVDDP – MVDDN) is [0.5(AVDD + AVSS)]; for channel 2, (MVDDP – MVDDN) is DVDD / 4. */
/* For channel 2,VDD / 2 for supply measurement */
#define ADS1291_CHx_INPUT_MVDD 3
#define ADS1291_CHx_INPUT_TEMP 4 /* 板载温度 */
#define ADS1291_CHx_INPUT_TEST 5 /* 内部测试信号 */
#define ADS1291_CHx_INPUT_RLDDRP 6
#define ADS1291_CHx_INPUT_RLDDRM 7
#define ADS1291_CHx_INPUT_RLDDRPM 8
#define ADS1291_CHx_INPUT_ROUTE 9 /* 连接到通道三 */
#define ADS1291_CHx_INPUT_RESERVED 10 /* 预留 */
/* 属于ADS1291_REG_RLDSENS的寄存器设置 */
#define ADS1291_CHOP_FREQ_DIV4 3 /* PGA斩波频率未fMOD/4 */
#define ADS1291_PDB_RLD_OFF 0 /* 右腿驱动电源关,默认 */
#define ADS1291_PDB_RLD_ON 1 /* 右腿驱动电源开 */
#define ADS1291_PDB_RLD_SENSE_OFF 0 /* 右腿驱动导联脱落检测关,默认 */
#define ADS1291_PDB_RLD_SENSE_ON 1 /* 右腿驱动导联脱落检测开 */
#define ADS1291_RLD2N_OFF 0 /* 通道二负极为右腿输入关,默认 */
#define ADS1291_RLD2N_ON 1 /* 通道二负极为右腿输入开 */
#define ADS1291_RLD2P_OFF 0 /* 通道二正极为右腿输入关,默认 */
#define ADS1291_RLD2P_ON 1 /* 通道二正极为右腿输入开 */
#define ADS1291_RLD1N_OFF 0 /* 通道一负极为右腿输入关,默认 */
#define ADS1291_RLD1N_ON 1 /* 通道一负极为右腿输入开 */
#define ADS1291_RLD1P_OFF 0 /* 通道一正极为右腿输入关,默认 */
#define ADS1291_RLD1P_ON 1 /* 通道一正极为右腿输入开 */
/* 属于ADS1291_REG_LOFFSENS的寄存器设置 */
#define ADS1291_FLIP2_OFF 0 /* 导联脱落检测通道二电流方向关,默认 */
#define ADS1291_FLIP2_ON 1 /* 导联脱落检测通道二电流方向开 */
#define ADS1291_FLIP1_OFF 0 /* 导联脱落检测通道一电流方向关,默认 */
#define ADS1291_FLIP1_ON 1 /* 导联脱落检测通道一电流方向开 */
#define ADS1291_LOFF2N_OFF 0 /* 通道二负极导联脱落检测关,默认 */
#define ADS1291_LOFF2N_ON 1 /* 通道二负极导联脱落检测开 */
#define ADS1291_LOFF2P_OFF 0 /* 通道二正极导联脱落检测关,默认 */
#define ADS1291_LOFF2P_ON 1 /* 通道二正极导联脱落检测开 */
#define ADS1291_LOFF1N_OFF 0 /* 通道一负极导联脱落检测关,默认 */
#define ADS1291_LOFF1N_ON 1 /* 通道一负极导联脱落检测开 */
#define ADS1291_LOFF1P_OFF 0 /* 通道一正极导联脱落检测关,默认 */
#define ADS1291_LOFF1P_ON 1 /* 通道一正极导联脱落检测开 */
/* 属于ADS1291_REG_LOFFSTAT的寄存器设置 */
#define ADS1291_CLK_DIV4 0 /* 0 = fMOD = fCLK / 4 (default, use when fCLK = 512 kHz) */
#define ADS1291_CLK_DIV16 1 /* 1 = fMOD = fCLK / 16 (use when fCLK = 2.048 MHz) */
/* 属于ADS1291_REG_RESP1的寄存器设置 */
#define ADS1291_DEMOD_EN1_OFF 0 /* 通道一上的呼吸解调电路关,默认 */
#define ADS1291_DEMOD_EN1_ON 1 /* 通道一上的呼吸解调电路开 */
#define ADS1291_DEMOD_EN_OFF 0 /* 通道一上的呼吸调制电路关,默认 */
#define ADS1291_DEMOD_EN_ON 1 /* 通道一上的呼吸调制电路开 */
#define ADS1291_RESPPH_0 0 /* 解调信号相位偏移0,默认 */
#define ADS1291_RESPPH_135 0x0c /* 解调信号相位偏移135度 */
#define ADS1291_RESP_CTRL_INT 0 /* 内部呼吸内部时钟,默认 */
#define ADS1291_RESP_CTRL_EXT 1 /* 内部呼吸外部时钟 */
/* 属于ADS1291_REG_RESP2的寄存器设置 */
#define ADS1291_CALIB_ON_OFF 0 /* 校准关,默认 */
#define ADS1291_CALIB_ON_ON 1 /* 校准开 */
#define ADS1291_RESP_FREQ_36 0 /* 通道一上的呼吸调制电路关,默认 */
#define ADS1291_RESP_FREQ_64 1 /* 通道一上的呼吸调制电路开 */
#define ADS1291_RLDREF_EXT 0 /* 右腿驱动参考电压选择外部反馈,默认 */
#define ADS1291_RLDREF_INT 1 /* 右腿驱动参考电压选择内部信号 */
/* 属于ADS1291_REG_GPIO的寄存器设置 */
/**
* @}
*/
/** @addtogroup ADS1291_TYP_REG_MASK ADS1291 TYP Reg Mask
* @brief ADS1291_GET_BITS与ADS1291_SET_BITS函数调用
* @{
*/
#define ADS1291_ID_POS 0
#define ADS1291_ID_MASK 0xFF
#define ADS1291_SINGLE_SHOT_POS 7
#define ADS1291_SINGLE_SHOT_MASK 0x80
#define ADS1291_DR_POS 0
#define ADS1291_DR_MASK 0x07
#define ADS1291_PDB_LOFF_COMP_POS 6
#define ADS1291_PDB_LOFF_COMP_MASK 0x40
#define ADS1291_PDB_REFBUF_POS 5
#define ADS1291_PDB_REFBUF_MASK 0x20
#define ADS1291_VREF_4V_POS 4
#define ADS1291_VREF_4V_MASK 0x10
#define ADS1291_CLK_EN_POS 3
#define ADS1291_CLK_EN_MASK 0x80
#define ADS1291_INT_TEST_POS 1
#define ADS1291_INT_TEST_MASK 0x02
#define ADS1291_INT_FREQ_POS 0
#define ADS1291_INT_FREQ_MASK 0x01
#define ADS1291_PDx_POS 7
#define ADS1291_PDx_MASK 0x80
#define ADS1291_GAINx_POS 4
#define ADS1291_GAINx_MASK 0x70
#define ADS1291_MUXx_POS 0
#define ADS1291_MUXx_MASK 0x0F
#define ADS1291_CHOP_POS 6
#define ADS1291_CHOP_MASK 0xC0
#define ADS1291_PDB_RLD_POS 5
#define ADS1291_PDB_RLD_MASK 0x20
#define ADS1291_RLD_LOFF_SENSE_POS 4
#define ADS1291_RLD_LOFF_SENSE_MASK 0x10
#define ADS1291_RLD2N_POS 3
#define ADS1291_RLD2N_MASK 0x08
#define ADS1291_RLD2P_POS 2
#define ADS1291_RLD2P_MASK 0x04
#define ADS1291_RLD1N_POS 1
#define ADS1291_RLD1N_MASK 0x02
#define ADS1291_RLD1P_POS 0
#define ADS1291_RLD1P_MASK 0x01
#define ADS1291_FLIP2_POS 5
#define ADS1291_FLIP2_MASK 0x20
#define ADS1291_FLIP1_POS 4
#define ADS1291_FLIP1_MASK 0x10
#define ADS1291_LOFF2N_POS 3
#define ADS1291_LOFF2N_MASK 0x08
#define ADS1291_LOFF2P_POS 2
#define ADS1291_LOFF2P_MASK 0x04
#define ADS1291_LOFFN_POS 1
#define ADS1291_LOFF1N_MASK 0x02
#define ADS1291_LOFF1P_POS 0
#define ADS1291_LOFF1P_MASK 0x01
#define ADS1291_CLK_DIV_POS 6
#define ADS1291_CLK_DIV_MASK 0x40
#define ADS1291_RESP_DEMOD_EN1_POS 7
#define ADS1291_RESP_DEMOD_EN1_MASK 0x80
#define ADS1291_RESP_MOD_EN_POS 6
#define ADS1291_RESP_MOD_EN_MASK 0x40
#define ADS1291_RESP_PH_POS 2
#define ADS1291_RESP_PH_MASK 0x3c
#define ADS1291_RESP_CTRL_POS 0
#define ADS1291_RESP_CTRL_MASK 0x01
#define ADS1291_CALIB_ON_POS 7
#define ADS1291_CALIB_ON_MASK 0x80
#define ADS1291_RESP_FREQ_POS 2
#define ADS1291_RESP_FREQ_MASK 0x04
#define ADS1291_RLDREF_INT_POS 1
#define ADS1291_RLDREF_INT_MASK 0x02
/**
* @}
*/
/** @addtogroup ADS1291_TYP_COMMAND ADS1291 TYP COMMAND
* @brief
* @{
*/
/* System Commands */
#define ADS1291_COMMAND_WAKEUP 0x02
#define ADS1291_COMMAND_STANDBY 0x04
#define ADS1291_COMMAND_RESET 0x06
#define ADS1291_COMMAND_START 0x08
#define ADS1291_COMMAND_STOP 0x0A
#define ADS1291_COMMAND_OFFSETCAL 0x1A
/* Data Read Commands */
#define ADS1291_COMMAND_RDATAC 0x10
#define ADS1291_COMMAND_SDATAC 0x11
#define ADS1291_COMMAND_RDATA 0x12
/* Register Read Commands,最后5位为读写的地址 */
#define ADS1291_COMMAND_RREG 0x20
#define ADS1291_COMMAND_WREG 0x40
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/* Exported macro ------------------------------------------------------------*/
/** @brief 读取ADS1291的指定寄存器的指定位
* @details
* @param[in] bitname
* @param[in] reg
* @retval
*/
#define ADS1291_GET_BITS(bitname, reg) ((reg & bitname##_MASK) >> bitname##_POS)
/** @brief 设置ADS1291的指定寄存器的指定位
* @details
* @param[in] reg
* @param[in] bitname
* @param[in] val
* @retval NONE
*/
#define ADS1291_SET_BITS(reg, bitname, val) ((reg & ~bitname##_MASK) | ((val << bitname##_POS) & bitname##_MASK))
/* Exported functions --------------------------------------------------------*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __ADS1292_TYP_H */

337
app/src/board/ads1291/ads1292r_typ.h

@ -1,337 +0,0 @@
/**
******************************************************************************
* @file : ads1292r_typ.h
* @brief : ads1292r相关数据类型定义
* @details :
* @author :
* @date : 2020/9/2
* @version : V0.1
* @copyright : Copyright (C)
******************************************************************************
* @attention
* NONE
******************************************************************************
* @verbatim
* :
* 1. 2020/9/2
* Charmander
*
* @endverbatim
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __ADS1292_TYP_H
#define __ADS1292_TYP_H
#ifdef __cplusplus
extern "C" {
#endif
/** @defgroup ADS1292R_TYP ADS1292R TYP
* @{
*/
/* Exported types ------------------------------------------------------------*/
/** @addtogroup ADS1292R_TYP_Exported_types ADS1292R TYP Exported types
* @{
*/
/** @brief 寄存器地址枚举
* @details 11
*/
typedef enum
{
ADS1292R_REG_ID = 0x00 ,
ADS1292R_REG_CONFIG1 = 0x01 ,
ADS1292R_REG_CONFIG2 = 0x02 ,
ADS1292R_REG_LOFF = 0x03 ,
ADS1292R_REG_CH1SET = 0x04 ,
ADS1292R_REG_CH2SET = 0x05 ,
ADS1292R_REG_RLDSENS = 0x06 ,
ADS1292R_REG_LOFFSENS = 0x07 ,
ADS1292R_REG_LOFFSTAT = 0x08 ,
ADS1292R_REG_RESP1 = 0x09 ,
ADS1292R_REG_RESP2 = 0x0A ,
ADS1292R_REG_GPIO = 0x0B
}ADS1292R_REG_E ;
/**
* @}
*/
/** @addtogroup ADS1292R_TYP_Exported_constants ADS1292R TYP Exported constants
* @brief +
* +
* @{
*/
/* Exported constants --------------------------------------------------------*/
#define ADS1292R_REG_SIZE_MAX 12 /* ADS1292R寄存器数量 */
/** @addtogroup ADS1292R_TYP_REG_CONTENT ADS1292R TYP Exported content
* @brief
* @{
*/
/* 芯片ID */
#define ADS1292R_ID 0x73
/* 属于ADS1292R_REG_CONFIG1的寄存器设置 */
#define ADS1292R_SINGLE_SHOT_OFF 0 /* 连续转换模式,默认 */
#define ADS1292R_SINGLE_SHOT_ON 1 /* 单次转换模式 */
/* 采样率,该模块采用fclk为512k,0分频模式,其他配置下采样率会改变 */
#define ADS1292R_OVERSAMPLING_125SPS 0
#define ADS1292R_OVERSAMPLING_250SPS 1
#define ADS1292R_OVERSAMPLING_500SPS 2 /* 默认 */
#define ADS1292R_OVERSAMPLING_1000SPS 3
#define ADS1292R_OVERSAMPLING_2000SPS 4
#define ADS1292R_OVERSAMPLING_4000SPS 5
#define ADS1292R_OVERSAMPLING_8000SPS 6
#define ADS1292R_OVERSAMPLING_NONESPS 7
/* 属于ADS1292R_REG_CONFIG2的寄存器设置 */
#define ADS1292R_PDB_LOFF_COMP_OFF 0 /* 导联脱落比较器关,默认 */
#define ADS1292R_PDB_LOFF_COMP_ON 1 /* 导联脱落比较器开 */
#define ADS1292R_PDB_REFBUF_OFF 0 /* 内部参考电压关,默认 */
#define ADS1292R_PDB_REFBUF_ON 1 /* 内部参考电压开 */
#define ADS1292R_VREF_2420MV 0 /* 选择参考电压为2.42v,默认 */
#define ADS1292R_VREF_4033MV 1 /* 选择参考电压为4.033v */
#define ADS1292R_CLK_OUTPUT_OFF 0 /* 时钟输出关,默认 */
#define ADS1292R_CLK_OUTPUT_ON 1 /* 时钟输出开 */
#define ADS1292R_INT_TEST_OFF 0 /* 内部测试电压关,默认 */
#define ADS1292R_INT_TEST_ON 1 /* 内部测试电压开 */
#define ADS1292R_INT_FREQ_DC 0 /* 直流,默认 */
#define ADS1292R_INT_FREQ_AC 1 /* 1HZ方波 */
/* 属于ADS1292R_REG_LOFF的寄存器设置 */
/* 属于ADS1292R_REG_CH1SET,与ADS1292R_REG_CH2SET的寄存器设置 */
#define ADS1292R_CHx_OFF 1 /* 禁止使用通道一 */
#define ADS1292R_CHx_ON 0 /* 使用通道一,默认 */
#define ADS1292R_GAIN_6 0 /* 使用通道一6倍增益,默认 */
#define ADS1292R_GAIN_1 1 /* 使用通道一1倍增益 */
#define ADS1292R_GAIN_2 2 /* 使用通道一2倍增益 */
#define ADS1292R_GAIN_3 3 /* 使用通道一3倍增益 */
#define ADS1292R_GAIN_4 4 /* 使用通道一4倍增益 */
#define ADS1292R_GAIN_8 5 /* 使用通道一8倍增益 */
#define ADS1292R_GAIN_12 6 /* 使用通道一12倍增益 */
/* 选择通道一的输入 */
#define ADS1292R_CHx_INPUT_NORMAL 0 /* 正常电极输入,默认 */
#define ADS1292R_CHx_INPUT_SHORTED 1 /* 短路,测偏执用 */
#define ADS1292R_CHx_INPUT_RLD 2 /* 右腿驱动 */
/* For channel 1, (MVDDP – MVDDN) is [0.5(AVDD + AVSS)]; for channel 2, (MVDDP – MVDDN) is DVDD / 4. */
/* For channel 2,VDD / 2 for supply measurement */
#define ADS1292R_CHx_INPUT_MVDD 3
#define ADS1292R_CHx_INPUT_TEMP 4 /* 板载温度 */
#define ADS1292R_CHx_INPUT_TEST 5 /* 内部测试信号 */
#define ADS1292R_CHx_INPUT_RLDDRP 6
#define ADS1292R_CHx_INPUT_RLDDRM 7
#define ADS1292R_CHx_INPUT_RLDDRPM 8
#define ADS1292R_CHx_INPUT_ROUTE 9 /* 连接到通道三 */
#define ADS1292R_CHx_INPUT_RESERVED 10 /* 预留 */
/* 属于ADS1292R_REG_RLDSENS的寄存器设置 */
#define ADS1292R_CHOP_FREQ_DIV4 3 /* PGA斩波频率未fMOD/4 */
#define ADS1292R_PDB_RLD_OFF 0 /* 右腿驱动电源关,默认 */
#define ADS1292R_PDB_RLD_ON 1 /* 右腿驱动电源开 */
#define ADS1292R_PDB_RLD_SENSE_OFF 0 /* 右腿驱动导联脱落检测关,默认 */
#define ADS1292R_PDB_RLD_SENSE_ON 1 /* 右腿驱动导联脱落检测开 */
#define ADS1292R_RLD2N_OFF 0 /* 通道二负极为右腿输入关,默认 */
#define ADS1292R_RLD2N_ON 1 /* 通道二负极为右腿输入开 */
#define ADS1292R_RLD2P_OFF 0 /* 通道二正极为右腿输入关,默认 */
#define ADS1292R_RLD2P_ON 1 /* 通道二正极为右腿输入开 */
#define ADS1292R_RLD1N_OFF 0 /* 通道一负极为右腿输入关,默认 */
#define ADS1292R_RLD1N_ON 1 /* 通道一负极为右腿输入开 */
#define ADS1292R_RLD1P_OFF 0 /* 通道一正极为右腿输入关,默认 */
#define ADS1292R_RLD1P_ON 1 /* 通道一正极为右腿输入开 */
/* 属于ADS1292R_REG_LOFFSENS的寄存器设置 */
#define ADS1292R_FLIP2_OFF 0 /* 导联脱落检测通道二电流方向关,默认 */
#define ADS1292R_FLIP2_ON 1 /* 导联脱落检测通道二电流方向开 */
#define ADS1292R_FLIP1_OFF 0 /* 导联脱落检测通道一电流方向关,默认 */
#define ADS1292R_FLIP1_ON 1 /* 导联脱落检测通道一电流方向开 */
#define ADS1292R_LOFF2N_OFF 0 /* 通道二负极导联脱落检测关,默认 */
#define ADS1292R_LOFF2N_ON 1 /* 通道二负极导联脱落检测开 */
#define ADS1292R_LOFF2P_OFF 0 /* 通道二正极导联脱落检测关,默认 */
#define ADS1292R_LOFF2P_ON 1 /* 通道二正极导联脱落检测开 */
#define ADS1292R_LOFF1N_OFF 0 /* 通道一负极导联脱落检测关,默认 */
#define ADS1292R_LOFF1N_ON 1 /* 通道一负极导联脱落检测开 */
#define ADS1292R_LOFF1P_OFF 0 /* 通道一正极导联脱落检测关,默认 */
#define ADS1292R_LOFF1P_ON 1 /* 通道一正极导联脱落检测开 */
/* 属于ADS1292R_REG_LOFFSTAT的寄存器设置 */
#define ADS1292R_CLK_DIV4 0 /* 0 = fMOD = fCLK / 4 (default, use when fCLK = 512 kHz) */
#define ADS1292R_CLK_DIV16 1 /* 1 = fMOD = fCLK / 16 (use when fCLK = 2.048 MHz) */
/* 属于ADS1292R_REG_RESP1的寄存器设置 */
#define ADS1292R_DEMOD_EN1_OFF 0 /* 通道一上的呼吸解调电路关,默认 */
#define ADS1292R_DEMOD_EN1_ON 1 /* 通道一上的呼吸解调电路开 */
#define ADS1292R_DEMOD_EN_OFF 0 /* 通道一上的呼吸调制电路关,默认 */
#define ADS1292R_DEMOD_EN_ON 1 /* 通道一上的呼吸调制电路开 */
#define ADS1292R_RESPPH_0 0 /* 解调信号相位偏移0,默认 */
#define ADS1292R_RESPPH_135 0x0c /* 解调信号相位偏移135度 */
#define ADS1292R_RESP_CTRL_INT 0 /* 内部呼吸内部时钟,默认 */
#define ADS1292R_RESP_CTRL_EXT 1 /* 内部呼吸外部时钟 */
/* 属于ADS1292R_REG_RESP2的寄存器设置 */
#define ADS1292R_CALIB_ON_OFF 0 /* 校准关,默认 */
#define ADS1292R_CALIB_ON_ON 1 /* 校准开 */
#define ADS1292R_RESP_FREQ_36 0 /* 通道一上的呼吸调制电路关,默认 */
#define ADS1292R_RESP_FREQ_64 1 /* 通道一上的呼吸调制电路开 */
#define ADS1292R_RLDREF_EXT 0 /* 右腿驱动参考电压选择外部反馈,默认 */
#define ADS1292R_RLDREF_INT 1 /* 右腿驱动参考电压选择内部信号 */
/* 属于ADS1292R_REG_GPIO的寄存器设置 */
/**
* @}
*/
/** @addtogroup ADS1292R_TYP_REG_MASK ADS1292R TYP Reg Mask
* @brief ADS1292R_GET_BITS与ADS1292R_SET_BITS函数调用
* @{
*/
#define ADS1292R_ID_POS 0
#define ADS1292R_ID_MASK 0xFF
#define ADS1292R_SINGLE_SHOT_POS 7
#define ADS1292R_SINGLE_SHOT_MASK 0x80
#define ADS1292R_DR_POS 0
#define ADS1292R_DR_MASK 0x07
#define ADS1292R_PDB_LOFF_COMP_POS 6
#define ADS1292R_PDB_LOFF_COMP_MASK 0x40
#define ADS1292R_PDB_REFBUF_POS 5
#define ADS1292R_PDB_REFBUF_MASK 0x20
#define ADS1292R_VREF_4V_POS 4
#define ADS1292R_VREF_4V_MASK 0x10
#define ADS1292R_CLK_EN_POS 3
#define ADS1292R_CLK_EN_MASK 0x80
#define ADS1292R_INT_TEST_POS 1
#define ADS1292R_INT_TEST_MASK 0x02
#define ADS1292R_INT_FREQ_POS 0
#define ADS1292R_INT_FREQ_MASK 0x01
#define ADS1292R_PDx_POS 7
#define ADS1292R_PDx_MASK 0x80
#define ADS1292R_GAINx_POS 4
#define ADS1292R_GAINx_MASK 0x70
#define ADS1292R_MUXx_POS 0
#define ADS1292R_MUXx_MASK 0x0F
#define ADS1292R_CHOP_POS 6
#define ADS1292R_CHOP_MASK 0xC0
#define ADS1292R_PDB_RLD_POS 5
#define ADS1292R_PDB_RLD_MASK 0x20
#define ADS1292R_RLD_LOFF_SENSE_POS 4
#define ADS1292R_RLD_LOFF_SENSE_MASK 0x10
#define ADS1292R_RLD2N_POS 3
#define ADS1292R_RLD2N_MASK 0x08
#define ADS1292R_RLD2P_POS 2
#define ADS1292R_RLD2P_MASK 0x04
#define ADS1292R_RLD1N_POS 1
#define ADS1292R_RLD1N_MASK 0x02
#define ADS1292R_RLD1P_POS 0
#define ADS1292R_RLD1P_MASK 0x01
#define ADS1292R_FLIP2_POS 5
#define ADS1292R_FLIP2_MASK 0x20
#define ADS1292R_FLIP1_POS 4
#define ADS1292R_FLIP1_MASK 0x10
#define ADS1292R_LOFF2N_POS 3
#define ADS1292R_LOFF2N_MASK 0x08
#define ADS1292R_LOFF2P_POS 2
#define ADS1292R_LOFF2P_MASK 0x04
#define ADS1292R_LOFFN_POS 1
#define ADS1292R_LOFF1N_MASK 0x02
#define ADS1292R_LOFF1P_POS 0
#define ADS1292R_LOFF1P_MASK 0x01
#define ADS1292R_CLK_DIV_POS 6
#define ADS1292R_CLK_DIV_MASK 0x40
#define ADS1292R_RESP_DEMOD_EN1_POS 7
#define ADS1292R_RESP_DEMOD_EN1_MASK 0x80
#define ADS1292R_RESP_MOD_EN_POS 6
#define ADS1292R_RESP_MOD_EN_MASK 0x40
#define ADS1292R_RESP_PH_POS 2
#define ADS1292R_RESP_PH_MASK 0x3c
#define ADS1292R_RESP_CTRL_POS 0
#define ADS1292R_RESP_CTRL_MASK 0x01
#define ADS1292R_CALIB_ON_POS 7
#define ADS1292R_CALIB_ON_MASK 0x80
#define ADS1292R_RESP_FREQ_POS 2
#define ADS1292R_RESP_FREQ_MASK 0x04
#define ADS1292R_RLDREF_INT_POS 1
#define ADS1292R_RLDREF_INT_MASK 0x02
/**
* @}
*/
/** @addtogroup ADS1292R_TYP_COMMAND ADS1292R TYP COMMAND
* @brief
* @{
*/
/* System Commands */
#define ADS1292R_COMMAND_WAKEUP 0x02
#define ADS1292R_COMMAND_STANDBY 0x04
#define ADS1292R_COMMAND_RESET 0x06
#define ADS1292R_COMMAND_START 0x08
#define ADS1292R_COMMAND_STOP 0x0A
#define ADS1292R_COMMAND_OFFSETCAL 0x1A
/* Data Read Commands */
#define ADS1292R_COMMAND_RDATAC 0x10
#define ADS1292R_COMMAND_SDATAC 0x11
#define ADS1292R_COMMAND_RDATA 0x12
/* Register Read Commands,最后5位为读写的地址 */
#define ADS1292R_COMMAND_RREG 0x20
#define ADS1292R_COMMAND_WREG 0x40
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/* Exported macro ------------------------------------------------------------*/
/** @brief 读取ADS1292R的指定寄存器的指定位
* @details
* @param[in] bitname
* @param[in] reg
* @retval
*/
#define ADS1292R_GET_BITS(bitname, reg) ((reg & bitname##_MASK) >> bitname##_POS)
/** @brief 设置ADS1292R的指定寄存器的指定位
* @details
* @param[in] reg
* @param[in] bitname
* @param[in] val
* @retval NONE
*/
#define ADS1292R_SET_BITS(reg, bitname, val) ((reg & ~bitname##_MASK) \
| ((val << bitname##_POS) & bitname##_MASK))
/* Exported functions --------------------------------------------------------*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __ADS1292_TYP_H */

2
app/src/board/board_adc_module_ctrl.h

@ -3,7 +3,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "board/board.h"
#include "aproject_config/config.h"
#include "znordic.h"
void BoardAdc_init();

2
app/src/board/board_battery_state.c

@ -1,7 +1,7 @@
#include "board_battery_state.h"
#include "app_event.h"
#include "basic_service/app_event.h"
#include "board_adc_module_ctrl.h"
/*******************************************************************************
* Battery *

2
app/src/board/board_battery_state.h

@ -3,7 +3,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "board/board.h"
#include "aproject_config/config.h"
#include "znordic.h"
void BoardBattery_init();

2
app/src/board/board_beep_ctrl.h

@ -3,7 +3,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "board/board.h"
#include "aproject_config/config.h"
#include "znordic.h"
typedef enum {

37
app/src/board/board_ecg_sensor.c

@ -1,7 +1,6 @@
#include "board_ecg_sensor.h"
#include "ads1291/ads1292r_typ.h"
#include "app_event_distribute.h"
#include "basic_service/app_event_distribute.h"
#include "board_adc_module_ctrl.h"
#if 0
@ -64,7 +63,7 @@ int16_t BoardEcgSensor_set_sence_state() {
}
#endif
#if 0
void BoardEcgSensor_load() {}
void BoardEcgSensor_unload() {}
@ -167,12 +166,12 @@ uint8_t ads1292r_rw_reg(uint8_t cmd, uint8_t data) {
return rx;
}
#define port_delay_ms nrf_delay_ms
#define port_delay_us nrf_delay_us
#define port_delay_ms nrf_delay_ms
#define port_delay_us nrf_delay_us
#define ADS1292_START_RESET() nrf_gpio_pin_clear(ADS1291_START_PIN)
#define ADS1292_START_SET() nrf_gpio_pin_set(ADS1291_START_PIN)
#define ADS1292_REST_RESET() nrf_gpio_pin_clear(ADS1291_PWDN_PIN)
#define ADS1292_REST_SET() nrf_gpio_pin_set(ADS1291_PWDN_PIN)
#define ADS1292_START_SET() nrf_gpio_pin_set(ADS1291_START_PIN)
#define ADS1292_REST_RESET() nrf_gpio_pin_clear(ADS1291_PWDN_PIN)
#define ADS1292_REST_SET() nrf_gpio_pin_set(ADS1291_PWDN_PIN)
uint8_t ads1292r_send_cmd(uint8_t cmd) {
uint8_t rx = 0;
@ -187,6 +186,7 @@ uint8_t ads1292r_send_cmd(uint8_t cmd) {
return rx;
}
void znrf_serial_tx(char const * p_buffer, size_t len);
void BoardEcgSensor_init() {
/**
@ -195,8 +195,6 @@ void BoardEcgSensor_init() {
ads1291_init();
ADS1292_CS_SET();
ADS1292_REST_RESET();
@ -214,11 +212,26 @@ void BoardEcgSensor_init() {
nrf_gpio_pin_set(ADS1291_PWDN_PIN);
nrf_delay_ms(2000);
char txdata[]= {1,2,3,4};
while (true) /* ʶ±ðоƬÐͺţ¬1291:0x52 */
{
uint8_t id = ads1292r_rw_reg(ADS1292R_COMMAND_RREG | ADS1292R_REG_ID, 0);
ZLOGI("ads1292r id:%x", id);
znrf_serial_tx(txdata,4);
znordic_force_flush_log();
nrf_delay_ms(1000);
}
}
#endif
void BoardEcgSensor_init() {}
void BoardEcgSensor_load() {}
void BoardEcgSensor_unload() {}
int16_t BoardEcgSensor_nlod_get_connected_state() { return 0; }
int16_t BoardEcgSensor_plod_get_connected_state() { return 0; }
int16_t BoardEcgSensor_plod_get_connected_state_after_filter() { return 0; }
int16_t BoardEcgSensor_plod_state_has_disconnected_ms() { return 0; }
int16_t BoardEcgSensor_plod_get_ecg_val() { return 0; }
int16_t BoardEcgSensor_set_sence_state() { return 0; }

2
app/src/board/board_ecg_sensor.h

@ -3,7 +3,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "board/board.h"
#include "aproject_config/config.h"
#include "znordic.h"
void BoardEcgSensor_init();

2
app/src/board/board_eeprom_driver.c

@ -14,8 +14,6 @@
#include "nrf_drv_wdt.h"
#include "nrf_gpio.h"
//
#include "basic/ssd1306/driver_ssd1306.h"
#include "basic/ssd1306/driver_ssd1306_basic.h"
#define EEPROM_I2C_SCL_M 15 // I2C SCL多신
#define EEPROM_I2C_SDA_M 17 // I2C SDA多신

3
app/src/board/board_light_ctrl.c

@ -1,6 +1,5 @@
#include "board_light_ctrl.h"
#include "board.h"
#include "aproject_config/config.h"
#include "znordic.h"
#include "nrf_gpio.h"

2
app/src/board/board_light_ctrl.h

@ -3,7 +3,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "board/board.h"
#include "aproject_config/config.h"
typedef enum {
kLightEffect_unset,

6
app/src/board/board_ssd1306_interface.c

@ -2,7 +2,6 @@
#include <stdint.h>
#include "basic/ssd1306/driver_ssd1306_interface.h"
#include "znordic.h"
//
#include "app_timer.h"
@ -11,8 +10,9 @@
#include "nrf_delay.h"
#include "nrf_gpio.h"
//
#include "basic/ssd1306/driver_ssd1306.h"
#include "basic/ssd1306/driver_ssd1306_basic.h"
#include "ssd1306/driver_ssd1306.h"
#include "ssd1306/driver_ssd1306_basic.h"
#include "ssd1306/driver_ssd1306_interface.h"
#define SCREEN_SPI_INSTANCE 0
#define SCREEN_RESET_PIN 20

4
app/src/board/board_ssd1306_interface.h

@ -6,6 +6,10 @@
#include <stdbool.h>
#include "znordic.h"
#include "board/ssd1306/driver_ssd1306.h"
#include "board/ssd1306/driver_ssd1306_basic.h"
#include "board/ssd1306/wave_drawer.h"
void board_screen_init();
void board_screen_deinit();

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

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

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

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

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

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

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

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

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

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

3
app/src/config.h

@ -1,3 +0,0 @@
#pragma once
#include "board/board.h"

0
app/src/device_controler.c

0
app/src/device_controler.h

5
app/src/display_manager_res.h

@ -1,5 +0,0 @@
#pragma once
#include <stdint.h>

9
app/src/heart_ware_sample_data_mgr.h

@ -1,9 +0,0 @@
#pragma once
#include <stdint.h>
#include "app_event.h"
#include "app_event_distribute.h"
#include "nrfx_timer.h"
void hwsd_mgr_push_one_frame(one_frame_t data);
void hwsd_mgr_reset_buffer();

107
app/src/heart_wave_sample_data_pre_process.c

@ -1,107 +0,0 @@
#include "heart_wave_sample_data_pre_process.h"
/***********************************************************************************************************************
* ALGO *
***********************************************************************************************************************/
typedef struct {
float value;
float efectiveFactor;
} filter_t;
typedef struct {
float coef[2];
float v_out[2];
} LPFilter;
#define PI 3.14159265358979323846f
static float Filter(filter_t* filter, float newInput) {
float newv = ((float)filter->value * (1.0f - filter->efectiveFactor)) + ((float)newInput * filter->efectiveFactor);
filter->value = newv;
return newv;
}
void LPFilter_Init(LPFilter* filter, float cutoffFreqHz, float sampleTimeS) {
float RC = 0.0;
RC = 1.0 / (2 * PI * cutoffFreqHz);
filter->coef[0] = sampleTimeS / (sampleTimeS + RC);
filter->coef[1] = RC / (sampleTimeS + RC);
filter->v_out[0] = 0.0;
filter->v_out[1] = 0.0;
}
float LPFilter_Update(LPFilter* filter, float v_in) {
filter->v_out[1] = filter->v_out[0];
filter->v_out[0] = (filter->coef[0] * v_in) + (filter->coef[1] * filter->v_out[1]);
return (filter->v_out[0]);
}
/**
* @brief
*
* @param val
* @param valcener
* @param amp
* @return float
*/
static float amp_display_val(uint16_t val, uint16_t valcener, float amp) {
float valf = (float)val - valcener;
valf = valf * amp;
valf += valcener;
if (valf >= 100) {
valf = 100;
}
if (valf <= 0) {
valf = 0;
}
return valf;
}
uint16_t getRecommendedMagnification() {
// return 0;
uint16_t max = QRS_getMaxValueLastVal();
if (max == 0) {
return 15;
}
// 3750.0f
if (max <= (3750 / 2)) {
return 15;
}
float af = (3750 / 2) / (max - 3750 / 2);
if (af > 15) {
return 15;
}
return af;
}
/***********************************************************************************************************************
* VAR *
***********************************************************************************************************************/
static one_frame_t m_datacache;
static one_frame_t m_displaydata;
filter_t m_filter = {0, 0.8};
LPFilter m_lpfilter_01;
LPFilter m_lpfilter_02;
void hwsd_pre_processer_init() { QRS_resetBuf(); }
void hwsd_pre_processer_process(one_frame_t framdata) { //
m_datacache = framdata;
m_displaydata = framdata;
/*******************************************************************************
* *
*******************************************************************************/
// QRS_getMaxValueLastVal();
// float lowpassf_val = LPFilter_Update(&m_lpfilter_01, framdata);
// QRS_processData(lowpassf_val);
// float val_af100 = (float)lowpassf_val / 3750.0f * 100; // 3.6v,3.3v
// val_af100 = amp_val(val_af100, 50, getRecommendedMagnification());
// val_af100 = LPFilter_Update(&m_lpfilter_02, val_af100);
// m_displaydata = m_datacache;
}
uint16_t hwsd_pre_processer_get_display_data() { return m_displaydata; }
one_frame_t hwsd_pre_processer_get_storage_data() { return m_datacache; }

8
app/src/main.c

@ -6,10 +6,10 @@
#include <stdlib.h>
#include <string.h>
//
#include "app_event.h"
#include "app_event_distribute.h"
#include "basic/device_version_info_mgr.h"
#include "board/board.h"
#include "basic_service/app_event.h"
#include "basic_service/app_event_distribute.h"
#include "basic_service/device_version_info_mgr.h"
#include "aproject_config/config.h"
#include "zble_module.h"
#include "zdatachannel_service.h"
//

18
app/src/one_conduction_main.c

@ -1,19 +1,21 @@
#include <math.h>
#include "app_event.h"
#include "app_event_distribute.h"
#include "basic/device_version_info_mgr.h"
#include "ble_cmd_process_service.h"
#include "basic_service/app_event.h"
#include "basic_service/app_event_distribute.h"
#include "basic_service/device_version_info_mgr.h"
//
#include "board/board_adc_module_ctrl.h"
#include "board/board_battery_state.h"
#include "board/board_beep_ctrl.h"
#include "board/board_ecg_sensor.h"
#include "board/board_light_ctrl.h"
#include "board/board_power_mgr.h"
#include "config.h"
#include "display_manager.h"
#include "heart_wave_sample_service.h"
#include "sample_data_manager.h"
//
#include "service/ble_cmd_processer/ble_cmd_process_service.h"
#include "service/display_mgr/display_manager.h"
#include "service/heart_wave_sample_service/heart_wave_sample_service.h"
#include "service/storage/storage_service.h"
#include "zble_module.h"
#include "zdatachannel_service.h"
#include "znordic.h"

13
app/src/ble_cmd_process_service.c → app/src/service/ble_cmd_processer/ble_cmd_process_service.c

@ -1,13 +1,14 @@
#include "ble_cmd_process_service.h"
#include "../../ify_hrs_protocol/heart_rate_sensor_protocol.h"
#include "basic/device_version_info_mgr.h"
#include "board/board.h"
#include "aproject_config/config.h"
//
#include "ify_hrs_protocol/heart_rate_sensor_protocol.h"
//
#include "basic_service/device_version_info_mgr.h"
#include "board/board_battery_state.h"
#include "board/board_ecg_sensor.h"
#include "config.h"
#include "sample_data_manager.h"
#include "service/storage/storage_service.h"
//
#include "zble_module.h"
#include "zdatachannel_service.h"

2
app/src/ble_cmd_process_service.h → app/src/service/ble_cmd_processer/ble_cmd_process_service.h

@ -1,6 +1,6 @@
#pragma once
#include "device_state.h"
#include "basic_service/device_state.h"
void ble_cmder_init();
void ble_cmder_uninit();

5
app/src/display_manager.c → app/src/service/display_mgr/display_manager.c

@ -4,12 +4,9 @@
//
#include <stdarg.h>
#include "basic/ssd1306/driver_ssd1306.h"
#include "basic/ssd1306/driver_ssd1306_basic.h"
#include "basic/ssd1306/wave_drawer.h"
#include "board/board_battery_state.h"
#include "board/board_ssd1306_interface.h"
#include "config.h"
#include "aproject_config/config.h"
#include "font.h"
PageState_t g_pageState;

0
app/src/display_manager.h → app/src/service/display_mgr/display_manager.h

0
app/src/font.h → app/src/service/display_mgr/font.h

6
app/src/heart_ware_sample_data_mgr.c → app/src/service/heart_wave_sample_service/heart_ware_sample_data_mgr.c

@ -1,8 +1,6 @@
#include "app_event.h"
#include "app_event_distribute.h"
#include "basic/qrs_time_domain_zh.h"
#include "basic_service/app_event.h"
#include "basic_service/app_event_distribute.h"
#include "board/board_ecg_sensor.h"
#include "heart_wave_sample_service.h"
#include "nrfx_timer.h"
static uint32_t m_frame_index = 0; //

9
app/src/service/heart_wave_sample_service/heart_ware_sample_data_mgr.h

@ -0,0 +1,9 @@
#pragma once
#include <stdint.h>
#include "basic_service/app_event.h"
#include "basic_service/app_event_distribute.h"
#include "nrfx_timer.h"
void hwsd_mgr_push_one_frame(one_frame_t data);
void hwsd_mgr_reset_buffer();

12
app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c

@ -0,0 +1,12 @@
#include "heart_wave_sample_data_pre_process.h"
static one_frame_t m_datacache;
static one_frame_t m_displaydata;
void hwsd_pre_processer_init() {}
void hwsd_pre_processer_process(one_frame_t framdata) { //
m_datacache = framdata;
m_displaydata = framdata;
}
uint16_t hwsd_pre_processer_get_display_data() { return m_displaydata; }
one_frame_t hwsd_pre_processer_get_storage_data() { return m_datacache; }

2
app/src/heart_wave_sample_data_pre_process.h → app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.h

@ -1,7 +1,7 @@
#pragma once
#include <stdint.h>
#include "app_event.h"
#include "basic_service/app_event.h"
void hwsd_pre_processer_init();
void hwsd_pre_processer_process(one_frame_t framdata);

7
app/src/heart_wave_sample_service.c → app/src/service/heart_wave_sample_service/heart_wave_sample_service.c

@ -1,8 +1,7 @@
#include "heart_wave_sample_service.h"
#include "app_event.h"
#include "app_event_distribute.h"
#include "basic/qrs_time_domain_zh.h"
#include "basic_service/app_event.h"
#include "basic_service/app_event_distribute.h"
#include "board/board_ecg_sensor.h"
#include "heart_ware_sample_data_mgr.h"
#include "heart_wave_sample_data_pre_process.h"
@ -79,6 +78,6 @@ float hwss_read_val(void) {
return val;
}
float hwss_read_heart_rate(void) { //
return QRS_getHeartRate();
return 0;
}
int hwss_has_captured_time_ms() { return (znordic_getpower_on_s() - m_start_capture_tp) * 1000; }

0
app/src/heart_wave_sample_service.h → app/src/service/heart_wave_sample_service/heart_wave_sample_service.h

1
app/src/sample_data_manager.c → app/src/service/storage/sample_data_manager.c

@ -4,6 +4,7 @@
#include "zeeprom_fs.h"
#include "znordic.h"
#include "aproject_config/config.h"
static sample_data_fileinfo_t fileinfocache[MAX_FILE_NUM * 2];
static uint8_t fileinfocache_count = 0;

2
app/src/sample_data_manager.h → app/src/service/storage/sample_data_manager.h

@ -2,7 +2,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "config.h"
#include "aproject_config/config.h"
#include "zeeprom_fs.h"
void sample_data_mgr_init();

3
app/src/service/storage/storage_service.h

@ -0,0 +1,3 @@
#pragma once
#include "sample_data_manager.h"
#include "zeeprom_fs.h"

0
app/src/zeeprom_fs.c → app/src/service/storage/zeeprom_fs.c

0
app/src/zeeprom_fs.h → app/src/service/storage/zeeprom_fs.h

0
app/src/basic/FIR.c → bak/FIR.c

0
app/src/basic/FIR.h → bak/FIR.h

0
app/src/basic/HC_Chen_detect.c → bak/HC_Chen_detect.c

0
app/src/basic/HC_Chen_detect.h → bak/HC_Chen_detect.h

0
app/src/basic/Pan_Tompkins_detect.c → bak/Pan_Tompkins_detect.c

0
app/src/basic/Pan_Tompkins_detect.h → bak/Pan_Tompkins_detect.h

0
app/src/basic/QRS.h → bak/QRS.h

0
app/src/basic/So_Chen_detect.c → bak/So_Chen_detect.c

0
app/src/basic/So_Chen_detect.h → bak/So_Chen_detect.h

0
app/src/basic/adaptive_algorithm.c → bak/adaptive_algorithm.c

0
app/src/basic/adaptive_algorithm.h → bak/adaptive_algorithm.h

0
app/src/basic/qrs_time_domain_zh.c → bak/qrs_time_domain_zh.c

0
app/src/basic/qrs_time_domain_zh.h → bak/qrs_time_domain_zh.h

2
libznordic

@ -1 +1 @@
Subproject commit c7adce2fba7f404c4076a440b520b733c70df89c
Subproject commit 6000f285863c7979f08800f2aa6de8db96c99df4

2
sdk

@ -1 +1 @@
Subproject commit 5d4b7977455415a88f3a8bd62dc4213f1edc0b37
Subproject commit 1d34e6ac316c27dc0e1149835d5f1ad53e074c88
Loading…
Cancel
Save