@@ -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