annotate Discovery/Src/cv_heartbeat.c @ 1033:5f66e44d69f0 Puls_Integration

Added functionality needed for subscription of standard Bluetooth pulse service notifications
author Ideenmodellierer
date Sat, 02 Aug 2025 22:42:51 +0200
parents 33b91584d827
children 195bfbdf961d
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/Src/cv_heartbeat.c
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
5 /// \brief providing functionality to connect OSTC to a Polar HC10 heartbeat sensor
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
6 /// \author heinrichs weikamp gmbh
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
7 /// \date 03-July-2025
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
8 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
9 /// $Id$
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
10 ///////////////////////////////////////////////////////////////////////////////
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
11 /// \par Copyright (c) 2014-2025 Heinrichs Weikamp gmbh
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
12 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
13 /// This program is free software: you can redistribute it and/or modify
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
14 /// it under the terms of the GNU General Public License as published by
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
15 /// the Free Software Foundation, either version 3 of the License, or
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
16 /// (at your option) any later version.
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
17 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
18 /// This program is distributed in the hope that it will be useful,
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
21 /// GNU General Public License for more details.
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
22 ///
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
23 /// You should have received a copy of the GNU General Public License
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
25 //////////////////////////////////////////////////////////////////////////////
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
26
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
27 #include "cv_heartbeat.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
28 #include "tMenuEdit.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
29
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
30 #include "gfx_fonts.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
31 #include "tHome.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
32 #include "ostc.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
33 #include "tComm.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
34 #include "tInfoLogger.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
35
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
36 static sensorHeartbeat_State_t heartbeatState = SENSOR_HB_OFFLINE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
37
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
38 static uint8_t OnAction_Heartbeat(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
39 static uint32_t startDetection_ms;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
40
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
41 #define MAX_BT_DEVICE 10 /* max number of device which may be handled */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
42 static btDdeviceData_t btDeviceList[MAX_BT_DEVICE];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
43 static btDeviceService_t curDeviceService[10];
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
44 static btDeviceCharacteristic_t curDevCharacteristic[10];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
45 static btDeviceDescriptor_t curDevDescriptor;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
46
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
47
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
48 static uint8_t curCharacteristicIndex = 0;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
49 static uint8_t curServiceIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
50 static uint8_t curBtIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
51 static uint8_t connHandle = ' ';
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
52 static uint8_t evaluateDevIndex = 0xFF;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
53 static uint8_t evaluateSrvIndex = 0xFF;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
54 static uint8_t evaluateCharIndex = 0xFF;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
55 static uint8_t evaluateDescIndex = 0xFF;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
56
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
57 static indicatior_t checkIndicators(uint8_t* pdata)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
58 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
59 indicatior_t ret = NO_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
60
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
61 if(strcmp((char*)pdata,"+UBTD:") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
62 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
63 ret = DEVICE_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
64 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
65 else if(strcmp((char*)pdata,"+UUBTACLC:") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
66 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
67 ret = CONNECTION_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
68 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
69 else if(strcmp((char*)pdata,"+UBTGDP:") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
70 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
71 ret = SERVICE_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
72 }
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
73 else if(strcmp((char*)pdata,"+UBTGDCS:") == 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
74 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
75 ret = CHARACTERISTIC_INDICATOR;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
76 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
77 else if(strcmp((char*)pdata,"+UBTGDCD:") == 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
78 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
79 ret = DESCRIPTOR_INDICATOR;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
80 }
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
81
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
82 return ret;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
83 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
84
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
85 static void handleOK()
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
86 {
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
87 uint8_t index = 0;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
88
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
89 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
90 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
91 case SENSOR_HB_ENABLE_BLE: heartbeatState = SENSOR_HB_CHECK_CONFIG;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
92 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
93 case SENSOR_HB_CHECK_CONFIG: heartbeatState = SENSOR_HB_DISCOVER;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
94 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
95 case SENSOR_HB_RESTART: heartbeatState = SENSOR_HB_OFFLINE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
96 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
97 case SENSOR_HB_DISCOVER: if(curBtIndex > 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
98 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
99 heartbeatState = SENSOR_HB_CONNECT;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
100 evaluateDevIndex = 0;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
101 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
102 else
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
103 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
104 heartbeatState = SENSOR_HB_OFFLINE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
105 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
106
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
107 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
108 case SENSOR_HB_SERVICES: evaluateSrvIndex = 0xFF;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
109 if(curServiceIndex != 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
110 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
111 for(index = 0; index <= curServiceIndex; index++)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
112 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
113 if(strcmp((char*)curDeviceService[index].uuid,"180D") == 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
114 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
115 heartbeatState = SENSOR_HB_CHARACTERISTIC;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
116 evaluateSrvIndex = index;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
117 curCharacteristicIndex = 0;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
118 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
119 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
120 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
121 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
122 if(evaluateSrvIndex == 0xFF) /* device does not provide heartbeat data => disconnect */
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
123 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
124 heartbeatState = SENSOR_HB_DISCONNECT;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
125 }
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
126 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
127 case SENSOR_HB_CHARACTERISTIC: evaluateCharIndex = 0xFF;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
128 if(curCharacteristicIndex != 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
129 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
130 for(index = 0; index < curCharacteristicIndex; index++)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
131 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
132 if(strcmp((char*)curDevCharacteristic[index].uuid,"2A37") == 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
133 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
134 heartbeatState = SENSOR_HB_DESCRIPTOR;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
135 evaluateCharIndex = index;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
136 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
137 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
138 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
139 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
140 if(evaluateCharIndex == 0xFF) /* device does not provide heartbeat data => disconnect */
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
141 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
142 heartbeatState = SENSOR_HB_DISCONNECT;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
143 }
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
144 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
145 case SENSOR_HB_DESCRIPTOR: if(strcmp((char*)curDevDescriptor.uuid,"2902") == 0)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
146 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
147 heartbeatState = SENSOR_HB_SUBSCRIBE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
148 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
149 else
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
150 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
151 heartbeatState = SENSOR_HB_DISCONNECT;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
152 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
153 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
154 case SENSOR_HB_DISCONNECT: evaluateDevIndex++;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
155 connHandle= ' ';
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
156 if(evaluateDevIndex < curBtIndex) /* more devices to be evaluated? */
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
157 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
158 heartbeatState = SENSOR_HB_CONNECT;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
159 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
160 else
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
161 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
162 heartbeatState = SENSOR_HB_OFFLINE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
163 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
164 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
165 case SENSOR_HB_CONNECT: /* handled in data rx section */
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
166 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
167 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
168 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
169 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
170
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
171 static void handleERROR()
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
172 {
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
173 switch(heartbeatState)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
174 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
175 case SENSOR_HB_DISCONNECT: evaluateDevIndex++;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
176 connHandle= ' ';
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
177 if(evaluateDevIndex < curBtIndex) /* more devices to be evaluated? */
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
178 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
179 heartbeatState = SENSOR_HB_CONNECT;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
180 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
181 else
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
182 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
183 heartbeatState = SENSOR_HB_OFFLINE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
184 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
185 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
186 default:
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
187 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
188 }
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
189 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
190
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
191 uint8_t cv_heartbeat_HandleData()
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
192 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
193 static uint8_t firstDevice = 1;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
194 static uint8_t curLine[MAX_CHAR_PER_LINE]; /* holds complete line and is used for logging */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
195 static uint8_t curLineIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
196 static uint8_t parameter[40]; /* content of the parameter in read state */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
197 static uint8_t writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
198 static uint8_t complete = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
199
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
200 static readDataType_t readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
201
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
202 char text[40];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
203 uint8_t data = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
204 data = UART_getChar();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
205
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
206 while((data != 0) && (complete == 0))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
207 {
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
208 if(curLineIndex == MAX_CHAR_PER_LINE - 1) /* avoid overflow */
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
209 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
210 InfoLogger_writeLine(curLine,curLineIndex,0);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
211 memset(curLine,0,sizeof(curLine));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
212 curLineIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
213 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
214 if((data == '\r') || (data == '\n'))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
215 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
216 if(curLineIndex > 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
217 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
218 InfoLogger_writeLine(curLine,curLineIndex,0);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
219 if(strcmp((char*)curLine,"OK") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
220 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
221 handleOK();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
222 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
223 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
224 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
225 if(strcmp((char*)curLine,"ERROR") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
226 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
227 handleERROR();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
228 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
229 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
230 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
231 switch(readType)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
232 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
233 case BT_READ_DEVICE_NAME: if(writeIndex < BLUEMOD_NAME_SIZE)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
234 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
235 memcpy (btDeviceList[curBtIndex].name, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
236 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
237 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
238 case BT_READ_SERV_UUID: if((writeIndex < 50) && (curServiceIndex < 10))
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
239 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
240 memcpy(curDeviceService[curServiceIndex].uuid, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
241 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
242 curServiceIndex++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
243 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
244 case BT_READ_CHAR_UUID: if(writeIndex < 50)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
245 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
246 memcpy(curDevCharacteristic[curCharacteristicIndex].uuid, parameter, writeIndex);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
247 curCharacteristicIndex++;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
248 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
249 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
250 case BT_READ_DESC_UUID: if(writeIndex < 50)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
251 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
252 memcpy(curDevDescriptor.uuid, parameter, writeIndex);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
253 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
254 break;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
255 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
256 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
257 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
258 curLineIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
259 writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
260 memset(curLine,0,sizeof(curLine));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
261 readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
262 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
263 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
264 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
265 if(curLineIndex < MAX_CHAR_PER_LINE) curLine[curLineIndex++] = data;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
266
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
267 if(data == ':')
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
268 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
269 switch(checkIndicators(curLine))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
270 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
271 case DEVICE_INDICATOR: readType = BT_READ_DEVICE_ADDR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
272 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
273 case CONNECTION_INDICATOR: readType = BT_READ_CON_DETAILS;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
274 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
275 case SERVICE_INDICATOR: readType = BT_READ_SERV_HANDLE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
276 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
277 case CHARACTERISTIC_INDICATOR: readType = BT_READ_CHAR_CONHANDLE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
278 // snprintf(text,40,"Found Char");
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
279 // InfoLogger_writeLine((uint8_t*)text,strlen(text),0);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
280 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
281 case DESCRIPTOR_INDICATOR: readType = BT_READ_DESC_CONHANDLE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
282 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
283
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
284 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
285 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
286 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
287 writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
288 memset(parameter,0,sizeof(parameter));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
289 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
290 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
291 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
292 if(data == ',') /* parameter end */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
293 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
294 switch(readType)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
295 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
296 case BT_READ_DEVICE_ADDR: if(writeIndex < BLUEMOD_ADDR_SIZE-1)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
297 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
298 if(firstDevice)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
299 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
300 firstDevice = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
301 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
302 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
303 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
304 curBtIndex++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
305 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
306 parameter[writeIndex-1] = 0; /*remove 'p' from address */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
307 strcpy((char*)btDeviceList[curBtIndex].address, (char*)parameter);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
308 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
309 readType = BT_READ_DEVICE_RSSI;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
310 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
311 case BT_READ_DEVICE_RSSI: if(writeIndex < BLUEMOD_RSSI_SIZE-1)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
312 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
313 strcpy((char*)btDeviceList[curBtIndex].rssi, (char*)parameter);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
314 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
315 readType = BT_READ_DEVICE_NAME;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
316 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
317 case BT_READ_DEVICE_NAME: if(writeIndex < BLUEMOD_NAME_SIZE-1)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
318 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
319 memcpy(btDeviceList[curBtIndex].name, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
320 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
321 readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
322 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
323 case BT_READ_CON_DETAILS: connHandle = parameter[0];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
324 heartbeatState = SENSOR_HB_SERVICES;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
325 readType = BT_READ_NOTHING;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
326 curServiceIndex = 0;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
327 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
328 case BT_READ_SERV_HANDLE: curDeviceService[curServiceIndex].handle = parameter[0];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
329 readType = BT_READ_SERV_START;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
330 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
331 case BT_READ_SERV_START: if(writeIndex < 6)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
332 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
333 memcpy(curDeviceService[curServiceIndex].start, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
334 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
335 readType = BT_READ_SERV_END;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
336 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
337 case BT_READ_SERV_END: if(writeIndex < 6)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
338 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
339 memcpy(curDeviceService[curServiceIndex].end, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
340 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
341 readType = BT_READ_SERV_UUID;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
342 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
343 case BT_READ_CHAR_CONHANDLE: curDevCharacteristic[curCharacteristicIndex].conHandle = parameter[0];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
344 readType = BT_READ_CHAR_ATTRIBUTE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
345 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
346 case BT_READ_CHAR_ATTRIBUTE: if(writeIndex < 10)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
347 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
348 memcpy(curDevCharacteristic[curCharacteristicIndex].attrHandle, parameter, writeIndex);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
349 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
350 readType = BT_READ_CHAR_PROPERTY;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
351 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
352 case BT_READ_CHAR_PROPERTY: if(writeIndex < 10)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
353 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
354 memcpy(curDevCharacteristic[curCharacteristicIndex].properties, parameter, writeIndex);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
355 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
356 readType = BT_READ_CHAR_VALUEHANDLE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
357 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
358 case BT_READ_CHAR_VALUEHANDLE: if(writeIndex < 10)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
359 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
360 memcpy(curDevCharacteristic[curCharacteristicIndex].valueHandle, parameter, writeIndex);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
361 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
362 readType = BT_READ_CHAR_UUID;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
363 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
364 case BT_READ_DESC_CONHANDLE: curDevDescriptor.conHandle = parameter[0];
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
365 readType = BT_READ_DESC_CHARHANDLE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
366 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
367 case BT_READ_DESC_CHARHANDLE: if(writeIndex < 10)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
368 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
369 memcpy(curDevDescriptor.charHandle, parameter, writeIndex);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
370 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
371 readType = BT_READ_DESC_DESCHANDLE;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
372 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
373 case BT_READ_DESC_DESCHANDLE: if(writeIndex < 10)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
374 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
375 memcpy(curDevDescriptor.descHandle, parameter, writeIndex);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
376 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
377 readType = BT_READ_DESC_UUID;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
378 break;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
379 default: readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
380 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
381 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
382 writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
383 memset(parameter,0 , sizeof(parameter));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
384 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
385 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
386 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
387 // if(readType != BT_READ_NOTHING)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
388 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
389 parameter[writeIndex++] = data;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
390 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
391 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
392 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
393 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
394 data = UART_getChar();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
395 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
396 return complete;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
397 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
398
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
399 sensorHeartbeat_State_t cv_heartbeat_getState()
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
400 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
401 return heartbeatState;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
402 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
403
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
404 void openEdit_Heartbeat(void)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
405 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
406 SSettings *settings = settingsGetPointer();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
407
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
408 char text[32];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
409 snprintf(text, 32, "\001%c%c", TXT_2BYTE, TXT2BYTE_Pulse);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
410 write_topline(text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
411
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
412 set_globalState(StMOption_Heartbeat);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
413 resetMenuEdit(CLUT_MenuPageCvOption);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
414
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
415 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_SensorDetect);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
416 write_field_button(StMOption_Heartbeat, 30, 299, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
417
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
418 write_buttonTextline(TXT2BYTE_ButtonMinus, TXT2BYTE_ButtonEnter, TXT2BYTE_ButtonPlus);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
419
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
420 setEvent(StMOption_Heartbeat, (uint32_t)OnAction_Heartbeat);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
421 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
422
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
423 static uint8_t OnAction_Heartbeat(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
424 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
425 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
426 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
427 case SENSOR_HB_OFFLINE:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
428 HAL_UART_AbortReceive_IT(&UartHandle);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
429 MX_UART_BT_Init_DMA();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
430 UART_StartDMARx();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
431 heartbeatState = SENSOR_HB_ENABLE_BLE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
432 startDetection_ms = HAL_GetTick();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
433 curBtIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
434 memset(btDeviceList, 0, sizeof(btDeviceList));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
435 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
436
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
437 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
438 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
439 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
440 return UNSPECIFIC_RETURN;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
441 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
442
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
443 void cv_heartbeat_Control(void)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
444 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
445 static uint8_t action = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
446 static uint8_t retry = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
447 static uint8_t lastState = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
448 char cmd[50];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
449
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
450 cmd[0] = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
451
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
452 if(action == 3)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
453 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
454 action = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
455 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
456 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
457 case SENSOR_HB_ENABLE_BLE: HAL_Delay(1000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
458 snprintf(cmd, sizeof(cmd), "+++" ); //"AT+UBTD=2,1,5000\r\n"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
459 InfoLogger_writeLine((uint8_t*)cmd,3,1);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
460 HAL_UART_Transmit(&UartHandle, (uint8_t*)cmd, 3, 5000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
461 HAL_Delay(1000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
462 cmd[0] = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
463 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
464 case SENSOR_HB_CHECK_CONFIG: snprintf(cmd, sizeof(cmd), "AT+UBTCFG=2\r\n" ); // AT+UBTLE?
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
465
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
466 #if 0
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
467 if(settingsGetPointer()->dive_mode == DIVEMODE_OC)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
468 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
469 snprintf(cmd, sizeof(cmd), "AT+UBTLE=2\r\n" ); //+UBTLE=1 //"AT+UBTD=2,1,5000\r\n"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
470 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
471 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
472 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
473 snprintf(cmd, sizeof(cmd), "AT+UBTLE=3\r\n" ); //+UBTLE=1 //"AT+UBTD=2,1,5000\r\n"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
474 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
475 #endif
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
476 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
477 case SENSOR_HB_DISCOVER: if(lastState != SENSOR_HB_DISCOVER)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
478 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
479 snprintf(cmd, sizeof(cmd), "AT+UBTD=2,1\r\n" ); //+UBTLE=1 //"AT+UBTD=2,1,5000\r\n"
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
480 curBtIndex = 0;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
481 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
482
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
483 //snprintf(cmd, sizeof(cmd), "AT&W\r\n" ); // AT+UBTD=2,1\r\n "AT+UBTD=2,1,5000\r\n"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
484 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
485 #if 0
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
486 case SENSOR_HB_RESTART: snprintf(cmd, sizeof(cmd), "AT+UBTD=2,1\r\n" ); //+UBTLE=1 //"AT+UBTD=2,1,5000\r\n"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
487
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
488 // snprintf(cmd, sizeof(cmd), "AT+CPWROFF\r\n" ); // AT+UBTD=2,1\r\n "AT+UBTD=2,1,5000\r\n"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
489 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
490 #endif
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
491 case SENSOR_HB_CONNECT: if(evaluateDevIndex < curBtIndex)
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
492 {
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
493 snprintf(cmd, sizeof(cmd), "AT+UBTACLC=%s\r\n",btDeviceList[evaluateDevIndex].address);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
494 // evaluateDevIndex = devicesIndex;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
495 // devicesIndex++;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
496 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
497 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
498 case SENSOR_HB_DISCONNECT: snprintf(cmd, sizeof(cmd), "AT+UBTACLD=%c\r\n",connHandle);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
499 break;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
500 case SENSOR_HB_SERVICES: if((connHandle >= '0') && (connHandle <= '9') && (lastState != SENSOR_HB_SERVICES))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
501 {
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
502 snprintf(cmd, sizeof(cmd), "AT+UBTGDP=%c\r\n",connHandle);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
503 memset(curDeviceService, 0, sizeof(curDeviceService));
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
504 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
505 break;
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
506 case SENSOR_HB_CHARACTERISTIC: snprintf(cmd, sizeof(cmd), "AT+UBTGDCS=%c,%s,%s\r\n",connHandle,curDeviceService[evaluateSrvIndex].start
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
507 ,curDeviceService[evaluateSrvIndex].end);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
508 memset(curDevCharacteristic, 0, sizeof(curDevCharacteristic));
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
509 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
510 case SENSOR_HB_DESCRIPTOR: snprintf(cmd, sizeof(cmd), "AT+UBTGDCD=%c,%s,%s\r\n",connHandle,curDevCharacteristic[evaluateCharIndex].valueHandle
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
511 ,curDeviceService[evaluateSrvIndex].end);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
512 //memset(curDevDescriptor, 0, sizeof(curDevCharacteristic));
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
513 break;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
514 case SENSOR_HB_SUBSCRIBE: snprintf(cmd, sizeof(cmd), "AT+UBTGWC=%c,%s,1\r\n",connHandle,curDevDescriptor.descHandle);
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1032
diff changeset
515 break;
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
516 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
517 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
518 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
519 if(cmd[0] != 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
520 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
521 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
522 InfoLogger_writeLine((uint8_t*)cmd,strlen(cmd),1);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
523 HAL_UART_Transmit(&UartHandle, (uint8_t*)cmd, strlen(cmd), 5000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
524 retry++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
525 if(retry == 3)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
526 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
527 heartbeatState = SENSOR_HB_OFFLINE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
528 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
529 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
530 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
531 if(lastState != heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
532 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
533 lastState = heartbeatState;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
534 retry = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
535 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
536 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
537 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
538 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
539 action++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
540 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
541 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
542 void refresh_Heartbeat(void)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
543 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
544 char text[32];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
545 uint8_t index = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
546
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
547 snprintf(text, 32, "\001%c%c", TXT_2BYTE, TXT2BYTE_Pulse);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
548 write_topline(text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
549
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
550 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
551 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
552 case SENSOR_HB_OFFLINE:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
553 default: snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_SensorDetect);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
554 write_label_var(30, 299, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
555
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
556 if(curBtIndex > 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
557 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
558 while((index < curBtIndex) && (index < 3))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
559 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
560 snprintf(text, 40, "%s", btDeviceList[index].address);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
561 write_label_var( 30, 300, ME_Y_LINE3 + (index * ME_Y_LINE_STEP), &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
562 index++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
563 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
564 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
565 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
566 case SENSOR_HB_ENABLE_BLE: snprintf(text, 32, "Activate BLE");
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
567 write_label_var( 30, 300, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
568 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
569 case SENSOR_HB_DISCOVER:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
570 snprintf(text, 32, "Searching");
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
571 write_label_var( 30, 300, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
572
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
573 if(curBtIndex > 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
574 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
575 while((index < curBtIndex) && (index < 4))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
576 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
577 snprintf(text, 40, "%s", btDeviceList[index].address);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
578 write_label_var( 30, 300, ME_Y_LINE2 + (index * ME_Y_LINE_STEP), &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
579 index++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
580 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
581 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
582 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
583 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
584
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
585 write_buttonTextline(TXT2BYTE_ButtonMinus, TXT2BYTE_ButtonEnter, TXT2BYTE_ButtonPlus);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
586 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
587