Browse Source

recode

master
zhaohe 1 year ago
parent
commit
d48cec34d8
  1. 5
      .vscode/settings.json
  2. 468
      app/app.uvoptx
  3. 262
      app/app.uvprojx
  4. 33
      app/src/app_basic_service/basic/event.h
  5. 10
      app/src/app_basic_service/basic/gstate.h
  6. 29
      app/src/app_basic_service/basic/state.h
  7. 0
      app/src/app_basic_service/device_version_info_mgr.c
  8. 0
      app/src/app_basic_service/device_version_info_mgr.h
  9. 82
      app/src/app_basic_service/zapp.c
  10. 37
      app/src/app_basic_service/zapp.h
  11. 37
      app/src/app_service/adc_mgr.c
  12. 14
      app/src/app_service/adc_mgr.h
  13. 46
      app/src/app_service/battery_mgr_service.c
  14. 17
      app/src/app_service/battery_mgr_service.h
  15. 242
      app/src/bakservice/ble_cmd_processer/ble_cmd_process_service.c
  16. 0
      app/src/bakservice/ble_cmd_processer/ble_cmd_process_service.h
  17. 0
      app/src/bakservice/display_mgr/display_manager.c
  18. 0
      app/src/bakservice/display_mgr/display_manager.h
  19. 0
      app/src/bakservice/display_mgr/font.h
  20. 0
      app/src/bakservice/heart_wave_sample_service/heart_ware_sample_data_mgr.c
  21. 0
      app/src/bakservice/heart_wave_sample_service/heart_ware_sample_data_mgr.h
  22. 0
      app/src/bakservice/heart_wave_sample_service/heart_wave_sample_data_pre_process.c
  23. 0
      app/src/bakservice/heart_wave_sample_service/heart_wave_sample_data_pre_process.h
  24. 0
      app/src/bakservice/heart_wave_sample_service/heart_wave_sample_service.c
  25. 0
      app/src/bakservice/heart_wave_sample_service/heart_wave_sample_service.h
  26. 0
      app/src/bakservice/storage/sample_data_manager.c
  27. 0
      app/src/bakservice/storage/sample_data_manager.h
  28. 0
      app/src/bakservice/storage/storage_service.h
  29. 0
      app/src/bakservice/storage/zeeprom_fs.c
  30. 0
      app/src/bakservice/storage/zeeprom_fs.h
  31. 23
      app/src/basic_service/app_event_distribute.c
  32. 15
      app/src/basic_service/app_event_distribute.h
  33. 64
      app/src/basic_service/device_state.c
  34. 29
      app/src/basic_service/device_state.h
  35. 15
      app/src/main.c
  36. 489
      app/src/one_conduction_main.c
  37. 3
      app/src/one_conduction_main.h

5
.vscode/settings.json

@ -204,7 +204,10 @@
"ads129x.h": "c",
"ads129x_if_impl.h": "c",
"ads129x_type.h": "c",
"app_board.h": "c"
"app_board.h": "c",
"zapp.h": "c",
"adc_mgr.h": "c",
"battery_mgr_service.h": "c"
},
"files.encoding": "gbk"
}

468
app/app.uvoptx

@ -410,284 +410,20 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_beep_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_beep_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<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>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_battery_state.c</PathWithFileName>
<FilenameWithoutPath>board_battery_state.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_ecg_sensor.c</PathWithFileName>
<FilenameWithoutPath>board_ecg_sensor.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\board_light_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_light_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>9</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>10</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>11</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>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic_service\device_state.c</PathWithFileName>
<FilenameWithoutPath>device_state.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic_service\device_version_info_mgr.c</PathWithFileName>
<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>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\ssd1306\driver_ssd1306.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\ssd1306\driver_ssd1306_basic.c</PathWithFileName>
<FilenameWithoutPath>driver_ssd1306_basic.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\ssd1306\fontlib.c</PathWithFileName>
<FilenameWithoutPath>fontlib.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\ssd1306\wave_drawer.c</PathWithFileName>
<FilenameWithoutPath>wave_drawer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<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>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\service\display_mgr\display_manager.c</PathWithFileName>
<FilenameWithoutPath>display_manager.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<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>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<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>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<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>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\service\storage\sample_data_manager.c</PathWithFileName>
<FilenameWithoutPath>sample_data_manager.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\service\storage\zeeprom_fs.c</PathWithFileName>
<FilenameWithoutPath>zeeprom_fs.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\basic_service\app_event_distribute.c</PathWithFileName>
<FilenameWithoutPath>app_event_distribute.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\board\ads129x\ads129x.c</PathWithFileName>
<FilenameWithoutPath>ads129x.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>27</FileNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\board\app_board.c</PathWithFileName>
<FilenameWithoutPath>app_board.c</FilenameWithoutPath>
<PathWithFileName>.\src\app_basic_service\zapp.c</PathWithFileName>
<FilenameWithoutPath>zapp.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@ -701,7 +437,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>28</FileNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -721,7 +457,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>29</FileNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -733,7 +469,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>30</FileNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -753,7 +489,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>31</FileNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -773,7 +509,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>32</FileNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -785,7 +521,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>33</FileNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -797,7 +533,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>34</FileNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -809,7 +545,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>35</FileNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -821,7 +557,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>36</FileNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -833,7 +569,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>37</FileNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -845,7 +581,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>38</FileNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -857,7 +593,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>39</FileNumber>
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -877,7 +613,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>40</FileNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -891,13 +627,13 @@
<Group>
<GroupName>nRF_Drivers</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>41</FileNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -909,7 +645,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>42</FileNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -921,7 +657,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>43</FileNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -933,7 +669,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>44</FileNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -945,7 +681,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>45</FileNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -957,7 +693,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>46</FileNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -969,7 +705,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>47</FileNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -981,7 +717,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>48</FileNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -993,7 +729,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1005,7 +741,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1017,7 +753,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1029,7 +765,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1041,7 +777,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1053,7 +789,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1065,7 +801,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1077,7 +813,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1089,7 +825,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1101,7 +837,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1113,7 +849,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1125,7 +861,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1145,7 +881,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1157,7 +893,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1169,7 +905,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1181,7 +917,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1193,7 +929,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1205,7 +941,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1217,7 +953,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1229,7 +965,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1241,7 +977,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1253,7 +989,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1265,7 +1001,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1277,7 +1013,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1289,7 +1025,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1301,7 +1037,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1313,7 +1049,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1325,7 +1061,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1337,7 +1073,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1349,7 +1085,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1361,7 +1097,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1373,7 +1109,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1385,7 +1121,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1397,7 +1133,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1409,7 +1145,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1421,7 +1157,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>84</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1433,7 +1169,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>85</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1445,7 +1181,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>86</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1457,7 +1193,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>87</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1477,7 +1213,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>88</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1489,7 +1225,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>89</FileNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1501,7 +1237,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>90</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1513,7 +1249,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>91</FileNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1525,7 +1261,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>92</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1537,7 +1273,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>93</FileNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1557,7 +1293,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>94</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1569,7 +1305,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>95</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1581,7 +1317,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>96</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1601,7 +1337,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>97</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1613,7 +1349,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>98</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1625,7 +1361,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>99</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1645,7 +1381,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>100</FileNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1657,7 +1393,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>101</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1669,7 +1405,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>102</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1689,7 +1425,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>103</FileNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1701,7 +1437,7 @@
</File>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>104</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1721,7 +1457,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>105</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1733,7 +1469,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>106</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1745,7 +1481,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>107</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1757,7 +1493,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>108</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1770,6 +1506,38 @@
</Group>
<Group>
<GroupName>app_service</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\battery_mgr_service.c</PathWithFileName>
<FilenameWithoutPath>battery_mgr_service.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>15</GroupNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\app_service\adc_mgr.c</PathWithFileName>
<FilenameWithoutPath>adc_mgr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

262
app/app.uvprojx

@ -399,124 +399,14 @@
<FilePath>.\src\main.c</FilePath>
</File>
<File>
<FileName>board_beep_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_beep_ctrl.c</FilePath>
</File>
<File>
<FileName>board_adc_module_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_adc_module_ctrl.c</FilePath>
</File>
<File>
<FileName>board_battery_state.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_battery_state.c</FilePath>
</File>
<File>
<FileName>board_ecg_sensor.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_ecg_sensor.c</FilePath>
</File>
<File>
<FileName>board_light_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_light_ctrl.c</FilePath>
</File>
<File>
<FileName>board_ssd1306_interface.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_ssd1306_interface.c</FilePath>
</File>
<File>
<FileName>board_eeprom_driver.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_eeprom_driver.c</FilePath>
</File>
<File>
<FileName>board_power_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_power_mgr.c</FilePath>
</File>
<File>
<FileName>device_state.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\basic_service\device_state.c</FilePath>
</File>
<File>
<FileName>device_version_info_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\basic_service\device_version_info_mgr.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\driver_ssd1306.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306_basic.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\driver_ssd1306_basic.c</FilePath>
</File>
<File>
<FileName>fontlib.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\fontlib.c</FilePath>
</File>
<File>
<FileName>wave_drawer.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\wave_drawer.c</FilePath>
</File>
<File>
<FileName>ble_cmd_process_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\ble_cmd_processer\ble_cmd_process_service.c</FilePath>
</File>
<File>
<FileName>display_manager.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\display_mgr\display_manager.c</FilePath>
</File>
<File>
<FileName>heart_ware_sample_data_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\heart_wave_sample_service\heart_ware_sample_data_mgr.c</FilePath>
</File>
<File>
<FileName>heart_wave_sample_data_pre_process.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\heart_wave_sample_service\heart_wave_sample_data_pre_process.c</FilePath>
</File>
<File>
<FileName>heart_wave_sample_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\heart_wave_sample_service\heart_wave_sample_service.c</FilePath>
</File>
<File>
<FileName>sample_data_manager.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\storage\sample_data_manager.c</FilePath>
<FilePath>.\src\app_basic_service\device_version_info_mgr.c</FilePath>
</File>
<File>
<FileName>zeeprom_fs.c</FileName>
<FileName>zapp.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\storage\zeeprom_fs.c</FilePath>
</File>
<File>
<FileName>app_event_distribute.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\basic_service\app_event_distribute.c</FilePath>
</File>
<File>
<FileName>ads129x.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ads129x\ads129x.c</FilePath>
</File>
<File>
<FileName>app_board.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\app_board.c</FilePath>
<FilePath>.\src\app_basic_service\zapp.c</FilePath>
</File>
</Files>
</Group>
@ -3898,6 +3788,21 @@
</Files>
</Group>
<Group>
<GroupName>app_service</GroupName>
<Files>
<File>
<FileName>battery_mgr_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\battery_mgr_service.c</FilePath>
</File>
<File>
<FileName>adc_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\adc_mgr.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
</Group>
<Group>
@ -4298,124 +4203,14 @@
<FilePath>.\src\main.c</FilePath>
</File>
<File>
<FileName>board_beep_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_beep_ctrl.c</FilePath>
</File>
<File>
<FileName>board_adc_module_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_adc_module_ctrl.c</FilePath>
</File>
<File>
<FileName>board_battery_state.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_battery_state.c</FilePath>
</File>
<File>
<FileName>board_ecg_sensor.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_ecg_sensor.c</FilePath>
</File>
<File>
<FileName>board_light_ctrl.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_light_ctrl.c</FilePath>
</File>
<File>
<FileName>board_ssd1306_interface.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_ssd1306_interface.c</FilePath>
</File>
<File>
<FileName>board_eeprom_driver.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_eeprom_driver.c</FilePath>
</File>
<File>
<FileName>board_power_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\board_power_mgr.c</FilePath>
</File>
<File>
<FileName>device_state.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\basic_service\device_state.c</FilePath>
</File>
<File>
<FileName>device_version_info_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\basic_service\device_version_info_mgr.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\driver_ssd1306.c</FilePath>
</File>
<File>
<FileName>driver_ssd1306_basic.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\driver_ssd1306_basic.c</FilePath>
</File>
<File>
<FileName>fontlib.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\fontlib.c</FilePath>
</File>
<File>
<FileName>wave_drawer.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ssd1306\wave_drawer.c</FilePath>
</File>
<File>
<FileName>ble_cmd_process_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\ble_cmd_processer\ble_cmd_process_service.c</FilePath>
</File>
<File>
<FileName>display_manager.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\display_mgr\display_manager.c</FilePath>
</File>
<File>
<FileName>heart_ware_sample_data_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\heart_wave_sample_service\heart_ware_sample_data_mgr.c</FilePath>
</File>
<File>
<FileName>heart_wave_sample_data_pre_process.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\heart_wave_sample_service\heart_wave_sample_data_pre_process.c</FilePath>
</File>
<File>
<FileName>heart_wave_sample_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\heart_wave_sample_service\heart_wave_sample_service.c</FilePath>
</File>
<File>
<FileName>sample_data_manager.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\storage\sample_data_manager.c</FilePath>
<FilePath>.\src\app_basic_service\device_version_info_mgr.c</FilePath>
</File>
<File>
<FileName>zeeprom_fs.c</FileName>
<FileName>zapp.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\service\storage\zeeprom_fs.c</FilePath>
</File>
<File>
<FileName>app_event_distribute.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\basic_service\app_event_distribute.c</FilePath>
</File>
<File>
<FileName>ads129x.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\ads129x\ads129x.c</FilePath>
</File>
<File>
<FileName>app_board.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\board\app_board.c</FilePath>
<FilePath>.\src\app_basic_service\zapp.c</FilePath>
</File>
</Files>
</Group>
@ -7797,6 +7592,21 @@
</Files>
</Group>
<Group>
<GroupName>app_service</GroupName>
<Files>
<File>
<FileName>battery_mgr_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\battery_mgr_service.c</FilePath>
</File>
<File>
<FileName>adc_mgr.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\app_service\adc_mgr.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
<GroupOption>
<CommonProperty>

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

@ -0,0 +1,33 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "aproject_config/config.h"
typedef enum {
kplod_connected_event = 0, //
kplod_disconnected_event, //
kplod_connecting_event, //
kbattery_start_charge_event, //
kbattery_end_charge_event, //
kevent_tmr_scheduler_event, //
kevent_capture_256data_event, //
kevent_capture_little_data_block_event, //
} app_event_type_t;
typedef int32_t one_frame_t;
typedef struct {
app_event_type_t eventType;
union {
uint32_t plod_connected_accumulation_time; //
uint8_t* capture_data_cache; // 256
struct {
uint32_t frameIndex;
uint32_t timestamp;
one_frame_t data[LITTLE_DATA_BLOCK_FRAME_NUM];
} little_data_block;
} val;
} app_event_t;

10
app/src/app_basic_service/basic/gstate.h

@ -0,0 +1,10 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "aproject_config/config.h"
typedef struct {
bool sample_capture_state_is_over30s; // 30s
bool is_preview; //
} gstate_t;

29
app/src/basic_service/app_event.h → app/src/app_basic_service/basic/state.h

@ -4,35 +4,6 @@
#include "aproject_config/config.h"
typedef enum {
kplod_connected_event = 0, //
kplod_disconnected_event, //
kplod_connecting_event, //
kbattery_start_charge_event, //
kbattery_end_charge_event, //
kevent_tmr_scheduler_event, //
kevent_capture_256data_event, //
kevent_capture_little_data_block_event, //
} app_event_type_t;
typedef int32_t one_frame_t;
typedef struct {
app_event_type_t eventType;
union {
uint32_t plod_connected_accumulation_time; //
uint8_t* capture_data_cache; // 256
struct {
uint32_t frameIndex;
uint32_t timestamp;
one_frame_t data[LITTLE_DATA_BLOCK_FRAME_NUM];
} little_data_block;
} val;
} app_event_t;
typedef enum {
//
kdevice_state_standby = 0,
//

0
app/src/basic_service/device_version_info_mgr.c → app/src/app_basic_service/device_version_info_mgr.c

0
app/src/basic_service/device_version_info_mgr.h → app/src/app_basic_service/device_version_info_mgr.h

82
app/src/app_basic_service/zapp.c

@ -0,0 +1,82 @@
#include "zapp.h"
#include "znordic.h"
typedef struct {
app_event_listener_t cbfunc;
} AppEventListener;
static device_state_t m_device_state = kdevice_state_standby; //
static uint32_t m_change_to_cur_state_tp = 0; //
static on_state_change_t m_onstate_change;
static AppEventListener m_listener[10];
static int m_listener_num = 0;
APP_TIMER_DEF(m_state_machine_driver_tmr); //
#define SCHED_MAX_EVENT_DATA_SIZE MAX(sizeof(app_event_t), APP_TIMER_SCHED_EVENT_DATA_SIZE)
/***********************************************************************************************************************
* CALL BAK *
***********************************************************************************************************************/
static void state_machine_driver_tmr_cb(void* p_context) { //
static app_event_t appevent;
appevent.eventType = kevent_tmr_scheduler_event;
wd_feed();
zapp_ebus_push_event(&appevent);
}
static void app_event_process_cb(void* p_event_data, uint16_t event_size) {
for (int i = 0; i < m_listener_num; i++) {
if (m_listener[i].cbfunc) {
m_listener[i].cbfunc(p_event_data, event_size);
}
}
}
/***********************************************************************************************************************
* EXTERN *
***********************************************************************************************************************/
void zapp_early_init() { APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, 20); }
void zapp_init() { ZERROR_CHECK(app_timer_create(&m_state_machine_driver_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb)); }
void zapp_start_schedule() { ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(300), NULL)); }
/***********************************************************************************************************************
* state_machine *
***********************************************************************************************************************/
void zapp_state_machine_reg_state_change_listener(on_state_change_t listener) { m_onstate_change = listener; }
void zapp_state_machine_change_state(device_state_t tostate) {
ZLOGI("change state from %s to %s", device_state_to_str(m_device_state), device_state_to_str(tostate));
device_state_t nowstate = m_device_state;
m_device_state = tostate;
if (m_onstate_change) {
m_onstate_change(nowstate, m_device_state);
}
m_change_to_cur_state_tp = znordic_getpower_on_ms();
}
device_state_t zapp_state_machine_now_state() { return m_device_state; }
uint32_t zapp_state_machine_haspassed_ms() { return znordic_haspassed_ms(m_change_to_cur_state_tp); }
/***********************************************************************************************************************
* EBUS *
***********************************************************************************************************************/
void zapp_ebus_push_event(app_event_t* event) { app_event_process_cb(event, sizeof(app_event_t)); }
void zapp_ebus_reg_event_listener(app_event_listener_t listener) {
ZASSERT(m_listener_num < 10);
m_listener[m_listener_num++].cbfunc = listener;
}
/***********************************************************************************************************************
* GSTATE *
***********************************************************************************************************************/
static gstate_t gstate;
gstate_t* zapp_get_gstate() { return &gstate; }
void zapp_gstate_set_is_over30s(bool over30s) {
gstate_t* p_gstate = zapp_get_gstate();
p_gstate->sample_capture_state_is_over30s = over30s;
}
void zapp_gstate_set_preview_state(bool is_preview) {
gstate_t* p_gstate = zapp_get_gstate();
p_gstate->is_preview = is_preview;
}

37
app/src/app_basic_service/zapp.h

@ -0,0 +1,37 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "aproject_config/config.h"
#include "basic/event.h"
#include "basic/gstate.h"
#include "basic/state.h"
typedef void (*on_state_change_t)(device_state_t from, device_state_t to);
typedef void (*app_event_listener_t)(void* p_event_data, uint16_t event_size);
void zapp_early_init();
void zapp_init();
void zapp_start_schedule();
/***********************************************************************************************************************
* StateMachine *
***********************************************************************************************************************/
void zapp_state_machine_reg_state_change_listener(on_state_change_t listener);
void zapp_state_machine_change_state(device_state_t tostate);
device_state_t zapp_state_machine_now_state();
device_state_t zapp_state_machine_now_state();
uint32_t zapp_state_machine_haspassed_ms();
/***********************************************************************************************************************
* event bus *
***********************************************************************************************************************/
void zapp_ebus_push_event(app_event_t* event);
void zapp_ebus_reg_event_listener(app_event_listener_t listener);
/***********************************************************************************************************************
* GSTATE *
***********************************************************************************************************************/
gstate_t* zapp_get_gstate();
void zapp_gstate_set_is_over30s(bool over30s);
void zapp_gstate_set_preview_state(bool is_preview);

37
app/src/app_service/adc_mgr.c

@ -0,0 +1,37 @@
#include "adc_mgr.h"
/*******************************************************************************
* ADC *
*******************************************************************************/
static uint8_t m_now_adc_channel = 0xff;
void adc_mgr_set_ch(uint8_t ch) {
if (m_now_adc_channel != ch) {
if (m_now_adc_channel != 0xff) nrfx_saadc_channel_uninit(m_now_adc_channel);
if (ch == BATTERY_ADC_CHANNEL) {
nrf_saadc_channel_config_t channel_config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(BATTERY_ADC_PIN);
channel_config.acq_time = NRF_SAADC_ACQTIME_40US;
ZERROR_CHECK(nrfx_saadc_channel_init(BATTERY_ADC_CHANNEL, &channel_config));
}
}
m_now_adc_channel = ch;
}
void adc_mgr_init() {}
void adc_mgr_load() {
nrf_drv_saadc_config_t adccfg = NRFX_SAADC_DEFAULT_CONFIG;
adccfg.resolution = NRF_SAADC_RESOLUTION_12BIT; // 4096 µÈÓÚÂú²ÉÑùÂÊ
ZERROR_CHECK(nrf_drv_saadc_init(&adccfg, NULL));
}
void adc_mgr_unload() {
adc_mgr_set_ch(0xff);
nrf_drv_saadc_uninit();
}
int16_t adc_mgr_get_val(uint8_t ch) {
adc_mgr_set_ch(ch);
return znrf_adc_channel_read_val(ch);
}

14
app/src/app_service/adc_mgr.h

@ -0,0 +1,14 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "aproject_config/config.h"
#include "znordic.h"
void adc_mgr_init();
void adc_mgr_load();
void adc_mgr_unload();
int16_t adc_mgr_get_val(uint8_t ch);

46
app/src/app_service/battery_mgr_service.c

@ -0,0 +1,46 @@
#include "battery_mgr_service.h"
#include "adc_mgr.h"
#include "app_basic_service/zapp.h"
APP_TIMER_DEF(battery_state_detect_tmr); //
static bool m_battery_is_chargeing = false; //
static bool battery_get_chargeing_state() { return !nrf_gpio_pin_read(BATTERY_CHARGE_DETECT_PIN); }
static void module_tmr_cb(void *context) { //
bool chargeing_state = battery_get_chargeing_state();
if (chargeing_state != m_battery_is_chargeing) {
app_event_t event;
memset(&event, 0, sizeof(event));
if (chargeing_state) {
ZLOGI("battery is charging");
event.eventType = kbattery_start_charge_event;
} else {
ZLOGI("battery end charging");
event.eventType = kbattery_end_charge_event;
}
zapp_ebus_push_event(&event);
}
m_battery_is_chargeing = chargeing_state;
}
/***********************************************************************************************************************
* extern *
***********************************************************************************************************************/
void BatteryMgrService_init() {
adc_mgr_init();
/**
* @brief 500ms启动定时器500ms检查一次当前是否正在充电
*/
nrf_gpio_cfg_sense_input(BATTERY_CHARGE_DETECT_PIN, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_NOSENSE);
app_timer_create(&battery_state_detect_tmr, APP_TIMER_MODE_REPEATED, module_tmr_cb);
app_timer_start(battery_state_detect_tmr, APP_TIMER_TICKS(500), NULL);
}
void BatteryMgrService_load() { adc_mgr_load(); }
void BatteryMgrService_unload() {
// adc是公共资源unload
}
int16_t BatteryMgrService_get_battery_level() { return 30; }
int16_t BatteryMgrService_get_charging_state() { return !nrf_gpio_pin_read(BATTERY_CHARGE_DETECT_PIN); }

17
app/src/app_service/battery_mgr_service.h

@ -0,0 +1,17 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "aproject_config/config.h"
#include "adc_mgr.h"
#include "znordic.h"
void BatteryMgrService_init();
void BatteryMgrService_load();
void BatteryMgrService_unload();
int16_t BatteryMgrService_get_battery_level();
int16_t BatteryMgrService_get_charging_state();

242
app/src/service/ble_cmd_processer/ble_cmd_process_service.c → app/src/bakservice/ble_cmd_processer/ble_cmd_process_service.c

@ -259,245 +259,3 @@ static void send_success_receipt(ify_hrs_packet_t* rxpacket, int32_t emptydatasi
zdatachannel_data_send2(txbuf, sendlen);
}
/*******************************************************************************
* *
*******************************************************************************/
void ble_cmder_process_rx(uint8_t* rx, int len) {
if (len < sizeof(ify_hrs_packet_t)) {
ZLOGI("rx len error:%d", len);
return;
}
ify_hrs_packet_t* rxheader = (ify_hrs_packet_t*)rx;
ify_hrs_packet_t* txheader = (ify_hrs_packet_t*)txbuf;
ify_hrs_cmd_t cmd = (ify_hrs_cmd_t)rxheader->cmd;
memset(txbuf, 0, sizeof(txbuf));
txheader->cmd = rxheader->cmd;
txheader->frame_index = rxheader->frame_index;
txheader->frame_type = kifyhrs_pt_cmd_receipt;
ZLOGI("rx cmd:%d index:%d datalen:%d", cmd, rxheader->frame_index, len - sizeof(ify_hrs_packet_t));
NRF_LOG_HEXDUMP_INFO(rx, len);
if (cmd == ify_hrs_cmd_read_device_version) {
device_version_info_receipt_t* receipt = (device_version_info_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_version_info_receipt_t);
receipt->blestack_version = device_info_read_blestack_version();
receipt->bootloader_version = device_info_read_bootloader_version();
receipt->firmware_version = device_info_read_firmware_version();
receipt->hardware_version = device_info_read_hardware_version();
zdatachannel_data_send2(txbuf, sendlen);
}
else if (cmd == ify_hrs_cmd_read_sensor_info) {
sensor_info_receipt_t* receipt = (sensor_info_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(sensor_info_receipt_t);
receipt->sensor_num = 1;
receipt->sensor_precision = SAMPLE_PRECISION;
receipt->sensor_sample_rate = SAMPLE_RATE / 10;
receipt->sensor0_pos = kifyhrs_sensor_pos_none;
receipt->sensor1_pos = kifyhrs_sensor_pos_none;
receipt->sensor2_pos = kifyhrs_sensor_pos_none;
zdatachannel_data_send2(txbuf, sendlen);
}
else if (cmd == ify_hrs_cmd_read_device_state) {
device_state_receipt_t* receipt = (device_state_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_state_receipt_t);
receipt->drop_state0 = (0);
receipt->drop_state1 = 0x00;
receipt->device_state0.sampling_state = (ds_now_state() == kdevice_state_sampling);
receipt->device_state0.report_state = global_state_get()->preivew_state;
receipt->device_state0.low_battery = (BoardBattery_get_battery_level() < APP_LOW_BATTERY_WARNING_LIMIT);
receipt->device_state0.full_storge = (sample_data_mgr_storage_is_full());
receipt->device_state1 = 0;
receipt->powerlevel = BoardBattery_get_battery_level();
receipt->storage_item_num = sample_data_mgr_get_file_num();
zdatachannel_data_send2(txbuf, sendlen);
}
else if (cmd == ify_hrs_cmd_read_time) {
read_time_receipt_t* receipt = (read_time_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_time_receipt_t);
static ztm_t ztm;
znordic_rtc_gettime(&ztm);
receipt->year = (ztm.tm_year + 1900 - 2000);
receipt->month = ztm.tm_mon + 1;
receipt->day = ztm.tm_mday;
receipt->hour = ztm.tm_hour;
receipt->minute = ztm.tm_min;
receipt->second = ztm.tm_sec;
zdatachannel_data_send2(txbuf, sendlen);
}
else if (cmd == ify_hrs_cmd_sync_time) {
sync_time_cmd_t* cmd = (sync_time_cmd_t*)rxheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t);
znordic_rtc_settime(cmd->year + 2000, cmd->month, cmd->day, cmd->hour, cmd->minute, cmd->second);
zdatachannel_data_send2(txbuf, sendlen);
}
else if (cmd == ify_hrs_cmd_start_upload_record) {
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support);
}
else if (cmd == ify_hrs_cmd_stop_upload_record) {
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support);
}
else if (cmd == ify_hrs_cmd_start_realtime_preview) {
global_state_set_preview_state(true);
send_success_receipt(rxheader, 0);
}
else if (cmd == ify_hrs_cmd_stop_realtime_preview) {
global_state_set_preview_state(false);
send_success_receipt(rxheader, 0);
}
else if (cmd == ify_hrs_cmd_read_records_info) {
// 10-
read_record_info_cmd_t* cmd = (read_record_info_cmd_t*)rxheader->data;
read_record_info_receipt_t* receipt = (read_record_info_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_record_info_receipt_t);
uint8_t recordoff = cmd->record_index;
//
if (ds_now_state() != kdevice_state_home) {
send_error_receipt(rxheader, kifyhrs_ecode_device_busy);
return;
}
sample_data_fileinfo_list_t* recordlist = sample_data_mgr_get_fileinfo_list();
if (recordoff >= recordlist->count) {
send_error_receipt(rxheader, kifyhrs_ecode_no_record_find);
return;
}
sample_data_fileinfo_t* fileinfo = recordlist->fileinfo[recordoff];
memcpy(receipt->record_id, fileinfo->filename, 6);
receipt->frameNum = fileinfo->size / 2; // 2byte per frame
receipt->dataSize = fileinfo->size;
receipt->sensorNum = 1;
receipt->captureRate = SAMPLE_RATE / 10;
receipt->capturePrecision = SAMPLE_PRECISION;
receipt->compressAlgorithm = 0;
receipt->checksum = fileinfo->checksum;
zdatachannel_data_send2(txbuf, sendlen);
}
else if (cmd == ify_hrs_cmd_del_record) {
// 11-
del_record_cmd_t* cmd = (del_record_cmd_t*)rxheader->data;
static sample_data_filename_t filename;
memset(&filename, 0, sizeof(filename));
memcpy(&filename, cmd->record_id, sizeof(cmd->record_id));
//
if (ds_now_state() != kdevice_state_home) {
send_error_receipt(rxheader, kifyhrs_ecode_device_busy);
return;
}
int ecode = sample_data_mgr_delete_file(&filename);
if (ecode == 0) {
send_success_receipt(rxheader, 0);
} else {
send_error_receipt(rxheader, kifyhrs_ecode_unkown_error);
}
}
else if (cmd == ify_hrs_cmd_start_upload_record) { // 12 0x0C
// 12-
start_upload_record_cmd_t* cmd = (start_upload_record_cmd_t*)rxheader->data;
static sample_data_filename_t filename;
memset(&filename, 0, sizeof(filename));
memcpy(&filename, cmd->record_id, sizeof(cmd->record_id));
//
if (ds_now_state() != kdevice_state_home) {
send_error_receipt(rxheader, kifyhrs_ecode_device_busy);
return;
}
int ecode = ble_start_upload_record(&filename);
if (ecode == 0) {
ify_hrs_packet_t* txheader = (ify_hrs_packet_t*)txbuf;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + 1; // 4BYTE便
txheader->cmd = rxheader->cmd;
txheader->frame_index = rxheader->frame_index;
txheader->frame_type = kifyhrs_pt_cmd_receipt;
zdatachannel_data_send2(txbuf, sendlen);
} else {
send_error_receipt(rxheader, ecode);
}
}
else if (cmd == ify_hrs_cmd_stop_upload_record) {
ble_stop_upload_record();
send_success_receipt(rxheader, 0);
}
else if (cmd == ify_hrs_cmd_enter_ota) {
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support);
}
else if (cmd == ify_hrs_cmd_read_sn) {
read_sn_receipt_t* receipt = (read_sn_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_sn_receipt_t);
device_info_read_sn((sn_t*)&receipt->sn);
zdatachannel_data_send2(txbuf, sendlen);
}
else if (cmd == ify_hrs_cmd_reset) {
NVIC_SystemReset();
}
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
// void hwss_start_capture(void);
// void hwss_start_prepare_capture(void);
// void hwss_stop_capture(void);
// void hwss_subic_write_reg(uint8_t addr, uint8_t val);
// uint8_t hwss_subic_read_reg(uint8_t addr);
// else if (cmd == ify_hrs_test_cmd_start_capture) {
// hwss_start_prepare_capture();
// hwss_start_capture();
// send_success_receipt(rxheader, 0);
// } else if (cmd == ify_hrs_test_cmd_stop_capture) {
// hwss_stop_capture();
// send_success_receipt(rxheader, 0);
// } else if (cmd == ify_hrs_test_cmd_read_reg) {
// uint8_t regadd = rxheader->data[0];
// uint8_t regval = hwss_subic_read_reg(regadd);
// txheader->data[0] = regval;
// send_success_receipt(rxheader, 1);
// } else if (cmd == ify_hrs_test_cmd_write_reg) {
// uint8_t regadd = rxheader->data[0];
// uint8_t regval = rxheader->data[1];
// hwss_subic_write_reg(regadd, regval);
// send_success_receipt(rxheader, 0);
// }
//
else {
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support);
}
}

0
app/src/service/ble_cmd_processer/ble_cmd_process_service.h → app/src/bakservice/ble_cmd_processer/ble_cmd_process_service.h

0
app/src/service/display_mgr/display_manager.c → app/src/bakservice/display_mgr/display_manager.c

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

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

0
app/src/service/heart_wave_sample_service/heart_ware_sample_data_mgr.c → app/src/bakservice/heart_wave_sample_service/heart_ware_sample_data_mgr.c

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

0
app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c → app/src/bakservice/heart_wave_sample_service/heart_wave_sample_data_pre_process.c

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

0
app/src/service/heart_wave_sample_service/heart_wave_sample_service.c → app/src/bakservice/heart_wave_sample_service/heart_wave_sample_service.c

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

0
app/src/service/storage/sample_data_manager.c → app/src/bakservice/storage/sample_data_manager.c

0
app/src/service/storage/sample_data_manager.h → app/src/bakservice/storage/sample_data_manager.h

0
app/src/service/storage/storage_service.h → app/src/bakservice/storage/storage_service.h

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

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

23
app/src/basic_service/app_event_distribute.c

@ -1,23 +0,0 @@
#include "basic_service/app_event_distribute.h"
#include "basic_service/app_event.h"
#include "app_scheduler.h"
static AppEventListener m_listener[10];
static int m_listener_num = 0;
static void app_event_process_cb(void* p_event_data, uint16_t event_size) {
for (int i = 0; i < m_listener_num; i++) {
if (m_listener[i].cbfunc) {
m_listener[i].cbfunc(p_event_data, event_size);
}
}
}
void AppEvent_regListener(app_event_listener_t listener) { //
m_listener[m_listener_num++].cbfunc = listener;
}
void AppEvent_pushEvent(app_event_t* event) { //
app_sched_event_put(event, sizeof(app_event_t), app_event_process_cb);
}

15
app/src/basic_service/app_event_distribute.h

@ -1,15 +0,0 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "basic_service/app_event.h"
typedef void (*app_event_listener_t)(void* p_event_data, uint16_t event_size);
typedef struct {
app_event_listener_t cbfunc;
} AppEventListener;
void AppEvent_regListener(app_event_listener_t listener);
void AppEvent_pushEvent(app_event_t* event);

64
app/src/basic_service/device_state.c

@ -1,64 +0,0 @@
#include "device_state.h"
#include "basic_service/app_event_distribute.h"
#include "znordic.h"
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
static device_state_t m_device_state = kdevice_state_standby; //
static uint32_t m_change_to_cur_state_tp = 0; //
static on_state_change_t m_onstate_change;
APP_TIMER_DEF(m_state_machine_driver_tmr); //
// static zapp_timer_context m_state_machine_driver_tmr_context;
static void state_machine_driver_tmr_cb(void* p_context) { //
static app_event_t appevent;
appevent.eventType = kevent_tmr_scheduler_event;
wd_feed();
AppEvent_pushEvent(&appevent);
}
void ds_change_to_state(device_state_t tostate) {
ZLOGI("change state from %s to %s", device_state_to_str(m_device_state), device_state_to_str(tostate));
device_state_t nowstate = m_device_state;
m_device_state = tostate;
if (m_onstate_change) {
m_onstate_change(nowstate, m_device_state);
}
m_change_to_cur_state_tp = znordic_getpower_on_ms();
}
uint32_t ds_cur_state_haspassed_ms() { return znordic_haspassed_ms(m_change_to_cur_state_tp); }
device_state_t ds_now_state() { return m_device_state; }
void ds_init(on_state_change_t onstate_change) {
m_onstate_change = onstate_change;
ZERROR_CHECK(app_timer_create(&m_state_machine_driver_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb));
ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(300), NULL));
}
/***********************************************************************************************************************
* sample_capture_state *
***********************************************************************************************************************/
static sample_capture_state_t m_sample_capture_state;
sample_capture_state_t* sample_capture_state_get() { //
return &m_sample_capture_state;
}
void sample_capture_state_reset() { //
m_sample_capture_state.is_over30s = false;
};
void sample_capture_state_set_is_over30s(bool over30s) { //
m_sample_capture_state.is_over30s = over30s;
}
/***********************************************************************************************************************
* global_state *
***********************************************************************************************************************/
global_state_t m_global_state;
global_state_t* global_state_get() { return &m_global_state; }
void global_state_set_preview_state(bool is_preview) { m_global_state.preivew_state = is_preview; }

29
app/src/basic_service/device_state.h

@ -1,29 +0,0 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "aproject_config/config.h"
#include "basic_service/app_event.h"
typedef void (*on_state_change_t)(device_state_t from, device_state_t to);
void ds_init(on_state_change_t onstate_change);
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);
typedef struct {
bool preivew_state;
} global_state_t;
global_state_t* global_state_get();
void global_state_set_preview_state(bool is_preview);

15
app/src/main.c

@ -6,20 +6,19 @@
#include <string.h>
//
#include "aproject_config/config.h"
#include "basic_service/app_event.h"
#include "basic_service/app_event_distribute.h"
#include "basic_service/device_version_info_mgr.h"
#include "app_basic_service/device_version_info_mgr.h"
#include "app_basic_service/zapp.h"
#include "zble_module.h"
#include "zdatachannel_service.h"
#include "one_conduction_main.h"
//
#define SCHED_MAX_EVENT_DATA_SIZE MAX(sizeof(app_event_t), APP_TIMER_SCHED_EVENT_DATA_SIZE)
ZDATACHANNEL_DEF(m_zhrs, 2 /*优先级*/, 1 /*client num*/); //
/**
* @brief
*/
void zdatachannel_data_handler(zdatachannel_evt_t *p_evt) {
if (p_evt->type == ZDATACHANNEL_EVT_RX_DATA) {
ble_cmder_process_rx((uint8_t *)p_evt->params.rx_data.p_data, p_evt->params.rx_data.length);
one_conduction_process_rx_packet((uint8_t *)p_evt->params.rx_data.p_data, p_evt->params.rx_data.length);
}
}
void on_service_init(void) {
@ -29,7 +28,6 @@ void on_service_init(void) {
zdatachannle_init.data_handler = zdatachannel_data_handler;
ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init));
}
extern void one_conduction_main();
/*lint -save -e14 */
/**
@ -65,8 +63,9 @@ void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info) {
}
int main() {
APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, 20);
zapp_early_init();
znordic_init_without_wd();
zapp_init();
/*******************************************************************************
* *
@ -75,7 +74,6 @@ int main() {
cfg.deviceName = device_info_read_sn_str();
cfg.on_service_init = on_service_init;
zble_module_init(&cfg);
ble_cmder_init();
/*******************************************************************************
* *
*******************************************************************************/
@ -83,5 +81,6 @@ int main() {
/*******************************************************************************
* LOOP *
*******************************************************************************/
zapp_start_schedule();
znordic_loop();
}

489
app/src/one_conduction_main.c

@ -1,400 +1,179 @@
#include <math.h>
#include <stdint.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 "board/ads129x/ads129x.h"
#include "board/app_board.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 "app_basic_service/device_version_info_mgr.h"
#include "app_basic_service/zapp.h"
#include "app_service/battery_mgr_service.h"
#include "aproject_config/config.h"
#include "ify_hrs_protocol/heart_rate_sensor_protocol.h"
#include "zdatachannel_service.h"
#include "znordic.h"
/*******************************************************************************
/***********************************************************************************************************************
* GLOBAL *
*******************************************************************************/
static int m_cur_fd;
static sample_data_filename_t sampledata_file_name;
***********************************************************************************************************************/
#define SCHED_MAX_EVENT_DATA_SIZE MAX(sizeof(app_event_t), APP_TIMER_SCHED_EVENT_DATA_SIZE)
static uint8_t bletxbuf[255];
static uint8_t blereportbuf[255];
/*******************************************************************************
* *
*******************************************************************************/
void ENTER_DEEP_SLEEP() {
// 使
BoardBattery_sence_gpio_init_before_sleep();
// nrf_sdh_disable_request();
app_timer_pause();
nrf_sdh_suspend();
sd_power_system_off();
NVIC_SystemReset();
* UTILS *
*******************************************************************************/
static void send_error_receipt(ify_hrs_packet_t* rxpacket, int32_t errorcode) {
ify_hrs_packet_t* txheader = (ify_hrs_packet_t*)bletxbuf;
error_receipt_t* receipt = (error_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(error_receipt_t);
txheader->cmd = rxpacket->cmd;
txheader->frame_index = rxpacket->frame_index;
txheader->frame_type = kifyhrs_pt_error_receipt;
receipt->errorcode = errorcode;
zdatachannel_data_send2(bletxbuf, sendlen);
}
/*******************************************************************************
* *
*******************************************************************************/
static void on_state_change(device_state_t from, device_state_t to) {
/**
* @brief
*/
if (from == kdevice_state_standby && to != kdevice_state_standby) {
/**
* @brief
*/
BoardBeepCtrl_load();
BoardLight_load();
sample_data_mgr_init();
dsp_mgr_init();
ble_cmder_init();
ble_cmder_start_adv();
static void send_success_receipt(ify_hrs_packet_t* rxpacket, int32_t emptydatasize) {
ify_hrs_packet_t* txheader = (ify_hrs_packet_t*)bletxbuf;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + emptydatasize;
app_board_change_state(kapp_power_state_working);
txheader->cmd = rxpacket->cmd;
txheader->frame_index = rxpacket->frame_index;
txheader->frame_type = kifyhrs_pt_cmd_receipt;
} else if (to == kdevice_state_standby) {
/**
* @brief
*
*/
dsp_mgr_uninit();
sample_data_mgr_uninit();
BoardLight_unload();
BoardBeepCtrl_unload();
ble_stop_upload_record();
zble_module_disconnect();
for (size_t i = 0; i < 100; i++) {
nrf_delay_ms(10);
if (!zble_module_is_connected()) {
break;
}
}
ble_cmder_stop_adv();
ble_cmder_uninit();
board_power_mgr_main_power_supply_set(false);
app_board_change_state(kapp_power_state_standby);
}
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
if (to == kdevice_state_home) {
dsp_mgr_change_to_main();
} else if (to == kdevice_state_poweron) {
dsp_mgr_change_to_welcome();
} else if (to == kdevice_state_charging) {
dsp_mgr_change_to_chargingPage();
}
zdatachannel_data_send2(bletxbuf, sendlen);
}
static void app_event_listener(void* p_event_data, uint16_t event_size) {
if (!p_event_data) return;
app_event_t* p_event = (app_event_t*)p_event_data;
if (ds_now_state() != kdevice_state_standby && //
ds_now_state() != kdevice_state_charging && //
ds_now_state() != kdevice_state_poweron //
) {
if (zdatachannel_is_connected()) {
BoardLight_setGreenLightEffect(kLightEffect_slowFlash);
} else {
BoardLight_setGreenLightEffect(kLightEffect_quickFlash);
}
}
/*******************************************************************************
* *
/*******************************************************************************
* *
*******************************************************************************/
static uint32_t lasttrypoweron_time = 0;
if (ds_now_state() == kdevice_state_standby) {
// -->
if (BoardBattery_get_charging_state()) {
ds_change_to_state(kdevice_state_charging);
void one_conduction_process_rx_packet(uint8_t* rx, int len) {
if (len < sizeof(ify_hrs_packet_t)) {
ZLOGI("rx len error:%d", len);
return;
}
// -->
ify_hrs_packet_t* rxheader = (ify_hrs_packet_t*)rx;
ify_hrs_packet_t* txheader = (ify_hrs_packet_t*)bletxbuf;
ify_hrs_cmd_t cmd = (ify_hrs_cmd_t)rxheader->cmd;
memset(bletxbuf, 0, sizeof(bletxbuf));
else if (hwss_lead_get_state_connected_state() && znordic_haspassed_ms(lasttrypoweron_time) >= LOW_BATTERY_REMINDER_DELAY_MS) {
lasttrypoweron_time = znordic_getpower_on_ms();
// if (BoardBattery_get_battery_level() > APP_WORK_BATTERY_LEVEL) {
// TODO:
if (true) {
ds_change_to_state(kdevice_state_poweron);
} else {
BoardLight_load();
BoardLight_blockFlash(3, 100);
BoardLight_unload();
}
}
txheader->cmd = rxheader->cmd;
txheader->frame_index = rxheader->frame_index;
txheader->frame_type = kifyhrs_pt_cmd_receipt;
/**
* @brief
* TODO:
* 1.
* 2. RTC未被设置
* 3. RTC未被设置
*/
else if (ds_cur_state_haspassed_ms() >= 10000) {
if (!znordic_rtc_has_setted()) {
}
}
}
ZLOGI("rx cmd:%d index:%d datalen:%d", cmd, rxheader->frame_index, len - sizeof(ify_hrs_packet_t));
NRF_LOG_HEXDUMP_INFO(rx, len);
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_charging) {
if (!BoardBattery_get_charging_state()) {
ds_change_to_state(kdevice_state_standby);
}
}
if (cmd == ify_hrs_cmd_read_device_version) {
device_version_info_receipt_t* receipt = (device_version_info_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_version_info_receipt_t);
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_poweron) {
if (ds_cur_state_haspassed_ms() >= 1500) {
ds_change_to_state(kdevice_state_home);
}
receipt->blestack_version = device_info_read_blestack_version();
receipt->bootloader_version = device_info_read_bootloader_version();
receipt->firmware_version = device_info_read_firmware_version();
receipt->hardware_version = device_info_read_hardware_version();
zdatachannel_data_send2(bletxbuf, sendlen);
}
/*******************************************************************************
* *
*******************************************************************************/
else if (cmd == ify_hrs_cmd_read_sensor_info) {
sensor_info_receipt_t* receipt = (sensor_info_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(sensor_info_receipt_t);
else if (ds_now_state() == kdevice_state_home) {
//
if (!zdatachannel_is_connected() && //
!hwss_lead_get_state_connected_state() && //
ds_cur_state_haspassed_ms() >= AUTOMATIC_SLEEP_TIME) {
ds_change_to_state(kdevice_state_standby);
}
//
else if (hwss_lead_get_state_connected_state() && ds_cur_state_haspassed_ms() > 1500) {
// dsp_mgr_change_to_preparePage
if (!BoardBattery_get_charging_state()) {
ds_change_to_state(kdevice_state_keep_still);
dsp_mgr_change_to_preparePage();
hwss_start_prepare_capture();
if (ble_is_upload_record()) {
ble_stop_upload_record();
}
}
}
#if 0
//TODO:使
//
else if (BoardBattery_get_battery_level() < APP_AUTO_STANDY_BATTERY_LEVEL && ds_cur_state_haspassed_ms() > 3000) {
ds_change_to_state(kdevice_state_standby);
} //
#endif
receipt->sensor_num = 1;
receipt->sensor_precision = SAMPLE_PRECISION;
receipt->sensor_sample_rate = SAMPLE_RATE / 10;
receipt->sensor0_pos = kifyhrs_sensor_pos_none;
receipt->sensor1_pos = kifyhrs_sensor_pos_none;
receipt->sensor2_pos = kifyhrs_sensor_pos_none;
else if (!ble_is_upload_record() && zble_module_is_connected() && zdatachannel_last_rx_data_haspassed_s() >= BLE_UNCONNECTED_OVERTIME_S) {
ZLOGI("auto sleep because ble unconnected");
ds_change_to_state(kdevice_state_standby);
zdatachannel_data_send2(bletxbuf, sendlen);
}
else if (BoardBattery_get_charging_state()) {
// BoardLight_setGreenLightEffect(kLightEffect_close);
ds_change_to_state(kdevice_state_standby);
else if (cmd == ify_hrs_cmd_read_sn) {
read_sn_receipt_t* receipt = (read_sn_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_sn_receipt_t);
device_info_read_sn((sn_t*)&receipt->sn);
zdatachannel_data_send2(bletxbuf, sendlen);
}
}
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_keep_still) {
if (!hwss_lead_get_state_connected_state()) {
//
ds_change_to_state(kdevice_state_home);
hwss_stop_capture();
} else {
/*******************************************************************************
* *
*******************************************************************************/
if (ds_cur_state_haspassed_ms() >= (KEEP_STILL_OVERTIME_MS_1P5 * 5)) {
/**
* @brief
*
* 1.
* 2.
* 3.
*/
ds_change_to_state(kdevice_state_sampling);
dsp_mgr_change_to_sampling(0, 0);
hwss_start_capture();
static ztm_t tm;
memset(&sampledata_file_name, 0, sizeof(sampledata_file_name));
znordic_rtc_gettime(&tm);
sample_capture_state_reset();
sampledata_file_name.year = tm.tm_year + 1900 - 2000;
sampledata_file_name.month = tm.tm_mon + 1;
sampledata_file_name.day = tm.tm_mday;
sampledata_file_name.hour = tm.tm_hour;
sampledata_file_name.min = tm.tm_min;
sampledata_file_name.sec = tm.tm_sec;
m_cur_fd = sample_data_mgr_open(&sampledata_file_name, kwrflag_write_only);
BoardBeepCtrl_setEffect(kBoardBeepEffect_oneShortBeep);
} else if (ds_cur_state_haspassed_ms() >= (KEEP_STILL_OVERTIME_MS_1P5 * 4)) {
if (dsp_mgr_preparePage_get_progress() != 4) {
dsp_mgr_preparePage_set_progress(4);
}
} else if (ds_cur_state_haspassed_ms() >= (KEEP_STILL_OVERTIME_MS_1P5 * 3)) {
if (dsp_mgr_preparePage_get_progress() != 3) {
dsp_mgr_preparePage_set_progress(3);
}
} else if (ds_cur_state_haspassed_ms() >= (KEEP_STILL_OVERTIME_MS_1P5 * 2)) {
if (dsp_mgr_preparePage_get_progress() != 2) {
dsp_mgr_preparePage_set_progress(2);
}
} else if (ds_cur_state_haspassed_ms() >= (KEEP_STILL_OVERTIME_MS_1P5 * 1)) {
if (dsp_mgr_preparePage_get_progress() != 1) {
dsp_mgr_preparePage_set_progress(1);
}
}
}
else if (cmd == ify_hrs_cmd_reset) {
NVIC_SystemReset();
}
/*******************************************************************************
* *
*******************************************************************************/
else if (cmd == ify_hrs_cmd_read_time) {
read_time_receipt_t* receipt = (read_time_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_time_receipt_t);
static ztm_t ztm;
znordic_rtc_gettime(&ztm);
else if (ds_now_state() == kdevice_state_sampling) {
/*******************************************************************************
* *
*******************************************************************************/
if (p_event->eventType == kevent_capture_256data_event) {
// if (hwss_has_captured_time_ms() <= (MAX_STORAGE_TIMEOUT_S * 1000)) {
// sample_data_mgr_write(m_cur_fd, p_event->val.capture_data_cache, 256);
// }
}
/*******************************************************************************
* *
*******************************************************************************/
if (p_event->eventType == kevent_capture_little_data_block_event) {
//
if (global_state_get()->preivew_state) ble_cmder_try_report_one_sample_data(p_event);
receipt->year = (ztm.tm_year + 1900 - 2000);
receipt->month = ztm.tm_mon + 1;
receipt->day = ztm.tm_mday;
receipt->hour = ztm.tm_hour;
receipt->minute = ztm.tm_min;
receipt->second = ztm.tm_sec;
zdatachannel_data_send2(bletxbuf, sendlen);
}
/*******************************************************************************
* 30 *
*******************************************************************************/
if (hwss_has_captured_time_ms() >= (SAMPLE_MIN_TIME_S * 1000)) {
if (!sample_capture_state_get()->is_over30s) {
BoardBeepCtrl_setEffect(kBoardBeepEffect_oneShortBeep);
sample_capture_state_set_is_over30s(true);
}
}
else if (cmd == ify_hrs_cmd_sync_time) {
sync_time_cmd_t* cmd = (sync_time_cmd_t*)rxheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t);
/*******************************************************************************
* *
*******************************************************************************/
bool capture_end = false;
if (hwss_has_captured_time_ms() >= (MAX_STORAGE_TIMEOUT_S * 1000)) {
capture_end = true;
} else if (p_event->eventType == kplod_disconnected_event) {
ble_cmder_try_report_sensor_drop_event(0x01, 0);
capture_end = true;
znordic_rtc_settime(cmd->year + 2000, cmd->month, cmd->day, cmd->hour, cmd->minute, cmd->second);
zdatachannel_data_send2(bletxbuf, sendlen);
}
if (capture_end) {
if (sample_capture_state_get()->is_over30s) {
sample_data_mgr_close(m_cur_fd);
dsp_mgr_change_to_sampleSuc();
BoardBeepCtrl_setEffect(kBoardBeepEffect_oneShortBeep);
ds_change_to_state(kdevice_state_sampling_complete);
hwss_stop_capture();
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
} else {
//
else if (cmd == ify_hrs_cmd_read_device_state) {
device_state_receipt_t* receipt = (device_state_receipt_t*)txheader->data;
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_state_receipt_t);
//
hwss_stop_capture();
//
sample_data_mgr_close(m_cur_fd);
//
sample_data_mgr_delete_file(&sampledata_file_name);
//
dsp_mgr_change_to_samplingError();
BoardBeepCtrl_setEffect(kBoardBeepEffect_threeShortBeep);
ds_change_to_state(kdevice_state_sampling_error);
}
}
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.full_storge = false;
}
receipt->device_state1 = 0;
receipt->powerlevel = BatteryMgrService_get_battery_level();
receipt->storage_item_num = 0;
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_sampling_complete) {
if (ds_cur_state_haspassed_ms() >= 3000) {
ZLOGI("ds_cur_state_haspassed_ms() %d> 3000", ds_cur_state_haspassed_ms());
ds_change_to_state(kdevice_state_home);
ble_cmder_report_sample_finish_event();
zdatachannel_data_send2(bletxbuf, sendlen);
}
}
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_sampling_error) {
if ((ds_cur_state_haspassed_ms() >= 3000) || //
(ds_cur_state_haspassed_ms() >= 1000 && hwss_lead_get_state_connected_state())) {
ZLOGI("ds_cur_state_haspassed_ms() %d> 3000", ds_cur_state_haspassed_ms());
ds_change_to_state(kdevice_state_home);
ble_cmder_report_sample_finish_event();
}
}
/******************************************************************************************************************
* *
******************************************************************************************************************/
else if (ds_now_state() == kdevice_state_test_mode) {
/**
* @brief 退
*/
if (p_event->eventType == kevent_capture_little_data_block_event) {
ble_cmder_try_report_one_sample_data(p_event);
}
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
// void hwss_start_capture(void);
// void hwss_start_prepare_capture(void);
// void hwss_stop_capture(void);
// void hwss_subic_write_reg(uint8_t addr, uint8_t val);
// uint8_t hwss_subic_read_reg(uint8_t addr);
// else if (cmd == ify_hrs_test_cmd_start_capture) {
// hwss_start_prepare_capture();
// hwss_start_capture();
// send_success_receipt(rxheader, 0);
// } else if (cmd == ify_hrs_test_cmd_stop_capture) {
// hwss_stop_capture();
// send_success_receipt(rxheader, 0);
// } else if (cmd == ify_hrs_test_cmd_read_reg) {
// uint8_t regadd = rxheader->data[0];
// uint8_t regval = hwss_subic_read_reg(regadd);
// txheader->data[0] = regval;
// send_success_receipt(rxheader, 1);
// } else if (cmd == ify_hrs_test_cmd_write_reg) {
// uint8_t regadd = rxheader->data[0];
// uint8_t regval = rxheader->data[1];
// hwss_subic_write_reg(regadd, regval);
// send_success_receipt(rxheader, 0);
// }
//
else {
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support);
}
}
/*******************************************************************************
* MAIN_CODE *
*******************************************************************************/
void one_conduction_main() {
ZLOGI("one_conduction_main");
AppEvent_regListener(app_event_listener);
app_board_init();
BoardBeepCtrl_init();
BoardLight_Init();
/**
* @brief
*/
hwss_init();
ds_init(on_state_change);
ds_change_to_state(kdevice_state_test_mode);
znordic_loop();
}
void one_conduction_main() { ZLOGI("one_conduction_main"); }

3
app/src/one_conduction_main.h

@ -1,4 +1,5 @@
#pragma once
#include <stdint.h>
void one_conduction_main();
void one_conduction_process_rx_packet(uint8_t* rx, int len);
Loading…
Cancel
Save