I might end up answering my own question. From the best I can tell, setting the automatic flag to true only automatically subscribes to all of the characteristics.
if (automatic) {
Vector<BleCharacteristic> characteristics = discoverAllCharacteristics();
for (auto& characteristic : characteristics) {
characteristic.subscribe(true);
}
}
I am not sure why this would prevent the device from negotiating an MTU when it is set to true or my ability to read from a characteristic when it is set to false.
It appears that discoverAllCharacteristics() does a bit more than just return a vector of characteristics on the peripheral. The call to discoverAllCharacteristics() appears to be undocumented.
@happicow There is a category especially for BLE related topics! You might also tick as solved if you feel you’ve answered your own question. Documentation in general for BLE is better than before but not complete.