Skip to content

Commit 80036ba

Browse files
fabik111pennam
authored andcommitted
clear characteristic cccd value when disconnect
1 parent c91c02c commit 80036ba

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/utility/ATT.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,22 @@ bool ATTClass::disconnect()
553553

554554
numDisconnects++;
555555

556+
BLEDevice bleDevice(_peers[i].addressType, _peers[i].address);
557+
558+
// clear CCCD values on disconnect
559+
for (uint16_t att = 0; att < GATT.attributeCount(); att++) {
560+
BLELocalAttribute* attribute = GATT.attribute(att);
561+
562+
if (attribute->type() == BLETypeCharacteristic) {
563+
BLELocalCharacteristic* characteristic = (BLELocalCharacteristic*)attribute;
564+
565+
characteristic->writeCccdValue(bleDevice, 0x0000);
566+
}
567+
}
568+
569+
_longWriteHandle = 0x0000;
570+
_longWriteValueLength = 0;
571+
556572
_peers[i].connectionHandle = 0xffff;
557573
_peers[i].role = 0x00;
558574
_peers[i].addressType = 0x00;

0 commit comments

Comments
 (0)