Skip to content

Device Support

Latisha. edited this page Dec 27, 2024 · 1 revision

Device Support

Supported Devices

Suunto

Model Protocol Supported Features Minimum Firmware
EON Steel BLE Full Support 1.0.0
EON Steel Black BLE Full Support 1.0.0
EON Core BLE Full Support 1.0.0
D5 BLE Full Support 1.0.0

Shearwater

Model Protocol Supported Features Minimum Firmware
Petrel BLE Full Support All Versions
Petrel 2 BLE Full Support All Versions
Petrel 3 BLE Full Support All Versions
Perdix BLE Full Support All Versions
Perdix AI BLE Full Support All Versions
NERD BLE Full Support All Versions
NERD 2 BLE Full Support All Versions
Teric BLE Full Support All Versions
Peregrine BLE Full Support All Versions

Device-Specific Features

Suunto EON Series

// Device identification
let deviceInfo = DeviceConfiguration.identifyDevice(name: "EON Steel")
if case .suuntoEonSteel = deviceInfo?.family {
    // EON Steel specific features
}

Supported Features

  • Real-time dive data streaming
  • Dive log retrieval with fingerprinting
  • Gas mix configuration
  • Device settings access
  • Firmware version reading

Special Considerations

  • Requires pairing mode activation
  • Limited background operation
  • Battery level monitoring

Shearwater Series

// Device identification
let deviceInfo = DeviceConfiguration.identifyDevice(name: "Petrel 3")
if case .shearwaterPetrel = deviceInfo?.family {
    // Petrel specific features
}

Supported Features

  • Comprehensive dive log access
  • Tank pressure monitoring (AI models)
  • Decompression calculations
  • Complete device information
  • Settings configuration

Special Considerations

  • Model-specific connection sequences
  • Extended data formats
  • Variable packet sizes

Known Limitations

General Limitations

  1. Connection Stability

    • Maximum connection distance: ~10 meters
    • Potential interference from water/metal
    • Background mode restrictions
  2. Data Transfer

    • Maximum packet size: 20 bytes
    • Transfer speed limitations
    • Retry mechanisms needed
  3. Power Management

    • High battery consumption during transfers
    • Connection drops on low battery
    • Sleep mode interference

Device-Specific Limitations

Suunto EON Series

struct EONLimitations {
    static let maxLogsPerTransfer = 100
    static let maxTransferSize = 1024 * 1024 // 1MB
    static let minBatteryLevel = 10 // percent
}
  • Limited background operation
  • Specific pairing sequence required
  • Firmware version dependencies

Shearwater Series

struct ShearwaterLimitations {
    static let maxPacketSize = 20
    static let timeoutInterval = 30.0
    static let maxRetries = 3
}
  • Model-specific timing requirements
  • Variable packet handling
  • Connection sequence variations

Adding New Device Support

Implementation Steps

  1. Define Device Family
extension DeviceConfiguration.DeviceFamily {
    case newDeviceFamily
    
    var asDCFamily: dc_family_t {
        switch self {
        case .newDeviceFamily:
            return DC_FAMILY_NEW_DEVICE
        }
    }
}
  1. Add Device Models
public struct NewDeviceModel {
    public static let modelOne: UInt32 = 1
    public static let modelTwo: UInt32 = 2
}
  1. Implement Device Identification
extension DeviceConfiguration {
    static func identifyNewDevice(name: String) -> (family: DeviceFamily, model: UInt32)? {
        // Device identification logic
    }
}
  1. Add Parser Support
extension GenericParser {
    static func parseNewDeviceData(
        data: Data,
        model: UInt32
    ) throws -> DiveData {
        // Parsing implementation
    }
}

Testing Requirements

  1. Basic Connectivity

    • Device discovery
    • Connection establishment
    • Data transfer verification
  2. Data Parsing

    • Sample data validation
    • Edge case handling
    • Error condition testing
  3. Integration Testing

    • Full download cycle
    • Error recovery
    • Performance metrics

Documentation Requirements

  1. Device Specifications

    • Protocol details
    • Data formats
    • Timing requirements
  2. Implementation Details

    • Connection sequence
    • Data handling
    • Error handling
  3. Usage Examples

    • Basic operations
    • Common patterns
    • Error handling

Validation Checklist

  • Device discovery functional
  • Stable connection established
  • Data transfer verified
  • Parsing implemented
  • Error handling complete
  • Documentation updated
  • Tests implemented
  • Performance verified