Skip to content

Commit 240c74f

Browse files
committed
test: check broadcast handleInt and handleNotify with no peers
1 parent 2a4e4b5 commit 240c74f

File tree

1 file changed

+240
-16
lines changed

1 file changed

+240
-16
lines changed

extras/test/src/test_characteristic/test_writeValue.cpp

+240-16
Original file line numberDiff line numberDiff line change
@@ -34,132 +34,356 @@ TEST_CASE("Test characteristic writeValue", "[ArduinoBLE::BLECharacteristic]")
3434
{
3535
WHEN("Create a bool characteristic")
3636
{
37-
BLEBoolCharacteristic boolCharacteristic("Bool", BLERead | BLEIndicate | BLEWrite);
37+
BLEBoolCharacteristic boolCharacteristic("Bool", BLEBroadcast| BLEIndicate | BLENotify );
3838
bool v = false;;
3939
int written = boolCharacteristic.writeValue(v);
4040
REQUIRE( written == sizeof(bool) );
41+
42+
boolCharacteristic.broadcast();
43+
written = boolCharacteristic.writeValue(v);
44+
REQUIRE( written == sizeof(bool) );
45+
46+
BLEDevice device;
47+
boolCharacteristic.local()->writeCccdValue(device, 0x002);
48+
written = boolCharacteristic.writeValue(v);
49+
/* No peers connected */
50+
REQUIRE( written == 0 );
51+
boolCharacteristic.local()->writeCccdValue(device, 0x001);
52+
written = boolCharacteristic.writeValue(v);
53+
/* No peers connected */
54+
REQUIRE( written == 0 );
4155
}
4256

4357
WHEN("Create a boolean characteristic")
4458
{
45-
BLEBooleanCharacteristic booleanCharacteristic("Boolean", BLERead | BLEIndicate | BLEWrite);
59+
BLEBooleanCharacteristic booleanCharacteristic("Boolean", BLEBroadcast| BLEIndicate | BLENotify);
4660
bool v = false;
4761
int written = booleanCharacteristic.writeValue(v);
4862
REQUIRE( written == sizeof(bool) );
63+
64+
booleanCharacteristic.broadcast();
65+
written = booleanCharacteristic.writeValue(v);
66+
REQUIRE( written == sizeof(bool) );
67+
68+
BLEDevice device;
69+
booleanCharacteristic.local()->writeCccdValue(device, 0x002);
70+
written = booleanCharacteristic.writeValue(v);
71+
/* No peers connected */
72+
REQUIRE( written == 0 );
73+
booleanCharacteristic.local()->writeCccdValue(device, 0x001);
74+
written = booleanCharacteristic.writeValue(v);
75+
/* No peers connected */
76+
REQUIRE( written == 0 );
4977
}
5078

5179
WHEN("Create a char characteristic")
5280
{
53-
BLECharCharacteristic charCharacteristic("Char", BLERead | BLEIndicate | BLEWrite);
81+
BLECharCharacteristic charCharacteristic("Char", BLEBroadcast| BLEIndicate | BLENotify);
5482
char v = 'a';
5583
int written = charCharacteristic.writeValue(v);
5684
REQUIRE( written == sizeof(char) );
85+
86+
charCharacteristic.broadcast();
87+
written = charCharacteristic.writeValue(v);
88+
REQUIRE( written == sizeof(char) );
89+
90+
BLEDevice device;
91+
charCharacteristic.local()->writeCccdValue(device, 0x002);
92+
written = charCharacteristic.writeValue(v);
93+
/* No peers connected */
94+
REQUIRE( written == 0 );
95+
charCharacteristic.local()->writeCccdValue(device, 0x001);
96+
written = charCharacteristic.writeValue(v);
97+
/* No peers connected */
98+
REQUIRE( written == 0 );
5799
}
58100

59101
WHEN("Create a unsigned char characteristic")
60102
{
61-
BLEUnsignedCharCharacteristic unsignedCharCharacteristic("UnsignedChar", BLERead | BLEIndicate | BLEWrite);
103+
BLEUnsignedCharCharacteristic unsignedCharCharacteristic("UnsignedChar", BLEBroadcast| BLEIndicate | BLENotify);
62104
unsigned char v = 0x01;
63105
int written = unsignedCharCharacteristic.writeValue(v);
64106
REQUIRE( written == sizeof(unsigned char) );
107+
108+
unsignedCharCharacteristic.broadcast();
109+
written = unsignedCharCharacteristic.writeValue(v);
110+
REQUIRE( written == sizeof(unsigned char) );
111+
112+
BLEDevice device;
113+
unsignedCharCharacteristic.local()->writeCccdValue(device, 0x002);
114+
written = unsignedCharCharacteristic.writeValue(v);
115+
/* No peers connected */
116+
REQUIRE( written == 0 );
117+
unsignedCharCharacteristic.local()->writeCccdValue(device, 0x001);
118+
written = unsignedCharCharacteristic.writeValue(v);
119+
/* No peers connected */
120+
REQUIRE( written == 0 );
65121
}
66122

67123
WHEN("Create a byte characteristic")
68124
{
69-
BLEByteCharacteristic byteCharacteristic("Byte", BLERead | BLEIndicate | BLEWrite);
125+
BLEByteCharacteristic byteCharacteristic("Byte", BLEBroadcast| BLEIndicate | BLENotify);
70126
byte v = 0x01;
71127
int written = byteCharacteristic.writeValue(v);
72128
REQUIRE( written == sizeof(byte) );
129+
130+
byteCharacteristic.broadcast();
131+
written = byteCharacteristic.writeValue(v);
132+
REQUIRE( written == sizeof(byte) );
133+
134+
BLEDevice device;
135+
byteCharacteristic.local()->writeCccdValue(device, 0x002);
136+
written = byteCharacteristic.writeValue(v);
137+
/* No peers connected */
138+
REQUIRE( written == 0 );
139+
byteCharacteristic.local()->writeCccdValue(device, 0x001);
140+
written = byteCharacteristic.writeValue(v);
141+
/* No peers connected */
142+
REQUIRE( written == 0 );
73143
}
74144

75145
WHEN("Create a short characteristic")
76146
{
77-
BLEShortCharacteristic shortCharacteristic("Short", BLERead | BLEIndicate | BLEWrite);
147+
BLEShortCharacteristic shortCharacteristic("Short", BLEBroadcast| BLEIndicate | BLENotify);
78148
short v = -1;
79149
int written = shortCharacteristic.writeValue(v);
80150
REQUIRE( written == sizeof(short) );
151+
152+
shortCharacteristic.broadcast();
153+
written = shortCharacteristic.writeValue(v);
154+
REQUIRE( written == sizeof(short) );
155+
156+
BLEDevice device;
157+
shortCharacteristic.local()->writeCccdValue(device, 0x002);
158+
written = shortCharacteristic.writeValue(v);
159+
/* No peers connected */
160+
REQUIRE( written == 0 );
161+
shortCharacteristic.local()->writeCccdValue(device, 0x001);
162+
written = shortCharacteristic.writeValue(v);
163+
/* No peers connected */
164+
REQUIRE( written == 0 );
81165
}
82166

83167
WHEN("Create a unsigned short characteristic")
84168
{
85-
BLEUnsignedShortCharacteristic unsignedShortCharacteristic("UnsignedShort", BLERead | BLEIndicate | BLEWrite);
169+
BLEUnsignedShortCharacteristic unsignedShortCharacteristic("UnsignedShort", BLEBroadcast| BLEIndicate | BLENotify);
86170
unsigned short v = 1;
87171
int written = unsignedShortCharacteristic.writeValue(v);
88172
REQUIRE( written == sizeof(unsigned short) );
173+
174+
unsignedShortCharacteristic.broadcast();
175+
written = unsignedShortCharacteristic.writeValue(v);
176+
REQUIRE( written == sizeof(unsigned short) );
177+
178+
BLEDevice device;
179+
unsignedShortCharacteristic.local()->writeCccdValue(device, 0x002);
180+
written = unsignedShortCharacteristic.writeValue(v);
181+
/* No peers connected */
182+
REQUIRE( written == 0 );
183+
unsignedShortCharacteristic.local()->writeCccdValue(device, 0x001);
184+
written = unsignedShortCharacteristic.writeValue(v);
185+
/* No peers connected */
186+
REQUIRE( written == 0 );
89187
}
90188

91189
WHEN("Create a word characteristic")
92190
{
93-
BLEWordCharacteristic wordCharacteristic("Word", BLERead | BLEIndicate | BLEWrite);
191+
BLEWordCharacteristic wordCharacteristic("Word", BLEBroadcast| BLEIndicate | BLENotify);
94192
word v = -1;
95193
int written = wordCharacteristic.writeValue(v);
96194
REQUIRE( written == sizeof(word) );
195+
196+
wordCharacteristic.broadcast();
197+
written = wordCharacteristic.writeValue(v);
198+
REQUIRE( written == sizeof(word) );
199+
200+
BLEDevice device;
201+
wordCharacteristic.local()->writeCccdValue(device, 0x002);
202+
written = wordCharacteristic.writeValue(v);
203+
/* No peers connected */
204+
REQUIRE( written == 0 );
205+
wordCharacteristic.local()->writeCccdValue(device, 0x001);
206+
written = wordCharacteristic.writeValue(v);
207+
/* No peers connected */
208+
REQUIRE( written == 0 );
97209
}
98210

99211
WHEN("Create a int characteristic")
100212
{
101-
BLEIntCharacteristic intCharacteristic("Int", BLERead | BLEIndicate | BLEWrite);
213+
BLEIntCharacteristic intCharacteristic("Int", BLEBroadcast| BLEIndicate | BLENotify);
102214
int v = -1;
103215
int written = intCharacteristic.writeValue(v);
104216
REQUIRE( written == sizeof(int) );
217+
218+
intCharacteristic.broadcast();
219+
written = intCharacteristic.writeValue(v);
220+
REQUIRE( written == sizeof(int) );
221+
222+
BLEDevice device;
223+
intCharacteristic.local()->writeCccdValue(device, 0x002);
224+
written = intCharacteristic.writeValue(v);
225+
/* No peers connected */
226+
REQUIRE( written == 0 );
227+
intCharacteristic.local()->writeCccdValue(device, 0x001);
228+
written = intCharacteristic.writeValue(v);
229+
/* No peers connected */
230+
REQUIRE( written == 0 );
105231
}
106232

107233
WHEN("Create a unsigned int characteristic")
108234
{
109-
BLEUnsignedIntCharacteristic unsignedIntCharacteristic("UnsignedInt", BLERead | BLEIndicate | BLEWrite);
235+
BLEUnsignedIntCharacteristic unsignedIntCharacteristic("UnsignedInt", BLEBroadcast| BLEIndicate | BLENotify);
110236
unsigned int v = 1;
111237
int written = unsignedIntCharacteristic.writeValue(v);
112238
REQUIRE( written == sizeof(unsigned int) );
239+
240+
unsignedIntCharacteristic.broadcast();
241+
written = unsignedIntCharacteristic.writeValue(v);
242+
REQUIRE( written == sizeof(unsigned int) );
243+
244+
BLEDevice device;
245+
unsignedIntCharacteristic.local()->writeCccdValue(device, 0x002);
246+
written = unsignedIntCharacteristic.writeValue(v);
247+
/* No peers connected */
248+
REQUIRE( written == 0 );
249+
unsignedIntCharacteristic.local()->writeCccdValue(device, 0x001);
250+
written = unsignedIntCharacteristic.writeValue(v);
251+
/* No peers connected */
252+
REQUIRE( written == 0 );
113253
}
114254

115255
WHEN("Create a long characteristic")
116256
{
117-
BLELongCharacteristic longCharacteristic("Long", BLERead | BLEIndicate | BLEWrite);
257+
BLELongCharacteristic longCharacteristic("Long", BLEBroadcast| BLEIndicate | BLENotify);
118258
long v = -1;
119259
int written = longCharacteristic.writeValue(v);
120260
REQUIRE( written == sizeof(long) );
261+
262+
longCharacteristic.broadcast();
263+
written = longCharacteristic.writeValue(v);
264+
REQUIRE( written == sizeof(long) );
265+
266+
BLEDevice device;
267+
longCharacteristic.local()->writeCccdValue(device, 0x002);
268+
written = longCharacteristic.writeValue(v);
269+
/* No peers connected */
270+
REQUIRE( written == 0 );
271+
longCharacteristic.local()->writeCccdValue(device, 0x001);
272+
written = longCharacteristic.writeValue(v);
273+
/* No peers connected */
274+
REQUIRE( written == 0 );
121275
}
122276

123277
WHEN("Create a unsigned long characteristic")
124278
{
125-
BLEUnsignedLongCharacteristic unsignedLongCharacteristic("UnsignedLong", BLERead | BLEIndicate | BLEWrite);
279+
BLEUnsignedLongCharacteristic unsignedLongCharacteristic("UnsignedLong", BLEBroadcast| BLEIndicate | BLENotify);
126280
unsigned long v = 1;
127281
int written = unsignedLongCharacteristic.writeValue(v);
128282
REQUIRE( written == sizeof(unsigned long) );
283+
284+
unsignedLongCharacteristic.broadcast();
285+
written = unsignedLongCharacteristic.writeValue(v);
286+
REQUIRE( written == sizeof(unsigned long) );
287+
288+
BLEDevice device;
289+
unsignedLongCharacteristic.local()->writeCccdValue(device, 0x002);
290+
written = unsignedLongCharacteristic.writeValue(v);
291+
/* No peers connected */
292+
REQUIRE( written == 0 );
293+
unsignedLongCharacteristic.local()->writeCccdValue(device, 0x001);
294+
written = unsignedLongCharacteristic.writeValue(v);
295+
/* No peers connected */
296+
REQUIRE( written == 0 );
129297
}
130298

131299
WHEN("Create a float characteristic")
132300
{
133-
BLEFloatCharacteristic floatCharacteristic("Float", BLERead | BLEIndicate | BLEWrite);
301+
BLEFloatCharacteristic floatCharacteristic("Float", BLEBroadcast| BLEIndicate | BLENotify);
134302
float v = -1.0f;
135303
int written = floatCharacteristic.writeValue(v);
136304
REQUIRE( written == sizeof(float) );
305+
306+
floatCharacteristic.broadcast();
307+
written = floatCharacteristic.writeValue(v);
308+
REQUIRE( written == sizeof(float) );
309+
310+
BLEDevice device;
311+
floatCharacteristic.local()->writeCccdValue(device, 0x002);
312+
written = floatCharacteristic.writeValue(v);
313+
/* No peers connected */
314+
REQUIRE( written == 0 );
315+
floatCharacteristic.local()->writeCccdValue(device, 0x001);
316+
written = floatCharacteristic.writeValue(v);
317+
/* No peers connected */
318+
REQUIRE( written == 0 );
137319
}
138320

139321
WHEN("Create a double characteristic")
140322
{
141-
BLEDoubleCharacteristic doubleCharacteristic("Double", BLERead | BLEIndicate | BLEWrite);
323+
BLEDoubleCharacteristic doubleCharacteristic("Double", BLEBroadcast| BLEIndicate | BLENotify);
142324
double v = -1.0;
143325
int written = doubleCharacteristic.writeValue(v);
144326
REQUIRE( written == sizeof(double) );
327+
328+
doubleCharacteristic.broadcast();
329+
written = doubleCharacteristic.writeValue(v);
330+
REQUIRE( written == sizeof(double) );
331+
332+
BLEDevice device;
333+
doubleCharacteristic.local()->writeCccdValue(device, 0x002);
334+
written = doubleCharacteristic.writeValue(v);
335+
/* No peers connected */
336+
REQUIRE( written == 0 );
337+
doubleCharacteristic.local()->writeCccdValue(device, 0x001);
338+
written = doubleCharacteristic.writeValue(v);
339+
/* No peers connected */
340+
REQUIRE( written == 0 );
145341
}
146342

147343
WHEN("Create a string characteristic")
148344
{
149345
const int maxStringLength = 64;
150-
BLEStringCharacteristic stringCharacteristic("String", BLERead | BLEIndicate | BLEWrite, maxStringLength);
346+
BLEStringCharacteristic stringCharacteristic("String", BLEBroadcast| BLEIndicate | BLENotify, maxStringLength);
151347
const char* v = "Hello";
152348
int written = stringCharacteristic.writeValue(v);
153349
REQUIRE( written == min(strlen(v), maxStringLength) );
350+
351+
stringCharacteristic.broadcast();
352+
written = stringCharacteristic.writeValue(v);
353+
REQUIRE( written == min(strlen(v), maxStringLength) );
354+
355+
BLEDevice device;
356+
stringCharacteristic.local()->writeCccdValue(device, 0x002);
357+
written = stringCharacteristic.writeValue(v);
358+
/* No peers connected */
359+
REQUIRE( written == 0 );
360+
stringCharacteristic.local()->writeCccdValue(device, 0x001);
361+
written = stringCharacteristic.writeValue(v);
362+
/* No peers connected */
363+
REQUIRE( written == 0 );
154364
}
155365

156366
WHEN("Create a too long string characteristic")
157367
{
158368
const int maxStringLength = 4;
159-
BLEStringCharacteristic stringCharacteristic("String", BLERead | BLEIndicate | BLEWrite, maxStringLength);
369+
BLEStringCharacteristic stringCharacteristic("String", BLEBroadcast| BLEIndicate | BLENotify, maxStringLength);
160370
const char* v = "Hello";
161371
int written = stringCharacteristic.writeValue(v);
162372
REQUIRE( written == min(strlen(v), maxStringLength) );
373+
374+
stringCharacteristic.broadcast();
375+
written = stringCharacteristic.writeValue(v);
376+
REQUIRE( written == min(strlen(v), maxStringLength) );
377+
378+
BLEDevice device;
379+
stringCharacteristic.local()->writeCccdValue(device, 0x002);
380+
written = stringCharacteristic.writeValue(v);
381+
/* No peers connected */
382+
REQUIRE( written == 0 );
383+
stringCharacteristic.local()->writeCccdValue(device, 0x001);
384+
written = stringCharacteristic.writeValue(v);
385+
/* No peers connected */
386+
REQUIRE( written == 0 );
163387
}
164388

165389
}

0 commit comments

Comments
 (0)