             ]
         }
         
-        /// Type for Primary_Advertising_Interval_Min and Primary_Advertising_Interval_Max
-        public struct PrimaryAdvertisingInterval: RawRepresentable, Equatable, Hashable, Comparable {
-            
-            /// 20 ms
-            public static let min = PrimaryAdvertisingInterval(0x000020)
-            
-            /// 10,485.759375 seconds
-            public static let max = PrimaryAdvertisingInterval(0xFFFFFF)
-            
-            public let rawValue: UInt32
-            
-            public init?(rawValue: UInt32) {
-                
-                guard rawValue >= PrimaryAdvertisingInterval.min.rawValue,
-                    rawValue <= PrimaryAdvertisingInterval.max.rawValue
-                    else { return nil }
-                
-                assert((PrimaryAdvertisingInterval.min.rawValue ... PrimaryAdvertisingInterval.max.rawValue).contains(rawValue))
+        public struct PrimaryAdvertisingInterval: RawRepresentable, Equatable {
+            
+            public typealias RawValue = CountableClosedRange<UInt32>
+            
+            /// Maximum interval range.
+            public static let full = PrimaryAdvertisingInterval(rawValue: .min ... .max)
+            
+            public let rawValue: RawValue
+            
+            public init(rawValue: RawValue) {
                 
                 self.rawValue = rawValue
             }
             
-            /// Time = N * 0.625 msec
-            public var miliseconds: Double {
-                
-                return Double(rawValue) * 0.625
-            }
-            
-            // Private, unsafe
-            private init(_ rawValue: UInt32) {
-                self.rawValue = rawValue
+            /// Time = N * 0.625 msec.
+            public var miliseconds: ClosedRange<Double> {
+                
+                let miliseconds = Double(0.625)
+                
+                let min = Double(rawValue.lowerBound) * miliseconds
+                
+                let max = Double(rawValue.upperBound) * miliseconds
+                
+                return min ... max
             }
             
             // Equatable

        public var byteValue: [UInt8] {
            
            let advertisingEventPropertiesBytes = advertisingEventProperties.rawValue.littleEndian.bytes
            let primaryAdvertisingMinimumBytes = primaryAdvertising.minimum.rawValue.littleEndian.bytes
            let primaryAdvertisingMaximunBytes = primaryAdvertising.maximum.rawValue.littleEndian.bytes
            let addressBytes = peerAddress.littleEndian.bytes
            
            let advertisingTxPowerByte = UInt8.init(bitPattern: advertisingTxPower.rawValue)

                
                return lhs.rawValue == rhs.rawValue
            }
        }
        

        /// The Advertising_Event_Properties parameter describes the type of advertising event that is being configured
        /// and its basic properties.
