annotate Discovery/Inc/cv_heartbeat.h @ 1046:1d7c7a36df15 GasConsumption

Bugfix OSTC5 BT and enabling fast mode: The OSTC5 BT was operating at default speed of 115200. To enable the faster communication some init steps have been added to set speed to 460800. Having the UART enabled while the module was shut down caused problems during initialisation. To avoid these the BT UART is now initialized after the the module is powered on and deinitialized while the module is switched off.
author Ideenmodellierer
date Fri, 14 Nov 2025 18:54:20 +0100
parents 195bfbdf961d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
2 /// -*- coding: UTF-8 -*-
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
3 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
4 /// \file Discovery/Inc/cv_heartbeat.h
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
5 /// \brief Function definitions for connecting to a Polar HC10 heartbeat sensor
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
6 /// \date 3 July 2025
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
7
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
8 ///////////////////////////////////////////////////////////////////////////////
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
9 /// \par Copyright (c) 2014-2015 Heinrichs Weikamp gmbh
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
10 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
11 /// This program is free software: you can redistribute it and/or modify
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
12 /// it under the terms of the GNU General Public License as published by
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
13 /// the Free Software Foundation, either version 3 of the License, or
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
14 /// (at your option) any later version.
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
15 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
16 /// This program is distributed in the hope that it will be useful,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
17 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
18 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
19 /// GNU General Public License for more details.
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
20 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
21 /// You should have received a copy of the GNU General Public License
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
22 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
23 //////////////////////////////////////////////////////////////////////////////
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
24
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
25 #ifndef INC_CV_HEARTBEAT_H_
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
26 #define INC_CV_HEARTBEAT_H_
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
27
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
28 #include <stdint.h>
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
29
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
30
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
31 #define BLUEMOD_ADDR_SIZE (20u) /* length of address respond */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
32 #define BLUEMOD_RSSI_SIZE (5u)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
33 #define BLUEMOD_NAME_SIZE (40u)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
34
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
35 void openEdit_Heartbeat(void);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
36
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
37 typedef enum
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
38 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
39 NO_INDICATOR = 0,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
40 DEVICE_INDICATOR,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
41 CONNECTION_INDICATOR,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
42 SERVICE_INDICATOR,
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
43 CHARACTERISTIC_INDICATOR,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
44 DESCRIPTOR_INDICATOR,
1034
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
45 PULSE_INDICATOR,
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
46 OK_INDICATOR, /* module control */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
47 ERROR_INDICATOR /* module control */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
48 } indicatior_t;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
49
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
50 typedef enum
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
51 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
52 BT_READ_NOTHING = 0,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
53 BT_READ_DEVICE_ADDR,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
54 BT_READ_DEVICE_RSSI,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
55 BT_READ_DEVICE_NAME,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
56 BT_READ_CON_DETAILS,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
57 BT_READ_SERV_HANDLE,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
58 BT_READ_SERV_START,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
59 BT_READ_SERV_END,
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
60 BT_READ_SERV_UUID,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
61 BT_READ_CHAR_CONHANDLE,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
62 BT_READ_CHAR_ATTRIBUTE,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
63 BT_READ_CHAR_PROPERTY,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
64 BT_READ_CHAR_VALUEHANDLE,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
65 BT_READ_CHAR_UUID,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
66 BT_READ_DESC_CONHANDLE,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
67 BT_READ_DESC_CHARHANDLE,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
68 BT_READ_DESC_DESCHANDLE,
1034
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
69 BT_READ_DESC_UUID,
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
70 BT_READ_PULSE_CONHANDLE,
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
71 BT_READ_PULSE_VALUEHANDLE,
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
72 BT_READ_PULSE_DATA,
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
73 } readDataType_t;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
74
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
75 typedef enum
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
76 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
77 SENSOR_HB_OFFLINE = 0, /* Default Status no data available */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
78 SENSOR_HB_ENABLE_BLE,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
79 SENSOR_HB_CHECK_CONFIG,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
80 SENSOR_HB_DISCOVER,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
81 SENSOR_HB_CONNECT,
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
82 SENSOR_HB_DISCONNECT,
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
83 SENSOR_HB_SERVICES,
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
84 SENSOR_HB_CHARACTERISTIC,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
85 SENSOR_HB_DESCRIPTOR,
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
86 SENSOR_HB_SUBSCRIBE,
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
87 SENSOR_HB_RESTART,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
88 SENSOR_HB_DETECTION_INDICATOR, /* searching for indicators to identify data items */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
89 SENSOR_HB_DETECTION_RSSI,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
90 SENSOR_HB_DETECTION_NAME,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
91 SENSOR_HB_DETECTION_MAN,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
92 SENSOR_HB_DETECTION_UUID,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
93 SENSOR_HB_FOUND, /* A device providing the requested service was found */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
94 SENSOR_HB_CONNECTED, /* Connection to heartbeat sensor established */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
95 SENSOR_HB_OFFLINEMODE, /* Oflline measurement started */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
96 } sensorHeartbeat_State_t;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
97
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
98 typedef struct
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
99 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
100 uint8_t address[BLUEMOD_ADDR_SIZE];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
101 uint8_t rssi[BLUEMOD_RSSI_SIZE];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
102 uint8_t name[BLUEMOD_NAME_SIZE];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
103 } btDdeviceData_t;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
104
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
105
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
106 typedef struct
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
107 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
108 uint8_t handle;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
109 uint8_t start[6];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
110 uint8_t end[6];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
111 uint8_t uuid[50];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
112 } btDeviceService_t;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
113
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
114 typedef struct
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
115 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
116 uint8_t conHandle;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
117 uint8_t attrHandle[10];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
118 uint8_t properties[10];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
119 uint8_t valueHandle[10];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
120 uint8_t uuid[50];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
121 } btDeviceCharacteristic_t;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
122
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
123 typedef struct
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
124 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
125 uint8_t conHandle;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
126 uint8_t charHandle[10];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
127 uint8_t descHandle[10];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
128 uint8_t uuid[50];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
129 } btDeviceDescriptor_t;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
130
1034
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
131 typedef struct {
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
132 uint16_t heart_rate;
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
133 uint16_t energy_expended;
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
134 uint16_t rr_intervals[10];
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
135 uint8_t rr_count;
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
136 } HRMeasurement_t;
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1033
diff changeset
137
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
138 sensorHeartbeat_State_t cv_heartbeat_getState();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
139 void refresh_Heartbeat(void);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
140 void cv_heartbeat_Control(void);
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
141 uint8_t cv_heartbeat_HandleData();
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
142
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
143 #endif /* INC_CV_HEARTBEAT_H_ */