     public var description: String {
         
         return interval.description
+    }
+}
+
+/// The LE Bluetooth Device Address data type defines the device address of the local device and the address type on the LE transport.
+///
+/// Size: 7 octets.
+/// The format of the 6 least significant Octets is the same as the Device Address defined in [Vol. 6], Part B, Section 1.3.
+/// The least significant bit of the most significant octet defines if the Device Address is a Public Address or a Random Address.
+/// LSB = 1 Then Random Device Address. LSB = 0 Then Public Device Address.
+/// Bits 1 to 7 in the most significant octet are reserved for future use.
+public struct GAPLEBluetoothDeviceAddress: GAPData {
+    
+    public static let length = 7
+    
+    public static let dataType: GAPDataType = .LEBluetoothDeviceAddress
+    
+    public let address: (GAPAddress, GAPLEBluetoothDeviceAddressType)
+    
+    public init(address: (GAPAddress, GAPLEBluetoothDeviceAddressType)) {
+        
+        self.address = address
+    }
+    
+    public init?(data: Data) {
+        
+        guard data.count == type(of: self).length
+            else { return nil }
+        
+        let address = GAPAddress(companyAssigned: (data[0], data[1], data[2]), companyId: (data[3], data[4], data[5]))
+        
+        guard let type = GAPLEBluetoothDeviceAddressType(rawValue: data[6])
+            else { return nil }
+        
+        self.init(address: (address, type))
+    }
+    
+    public var data: Data {
+        
+        return address.0.data + address.1.data
+    }
+    
+}
+
+public enum GAPLEBluetoothDeviceAddressType: UInt8 {
+    
+    /// LE Limited Discoverable Mode
+    case ´public´ = 0b00
+    
+    /// LE General Discoverable Mode
+    case random = 0b01
+    
+    public var data: Data {
+        
+        return Data(bytes: [self.rawValue])
     }
 }
 

    
    public static let dataType: GAPDataType = .publicTargetAddress
    
    public let targetAddresses: [GAPTargetAddress]
    
    public init(targetAddresses: [GAPTargetAddress]) {
        
        self.targetAddresses = targetAddresses
    }

    
}

extension GAPAddress: Equatable {
    
    public static func == (lhs: GAPAddress, rhs: GAPAddress) -> Bool {
        
        return lhs.companyAssigned == rhs.companyAssigned && lhs.companyId == rhs.companyId
    }
