7
7
8
8
auto sensorServiceUuid = ' 34c2e3bb-34aa-11eb-adc1-0242ac120002' ;
9
9
auto sensorDataUuid = " 34c2e3bc-34aa-11eb-adc1-0242ac120002" ;
10
+ auto sensorLongDataUuid = " 34c2e3be-34aa-11eb-adc1-0242ac120002" ;
10
11
auto sensorConfigUuid = " 34c2e3bd-34aa-11eb-adc1-0242ac120002" ;
11
12
12
13
BLECharacteristic configCharacteristic;
13
14
BLECharacteristic dataCharacteristic;
15
+ BLECharacteristic longDataCharacteristic;
14
16
BLEDevice niclaPeripheral;
15
17
16
18
BLEHandler::BLEHandler () :
@@ -87,6 +89,7 @@ bool BLEHandler::connectToNicla()
87
89
// retrieve characteristics
88
90
configCharacteristic = peripheral.characteristic (sensorConfigUuid);
89
91
dataCharacteristic = peripheral.characteristic (sensorDataUuid);
92
+ longDataCharacteristic = peripheral.characteristic (sensorLongDataUuid);
90
93
91
94
if (!configCharacteristic) {
92
95
end ();
@@ -114,6 +117,21 @@ bool BLEHandler::connectToNicla()
114
117
_debug->println (" Subscribed to dataCharacteristic" );
115
118
}
116
119
120
+ if (!longDataCharacteristic) {
121
+ end ();
122
+ return false ;
123
+ } else if (!longDataCharacteristic.canSubscribe ()) {
124
+ end ();
125
+ return false ;
126
+ } else if (!longDataCharacteristic.subscribe ()) {
127
+ end ();
128
+ return false ;
129
+ }
130
+ longDataCharacteristic.setEventHandler (BLEWritten, receivedLongSensorData);
131
+ if (_debug) {
132
+ _debug->println (" Subscribed to longDataCharacteristic" );
133
+ }
134
+
117
135
niclaPeripheral = peripheral;
118
136
nicla_found = true ;
119
137
}
@@ -133,34 +151,6 @@ void BLEHandler::update()
133
151
begin ();
134
152
}
135
153
136
- // if (niclaPeripheral.connected()) {
137
- // if (dataCharacteristic.valueUpdated()) {
138
- /*
139
- uint8_t data[sizeof(SensorDataPacket)];
140
- dataCharacteristic.readValue(data, sizeof(SensorDataPacket));
141
-
142
- if (_debug) {
143
- _debug->print("Data packet received: ");
144
- for (int i=0; i<sizeof(SensorDataPacket); i++) {
145
- _debug->print(data[i], HEX);
146
- _debug->print(", ");
147
- }
148
- _debug->println();
149
- }
150
-
151
- SensorDataPacket sensorData;
152
- memcpy(&sensorData, &data, sizeof(SensorDataPacket));
153
-
154
- sensorManager.process(sensorData);
155
- */
156
- // }
157
- /*
158
- } else {
159
- if (_debug) {
160
- _debug->println("Peripheral disconnected");
161
- }
162
- }
163
- */
164
154
}
165
155
166
156
void BLEHandler::end ()
@@ -188,7 +178,16 @@ void BLEHandler::receivedSensorData(BLEDevice central, BLECharacteristic charact
188
178
{
189
179
SensorDataPacket sensorData;
190
180
characteristic.readValue (&sensorData, sizeof (sensorData));
191
- sensorManager.process (sensorData);
181
+ SensorLongDataPacket sensorLongData;
182
+ memcpy (&sensorLongData, &sensorData, sizeof (SensorLongDataPacket));
183
+ sensorManager.process (sensorLongData);
184
+ }
185
+
186
+ void BLEHandler::receivedLongSensorData (BLEDevice central, BLECharacteristic characteristic)
187
+ {
188
+ SensorLongDataPacket sensorLongData;
189
+ characteristic.readValue (&sensorLongData, sizeof (sensorLongData));
190
+ sensorManager.process (sensorLongData);
192
191
}
193
192
194
193
void BLEHandler::debug (Stream &stream)
0 commit comments