feat: Add Packet Log Screen for BLE packet logging and exporting

- Implemented PacketLogScreen to display and filter BLE packet logs.
- Added functionality to export logs as CSV and text files.
- Introduced clipboard copy feature for hex data.
- Implemented clear logs functionality with confirmation dialog.
- Enhanced MeshCoreBleService to log TX and RX packets with descriptions.
- Added BufferReader methods for reading unsigned and signed 16-bit integers (big-endian).
- Updated CayenneLppParser to read values as big-endian.
- Created MessageStorageService for persisting messages to local storage.
- Enhanced map markers to display telemetry data including voltage, humidity, and pressure.
This commit is contained in:
Janez T
2025-10-14 15:27:18 +02:00
parent ccec842672
commit 59de627289
20 changed files with 4960 additions and 153 deletions

View File

@@ -80,24 +80,57 @@ class AppProvider with ChangeNotifier {
// Load contacts
await connectionProvider.getContacts();
// Sync any waiting messages from device queue
await _syncMessages();
notifyListeners();
} catch (e) {
debugPrint('Initialization error: $e');
}
}
/// Sync messages from device queue
Future<void> _syncMessages() async {
if (!connectionProvider.deviceInfo.isConnected) return;
try {
debugPrint('🔄 [AppProvider] Starting message sync...');
final messageCount = await connectionProvider.syncAllMessages();
debugPrint('✅ [AppProvider] Synced $messageCount messages');
} catch (e) {
debugPrint('❌ [AppProvider] Message sync error: $e');
}
}
/// Refresh data (contacts, messages)
Future<void> refresh() async {
if (!connectionProvider.deviceInfo.isConnected) return;
try {
await connectionProvider.getContacts();
await _syncMessages();
notifyListeners();
} catch (e) {
debugPrint('Refresh error: $e');
}
}
/// Manually sync messages (useful for pull-to-refresh)
Future<int> syncMessages() async {
if (!connectionProvider.deviceInfo.isConnected) return 0;
try {
debugPrint('🔄 [AppProvider] Manual message sync requested');
final messageCount = await connectionProvider.syncAllMessages();
debugPrint('✅ [AppProvider] Synced $messageCount messages');
notifyListeners();
return messageCount;
} catch (e) {
debugPrint('❌ [AppProvider] Message sync error: $e');
return 0;
}
}
/// Clear all data
void clearAllData() {
contactsProvider.clearContacts();