annotate Discovery/Src/cv_heartbeat.c @ 1032:33b91584d827 Puls_Integration

New CV Pulse: The basic infrastructure for external puls measurement via Bluetooth has been added. Precondition is an OSTC with an activated central role. The OSTC will then search for a BLE device with puls measurement service. Reading data and visualization is not implemented yet.
author Ideenmodellierer
date Mon, 28 Jul 2025 18:34:45 +0200
parents
children 5f66e44d69f0
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];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
44 static uint8_t curServiceIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
45 static uint8_t curBtIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
46 static uint8_t connHandle = ' ';
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
47
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
48 static indicatior_t checkIndicators(uint8_t* pdata)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
49 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
50 #if 0
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
51 static uint8_t foundRSSI = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
52 static uint8_t foundNAME = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
53 static uint8_t foundMNF = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
54 static uint8_t foundUUID = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
55 static uint8_t foundOK = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
56 #endif
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
57 indicatior_t ret = NO_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
58
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
59 if(strcmp((char*)pdata,"+UBTD:") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
60 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
61 ret = DEVICE_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
62 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
63 else if(strcmp((char*)pdata,"+UUBTACLC:") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
64 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
65 ret = CONNECTION_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
66 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
67 else if(strcmp((char*)pdata,"+UBTGDP:") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
68 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
69 ret = SERVICE_INDICATOR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
70 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
71
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
72 return ret;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
73 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
74
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
75 static void handleOK()
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
76 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
77 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
78 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
79 case SENSOR_HB_ENABLE_BLE: heartbeatState = SENSOR_HB_CHECK_CONFIG;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
80 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
81 case SENSOR_HB_CHECK_CONFIG: heartbeatState = SENSOR_HB_DISCOVER;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
82 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
83 case SENSOR_HB_RESTART: heartbeatState = SENSOR_HB_OFFLINE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
84 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
85 case SENSOR_HB_DISCOVER: heartbeatState = SENSOR_HB_CONNECT;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
86 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
87 case SENSOR_HB_SERVICES: heartbeatState = SENSOR_HB_OFFLINE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
88 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
89 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
90 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
91 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
92 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
93
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
94 static void handleERROR()
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
95 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
96
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
97 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
98
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
99 static uint8_t getDeviceList()
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
100 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
101 static uint8_t firstDevice = 1;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
102 static uint8_t curLine[MAX_CHAR_PER_LINE]; /* holds complete line and is used for logging */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
103 static uint8_t curLineIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
104 static uint8_t parameter[40]; /* content of the parameter in read state */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
105 static uint8_t writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
106 static uint8_t complete = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
107
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
108 static readDataType_t readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
109
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
110 char text[40];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
111 uint8_t data = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
112 data = UART_getChar();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
113
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
114 while((data != 0) && (complete == 0))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
115 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
116 if(curLineIndex == MAX_CHAR_PER_LINE) /* avoid overflow */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
117 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
118 InfoLogger_writeLine(curLine,curLineIndex,0);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
119 memset(curLine,0,sizeof(curLine));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
120 curLineIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
121 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
122 if((data == '\r') || (data == '\n'))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
123 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
124 if(curLineIndex > 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
125 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
126 InfoLogger_writeLine(curLine,curLineIndex,0);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
127 if(strcmp((char*)curLine,"OK") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
128 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
129 handleOK();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
130 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
131 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
132 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
133 if(strcmp((char*)curLine,"ERROR") == 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
134 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
135 handleERROR();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
136 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
137 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
138 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
139 switch(readType)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
140 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
141 case BT_READ_DEVICE_NAME: if(writeIndex < BLUEMOD_NAME_SIZE)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
142 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
143 memcpy (btDeviceList[curBtIndex].name, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
144 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
145 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
146 case BT_READ_SERV_UUID: if(writeIndex < 50)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
147 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
148 memcpy(curDeviceService[curServiceIndex].uuid, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
149 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
150 curServiceIndex++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
151 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
152 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
153 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
154 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
155 curLineIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
156 writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
157 memset(curLine,0,sizeof(curLine));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
158 readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
159 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
160 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
161 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
162 if(curLineIndex < MAX_CHAR_PER_LINE) curLine[curLineIndex++] = data;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
163
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
164 if(data == ':')
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
165 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
166 switch(checkIndicators(curLine))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
167 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
168 case DEVICE_INDICATOR: readType = BT_READ_DEVICE_ADDR;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
169 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
170 case CONNECTION_INDICATOR: readType = BT_READ_CON_DETAILS;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
171 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
172 case SERVICE_INDICATOR: readType = BT_READ_SERV_HANDLE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
173 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
174 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
175 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
176 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
177 writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
178 memset(parameter,0,sizeof(parameter));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
179 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
180 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
181 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
182 if(data == ',') /* parameter end */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
183 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
184 switch(readType)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
185 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
186 case BT_READ_DEVICE_ADDR: if(writeIndex < BLUEMOD_ADDR_SIZE-1)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
187 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
188 if(firstDevice)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
189 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
190 firstDevice = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
191 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
192 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
193 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
194 curBtIndex++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
195 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
196 parameter[writeIndex-1] = 0; /*remove 'p' from address */
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
197 strcpy((char*)btDeviceList[curBtIndex].address, (char*)parameter);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
198 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
199 readType = BT_READ_DEVICE_RSSI;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
200 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
201 case BT_READ_DEVICE_RSSI: if(writeIndex < BLUEMOD_RSSI_SIZE-1)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
202 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
203 strcpy((char*)btDeviceList[curBtIndex].rssi, (char*)parameter);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
204 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
205 readType = BT_READ_DEVICE_NAME;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
206 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
207 case BT_READ_DEVICE_NAME: if(writeIndex < BLUEMOD_NAME_SIZE-1)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
208 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
209 memcpy(btDeviceList[curBtIndex].name, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
210 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
211 readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
212 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
213 case BT_READ_CON_DETAILS: connHandle = parameter[0];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
214 heartbeatState = SENSOR_HB_SERVICES;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
215 readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
216 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
217 case BT_READ_SERV_HANDLE: curDeviceService[curServiceIndex].handle = parameter[0];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
218 readType = BT_READ_SERV_START;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
219 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
220 case BT_READ_SERV_START: if(writeIndex < 6)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
221 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
222 memcpy(curDeviceService[curServiceIndex].start, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
223 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
224 readType = BT_READ_SERV_END;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
225 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
226 case BT_READ_SERV_END: if(writeIndex < 6)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
227 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
228 memcpy(curDeviceService[curServiceIndex].end, parameter, writeIndex);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
229 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
230 readType = BT_READ_SERV_UUID;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
231 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
232
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
233 default: readType = BT_READ_NOTHING;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
234 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
235 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
236 writeIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
237 memset(parameter,0 , sizeof(parameter));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
238 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
239 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
240 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
241 // if(readType != BT_READ_NOTHING)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
242 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
243 parameter[writeIndex++] = data;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
244 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
245 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
246 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
247 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
248 data = UART_getChar();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
249 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
250 return complete;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
251 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
252
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
253 sensorHeartbeat_State_t cv_heartbeat_getState()
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
254 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
255 return heartbeatState;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
256 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
257
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
258 void openEdit_Heartbeat(void)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
259 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
260 SSettings *settings = settingsGetPointer();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
261
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
262 char text[32];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
263 snprintf(text, 32, "\001%c%c", TXT_2BYTE, TXT2BYTE_Pulse);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
264 write_topline(text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
265
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
266 set_globalState(StMOption_Heartbeat);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
267 resetMenuEdit(CLUT_MenuPageCvOption);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
268
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
269 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_SensorDetect);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
270 write_field_button(StMOption_Heartbeat, 30, 299, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
271
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
272 write_buttonTextline(TXT2BYTE_ButtonMinus, TXT2BYTE_ButtonEnter, TXT2BYTE_ButtonPlus);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
273
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
274 setEvent(StMOption_Heartbeat, (uint32_t)OnAction_Heartbeat);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
275 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
276
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
277 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
278 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
279 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
280 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
281 case SENSOR_HB_OFFLINE:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
282 HAL_UART_AbortReceive_IT(&UartHandle);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
283 MX_UART_BT_Init_DMA();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
284 UART_StartDMARx();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
285 heartbeatState = SENSOR_HB_ENABLE_BLE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
286 startDetection_ms = HAL_GetTick();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
287 curBtIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
288 memset(btDeviceList, 0, sizeof(btDeviceList));
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
289 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
290
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
291 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
292 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
293 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
294 return UNSPECIFIC_RETURN;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
295 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
296
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
297 void cv_heartbeat_Control(void)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
298 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
299 static uint8_t action = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
300 static uint8_t retry = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
301 static uint8_t lastState = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
302 static uint8_t devicesIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
303
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
304
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
305 char cmd[50];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
306
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
307 cmd[0] = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
308
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
309 getDeviceList();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
310
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
311 if(action == 3)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
312 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
313 action = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
314 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
315 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
316 case SENSOR_HB_ENABLE_BLE: HAL_Delay(1000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
317 snprintf(cmd, sizeof(cmd), "+++" ); //"AT+UBTD=2,1,5000\r\n"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
318 InfoLogger_writeLine((uint8_t*)cmd,3,1);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
319 HAL_UART_Transmit(&UartHandle, (uint8_t*)cmd, 3, 5000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
320 HAL_Delay(1000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
321 cmd[0] = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
322 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
323 case SENSOR_HB_CHECK_CONFIG: snprintf(cmd, sizeof(cmd), "AT+UBTCFG=2\r\n" ); // AT+UBTLE?
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
324
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
325 #if 0
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
326 if(settingsGetPointer()->dive_mode == DIVEMODE_OC)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
327 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
328 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
329 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
330 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
331 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
332 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
333 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
334 #endif
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
335 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
336 case SENSOR_HB_DISCOVER: if(lastState != SENSOR_HB_DISCOVER)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
337 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
338 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
339 devicesIndex = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
340 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
341
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
342 //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
343 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
344 #if 0
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
345 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
346
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
347 // 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
348 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
349 #endif
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
350 case SENSOR_HB_CONNECT: if(curBtIndex != devicesIndex)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
351 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
352 snprintf(cmd, sizeof(cmd), "AT+UBTACLC=%s\r\n",btDeviceList[devicesIndex].address);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
353 devicesIndex++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
354 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
355 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
356 case SENSOR_HB_SERVICES: if((connHandle >= '0') && (connHandle <= '9') && (lastState != SENSOR_HB_SERVICES))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
357 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
358 snprintf(cmd, sizeof(cmd), "AT+UBTGDP=0%c\r\n",connHandle);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
359 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
360 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
361 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
362 heartbeatState = SENSOR_HB_OFFLINE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
363 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
364 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
365
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
366 default:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
367 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
368 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
369 if(cmd[0] != 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
370 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
371 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
372 InfoLogger_writeLine((uint8_t*)cmd,strlen(cmd),1);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
373 HAL_UART_Transmit(&UartHandle, (uint8_t*)cmd, strlen(cmd), 5000);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
374 retry++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
375 if(retry == 3)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
376 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
377 heartbeatState = SENSOR_HB_OFFLINE;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
378 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
379 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
380 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
381 if(lastState != heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
382 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
383 lastState = heartbeatState;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
384 retry = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
385 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
386 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
387 else
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
388 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
389 action++;
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 void refresh_Heartbeat(void)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
393 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
394 char text[32];
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
395 uint8_t index = 0;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
396
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
397 snprintf(text, 32, "\001%c%c", TXT_2BYTE, TXT2BYTE_Pulse);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
398 write_topline(text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
399
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
400 switch(heartbeatState)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
401 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
402 case SENSOR_HB_OFFLINE:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
403 default: snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_SensorDetect);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
404 write_label_var(30, 299, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
405
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
406 if(curBtIndex > 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
407 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
408 while((index < curBtIndex) && (index < 3))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
409 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
410 snprintf(text, 40, "%s", btDeviceList[index].address);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
411 write_label_var( 30, 300, ME_Y_LINE3 + (index * ME_Y_LINE_STEP), &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
412 index++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
413 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
414 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
415 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
416 case SENSOR_HB_ENABLE_BLE: snprintf(text, 32, "Activate BLE");
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
417 write_label_var( 30, 300, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
418 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
419 case SENSOR_HB_DISCOVER:
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
420 snprintf(text, 32, "Searching");
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
421 write_label_var( 30, 300, ME_Y_LINE1, &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
422
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
423 if(curBtIndex > 0)
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
424 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
425 while((index < curBtIndex) && (index < 4))
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
426 {
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
427 snprintf(text, 40, "%s", btDeviceList[index].address);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
428 write_label_var( 30, 300, ME_Y_LINE2 + (index * ME_Y_LINE_STEP), &FontT48, text);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
429 index++;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
430 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
431 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
432 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
433 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
434
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
435 write_buttonTextline(TXT2BYTE_ButtonMinus, TXT2BYTE_ButtonEnter, TXT2BYTE_ButtonPlus);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
436 }
33b91584d827 New CV Pulse:
Ideenmodellierer
parents:
diff changeset
437