Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d909b6c

Browse files
committed
clear characteristic cccd value when disconnect
1 parent 30e2cac commit d909b6c

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

‎src/utility/ATT.cpp‎

Lines changed: 17 additions & 0 deletions
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;
@@ -566,6 +582,7 @@ bool ATTClass::disconnect()
566582
_peers[i].device = NULL;
567583
}
568584

585+
569586
return (numDisconnects > 0);
570587
}
571588

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /