Browse Source

recode some code

3lead_uart_test_ok_version
zhaohe 1 year ago
parent
commit
691b207f1f
  1. 14
      README.md
  2. 174
      app/app.uvoptx
  3. 20
      app/app.uvprojx
  4. 0
      app/src/basic/heart_rate_sensor.c
  5. 55
      app/src/basic/heart_rate_sensor_protocol.h
  6. 2
      app/src/basic/ssd1306/wave_drawer.c
  7. 26
      app/src/one_conduction/app_event.h
  8. 0
      app/src/one_conduction/ble_cmd_process_service.c
  9. 5
      app/src/one_conduction/ble_cmd_process_service.h
  10. 15
      app/src/one_conduction/device_state.c
  11. 71
      app/src/one_conduction/device_state.h
  12. 297
      app/src/one_conduction/one_conduction_main.c

14
README.md

@ -220,4 +220,18 @@ TODO:
1. eeprom的文件扇区信息没有存储,也就是说每次电池用没了之后,数据会丢失 1. eeprom的文件扇区信息没有存储,也就是说每次电池用没了之后,数据会丢失
2. 如果要实现不丢数据,需要在eeprom中存储文件扇区信息,同时由于扇区的大小大于256字节,所以需要优化eeprom的写入函数。 2. 如果要实现不丢数据,需要在eeprom中存储文件扇区信息,同时由于扇区的大小大于256字节,所以需要优化eeprom的写入函数。
单导蓝牙使用注意事项:
1. 蓝牙的广播的启停独立控制和设备开机关机逻辑分开
开启广播:开机时候,如果当前没有开启广播,则打开广播
关闭广播: 关机后30s内无连接关闭广播
断开连接后30s关闭广播
2. 蓝牙状态指示灯:
1. 蓝牙广播打开:指示灯闪烁
2. 蓝牙广播关闭:指示灯关闭
3. 采样时不支持电量上报
4. 采样时不支持记录查询相关指令
5. 不支持删除采样记录
``` ```

174
app/app.uvoptx

@ -595,6 +595,30 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\one_conduction\device_state.c</PathWithFileName>
<FilenameWithoutPath>device_state.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\one_conduction\ble_cmd_process_service.c</PathWithFileName>
<FilenameWithoutPath>ble_cmd_process_service.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@ -605,7 +629,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>2</GroupNumber> <GroupNumber>2</GroupNumber>
<FileNumber>20</FileNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -625,7 +649,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>21</FileNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -637,7 +661,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>22</FileNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -657,7 +681,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>23</FileNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -677,7 +701,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>24</FileNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -689,7 +713,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>25</FileNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -701,7 +725,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>26</FileNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -713,7 +737,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>27</FileNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -725,7 +749,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>28</FileNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -737,7 +761,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>29</FileNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -749,7 +773,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>30</FileNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -761,7 +785,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>31</FileNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -781,7 +805,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>32</FileNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -801,7 +825,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>33</FileNumber>
<FileNumber>35</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -813,7 +837,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>34</FileNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -825,7 +849,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>35</FileNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -837,7 +861,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>36</FileNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -849,7 +873,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>37</FileNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -861,7 +885,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>38</FileNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -873,7 +897,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>39</FileNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -885,7 +909,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>40</FileNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -897,7 +921,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>41</FileNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -909,7 +933,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>42</FileNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -921,7 +945,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>43</FileNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -933,7 +957,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>44</FileNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -945,7 +969,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>45</FileNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -957,7 +981,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>46</FileNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -969,7 +993,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>47</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -981,7 +1005,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>48</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -993,7 +1017,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1005,7 +1029,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1017,7 +1041,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1029,7 +1053,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1049,7 +1073,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1061,7 +1085,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1073,7 +1097,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1085,7 +1109,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1097,7 +1121,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1109,7 +1133,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1121,7 +1145,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1133,7 +1157,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1145,7 +1169,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1157,7 +1181,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1169,7 +1193,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1181,7 +1205,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1193,7 +1217,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1205,7 +1229,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1217,7 +1241,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1229,7 +1253,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1241,7 +1265,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1253,7 +1277,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1265,7 +1289,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1277,7 +1301,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1289,7 +1313,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1301,7 +1325,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1313,7 +1337,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1325,7 +1349,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1337,7 +1361,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1349,7 +1373,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1361,7 +1385,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1381,7 +1405,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1393,7 +1417,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1405,7 +1429,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1417,7 +1441,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1429,7 +1453,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>84</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1441,7 +1465,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>85</FileNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1461,7 +1485,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>86</FileNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1473,7 +1497,7 @@
</File> </File>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>87</FileNumber>
<FileNumber>89</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1485,7 +1509,7 @@
</File> </File>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>88</FileNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1505,7 +1529,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>89</FileNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1517,7 +1541,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>90</FileNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1529,7 +1553,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>91</FileNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1549,7 +1573,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>12</GroupNumber> <GroupNumber>12</GroupNumber>
<FileNumber>92</FileNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1569,7 +1593,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>13</GroupNumber> <GroupNumber>13</GroupNumber>
<FileNumber>93</FileNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1581,7 +1605,7 @@
</File> </File>
<File> <File>
<GroupNumber>13</GroupNumber> <GroupNumber>13</GroupNumber>
<FileNumber>94</FileNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>

20
app/app.uvprojx

@ -478,6 +478,16 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\src\one_conduction\heart_wave_sample_service.c</FilePath> <FilePath>.\src\one_conduction\heart_wave_sample_service.c</FilePath>
</File> </File>
<File>
<FileName>device_state.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\one_conduction\device_state.c</FilePath>
</File>
<File>
<FileName>ble_cmd_process_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\one_conduction\ble_cmd_process_service.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -4302,6 +4312,16 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\src\one_conduction\heart_wave_sample_service.c</FilePath> <FilePath>.\src\one_conduction\heart_wave_sample_service.c</FilePath>
</File> </File>
<File>
<FileName>device_state.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\one_conduction\device_state.c</FilePath>
</File>
<File>
<FileName>ble_cmd_process_service.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\one_conduction\ble_cmd_process_service.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>

0
app/src/basic/heart_rate_sensor.c

55
app/src/basic/heart_rate_sensor_protocol.h

@ -0,0 +1,55 @@
#pragma once
#include <stdint.h>
#pragma pack(push, 1)
typedef struct {
uint8_t frame_type;
uint8_t frame_index;
uint8_t cmd;
uint8_t data[];
} ify_hrs_packet_t;
typedef enum {
kifyhrs_ecode_success = 0,
kifyhrs_ecode_unkown_error = 1,
kifyhrs_ecode_cmd_not_support = 2,
kifyhrs_ecode_illegal_parameter = 3,
kifyhrs_ecode_device_busy = 4,
kifyhrs_ecode_hardware_error = 5,
kifyhrs_ecode_sensor_drop = 6,
} ify_hrs_error_code_t;
typedef enum {
kifyhrs_pt_cmd = 0,
kifyhrs_pt_cmd_receipt = 1,
kifyhrs_pt_report = 2,
kifyhrs_pt_error_receipt = 3,
} ify_hrs_packet_type_t;
typedef enum {
kifyhrs_sensor_pos_none = 0, // ÎÞÖ¸¨Î»ÖÃ
kifyhrs_sensor_pos_I = 1, // I
kifyhrs_sensor_pos_II = 2, // II
kifyhrs_sensor_pos_III = 3, // III
kifyhrs_sensor_pos_V1 = 4, // V1
kifyhrs_sensor_pos_V5 = 5, // V5
} ify_hrs_sensor_pos_t;
typedef enum {
ify_hrs_cmd_read_device_version = 1,
ify_hrs_cmd_read_sensor_info = 2,
ify_hrs_cmd_read_device_state = 3,
ify_hrs_cmd_read_time = 4,
ify_hrs_cmd_sync_time = 5,
ify_hrs_cmd_start_capture = 6,
ify_hrs_cmd_stop_capture = 7,
ify_hrs_cmd_start_realtime_report = 8,
ify_hrs_cmd_stop_realtime_report = 9,
ify_hrs_cmd_read_records_info = 10,
ify_hrs_cmd_del_record = 11,
} ify_hrs_cmd_t;
#pragma pack(pop)

2
app/src/basic/ssd1306/wave_drawer.c

@ -75,7 +75,7 @@ void wave_drawer_draw_next_point(wave_drawer_t *dw, uint8_t y) {
ssd1306_gram_write_point(ssd1306_handler(), xpos + 1, dw->ybottom - yoff, 0); ssd1306_gram_write_point(ssd1306_handler(), xpos + 1, dw->ybottom - yoff, 0);
} }
} }
for (uint8_t i = 2; i < 2 + 20; i++) {
for (uint8_t i = 2; i < 2 + 5; i++) {
if (xpos + i <= dw->xright) { if (xpos + i <= dw->xright) {
ssd1306_gram_write_point(ssd1306_handler(), xpos + i, dw->ybottom - yoff, 0); ssd1306_gram_write_point(ssd1306_handler(), xpos + i, dw->ybottom - yoff, 0);
} }

26
app/src/one_conduction/app_event.h

@ -1,25 +1 @@
#pragma once
#include <stdint.h>
typedef enum {
kplod_connected_event = 0, //
kplod_disconnected_event, //
kplod_connecting_event, //
kplod_start_charge_event, //
kplod_charging_event, //
kplod_end_charge_event, //
kevent_tmr_scheduler_event, //
kevent_capture_data_event, //
} app_event_type_t;
typedef struct {
app_event_type_t eventType;
union {
uint32_t plod_connected_accumulation_time; //
uint8_t* capture_data_cache; // 256
} val;
} app_event_t;
void app_event_process_cb(void* p_event_data, uint16_t event_size);
#include "device_state.h"

0
app/src/one_conduction/ble_cmd_process_service.c

5
app/src/one_conduction/ble_cmd_process_service.h

@ -0,0 +1,5 @@
#pragma once
#include "basic/heart_rate_sensor_protocol.h"
#include "device_state.h"

15
app/src/one_conduction/device_state.c

@ -0,0 +1,15 @@
#include "device_state.h"
#include "znordic.h"
static device_state_t m_device_state = kdevice_state_standby; //
static uint32_t m_change_to_cur_state_tp = 0; //
void ds_change_to_state(device_state_t state) {
ZLOGI("change state from %s to %s", device_state_to_str(m_device_state), device_state_to_str(state));
m_device_state = 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; }

71
app/src/one_conduction/device_state.h

@ -0,0 +1,71 @@
#pragma once
#include <stdint.h>
typedef enum {
kplod_connected_event = 0, //
kplod_disconnected_event, //
kplod_connecting_event, //
kplod_start_charge_event, //
kplod_charging_event, //
kplod_end_charge_event, //
kevent_tmr_scheduler_event, //
kevent_capture_data_event, //
} app_event_type_t;
typedef struct {
app_event_type_t eventType;
union {
uint32_t plod_connected_accumulation_time; //
uint8_t* capture_data_cache; // 256
} val;
} app_event_t;
typedef enum {
//
kdevice_state_standby = 0,
//
kdevice_state_poweron,
//
kdevice_state_home,
//
kdevice_state_keep_still,
//
kdevice_state_sampling,
//
kdevice_state_sampling_complete,
//
kdevice_state_sampling_error,
//
kdevice_state_charging,
} device_state_t;
static const char* device_state_to_str(device_state_t ds) {
switch (ds) {
case kdevice_state_standby:
return "standby";
case kdevice_state_poweron:
return "poweron";
case kdevice_state_home:
return "home";
case kdevice_state_keep_still:
return "keep_still";
case kdevice_state_sampling:
return "sampling";
case kdevice_state_sampling_complete:
return "sampling_complete";
case kdevice_state_sampling_error:
return "sampling_error";
case kdevice_state_charging:
return "charging";
default:
return "unknow";
}
}
void app_event_process_cb(void* p_event_data, uint16_t event_size);
void ds_change_to_state(device_state_t state);
uint32_t ds_cur_state_haspassed_ms();
device_state_t ds_now_state();

297
app/src/one_conduction/one_conduction_main.c

@ -9,52 +9,6 @@
#include "one_conduction_board.h" #include "one_conduction_board.h"
#include "sample_data_manager.h" #include "sample_data_manager.h"
#include "znordic.h" #include "znordic.h"
#if 1
typedef enum {
//
kdevice_state_standby = 0,
//
kdevice_state_poweron,
//
kdevice_state_home,
//
kdevice_state_keep_still,
//
kdevice_state_sampling,
//
// kdevice_state_sampling_end,
//
// kdevice_state_storing,
//
kdevice_state_sampling_complete,
//
kdevice_state_sampling_error,
//
kdevice_state_charging,
} device_state_t;
static const char* device_state_to_str(device_state_t ds) {
switch (ds) {
case kdevice_state_standby:
return "standby";
case kdevice_state_poweron:
return "poweron";
case kdevice_state_home:
return "home";
case kdevice_state_keep_still:
return "keep_still";
case kdevice_state_sampling:
return "sampling";
case kdevice_state_sampling_complete:
return "sampling_complete";
case kdevice_state_sampling_error:
return "sampling_error";
case kdevice_state_charging:
return "charging";
default:
return "unknow";
}
}
/******************************************************************************* /*******************************************************************************
* GLOBAL * * GLOBAL *
@ -64,9 +18,8 @@ ZDATACHANNEL_DEF(m_zhrs, 2 /*
APP_TIMER_DEF(m_state_machine_driver_tmr); // APP_TIMER_DEF(m_state_machine_driver_tmr); //
APP_TIMER_DEF(m_plod_state_event_detect_tmr); // APP_TIMER_DEF(m_plod_state_event_detect_tmr); //
APP_TIMER_DEF(m_charge_event_detect_tmr); // APP_TIMER_DEF(m_charge_event_detect_tmr); //
extern uint32_t g_nrf_log_tx_pin;
static device_state_t m_device_state = kdevice_state_standby; //
static uint32_t m_change_to_cur_state_tp = 0; //
extern uint32_t g_nrf_log_tx_pin;
static int m_cur_fd; static int m_cur_fd;
static sample_data_filename_t sampledata_file_name; static sample_data_filename_t sampledata_file_name;
@ -83,8 +36,6 @@ static sample_data_filename_t sampledata_file_name;
*******************************************************************************/ *******************************************************************************/
// //
static uint32_t m_plod_state_disconnect_timepoint = 0;
static uint32_t m_plod_state_connect_timepoint = 0;
static bool m_plod_state_connected_state = false; static bool m_plod_state_connected_state = false;
static uint32_t m_connecte_state_last_trigger_timepoint = 0; static uint32_t m_connecte_state_last_trigger_timepoint = 0;
@ -107,15 +58,13 @@ static void m_plod_state_event_detect_tmr_cb(void* p_context) { //
if (connecte_state_trigger_cnt == 15) { if (connecte_state_trigger_cnt == 15) {
// //
appevent.eventType = kplod_connected_event;
m_plod_state_connect_timepoint = znordic_getpower_on_ms();
m_plod_state_connected_state = true;
appevent.eventType = kplod_connected_event;
m_plod_state_connected_state = true;
app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb);
} else if (connecte_state_trigger_cnt_last_val >= 5 && connecte_state_trigger_cnt == 0) { } else if (connecte_state_trigger_cnt_last_val >= 5 && connecte_state_trigger_cnt == 0) {
// //
appevent.eventType = kplod_disconnected_event;
m_plod_state_connected_state = false;
m_plod_state_disconnect_timepoint = znordic_getpower_on_ms();
appevent.eventType = kplod_disconnected_event;
m_plod_state_connected_state = false;
app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb);
} else if (connecte_state_trigger_cnt >= 10 && connecte_state_trigger_cnt % 10 == 0) { } else if (connecte_state_trigger_cnt >= 10 && connecte_state_trigger_cnt % 10 == 0) {
// //
@ -156,16 +105,8 @@ static void state_machine_driver_tmr_cb(void* p_context) { //
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
static void state_machine_change_to_state(device_state_t state) {
ZLOGI("change state from %s to %s", device_state_to_str(m_device_state), device_state_to_str(state));
m_device_state = state;
m_change_to_cur_state_tp = znordic_getpower_on_ms();
}
static uint32_t cur_state_haspassed_ms() { return znordic_haspassed_ms(m_change_to_cur_state_tp); }
static bool m_poweronflag;
static void power_on() {
static bool m_poweronflag;
static void power_on() {
if (m_poweronflag) { if (m_poweronflag) {
return; return;
} }
@ -177,7 +118,7 @@ static void power_on() {
hwss_init(); hwss_init();
sample_data_mgr_init(); sample_data_mgr_init();
dsp_mgr_init(); dsp_mgr_init();
zble_module_start_adv();
// zble_module_start_adv();
m_poweronflag = true; m_poweronflag = true;
ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(100), NULL)); // 200HZ采样 ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(100), NULL)); // 200HZ采样
@ -192,7 +133,7 @@ static void power_off() {
SingleLeadECG_led_deinit(); SingleLeadECG_led_deinit();
SingleLeadECG_beep_deinit(); SingleLeadECG_beep_deinit();
SingleLeadECG_adc_module_deinit(); SingleLeadECG_adc_module_deinit();
zble_module_stop_adv();
// zble_module_stop_adv();
ZERROR_CHECK(app_timer_stop(m_state_machine_driver_tmr)); ZERROR_CHECK(app_timer_stop(m_state_machine_driver_tmr));
} }
/******************************************************************************* /*******************************************************************************
@ -202,16 +143,16 @@ static void power_off() {
* @brief * @brief
*/ */
static void state_machine__change_to_charging_state() { // static void state_machine__change_to_charging_state() { //
if (m_device_state == kdevice_state_home) {
if (ds_now_state() == kdevice_state_home) {
// DO Nothing // DO Nothing
} else if (m_device_state == kdevice_state_standby) {
} else if (ds_now_state() == kdevice_state_standby) {
power_on(); power_on();
} else { } else {
ZASSERT(false); ZASSERT(false);
} }
// //
dsp_mgr_change_to_chargingPage(); dsp_mgr_change_to_chargingPage();
state_machine_change_to_state(kdevice_state_charging);
ds_change_to_state(kdevice_state_charging);
} }
/** /**
@ -221,7 +162,7 @@ static void state_machine__change_to_charging_state() { //
static void state_machine__change_to_standby_state() { static void state_machine__change_to_standby_state() {
ZLOGI_BLOCK("change to standby"); ZLOGI_BLOCK("change to standby");
power_off(); power_off();
state_machine_change_to_state(kdevice_state_standby);
ds_change_to_state(kdevice_state_standby);
} }
/** /**
@ -230,21 +171,21 @@ static void state_machine__change_to_standby_state() {
static void state_machine__change_to_poweroning_state() { static void state_machine__change_to_poweroning_state() {
power_on(); power_on();
dsp_mgr_change_to_welcome(); dsp_mgr_change_to_welcome();
state_machine_change_to_state(kdevice_state_poweron);
ds_change_to_state(kdevice_state_poweron);
} }
/** /**
* @brief * @brief
*/ */
static void state_machine__change_to_home_state() { static void state_machine__change_to_home_state() {
state_machine_change_to_state(kdevice_state_home);
ds_change_to_state(kdevice_state_home);
dsp_mgr_change_to_main(); dsp_mgr_change_to_main();
} }
void app_event_process_cb(void* p_event_data, uint16_t event_size) { void app_event_process_cb(void* p_event_data, uint16_t event_size) {
if (!p_event_data) return; if (!p_event_data) return;
app_event_t* p_event = (app_event_t*)p_event_data; app_event_t* p_event = (app_event_t*)p_event_data;
if (m_device_state == kdevice_state_standby) {
if (ds_now_state() == kdevice_state_standby) {
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
@ -258,46 +199,46 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) {
state_machine__change_to_poweroning_state(); state_machine__change_to_poweroning_state();
} }
} else if (m_device_state == kdevice_state_charging) {
} else if (ds_now_state() == kdevice_state_charging) {
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
if (!SingleLeadECG_battery_charge_get_state()) { if (!SingleLeadECG_battery_charge_get_state()) {
state_machine__change_to_standby_state(); state_machine__change_to_standby_state();
} }
} else if (m_device_state == kdevice_state_poweron) {
} else if (ds_now_state() == kdevice_state_poweron) {
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
if (cur_state_haspassed_ms() >= 1500) {
if (ds_cur_state_haspassed_ms() >= 1500) {
state_machine__change_to_home_state(); state_machine__change_to_home_state();
} }
} else if (m_device_state == kdevice_state_home) {
} else if (ds_now_state() == kdevice_state_home) {
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
// //
if (!m_plod_state_connected_state && plod_state_has_disconnected_ms() >= 3000 && cur_state_haspassed_ms() >= 3000) {
if (!plod_state_is_connected() && plod_state_has_disconnected_ms() >= 3000 && ds_cur_state_haspassed_ms() >= 3000) {
state_machine__change_to_standby_state(); state_machine__change_to_standby_state();
} }
// //
else if (m_plod_state_connected_state && cur_state_haspassed_ms() > 1500) {
else if (plod_state_is_connected() && ds_cur_state_haspassed_ms() > 1500) {
// dsp_mgr_change_to_preparePage // dsp_mgr_change_to_preparePage
state_machine_change_to_state(kdevice_state_keep_still);
ds_change_to_state(kdevice_state_keep_still);
dsp_mgr_change_to_preparePage(); dsp_mgr_change_to_preparePage();
} }
} else if (m_device_state == kdevice_state_keep_still) {
} else if (ds_now_state() == kdevice_state_keep_still) {
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
if (!m_plod_state_connected_state) {
if (!plod_state_is_connected()) {
// //
state_machine__change_to_home_state(); state_machine__change_to_home_state();
} else { } else {
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
if (cur_state_haspassed_ms() >= (500 * 5)) {
if (ds_cur_state_haspassed_ms() >= (500 * 5)) {
/** /**
* @brief 2500ms后 * @brief 2500ms后
* *
@ -305,7 +246,7 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) {
* 2. * 2.
* 3. * 3.
*/ */
state_machine_change_to_state(kdevice_state_sampling);
ds_change_to_state(kdevice_state_sampling);
dsp_mgr_change_to_sampling(0, 0); dsp_mgr_change_to_sampling(0, 0);
hwss_start_capture(); hwss_start_capture();
static ztm_t tm; static ztm_t tm;
@ -320,25 +261,25 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) {
sampledata_file_name.sec = tm.tm_sec; sampledata_file_name.sec = tm.tm_sec;
m_cur_fd = sample_data_mgr_open(&sampledata_file_name, kwrflag_write_only); m_cur_fd = sample_data_mgr_open(&sampledata_file_name, kwrflag_write_only);
} else if (cur_state_haspassed_ms() >= (500 * 4)) {
} else if (ds_cur_state_haspassed_ms() >= (500 * 4)) {
if (dsp_mgr_preparePage_get_progress() != 4) { if (dsp_mgr_preparePage_get_progress() != 4) {
dsp_mgr_preparePage_set_progress(4); dsp_mgr_preparePage_set_progress(4);
} }
} else if (cur_state_haspassed_ms() >= (500 * 3)) {
} else if (ds_cur_state_haspassed_ms() >= (500 * 3)) {
if (dsp_mgr_preparePage_get_progress() != 3) { if (dsp_mgr_preparePage_get_progress() != 3) {
dsp_mgr_preparePage_set_progress(3); dsp_mgr_preparePage_set_progress(3);
} }
} else if (cur_state_haspassed_ms() >= (500 * 2)) {
} else if (ds_cur_state_haspassed_ms() >= (500 * 2)) {
if (dsp_mgr_preparePage_get_progress() != 2) { if (dsp_mgr_preparePage_get_progress() != 2) {
dsp_mgr_preparePage_set_progress(2); dsp_mgr_preparePage_set_progress(2);
} }
} else if (cur_state_haspassed_ms() >= (500 * 1)) {
} else if (ds_cur_state_haspassed_ms() >= (500 * 1)) {
if (dsp_mgr_preparePage_get_progress() != 1) { if (dsp_mgr_preparePage_get_progress() != 1) {
dsp_mgr_preparePage_set_progress(1); dsp_mgr_preparePage_set_progress(1);
} }
} }
} }
} else if (m_device_state == kdevice_state_sampling) {
} else if (ds_now_state() == kdevice_state_sampling) {
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
@ -353,7 +294,7 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) {
* ---> * --->
*/ */
bool always_capture = true;
bool always_capture = false;
if (p_event->eventType == kevent_capture_data_event) { if (p_event->eventType == kevent_capture_data_event) {
if (hwss_has_captured_time_ms() <= (MAX_STORAGE_TIMEOUT_S * 1000)) { if (hwss_has_captured_time_ms() <= (MAX_STORAGE_TIMEOUT_S * 1000)) {
// ZLOGI("storage data 256 [%d]ms", hwss_has_captured_time_ms()); // ZLOGI("storage data 256 [%d]ms", hwss_has_captured_time_ms());
@ -365,7 +306,7 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) {
*******************************************************************************/ *******************************************************************************/
if (!always_capture) { if (!always_capture) {
sample_data_mgr_close(m_cur_fd); sample_data_mgr_close(m_cur_fd);
state_machine_change_to_state(kdevice_state_sampling_complete);
ds_change_to_state(kdevice_state_sampling_complete);
hwss_stop_capture(); hwss_stop_capture();
} }
} }
@ -379,7 +320,7 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) {
sample_data_mgr_close(m_cur_fd); sample_data_mgr_close(m_cur_fd);
sample_data_mgr_delete_file(&sampledata_file_name); sample_data_mgr_delete_file(&sampledata_file_name);
dsp_mgr_change_to_samplingError(); dsp_mgr_change_to_samplingError();
state_machine_change_to_state(kdevice_state_sampling_error);
ds_change_to_state(kdevice_state_sampling_error);
hwss_stop_capture(); hwss_stop_capture();
} }
} else { } else {
@ -390,44 +331,22 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) {
if (!always_capture) { if (!always_capture) {
sample_data_mgr_close(m_cur_fd); sample_data_mgr_close(m_cur_fd);
dsp_mgr_change_to_sampleSuc(); dsp_mgr_change_to_sampleSuc();
state_machine_change_to_state(kdevice_state_sampling_complete);
ds_change_to_state(kdevice_state_sampling_complete);
hwss_stop_capture(); hwss_stop_capture();
} }
} }
} }
} else if (m_device_state == kdevice_state_sampling_complete) {
if (cur_state_haspassed_ms() >= 2000) {
ZLOGI("cur_state_haspassed_ms() %d> 2000", cur_state_haspassed_ms());
} else if (ds_now_state() == kdevice_state_sampling_complete) {
if (ds_cur_state_haspassed_ms() >= 2000) {
ZLOGI("ds_cur_state_haspassed_ms() %d> 2000", ds_cur_state_haspassed_ms());
state_machine__change_to_home_state(); state_machine__change_to_home_state();
} }
} else if (m_device_state == kdevice_state_sampling_error) {
if ((cur_state_haspassed_ms() >= 2000) || (cur_state_haspassed_ms() >= 1000 && m_plod_state_connected_state)) {
ZLOGI("cur_state_haspassed_ms() %d> 2000", cur_state_haspassed_ms());
} else if (ds_now_state() == kdevice_state_sampling_error) {
if ((ds_cur_state_haspassed_ms() >= 2000) || (ds_cur_state_haspassed_ms() >= 1000 && m_plod_state_connected_state)) {
ZLOGI("ds_cur_state_haspassed_ms() %d> 2000", ds_cur_state_haspassed_ms());
state_machine__change_to_home_state(); state_machine__change_to_home_state();
} }
} }
#if 0
if (p_event->eventType == kplod_connected_event) {
ZLOGI("plod connected");
} else if (p_event->eventType == kplod_disconnected_event) {
ZLOGI("plod disconnected");
} else if (p_event->eventType == kplod_connecting_event) {
ZLOGI("plod connecting %d", p_event->val.plod_connected_accumulation_time);
}
if (p_event->eventType == kplod_start_charge_event) {
/**
* @brief
*/
if (m_device_state == kdevice_state_standby || m_device_state == kdevice_state_home) {
state_machine__change_to_charging_state();
}
} else if (p_event->eventType == kplod_end_charge_event) {
ZLOGI("end charge");
}
#endif
} }
/** /**
@ -452,7 +371,6 @@ void on_service_init(void) {
zdatachannle_init.data_handler = zdatachannel_data_handler; zdatachannle_init.data_handler = zdatachannel_data_handler;
ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init)); ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init));
} }
#if 1
void one_conduction_main() { void one_conduction_main() {
APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, 20); APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, 20);
g_nrf_log_tx_pin = 41; g_nrf_log_tx_pin = 41;
@ -469,10 +387,7 @@ void one_conduction_main() {
}; };
zble_module_init(&cfg); zble_module_init(&cfg);
hwss_init(); hwss_init();
// power_on();
// hwss_start_capture();
#if 1
SingleLeadECG_ecg_io_init(); SingleLeadECG_ecg_io_init();
SingleLeadECG_battery_charge_detect_io_init(); SingleLeadECG_battery_charge_detect_io_init();
ZERROR_CHECK(app_timer_create(&m_state_machine_driver_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb)); ZERROR_CHECK(app_timer_create(&m_state_machine_driver_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb));
@ -481,131 +396,5 @@ void one_conduction_main() {
ZERROR_CHECK(app_timer_start(m_plod_state_event_detect_tmr, APP_TIMER_TICKS(30), NULL)); ZERROR_CHECK(app_timer_start(m_plod_state_event_detect_tmr, APP_TIMER_TICKS(30), NULL));
ZERROR_CHECK(app_timer_start(m_charge_event_detect_tmr, APP_TIMER_TICKS(100), NULL)); ZERROR_CHECK(app_timer_start(m_charge_event_detect_tmr, APP_TIMER_TICKS(100), NULL));
#endif
znordic_loop();
}
#else
void one_conduction_main() {
APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, 20);
g_nrf_log_tx_pin = 41;
znordic_init();
static zble_module_cfg_t cfg = //
{
.deviceName = BLE_NAME,
.on_service_init = on_service_init,
};
zble_module_init(&cfg);
hwss_init();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
// SingleLeadECG_ecg_init();
// SingleLeadECG_adc_module_init();
SingleLeadECG_beep_init();
SingleLeadECG_led_init();
SingleLeadECG_ecg_init();
SingleLeadECG_battery_init();
// hwss_init();
// sample_data_mgr_init();
// dsp_mgr_init();
// zble_module_start_adv();
hwss_start_capture();
znordic_loop();
}
#endif
// ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(5), NULL));
// zble_module_start_adv();
// dsp_mgr_init();
// dsp_mgr_poweron();
// dsp_mgr_change_to_sampling();
#else
#include <stdarg.h>
#if defined(UART_PRESENT)
#include "nrf_uart.h"
#endif
#if defined(UARTE_PRESENT)
#include "nrf_uarte.h"
#endif
#define UART_TX_BUF_SIZE 256 /**< UART TX buffer size. */
#define UART_RX_BUF_SIZE 256 /**< UART RX buffer size. */
uint32_t err_code;
app_uart_comm_params_t const comm_params = //
{
.rx_pin_no = UART_PIN_DISCONNECTED,
.tx_pin_no = 41,
.rts_pin_no = UART_PIN_DISCONNECTED,
.cts_pin_no = UART_PIN_DISCONNECTED,
.flow_control = APP_UART_FLOW_CONTROL_DISABLED,
.use_parity = false,
.baud_rate = NRF_UARTE_BAUDRATE_921600,
};
void uart_error_handle(app_uart_evt_t* p_event) {}
void uartinit() {
APP_UART_FIFO_INIT(&comm_params, UART_RX_BUF_SIZE, UART_TX_BUF_SIZE, uart_error_handle, APP_IRQ_PRIORITY_LOWEST, err_code);
APP_ERROR_CHECK(err_code);
}
void zchip_log(const char* fmt, ...) {
static char tx[256] = {0};
va_list args;
va_start(args, fmt);
vsprintf(tx, fmt, args);
for (size_t i = 0; i < strlen(tx); i++) {
app_uart_put(tx[i]);
}
va_end(args);
}
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
// SingleLeadECG_ecg_nlod_get_connected_state();
// SingleLeadECG_ecg_plod_get_connected_state();
// SingleLeadECG_ecg_plod_get_ecg_val();
// ZLOGI("%d nlod %d plod %d ecg:%d", data, SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
// ZLOGI("%d,%d,%d", SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
// zchip_log("%d,%d,%d\n", SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
ZLOGI("%d,%d,%d", SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
// app_uart_put('c');
// app_uart_put('c');
// app_uart_put('c');
// app_uart_put('c');
// app_uart_put('c');
// NRF_LOG_INFO("......");
}
void app_event_process_cb(void* p_event_data, uint16_t event_size) {}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void one_conduction_main() {
g_nrf_log_tx_pin = 41;
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
SingleLeadECG_adc_module_init();
hwss_init();
// uartinit();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
SingleLeadECG_ecg_init();
hwss_start_capture();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
// ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(5), NULL));
znordic_loop(); znordic_loop();
} }
#endif
Loading…
Cancel
Save