-
-
Notifications
You must be signed in to change notification settings - Fork 1
Device Support
Latisha. edited this page Dec 27, 2024
·
1 revision
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 |
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 identification
let deviceInfo = DeviceConfiguration.identifyDevice(name: "EON Steel")
if case .suuntoEonSteel = deviceInfo?.family {
// EON Steel specific features
}
- Real-time dive data streaming
- Dive log retrieval with fingerprinting
- Gas mix configuration
- Device settings access
- Firmware version reading
- Requires pairing mode activation
- Limited background operation
- Battery level monitoring
// Device identification
let deviceInfo = DeviceConfiguration.identifyDevice(name: "Petrel 3")
if case .shearwaterPetrel = deviceInfo?.family {
// Petrel specific features
}
- Comprehensive dive log access
- Tank pressure monitoring (AI models)
- Decompression calculations
- Complete device information
- Settings configuration
- Model-specific connection sequences
- Extended data formats
- Variable packet sizes
-
Connection Stability
- Maximum connection distance: ~10 meters
- Potential interference from water/metal
- Background mode restrictions
-
Data Transfer
- Maximum packet size: 20 bytes
- Transfer speed limitations
- Retry mechanisms needed
-
Power Management
- High battery consumption during transfers
- Connection drops on low battery
- Sleep mode interference
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
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
- Define Device Family
extension DeviceConfiguration.DeviceFamily {
case newDeviceFamily
var asDCFamily: dc_family_t {
switch self {
case .newDeviceFamily:
return DC_FAMILY_NEW_DEVICE
}
}
}
- Add Device Models
public struct NewDeviceModel {
public static let modelOne: UInt32 = 1
public static let modelTwo: UInt32 = 2
}
- Implement Device Identification
extension DeviceConfiguration {
static func identifyNewDevice(name: String) -> (family: DeviceFamily, model: UInt32)? {
// Device identification logic
}
}
- Add Parser Support
extension GenericParser {
static func parseNewDeviceData(
data: Data,
model: UInt32
) throws -> DiveData {
// Parsing implementation
}
}
-
Basic Connectivity
- Device discovery
- Connection establishment
- Data transfer verification
-
Data Parsing
- Sample data validation
- Edge case handling
- Error condition testing
-
Integration Testing
- Full download cycle
- Error recovery
- Performance metrics
-
Device Specifications
- Protocol details
- Data formats
- Timing requirements
-
Implementation Details
- Connection sequence
- Data handling
- Error handling
-
Usage Examples
- Basic operations
- Common patterns
- Error handling
- Device discovery functional
- Stable connection established
- Data transfer verified
- Parsing implemented
- Error handling complete
- Documentation updated
- Tests implemented
- Performance verified