Browse Source

update

master
zhaohe 1 year ago
parent
commit
3864c542a3
  1. 15
      README.md
  2. 174
      app/app.uvoptx
  3. 10
      app/app.uvprojx
  4. 2
      app/src/basic/version.h
  5. 36
      app/src/board/board.h
  6. 140
      app/src/board/board_beep_ctrl.c
  7. 26
      app/src/board/board_beep_ctrl.h
  8. 52
      app/src/one_conduction_board.c
  9. 8
      app/src/one_conduction_board.h
  10. 227
      app/src/one_conduction_main.c
  11. 12
      scripter/build_app.bat

15
README.md

@ -2,4 +2,19 @@
```
TODO
0. 支持无线升级,修改SN码
6. 开始采集蜂鸣器响响三声,结束采集蜂鸣器响三声
1. 添加逻辑,如果未配置时间,设备进入深度休眠。
2. 修改电池电量相关逻辑,校准电池电量。
3. 修改心率采样ADC参考电压
4. 修改屏幕显示位置
5. 充电中,限制用户操作
6. 调整ADC放大倍数
测试:
1. 电池电量测试
2. 充电插入检测
...

174
app/app.uvoptx

@ -612,6 +612,18 @@
<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\board\board_beep_ctrl.c</PathWithFileName>
<FilenameWithoutPath>board_beep_ctrl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -622,7 +634,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>20</FileNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -642,7 +654,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>21</FileNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -654,7 +666,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>22</FileNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -674,7 +686,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>23</FileNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -694,7 +706,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>24</FileNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -706,7 +718,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>25</FileNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -718,7 +730,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>26</FileNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -730,7 +742,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>27</FileNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -742,7 +754,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>28</FileNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -754,7 +766,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>29</FileNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -766,7 +778,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>30</FileNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -778,7 +790,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>31</FileNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -798,7 +810,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>32</FileNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -818,7 +830,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>33</FileNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -830,7 +842,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>34</FileNumber>
<FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -842,7 +854,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>35</FileNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -854,7 +866,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>36</FileNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -866,7 +878,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>37</FileNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -878,7 +890,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>38</FileNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -890,7 +902,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>39</FileNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -902,7 +914,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>40</FileNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -914,7 +926,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>41</FileNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -926,7 +938,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>42</FileNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -938,7 +950,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>43</FileNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -950,7 +962,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>44</FileNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -962,7 +974,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>45</FileNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -974,7 +986,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>46</FileNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -986,7 +998,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>47</FileNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -998,7 +1010,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>48</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1010,7 +1022,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1022,7 +1034,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1034,7 +1046,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1046,7 +1058,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1066,7 +1078,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1078,7 +1090,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1090,7 +1102,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1102,7 +1114,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1114,7 +1126,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1126,7 +1138,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1138,7 +1150,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1150,7 +1162,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1162,7 +1174,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1174,7 +1186,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1186,7 +1198,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1198,7 +1210,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1210,7 +1222,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1222,7 +1234,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1234,7 +1246,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1246,7 +1258,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1258,7 +1270,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1270,7 +1282,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1282,7 +1294,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1294,7 +1306,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1306,7 +1318,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1318,7 +1330,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1330,7 +1342,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1342,7 +1354,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1354,7 +1366,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1366,7 +1378,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1378,7 +1390,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1398,7 +1410,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1410,7 +1422,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1422,7 +1434,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1434,7 +1446,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1446,7 +1458,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>84</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1458,7 +1470,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>85</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1478,7 +1490,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>86</FileNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1490,7 +1502,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>87</FileNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1502,7 +1514,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>88</FileNumber>
<FileNumber>89</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1522,7 +1534,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>89</FileNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1534,7 +1546,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>90</FileNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1546,7 +1558,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>91</FileNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1566,7 +1578,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>92</FileNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1578,7 +1590,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>93</FileNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1590,7 +1602,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>94</FileNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1610,7 +1622,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>95</FileNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1622,7 +1634,7 @@
</File>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>96</FileNumber>
<FileNumber>97</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1642,7 +1654,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>97</FileNumber>
<FileNumber>98</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1654,7 +1666,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>98</FileNumber>
<FileNumber>99</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1666,7 +1678,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>99</FileNumber>
<FileNumber>100</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1678,7 +1690,7 @@
</File>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>100</FileNumber>
<FileNumber>101</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

10
app/app.uvprojx

@ -478,6 +478,11 @@
<FileType>1</FileType>
<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>
</Files>
</Group>
<Group>
@ -4337,6 +4342,11 @@
<FileType>1</FileType>
<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>
</Files>
</Group>
<Group>

2
app/src/basic/version.h

@ -2,7 +2,7 @@
#define CATEGORY "M1001" // 데돔젬
#define MANUFACTURER_NAME "iflytop"
#define FIRMWARE_VERSION 0x0001
#define FIRMWARE_VERSION (1)
#define BLESTACK_VERSION 1
#define BOOTLOADER_VERSION 1
#define HARDWARE_VERSION (1)

36
app/src/board/board.h

@ -1,26 +1,24 @@
#pragma once
/**
* @brief
*
* 200HZ,16bit
* ->
* 1s => 200*2 => 400BYTE
* 248k
* ->
* 1s => 248*1024/400 => 634_S => 10.5min
*/
/*******************************************************************************
* BEEP *
*******************************************************************************/
#define BEEP_PIN 1
#define BEEP_PWM_INSTANCE 0
#define MAX_STORAGE_TIMEOUT_S (60 * 10)
#define MAX_STORAGE_SIZE (MAX_STORAGE_TIMEOUT_S * 400) // 存储最大限制为 (256-8)kbyte
#define MAX_FILE_NUM 10
#define SAMPLE_RATE 500
#define SAMPLE_PRECISION 12
#define AUTOMATIC_SLEEP_TIME 15000
#define SAMPLE_MIN_TIME_S (30.0)
/**
* @brief
*/
// #define ENABLE_SLEEP
#define MAX_STORAGE_TIMEOUT_S (60 * 10) // 最长存储时间
#define MAX_STORAGE_SIZE (MAX_STORAGE_TIMEOUT_S * 400) // 存储最大限制为 (256-8)kbyte
#define MAX_FILE_NUM 10 // 最多存储条目数
#define SAMPLE_RATE 500 // 采样率
#define SAMPLE_PRECISION 12 // 采样精度
#define AUTOMATIC_SLEEP_TIME 30000 // 开机后自动休眠时间
#define SAMPLE_MIN_TIME_S (30.0) // 采样最小时间
#define LITTLE_DATA_BLOCK_FRAME_NUM 5 // 每次多少帧上报一次
#define LITTLE_DATA_BLOCK_FRAME_NUM 5 // 每次多少帧上报一次
#define KEEP_STILL_OVERTIME_MS_1P5 2000 // 保持静止超时时间的1/6

140
app/src/board/board_beep_ctrl.c

@ -0,0 +1,140 @@
#include "board_beep_ctrl.h"
#define BEEP_TIMER_INTERVAL (150)
#if 1
APP_TIMER_DEF(m_beep_tmr); //
static nrf_drv_pwm_t m_beep_pwm0 = NRF_DRV_PWM_INSTANCE(BEEP_PWM_INSTANCE);
static nrf_pwm_values_individual_t m_beep_pwm0_seq_values = {0};
static nrf_pwm_sequence_t const m_beep_pwm0_seq = {
.values.p_individual = &m_beep_pwm0_seq_values,
.length = NRF_PWM_VALUES_LENGTH(m_beep_pwm0_seq_values),
.repeats = 0,
.end_delay = 0,
};
static nrf_drv_pwm_config_t const m_beep_pwm0_config0 = {
.output_pins =
{
BEEP_PIN, //
NRF_DRV_PWM_PIN_NOT_USED,
NRF_DRV_PWM_PIN_NOT_USED,
NRF_DRV_PWM_PIN_NOT_USED,
},
.irq_priority = APP_IRQ_PRIORITY_LOWEST,
.base_clock = NRF_PWM_CLK_125kHz,
.count_mode = NRF_PWM_MODE_UP,
.top_value = 80, // 125kHz / 46 = 2.717k
.load_mode = NRF_PWM_LOAD_INDIVIDUAL,
.step_mode = NRF_PWM_STEP_AUTO,
};
BoardBeepEffect_t m_beep_effect = kBoardBeepEffect_none;
static uint32_t m_beep_cnt = 0;
static void beep_tmr_handler(void *context) {
if (m_beep_effect == kBoardBeepEffect_none) {
BoardBeepCtrl_set(false);
} else if (m_beep_effect == kBoardBeepEffect_oneShortBeep) {
if (m_beep_cnt == 0) {
BoardBeepCtrl_set(true);
} else if (m_beep_cnt >= 1) {
BoardBeepCtrl_set(false);
app_timer_stop(m_beep_tmr);
m_beep_effect = kBoardBeepEffect_none;
}
}
else if (m_beep_effect == kBoardBeepEffect_oneShortLongBeep) {
if (m_beep_cnt == 0) {
BoardBeepCtrl_set(true);
} else if (m_beep_cnt >= 6) {
BoardBeepCtrl_set(false);
app_timer_stop(m_beep_tmr);
m_beep_effect = kBoardBeepEffect_none;
}
}
else if (m_beep_effect == kBoardBeepEffect_threeShortBeep) {
if (m_beep_cnt < 6) {
if (m_beep_cnt % 2 == 0) {
BoardBeepCtrl_set(true);
} else if (m_beep_cnt % 2 == 1) {
BoardBeepCtrl_set(false);
}
} else {
BoardBeepCtrl_set(false);
app_timer_stop(m_beep_tmr);
m_beep_effect = kBoardBeepEffect_none;
}
} else if (m_beep_effect == kBoardBeepEffect_continuousShortBeep) {
// 1
if (m_beep_cnt < 6) {
if (m_beep_cnt % 2 == 0) {
BoardBeepCtrl_set(true);
} else if (m_beep_cnt % 2 == 1) {
BoardBeepCtrl_set(false);
}
} else {
if (BEEP_TIMER_INTERVAL * m_beep_cnt >= 10000) {
m_beep_cnt = 0;
return;
}
}
}
m_beep_cnt++;
}
void BoardBeepCtrl_init(void) { //
app_timer_create(&m_beep_tmr, APP_TIMER_MODE_REPEATED, beep_tmr_handler);
}
static bool m_beep_loaded = false;
void BoardBeepCtrl_load() { //
if (m_beep_loaded) return;
APP_ERROR_CHECK(nrfx_pwm_init(&m_beep_pwm0, &m_beep_pwm0_config0, NULL));
m_beep_loaded = true;
}
void BoardBeepCtrl_unload() {
if (!m_beep_loaded) return;
BoardBeepCtrl_set(0);
nrfx_pwm_uninit(&m_beep_pwm0);
m_beep_loaded = false;
}
void BoardBeepCtrl_set(uint8_t state) {
if (state) {
m_beep_pwm0_seq_values.channel_0 = 10; // top_value
nrfx_pwm_simple_playback(&m_beep_pwm0, &m_beep_pwm0_seq, 1, NRF_DRV_PWM_FLAG_LOOP);
} else {
nrfx_pwm_stop(&m_beep_pwm0, true);
}
}
void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) {
if (m_beep_effect == effect) return;
m_beep_effect = effect;
app_timer_stop(m_beep_tmr);
m_beep_cnt = 0;
if (m_beep_effect == kBoardBeepEffect_none) {
BoardBeepCtrl_set(false);
}
else {
app_timer_start(m_beep_tmr, APP_TIMER_TICKS(BEEP_TIMER_INTERVAL), NULL);
}
}
#else
void BoardBeepCtrl_init(void) {}
void BoardBeepCtrl_load() {}
void BoardBeepCtrl_unload() {}
void BoardBeepCtrl_set(uint8_t state) {}
void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) {}
#endif

26
app/src/board/board_beep_ctrl.h

@ -0,0 +1,26 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "board/board.h"
#include "znordic.h"
typedef enum {
kBoardBeepEffect_none = 0,
//
kBoardBeepEffect_oneShortBeep,
//
kBoardBeepEffect_oneShortLongBeep,
//
kBoardBeepEffect_threeShortBeep,
//
kBoardBeepEffect_continuousShortBeep,
} BoardBeepEffect_t;
void BoardBeepCtrl_init(void);
void BoardBeepCtrl_load();
void BoardBeepCtrl_unload();
void BoardBeepCtrl_set(uint8_t beep);
void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect);

52
app/src/one_conduction_board.c

@ -41,8 +41,7 @@
#define EEPROM_I2C_SDA_M 17 // I2C SDA引脚
#define EEPROM_I2C_INSTANCE 1 // I2C使用的硬件控制器ID
#define BEEP_PWM_INSTANCE 0
#define BEEP_PIN 1
#define BATTERY_CHARGE_DETECT_PIN 18
@ -91,55 +90,6 @@ void SingleLeadECG_adc_module_deinit() {
}
/*******************************************************************************
* *
*******************************************************************************/
static nrf_drv_pwm_t m_beep_pwm0 = NRF_DRV_PWM_INSTANCE(BEEP_PWM_INSTANCE);
static nrf_pwm_values_individual_t m_beep_pwm0_seq_values = {0};
static nrf_pwm_sequence_t const m_beep_pwm0_seq = {
.values.p_individual = &m_beep_pwm0_seq_values,
.length = NRF_PWM_VALUES_LENGTH(m_beep_pwm0_seq_values),
.repeats = 0,
.end_delay = 0,
};
static nrf_drv_pwm_config_t const m_beep_pwm0_config0 = {
.output_pins = {BEEP_PIN},
.irq_priority = APP_IRQ_PRIORITY_LOWEST,
.base_clock = NRF_PWM_CLK_125kHz,
.count_mode = NRF_PWM_MODE_UP,
.top_value = 46, // 125kHz / 46 = 2.717k
.load_mode = NRF_PWM_LOAD_INDIVIDUAL,
.step_mode = NRF_PWM_STEP_AUTO,
};
APP_TIMER_DEF(m_beep_tmr); //
bool m_beep_tmr_is_inited = false;
static void beep_tmr_handler(void *context) { SingleLeadECG_beep_set_state(false); }
void SingleLeadECG_beep_init() {
if (!m_beep_tmr_is_inited) {
m_beep_tmr_is_inited = true;
app_timer_create(&m_beep_tmr, APP_TIMER_MODE_SINGLE_SHOT, beep_tmr_handler);
}
APP_ERROR_CHECK(nrfx_pwm_init(&m_beep_pwm0, &m_beep_pwm0_config0, NULL));
}
void SingleLeadECG_beep_deinit() {
SingleLeadECG_beep_set_state(false);
nrfx_pwm_uninit(&m_beep_pwm0);
}
void SingleLeadECG_beep_set_state(bool state) {
if (state) {
m_beep_pwm0_seq_values.channel_0 = 23; // top_value
nrfx_pwm_simple_playback(&m_beep_pwm0, &m_beep_pwm0_seq, 1, NRF_DRV_PWM_FLAG_LOOP);
} else {
nrfx_pwm_stop(&m_beep_pwm0, true);
}
}
void SingleLeadECG_beep_trigger_once() {
SingleLeadECG_beep_set_state(true);
app_timer_start(m_beep_tmr, APP_TIMER_TICKS(200), NULL);
}
/*******************************************************************************
* SCREEN *
*******************************************************************************/

8
app/src/one_conduction_board.h

@ -16,13 +16,7 @@
void SingleLeadECG_adc_module_init();
void SingleLeadECG_adc_module_deinit();
/*******************************************************************************
* ·äÃùÆ÷ *
*******************************************************************************/
void SingleLeadECG_beep_init();
void SingleLeadECG_beep_deinit();
void SingleLeadECG_beep_set_state(bool state);
void SingleLeadECG_beep_trigger_once();
/*******************************************************************************
* EEPROM *

227
app/src/one_conduction_main.c

@ -2,7 +2,9 @@
#include "app_event.h"
#include "app_event_distribute.h"
#include "basic/device_version_info_mgr.h"
#include "ble_cmd_process_service.h"
#include "board/board_beep_ctrl.h"
#include "config.h"
#include "display_manager.h"
#include "heart_wave_sample_service.h"
@ -11,16 +13,14 @@
#include "zble_module.h"
#include "zdatachannel_service.h"
#include "znordic.h"
#include "basic/device_version_info_mgr.h"
/*******************************************************************************
* GLOBAL *
*******************************************************************************/
APP_TIMER_DEF(m_state_machine_driver_tmr); //
APP_TIMER_DEF(m_plod_state_event_detect_tmr); //
APP_TIMER_DEF(m_charge_event_detect_tmr); //
APP_TIMER_DEF(m_state_machine_driver_tmr); //
APP_TIMER_DEF(m_plod_state_event_detect_tmr); //
APP_TIMER_DEF(m_charge_event_detect_tmr); //
static int m_cur_fd;
static sample_data_filename_t sampledata_file_name;
@ -113,7 +113,7 @@ static void power_on() {
return;
}
SingleLeadECG_adc_module_init();
SingleLeadECG_beep_init();
BoardBeepCtrl_load();
SingleLeadECG_led_init();
SingleLeadECG_ecg_init();
SingleLeadECG_battery_init();
@ -136,7 +136,7 @@ static void power_off() {
SingleLeadECG_battery_deinit();
SingleLeadECG_ecg_deinit();
SingleLeadECG_led_deinit();
SingleLeadECG_beep_deinit();
BoardBeepCtrl_unload();
SingleLeadECG_adc_module_deinit();
ble_cmder_stop_adv();
ble_cmder_uninit();
@ -198,45 +198,57 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
SingleLeadECG_led_blue_set_state(false);
}
/*******************************************************************************
* *
*******************************************************************************/
if (ds_now_state() == kdevice_state_standby) {
/*******************************************************************************
* *
*******************************************************************************/
/**
* @brief
* -->
* -->
*
*/
// if (!SingleLeadECG_battery_charge_get_state()) {
// //
// state_machine__change_to_charging_state();
// }
if (p_event->eventType == kplod_connected_event) {
//
state_machine__change_to_poweroning_state();
}
} else if (ds_now_state() == kdevice_state_charging) {
/*******************************************************************************
* *
*******************************************************************************/
}
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_charging) {
if (!SingleLeadECG_battery_charge_get_state()) {
state_machine__change_to_standby_state();
}
} else if (ds_now_state() == kdevice_state_poweron) {
/*******************************************************************************
* *
*******************************************************************************/
}
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_poweron) {
if (ds_cur_state_haspassed_ms() >= 1500) {
state_machine__change_to_home_state();
}
} else if (ds_now_state() == kdevice_state_home) {
/*******************************************************************************
* *
*******************************************************************************/
// //
}
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_home) {
//
if (!zdatachannel_is_connected() && //
!plod_state_is_connected() && //
plod_state_has_disconnected_ms() >= 3000 && //
ds_cur_state_haspassed_ms() >= AUTOMATIC_SLEEP_TIME) {
#ifdef ENABLE_SLEEP
state_machine__change_to_standby_state();
#endif
}
//
else if (plod_state_is_connected() && ds_cur_state_haspassed_ms() > 1500) {
@ -245,10 +257,12 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
dsp_mgr_change_to_preparePage();
}
// ZLOGI("bt:%d plod:%d has_disc:%d state:%d", zdatachannel_is_connected(), plod_state_is_connected(), plod_state_has_disconnected_ms(), ds_cur_state_haspassed_ms());
} else if (ds_now_state() == kdevice_state_keep_still) {
/*******************************************************************************
* *
*******************************************************************************/
}
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_keep_still) {
if (!plod_state_is_connected()) {
//
state_machine__change_to_home_state();
@ -256,9 +270,9 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
/*******************************************************************************
* *
*******************************************************************************/
if (ds_cur_state_haspassed_ms() >= (2000 * 5)) {
if (ds_cur_state_haspassed_ms() >= (KEEP_STILL_OVERTIME_MS_1P5 * 5)) {
/**
* @brief 2500ms后
* @brief
*
* 1.
* 2.
@ -279,57 +293,45 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
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() >= (2000 * 4)) {
} 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() >= (2000 * 3)) {
} 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() >= (2000 * 2)) {
} 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() >= (2000 * 1)) {
} 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 (ds_now_state() == kdevice_state_sampling) {
/*******************************************************************************
* *
*******************************************************************************/
}
/**
* @brief
*
* --->
* 30
* --->
* 30
* --->
*/
/*******************************************************************************
* *
*******************************************************************************/
bool always_capture = false;
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)) {
// ZLOGI("storage data 256 [%d]ms", hwss_has_captured_time_ms());
sample_data_mgr_write(m_cur_fd, p_event->val.capture_data_cache, 256);
} else {
//
/*******************************************************************************
* *
*******************************************************************************/
if (!always_capture) {
sample_data_mgr_close(m_cur_fd);
ds_change_to_state(kdevice_state_sampling_complete);
hwss_stop_capture();
}
}
} else if (p_event->eventType == kevent_capture_little_data_block_event) {
}
/*******************************************************************************
* *
*******************************************************************************/
if (p_event->eventType == kevent_capture_little_data_block_event) {
//
ZASSERT(LITTLE_DATA_BLOCK_FRAME_NUM == 5);
ble_cmder_try_report_one_sample_data(p_event->val.little_data_block.frameIndex, //
@ -338,60 +340,69 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
p_event->val.little_data_block.data[2].data, //
p_event->val.little_data_block.data[3].data, //
p_event->val.little_data_block.data[4].data);
// ble_cmder_try_report_one_sample_data(p_event->val.little_data_block.frameIndex, //
// 12345, //
// 12346, //
// 12347, //
// 12348, //
// 12349 //
// );
} else if (p_event->eventType == kplod_disconnected_event || !m_plod_state_connected_state) {
/*******************************************************************************
* *
*******************************************************************************/
}
if (hwss_has_captured_time_ms() < (SAMPLE_MIN_TIME_S * 1000)) {
// 30
ble_cmder_try_report_sensor_drop_event(0x01, 0);
/*******************************************************************************
* *
*******************************************************************************/
if (!always_capture) {
sample_data_mgr_close(m_cur_fd);
sample_data_mgr_delete_file(&sampledata_file_name);
dsp_mgr_change_to_samplingError();
ds_change_to_state(kdevice_state_sampling_error);
hwss_stop_capture();
}
/*******************************************************************************
* 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);
}
}
/*******************************************************************************
* *
*******************************************************************************/
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;
}
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 {
// 30
/*******************************************************************************
* *
*******************************************************************************/
if (!always_capture) {
SingleLeadECG_beep_trigger_once();
sample_data_mgr_close(m_cur_fd);
dsp_mgr_change_to_sampleSuc();
ds_change_to_state(kdevice_state_sampling_complete);
hwss_stop_capture();
}
}
} else {
if (hwss_has_captured_time_ms() >= (SAMPLE_MIN_TIME_S * 1000)) {
if (!sample_capture_state_get()->is_over30s) {
SingleLeadECG_beep_trigger_once();
sample_capture_state_set_is_over30s(true);
}
//
//
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);
}
}
} else if (ds_now_state() == kdevice_state_sampling_complete) {
}
/*******************************************************************************
* *
*******************************************************************************/
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());
state_machine__change_to_home_state();
ble_cmder_report_sample_finish_event();
}
} else if (ds_now_state() == kdevice_state_sampling_error) {
}
/*******************************************************************************
* *
*******************************************************************************/
else if (ds_now_state() == kdevice_state_sampling_error) {
if ((ds_cur_state_haspassed_ms() >= 3000) || (ds_cur_state_haspassed_ms() >= 1000 && m_plod_state_connected_state)) {
ZLOGI("ds_cur_state_haspassed_ms() %d> 3000", ds_cur_state_haspassed_ms());
state_machine__change_to_home_state();
@ -404,7 +415,7 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
*******************************************************************************/
void one_conduction_main() {
BoardBeepCtrl_init();
SingleLeadECG_ecg_io_init();
SingleLeadECG_battery_charge_detect_io_init();
AppEvent_regListener(app_event_listener);

12
scripter/build_app.bat

@ -3,6 +3,12 @@
@REM 编译app
call scripter\keil_build.bat app\app.uvprojx app\_build\app.hex
del output\app_whole.hex
del output\app.zip
del output\one_lead_ecg.zip
del output\one_lead_ecg.hexb
@REM 检查是否编译成功
if not exist app\_build\app.hex (
echo 编译app失败
@ -43,8 +49,6 @@ if %errorlevel% neq 0 (
exit /b 1
)
copy /y output\app.zip output\one_lead_ecg.zip
copy /y output\app_whole.hex output\one_lead_ecg.hex
@REM 打包整体镜像
@ -54,6 +58,10 @@ del output\bl_temp.hex
del output\settings.hex
del output\app.hex
copy /y output\app.zip output\one_lead_ecg.zip
copy /y output\app_whole.hex output\one_lead_ecg.hex
echo "Start flashing..."
call scripter\unlock.bat

Loading…
Cancel
Save