     /// This sub-procedure is used to read a Characteristic Value from a server when the client knows
     /// the Characteristic Value Handle and the length of the Characteristic Value is longer than can
     /// be sent in a single Read Response Attribute Protocol message.
+    ///
+    /// ![Image](https://github.com/PureSwift/BluetoothLinux/raw/master/Assets/ReadLongCharacteristicValues.png)
     @inline(__always)
     private func readLongCharacteristicValue(_ operation: ReadOperation) {
         

    
    /// Read Multiple Characteristic Values
    ///
    /// This sub-procedure is used to read multiple Characteristic Values from a server when the client knows the Characteristic Value Handles.
    ///
    /// - Note: A client should not use this request for attributes when the Set Of Values parameter could be (ATT_MTU–1)
    /// as it will not be possible to determine if the last attribute value is complete, or if it overflowed.
    public func readCharacteristics(_ characteristics: [Characteristic], completion: @escaping (GATTClientResponse<Data>) -> ()) {
        

    ///
    /// This sub-procedure is used to read a Characteristic Value from a server when the client
    /// only knows the characteristic UUID and does not know the handle of the characteristic.
    ///
    /// ![Image](https://github.com/PureSwift/BluetoothLinux/raw/master/Assets/ReadUsingCharacteristicUUID.png)
    public func readCharacteristics(using uuid: BluetoothUUID,
                                    handleRange: (start: UInt16, end: UInt16) = (.min, .max),
                                    completion: @escaping (GATTClientResponse<[UInt16: Data]>) -> ()) {
