             validValuesRange: validValuesRange)
     }
 
+    static func activityInterval(
+        _ value: UInt32 = 0,
+        permissions: [CharacteristicPermission] = [.read, .events],
+        description: String? = "Activity Interval",
+        format: CharacteristicFormat? = .uint32,
+        unit: CharacteristicUnit? = nil,
+        maxLength: Int? = nil,
+        maxValue: Double? = nil,
+        minValue: Double? = 0,
+        minStep: Double? = 1,
+        validValues: [Double] = [],
+        validValuesRange: Range<Double>? = nil
+    ) -> GenericCharacteristic<UInt32> {
+        return GenericCharacteristic<UInt32>(
+            type: .activityInterval,
+            value: value,
+            permissions: permissions,
+            description: description,
+            format: format,
+            unit: unit,
+            maxLength: maxLength,
+            maxValue: maxValue,
+            minValue: minValue,
+            minStep: minStep,
+            validValues: validValues,
+            validValuesRange: validValuesRange)
+    }
+
     static func administratorOnlyAccess(
         _ value: Bool = false,
         permissions: [CharacteristicPermission] = [.read, .write, .events],

    static let accessoryFlags = CharacteristicType(0x00A6)
    static let active = CharacteristicType(0x00B0)
    static let activeIdentifier = CharacteristicType(0x00E7)
    static let administratorOnlyAccess = CharacteristicType(0x0001)
    static let applicationMatchingIdentifier = CharacteristicType(0x00A4)
    static let audioFeedback = CharacteristicType(0x0005)

        case .accessoryFlags: return "Accessory Flags"
        case .active: return "Active"
        case .activeIdentifier: return "Active Identifier"
        case .activityInterval: return "Activity Interval"
        case .administratorOnlyAccess: return "Administrator Only Access"
        case .applicationMatchingIdentifier: return "Application Matching Identifier"
        case .audioFeedback: return "Audio Feedback"
