@@ -34,132 +34,292 @@ 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+ BLEDevice device;
43+ boolCharacteristic.local ()->writeCccdValue (device, 0x002 );
44+ written = boolCharacteristic.writeValue (v);
45+ /* No peers connected */
46+ REQUIRE ( written == 0 );
47+ boolCharacteristic.local ()->writeCccdValue (device, 0x001 );
48+ written = boolCharacteristic.writeValue (v);
49+ /* No peers connected */
50+ REQUIRE ( written == 0 );
4151 }
4252
4353 WHEN (" Create a boolean characteristic" )
4454 {
45- BLEBooleanCharacteristic booleanCharacteristic (" Boolean" , BLERead | BLEIndicate | BLEWrite );
55+ BLEBooleanCharacteristic booleanCharacteristic (" Boolean" , BLEBroadcast | BLEIndicate | BLENotify );
4656 bool v = false ;
4757 int written = booleanCharacteristic.writeValue (v);
4858 REQUIRE ( written == sizeof (bool ) );
59+
60+ BLEDevice device;
61+ booleanCharacteristic.local ()->writeCccdValue (device, 0x002 );
62+ written = booleanCharacteristic.writeValue (v);
63+ /* No peers connected */
64+ REQUIRE ( written == 0 );
65+ booleanCharacteristic.local ()->writeCccdValue (device, 0x001 );
66+ written = booleanCharacteristic.writeValue (v);
67+ /* No peers connected */
68+ REQUIRE ( written == 0 );
4969 }
5070
5171 WHEN (" Create a char characteristic" )
5272 {
53- BLECharCharacteristic charCharacteristic (" Char" , BLERead | BLEIndicate | BLEWrite );
73+ BLECharCharacteristic charCharacteristic (" Char" , BLEBroadcast | BLEIndicate | BLENotify );
5474 char v = ' a' ;
5575 int written = charCharacteristic.writeValue (v);
5676 REQUIRE ( written == sizeof (char ) );
77+
78+ BLEDevice device;
79+ charCharacteristic.local ()->writeCccdValue (device, 0x002 );
80+ written = charCharacteristic.writeValue (v);
81+ /* No peers connected */
82+ REQUIRE ( written == 0 );
83+ charCharacteristic.local ()->writeCccdValue (device, 0x001 );
84+ written = charCharacteristic.writeValue (v);
85+ /* No peers connected */
86+ REQUIRE ( written == 0 );
5787 }
5888
5989 WHEN (" Create a unsigned char characteristic" )
6090 {
61- BLEUnsignedCharCharacteristic unsignedCharCharacteristic (" UnsignedChar" , BLERead | BLEIndicate | BLEWrite );
91+ BLEUnsignedCharCharacteristic unsignedCharCharacteristic (" UnsignedChar" , BLEBroadcast | BLEIndicate | BLENotify );
6292 unsigned char v = 0x01 ;
6393 int written = unsignedCharCharacteristic.writeValue (v);
6494 REQUIRE ( written == sizeof (unsigned char ) );
95+
96+ BLEDevice device;
97+ unsignedCharCharacteristic.local ()->writeCccdValue (device, 0x002 );
98+ written = unsignedCharCharacteristic.writeValue (v);
99+ /* No peers connected */
100+ REQUIRE ( written == 0 );
101+ unsignedCharCharacteristic.local ()->writeCccdValue (device, 0x001 );
102+ written = unsignedCharCharacteristic.writeValue (v);
103+ /* No peers connected */
104+ REQUIRE ( written == 0 );
65105 }
66106
67107 WHEN (" Create a byte characteristic" )
68108 {
69- BLEByteCharacteristic byteCharacteristic (" Byte" , BLERead | BLEIndicate | BLEWrite );
109+ BLEByteCharacteristic byteCharacteristic (" Byte" , BLEBroadcast | BLEIndicate | BLENotify );
70110 byte v = 0x01 ;
71111 int written = byteCharacteristic.writeValue (v);
72112 REQUIRE ( written == sizeof (byte) );
113+
114+ BLEDevice device;
115+ byteCharacteristic.local ()->writeCccdValue (device, 0x002 );
116+ written = byteCharacteristic.writeValue (v);
117+ /* No peers connected */
118+ REQUIRE ( written == 0 );
119+ byteCharacteristic.local ()->writeCccdValue (device, 0x001 );
120+ written = byteCharacteristic.writeValue (v);
121+ /* No peers connected */
122+ REQUIRE ( written == 0 );
73123 }
74124
75125 WHEN (" Create a short characteristic" )
76126 {
77- BLEShortCharacteristic shortCharacteristic (" Short" , BLERead | BLEIndicate | BLEWrite );
127+ BLEShortCharacteristic shortCharacteristic (" Short" , BLEBroadcast | BLEIndicate | BLENotify );
78128 short v = -1 ;
79129 int written = shortCharacteristic.writeValue (v);
80130 REQUIRE ( written == sizeof (short ) );
131+
132+ BLEDevice device;
133+ shortCharacteristic.local ()->writeCccdValue (device, 0x002 );
134+ written = shortCharacteristic.writeValue (v);
135+ /* No peers connected */
136+ REQUIRE ( written == 0 );
137+ shortCharacteristic.local ()->writeCccdValue (device, 0x001 );
138+ written = shortCharacteristic.writeValue (v);
139+ /* No peers connected */
140+ REQUIRE ( written == 0 );
81141 }
82142
83143 WHEN (" Create a unsigned short characteristic" )
84144 {
85- BLEUnsignedShortCharacteristic unsignedShortCharacteristic (" UnsignedShort" , BLERead | BLEIndicate | BLEWrite );
145+ BLEUnsignedShortCharacteristic unsignedShortCharacteristic (" UnsignedShort" , BLEBroadcast | BLEIndicate | BLENotify );
86146 unsigned short v = 1 ;
87147 int written = unsignedShortCharacteristic.writeValue (v);
88148 REQUIRE ( written == sizeof (unsigned short ) );
149+
150+ BLEDevice device;
151+ unsignedShortCharacteristic.local ()->writeCccdValue (device, 0x002 );
152+ written = unsignedShortCharacteristic.writeValue (v);
153+ /* No peers connected */
154+ REQUIRE ( written == 0 );
155+ unsignedShortCharacteristic.local ()->writeCccdValue (device, 0x001 );
156+ written = unsignedShortCharacteristic.writeValue (v);
157+ /* No peers connected */
158+ REQUIRE ( written == 0 );
89159 }
90160
91161 WHEN (" Create a word characteristic" )
92162 {
93- BLEWordCharacteristic wordCharacteristic (" Word" , BLERead | BLEIndicate | BLEWrite );
163+ BLEWordCharacteristic wordCharacteristic (" Word" , BLEBroadcast | BLEIndicate | BLENotify );
94164 word v = -1 ;
95165 int written = wordCharacteristic.writeValue (v);
96166 REQUIRE ( written == sizeof (word) );
167+
168+ BLEDevice device;
169+ wordCharacteristic.local ()->writeCccdValue (device, 0x002 );
170+ written = wordCharacteristic.writeValue (v);
171+ /* No peers connected */
172+ REQUIRE ( written == 0 );
173+ wordCharacteristic.local ()->writeCccdValue (device, 0x001 );
174+ written = wordCharacteristic.writeValue (v);
175+ /* No peers connected */
176+ REQUIRE ( written == 0 );
97177 }
98178
99179 WHEN (" Create a int characteristic" )
100180 {
101- BLEIntCharacteristic intCharacteristic (" Int" , BLERead | BLEIndicate | BLEWrite );
181+ BLEIntCharacteristic intCharacteristic (" Int" , BLEBroadcast | BLEIndicate | BLENotify );
102182 int v = -1 ;
103183 int written = intCharacteristic.writeValue (v);
104184 REQUIRE ( written == sizeof (int ) );
185+
186+ BLEDevice device;
187+ intCharacteristic.local ()->writeCccdValue (device, 0x002 );
188+ written = intCharacteristic.writeValue (v);
189+ /* No peers connected */
190+ REQUIRE ( written == 0 );
191+ intCharacteristic.local ()->writeCccdValue (device, 0x001 );
192+ written = intCharacteristic.writeValue (v);
193+ /* No peers connected */
194+ REQUIRE ( written == 0 );
105195 }
106196
107197 WHEN (" Create a unsigned int characteristic" )
108198 {
109- BLEUnsignedIntCharacteristic unsignedIntCharacteristic (" UnsignedInt" , BLERead | BLEIndicate | BLEWrite );
199+ BLEUnsignedIntCharacteristic unsignedIntCharacteristic (" UnsignedInt" , BLEBroadcast | BLEIndicate | BLENotify );
110200 unsigned int v = 1 ;
111201 int written = unsignedIntCharacteristic.writeValue (v);
112202 REQUIRE ( written == sizeof (unsigned int ) );
203+
204+ BLEDevice device;
205+ unsignedIntCharacteristic.local ()->writeCccdValue (device, 0x002 );
206+ written = unsignedIntCharacteristic.writeValue (v);
207+ /* No peers connected */
208+ REQUIRE ( written == 0 );
209+ unsignedIntCharacteristic.local ()->writeCccdValue (device, 0x001 );
210+ written = unsignedIntCharacteristic.writeValue (v);
211+ /* No peers connected */
212+ REQUIRE ( written == 0 );
113213 }
114214
115215 WHEN (" Create a long characteristic" )
116216 {
117- BLELongCharacteristic longCharacteristic (" Long" , BLERead | BLEIndicate | BLEWrite );
217+ BLELongCharacteristic longCharacteristic (" Long" , BLEBroadcast | BLEIndicate | BLENotify );
118218 long v = -1 ;
119219 int written = longCharacteristic.writeValue (v);
120220 REQUIRE ( written == sizeof (long ) );
221+
222+ BLEDevice device;
223+ longCharacteristic.local ()->writeCccdValue (device, 0x002 );
224+ written = longCharacteristic.writeValue (v);
225+ /* No peers connected */
226+ REQUIRE ( written == 0 );
227+ longCharacteristic.local ()->writeCccdValue (device, 0x001 );
228+ written = longCharacteristic.writeValue (v);
229+ /* No peers connected */
230+ REQUIRE ( written == 0 );
121231 }
122232
123233 WHEN (" Create a unsigned long characteristic" )
124234 {
125- BLEUnsignedLongCharacteristic unsignedLongCharacteristic (" UnsignedLong" , BLERead | BLEIndicate | BLEWrite );
235+ BLEUnsignedLongCharacteristic unsignedLongCharacteristic (" UnsignedLong" , BLEBroadcast | BLEIndicate | BLENotify );
126236 unsigned long v = 1 ;
127237 int written = unsignedLongCharacteristic.writeValue (v);
128238 REQUIRE ( written == sizeof (unsigned long ) );
239+
240+ BLEDevice device;
241+ unsignedLongCharacteristic.local ()->writeCccdValue (device, 0x002 );
242+ written = unsignedLongCharacteristic.writeValue (v);
243+ /* No peers connected */
244+ REQUIRE ( written == 0 );
245+ unsignedLongCharacteristic.local ()->writeCccdValue (device, 0x001 );
246+ written = unsignedLongCharacteristic.writeValue (v);
247+ /* No peers connected */
248+ REQUIRE ( written == 0 );
129249 }
130250
131251 WHEN (" Create a float characteristic" )
132252 {
133- BLEFloatCharacteristic floatCharacteristic (" Float" , BLERead | BLEIndicate | BLEWrite );
253+ BLEFloatCharacteristic floatCharacteristic (" Float" , BLEBroadcast | BLEIndicate | BLENotify );
134254 float v = -1 .0f ;
135255 int written = floatCharacteristic.writeValue (v);
136256 REQUIRE ( written == sizeof (float ) );
257+
258+ BLEDevice device;
259+ floatCharacteristic.local ()->writeCccdValue (device, 0x002 );
260+ written = floatCharacteristic.writeValue (v);
261+ /* No peers connected */
262+ REQUIRE ( written == 0 );
263+ floatCharacteristic.local ()->writeCccdValue (device, 0x001 );
264+ written = floatCharacteristic.writeValue (v);
265+ /* No peers connected */
266+ REQUIRE ( written == 0 );
137267 }
138268
139269 WHEN (" Create a double characteristic" )
140270 {
141- BLEDoubleCharacteristic doubleCharacteristic (" Double" , BLERead | BLEIndicate | BLEWrite );
271+ BLEDoubleCharacteristic doubleCharacteristic (" Double" , BLEBroadcast | BLEIndicate | BLENotify );
142272 double v = -1.0 ;
143273 int written = doubleCharacteristic.writeValue (v);
144274 REQUIRE ( written == sizeof (double ) );
275+
276+ BLEDevice device;
277+ doubleCharacteristic.local ()->writeCccdValue (device, 0x002 );
278+ written = doubleCharacteristic.writeValue (v);
279+ /* No peers connected */
280+ REQUIRE ( written == 0 );
281+ doubleCharacteristic.local ()->writeCccdValue (device, 0x001 );
282+ written = doubleCharacteristic.writeValue (v);
283+ /* No peers connected */
284+ REQUIRE ( written == 0 );
145285 }
146286
147287 WHEN (" Create a string characteristic" )
148288 {
149289 const int maxStringLength = 64 ;
150- BLEStringCharacteristic stringCharacteristic (" String" , BLERead | BLEIndicate | BLEWrite , maxStringLength);
290+ BLEStringCharacteristic stringCharacteristic (" String" , BLEBroadcast | BLEIndicate | BLENotify , maxStringLength);
151291 const char * v = " Hello" ;
152292 int written = stringCharacteristic.writeValue (v);
153293 REQUIRE ( written == min (strlen (v), maxStringLength) );
294+
295+ BLEDevice device;
296+ stringCharacteristic.local ()->writeCccdValue (device, 0x002 );
297+ written = stringCharacteristic.writeValue (v);
298+ /* No peers connected */
299+ REQUIRE ( written == 0 );
300+ stringCharacteristic.local ()->writeCccdValue (device, 0x001 );
301+ written = stringCharacteristic.writeValue (v);
302+ /* No peers connected */
303+ REQUIRE ( written == 0 );
154304 }
155305
156306 WHEN (" Create a too long string characteristic" )
157307 {
158308 const int maxStringLength = 4 ;
159- BLEStringCharacteristic stringCharacteristic (" String" , BLERead | BLEIndicate | BLEWrite , maxStringLength);
309+ BLEStringCharacteristic stringCharacteristic (" String" , BLEBroadcast | BLEIndicate | BLENotify , maxStringLength);
160310 const char * v = " Hello" ;
161311 int written = stringCharacteristic.writeValue (v);
162312 REQUIRE ( written == min (strlen (v), maxStringLength) );
313+
314+ BLEDevice device;
315+ stringCharacteristic.local ()->writeCccdValue (device, 0x002 );
316+ written = stringCharacteristic.writeValue (v);
317+ /* No peers connected */
318+ REQUIRE ( written == 0 );
319+ stringCharacteristic.local ()->writeCccdValue (device, 0x001 );
320+ written = stringCharacteristic.writeValue (v);
321+ /* No peers connected */
322+ REQUIRE ( written == 0 );
163323 }
164324
165325}
0 commit comments