mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
- Added BleCommandQueue to manage command serialization and responses in BleCommandSender. - Updated writeData, writeDataAndWaitForAck, and writeDataAndWaitForResponse methods to utilize the command queue. - Enhanced BleResponseHandler to complete commands based on responses received from the BLE device. - Introduced new commands for channel management, including getChannel and setChannel. - Created LocationTrailLayer and TrailControls widgets for displaying and managing location trails on the map. - Added PermissionRequestDialog to handle location permission requests on app startup. - Updated LocationTrackingService to allow GPS tracking without a BLE connection.
76 lines
1.7 KiB
Dart
76 lines
1.7 KiB
Dart
/// Channel model - represents a communication channel
|
|
class Channel {
|
|
final int index;
|
|
final String name;
|
|
final int? flags;
|
|
|
|
Channel({
|
|
required this.index,
|
|
required this.name,
|
|
this.flags,
|
|
});
|
|
|
|
/// Display name for the channel
|
|
/// Returns "Public" for channel 0, otherwise returns the custom name or "Channel N"
|
|
String get displayName {
|
|
if (index == 0) {
|
|
return name.isEmpty ? 'Public' : name;
|
|
}
|
|
return name.isEmpty ? 'Channel $index' : name;
|
|
}
|
|
|
|
/// Check if channel is the public channel (index 0)
|
|
bool get isPublicChannel => index == 0;
|
|
|
|
/// Check if channel has a custom name
|
|
bool get hasCustomName => name.isNotEmpty;
|
|
|
|
/// Create from JSON
|
|
factory Channel.fromJson(Map<String, dynamic> json) {
|
|
return Channel(
|
|
index: json['index'] as int,
|
|
name: json['name'] as String? ?? '',
|
|
flags: json['flags'] as int?,
|
|
);
|
|
}
|
|
|
|
/// Convert to JSON
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'index': index,
|
|
'name': name,
|
|
'flags': flags,
|
|
};
|
|
}
|
|
|
|
/// Create a copy with modified fields
|
|
Channel copyWith({
|
|
int? index,
|
|
String? name,
|
|
int? flags,
|
|
}) {
|
|
return Channel(
|
|
index: index ?? this.index,
|
|
name: name ?? this.name,
|
|
flags: flags ?? this.flags,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return 'Channel(index: $index, name: $name, flags: $flags)';
|
|
}
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
return other is Channel &&
|
|
other.index == index &&
|
|
other.name == name &&
|
|
other.flags == flags;
|
|
}
|
|
|
|
@override
|
|
int get hashCode => Object.hash(index, name, flags);
|
|
}
|