mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-04-20 22:13:48 +00:00
clean
This commit is contained in:
parent
367e47bb1e
commit
524558c511
11 changed files with 79 additions and 72 deletions
|
|
@ -748,7 +748,10 @@ class MeshCoreConnector extends ChangeNotifier {
|
|||
try {
|
||||
await FlutterBluePlus.stopScan();
|
||||
} catch (e) {
|
||||
debugPrint('[FBP] stopScan error in startScan (ignored): $e');
|
||||
_appDebugLogService?.warn(
|
||||
'stopScan error in startScan (ignored): $e',
|
||||
tag: 'BLE Scan',
|
||||
);
|
||||
}
|
||||
}
|
||||
await _scanSubscription?.cancel();
|
||||
|
|
@ -808,7 +811,10 @@ class MeshCoreConnector extends ChangeNotifier {
|
|||
try {
|
||||
await FlutterBluePlus.stopScan();
|
||||
} catch (e) {
|
||||
debugPrint('[FBP] stopScan error (ignored): $e');
|
||||
_appDebugLogService?.warn(
|
||||
'stopScan error (ignored): $e',
|
||||
tag: 'BLE Scan',
|
||||
);
|
||||
}
|
||||
}
|
||||
await _scanSubscription?.cancel();
|
||||
|
|
|
|||
|
|
@ -1809,7 +1809,7 @@
|
|||
"usbScreenEmptyState": "Няма открити USB устройства. Включете едно и опитайте отново.",
|
||||
"usbErrorPermissionDenied": "Не беше разрешено достъпът през USB.",
|
||||
"usbErrorDeviceMissing": "Избраното USB устройство вече не е налично.",
|
||||
"usbErrorInvalidPort": "Изберете валитно USB устройство.",
|
||||
"usbErrorInvalidPort": "Изберете валидно USB устройство.",
|
||||
"usbErrorBusy": "Друг мол за свързване през USB вече е в процес на изпълнение.",
|
||||
"usbErrorNotConnected": "Няма свързано USB устройство.",
|
||||
"usbErrorOpenFailed": "Не успях да отворя избраното USB устройство.",
|
||||
|
|
|
|||
|
|
@ -190,20 +190,20 @@
|
|||
"appSettings_language": "Language",
|
||||
"appSettings_languageSystem": "System default",
|
||||
"appSettings_languageEn": "English",
|
||||
"appSettings_languageFr": "Français",
|
||||
"appSettings_languageEs": "Español",
|
||||
"appSettings_languageFr": "Français",
|
||||
"appSettings_languageEs": "Español",
|
||||
"appSettings_languageDe": "Deutsch",
|
||||
"appSettings_languagePl": "Polski",
|
||||
"appSettings_languageSl": "SlovenÅ¡Äina",
|
||||
"appSettings_languagePt": "Português",
|
||||
"appSettings_languageSl": "Slovenščina",
|
||||
"appSettings_languagePt": "Português",
|
||||
"appSettings_languageIt": "Italiano",
|
||||
"appSettings_languageZh": "䏿–‡",
|
||||
"appSettings_languageZh": "中文",
|
||||
"appSettings_languageSv": "Svenska",
|
||||
"appSettings_languageNl": "Nederlands",
|
||||
"appSettings_languageSk": "SlovenÄina",
|
||||
"appSettings_languageBg": "БългарÑки",
|
||||
"appSettings_languageRu": "РуÑÑкий",
|
||||
"appSettings_languageUk": "УкраїнÑька",
|
||||
"appSettings_languageSk": "Slovenčina",
|
||||
"appSettings_languageBg": "Български",
|
||||
"appSettings_languageRu": "Русский",
|
||||
"appSettings_languageUk": "Українська",
|
||||
"appSettings_enableMessageTracing": "Enable Message Tracing",
|
||||
"appSettings_enableMessageTracingSubtitle": "Show detailed routing and timing metadata for messages",
|
||||
"appSettings_notifications": "Notifications",
|
||||
|
|
@ -1351,7 +1351,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"telemetry_temperatureValue": "{celsius}°C / {fahrenheit}°F",
|
||||
"telemetry_temperatureValue": "{celsius}°C / {fahrenheit}°F",
|
||||
"@telemetry_temperatureValue": {
|
||||
"placeholders": {
|
||||
"celsius": {
|
||||
|
|
@ -1401,7 +1401,7 @@
|
|||
"channelPath_repeatsLabel": "Repeats",
|
||||
"channelPath_pathLabel": "Path {index}",
|
||||
"channelPath_observedLabel": "Observed",
|
||||
"channelPath_observedPathTitle": "Observed path {index} • {hops}",
|
||||
"channelPath_observedPathTitle": "Observed path {index} • {hops}",
|
||||
"@channelPath_observedPathTitle": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
|
|
@ -1476,7 +1476,7 @@
|
|||
},
|
||||
"channelPath_pathLabelTitle": "Path",
|
||||
"channelPath_observedPathHeader": "Observed Path",
|
||||
"channelPath_selectedPathLabel": "{label} • {prefixes}",
|
||||
"channelPath_selectedPathLabel": "{label} • {prefixes}",
|
||||
"@channelPath_selectedPathLabel": {
|
||||
"placeholders": {
|
||||
"label": {
|
||||
|
|
|
|||
|
|
@ -1015,13 +1015,13 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @appSettings_languageFr.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Français'**
|
||||
/// **'Français'**
|
||||
String get appSettings_languageFr;
|
||||
|
||||
/// No description provided for @appSettings_languageEs.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Español'**
|
||||
/// **'Español'**
|
||||
String get appSettings_languageEs;
|
||||
|
||||
/// No description provided for @appSettings_languageDe.
|
||||
|
|
@ -1039,13 +1039,13 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @appSettings_languageSl.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'SlovenÅ¡Äina'**
|
||||
/// **'Slovenščina'**
|
||||
String get appSettings_languageSl;
|
||||
|
||||
/// No description provided for @appSettings_languagePt.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Português'**
|
||||
/// **'Português'**
|
||||
String get appSettings_languagePt;
|
||||
|
||||
/// No description provided for @appSettings_languageIt.
|
||||
|
|
@ -1057,7 +1057,7 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @appSettings_languageZh.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'䏿–‡'**
|
||||
/// **'中文'**
|
||||
String get appSettings_languageZh;
|
||||
|
||||
/// No description provided for @appSettings_languageSv.
|
||||
|
|
@ -1075,25 +1075,25 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @appSettings_languageSk.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'SlovenÄina'**
|
||||
/// **'Slovenčina'**
|
||||
String get appSettings_languageSk;
|
||||
|
||||
/// No description provided for @appSettings_languageBg.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'БългарÑки'**
|
||||
/// **'Български'**
|
||||
String get appSettings_languageBg;
|
||||
|
||||
/// No description provided for @appSettings_languageRu.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'РуÑÑкий'**
|
||||
/// **'Русский'**
|
||||
String get appSettings_languageRu;
|
||||
|
||||
/// No description provided for @appSettings_languageUk.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'УкраїнÑька'**
|
||||
/// **'Українська'**
|
||||
String get appSettings_languageUk;
|
||||
|
||||
/// No description provided for @appSettings_enableMessageTracing.
|
||||
|
|
@ -4409,7 +4409,7 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @telemetry_temperatureValue.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{celsius}°C / {fahrenheit}°F'**
|
||||
/// **'{celsius}°C / {fahrenheit}°F'**
|
||||
String telemetry_temperatureValue(String celsius, String fahrenheit);
|
||||
|
||||
/// No description provided for @neighbors_receivedData.
|
||||
|
|
@ -4523,7 +4523,7 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @channelPath_observedPathTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Observed path {index} • {hops}'**
|
||||
/// **'Observed path {index} • {hops}'**
|
||||
String channelPath_observedPathTitle(int index, String hops);
|
||||
|
||||
/// No description provided for @channelPath_noLocationData.
|
||||
|
|
@ -4607,7 +4607,7 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @channelPath_selectedPathLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{label} • {prefixes}'**
|
||||
/// **'{label} • {prefixes}'**
|
||||
String channelPath_selectedPathLabel(String label, String prefixes);
|
||||
|
||||
/// No description provided for @channelPath_noHopDetailsAvailable.
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ class AppLocalizationsBg extends AppLocalizations {
|
|||
'Избраното USB устройство вече не е налично.';
|
||||
|
||||
@override
|
||||
String get usbErrorInvalidPort => 'Изберете валитно USB устройство.';
|
||||
String get usbErrorInvalidPort => 'Изберете валидно USB устройство.';
|
||||
|
||||
@override
|
||||
String get usbErrorBusy =>
|
||||
|
|
|
|||
|
|
@ -489,10 +489,10 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
String get appSettings_languageEn => 'English';
|
||||
|
||||
@override
|
||||
String get appSettings_languageFr => 'Français';
|
||||
String get appSettings_languageFr => 'Français';
|
||||
|
||||
@override
|
||||
String get appSettings_languageEs => 'Español';
|
||||
String get appSettings_languageEs => 'Español';
|
||||
|
||||
@override
|
||||
String get appSettings_languageDe => 'Deutsch';
|
||||
|
|
@ -501,16 +501,16 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
String get appSettings_languagePl => 'Polski';
|
||||
|
||||
@override
|
||||
String get appSettings_languageSl => 'SlovenÅ¡Äina';
|
||||
String get appSettings_languageSl => 'Slovenščina';
|
||||
|
||||
@override
|
||||
String get appSettings_languagePt => 'Português';
|
||||
String get appSettings_languagePt => 'Português';
|
||||
|
||||
@override
|
||||
String get appSettings_languageIt => 'Italiano';
|
||||
|
||||
@override
|
||||
String get appSettings_languageZh => '䏿–‡';
|
||||
String get appSettings_languageZh => '中文';
|
||||
|
||||
@override
|
||||
String get appSettings_languageSv => 'Svenska';
|
||||
|
|
@ -519,16 +519,16 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
String get appSettings_languageNl => 'Nederlands';
|
||||
|
||||
@override
|
||||
String get appSettings_languageSk => 'SlovenÄina';
|
||||
String get appSettings_languageSk => 'Slovenčina';
|
||||
|
||||
@override
|
||||
String get appSettings_languageBg => 'БългарÑки';
|
||||
String get appSettings_languageBg => 'Български';
|
||||
|
||||
@override
|
||||
String get appSettings_languageRu => 'РуÑÑкий';
|
||||
String get appSettings_languageRu => 'Русский';
|
||||
|
||||
@override
|
||||
String get appSettings_languageUk => 'УкраїнÑька';
|
||||
String get appSettings_languageUk => 'Українська';
|
||||
|
||||
@override
|
||||
String get appSettings_enableMessageTracing => 'Enable Message Tracing';
|
||||
|
|
@ -2465,7 +2465,7 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String telemetry_temperatureValue(String celsius, String fahrenheit) {
|
||||
return '$celsius°C / $fahrenheit°F';
|
||||
return '$celsius°C / $fahrenheit°F';
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -2533,7 +2533,7 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String channelPath_observedPathTitle(int index, String hops) {
|
||||
return 'Observed path $index • $hops';
|
||||
return 'Observed path $index • $hops';
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -2588,7 +2588,7 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String channelPath_selectedPathLabel(String label, String prefixes) {
|
||||
return '$label • $prefixes';
|
||||
return '$label • $prefixes';
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ class AppLocalizationsSv extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String get usbScreenNote =>
|
||||
'USB-seriell kommunikation är aktiv på stöderdade Android-enheter och skrivbordsplattformar.';
|
||||
'USB-seriell kommunikation är aktiv på stödda Android-enheter och skrivbordsplattformar.';
|
||||
|
||||
@override
|
||||
String get usbScreenEmptyState =>
|
||||
|
|
|
|||
|
|
@ -1802,7 +1802,7 @@
|
|||
"contacts_searchFavorites": "Sök {number}{str} Favoriter...",
|
||||
"contacts_searchUsers": "Sök {number}{str} användare...",
|
||||
"contacts_searchRoomServers": "Sök {number}{str} Room-servrar...",
|
||||
"usbScreenNote": "USB-seriell kommunikation är aktiv på stöderdade Android-enheter och skrivbordsplattformar.",
|
||||
"usbScreenNote": "USB-seriell kommunikation är aktiv på stödda Android-enheter och skrivbordsplattformar.",
|
||||
"usbScreenStatus": "Välj en USB-enhet",
|
||||
"usbScreenSubtitle": "Välj en detekterad seriell enhet och anslut direkt till din MeshCore-nod.",
|
||||
"usbScreenTitle": "Anslut via USB",
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:provider/provider.dart';
|
|||
|
||||
import '../connector/meshcore_connector.dart';
|
||||
import '../l10n/l10n.dart';
|
||||
import '../utils/app_logger.dart';
|
||||
import '../widgets/adaptive_app_bar_title.dart';
|
||||
import '../widgets/device_tile.dart';
|
||||
import 'contacts_screen.dart';
|
||||
|
|
@ -60,7 +61,7 @@ class _ScannerScreenState extends State<ScannerScreen> {
|
|||
}
|
||||
},
|
||||
onError: (Object e) {
|
||||
debugPrint("Scanner adapterState stream error: $e");
|
||||
appLogger.warn('Adapter state stream error: $e', tag: 'ScannerScreen');
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
@ -86,7 +87,7 @@ class _ScannerScreenState extends State<ScannerScreen> {
|
|||
? IconButton(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
onPressed: () {
|
||||
debugPrint('ScannerScreen: back button pressed');
|
||||
appLogger.info('Back button pressed', tag: 'ScannerScreen');
|
||||
Navigator.of(context).maybePop();
|
||||
},
|
||||
)
|
||||
|
|
@ -131,8 +132,9 @@ class _ScannerScreenState extends State<ScannerScreen> {
|
|||
if (usbSupported)
|
||||
FloatingActionButton.extended(
|
||||
onPressed: () {
|
||||
debugPrint(
|
||||
'ScannerScreen: USB selected, opening UsbScreen',
|
||||
appLogger.info(
|
||||
'USB selected, opening UsbScreen',
|
||||
tag: 'ScannerScreen',
|
||||
);
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(builder: (_) => const UsbScreen()),
|
||||
|
|
@ -153,8 +155,9 @@ class _ScannerScreenState extends State<ScannerScreen> {
|
|||
} else {
|
||||
unawaited(
|
||||
connector.startScan().catchError((e) {
|
||||
debugPrint(
|
||||
"Scanner screen startScan error: $e",
|
||||
appLogger.warn(
|
||||
'startScan error: $e',
|
||||
tag: 'ScannerScreen',
|
||||
);
|
||||
}),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:provider/provider.dart';
|
|||
import '../connector/meshcore_connector.dart';
|
||||
import '../connector/meshcore_connector_usb.dart';
|
||||
import '../l10n/l10n.dart';
|
||||
import '../utils/app_logger.dart';
|
||||
import '../utils/platform_info.dart';
|
||||
import '../utils/usb_port_labels.dart';
|
||||
import 'contacts_screen.dart';
|
||||
|
|
@ -109,7 +110,7 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
leading: IconButton(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
onPressed: () {
|
||||
debugPrint('UsbScreen: back button pressed');
|
||||
appLogger.info('Back button pressed', tag: 'UsbScreen');
|
||||
Navigator.of(context).maybePop();
|
||||
},
|
||||
),
|
||||
|
|
@ -124,8 +125,9 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
PlatformInfo.isIOS)
|
||||
TextButton.icon(
|
||||
onPressed: () {
|
||||
debugPrint(
|
||||
'UsbScreen: Bluetooth selected, opening ScannerScreen',
|
||||
appLogger.info(
|
||||
'Bluetooth selected, opening ScannerScreen',
|
||||
tag: 'UsbScreen',
|
||||
);
|
||||
Navigator.of(context).pushReplacement(
|
||||
MaterialPageRoute(builder: (_) => const ScannerScreen()),
|
||||
|
|
@ -218,8 +220,9 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
onPressed: _isLoadingPorts || _isConnecting
|
||||
? null
|
||||
: () {
|
||||
debugPrint(
|
||||
'UsbScreen: refresh ports pressed',
|
||||
appLogger.info(
|
||||
'Refresh ports pressed',
|
||||
tag: 'UsbScreen',
|
||||
);
|
||||
_loadPorts();
|
||||
},
|
||||
|
|
@ -234,8 +237,9 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
final rawPortName = normalizeUsbPortName(
|
||||
_selectedPort!,
|
||||
);
|
||||
debugPrint(
|
||||
'UsbScreen: connect pressed for $_selectedPort (raw: $rawPortName)',
|
||||
appLogger.info(
|
||||
'Connect pressed for $_selectedPort (raw: $rawPortName)',
|
||||
tag: 'UsbScreen',
|
||||
);
|
||||
_connectSelectedPort();
|
||||
}
|
||||
|
|
@ -262,8 +266,9 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
onPressed: _isLoadingPorts || _isConnecting
|
||||
? null
|
||||
: () {
|
||||
debugPrint(
|
||||
'UsbScreen: refresh ports pressed',
|
||||
appLogger.info(
|
||||
'Refresh ports pressed',
|
||||
tag: 'UsbScreen',
|
||||
);
|
||||
_loadPorts();
|
||||
},
|
||||
|
|
@ -280,8 +285,9 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
final rawPortName = normalizeUsbPortName(
|
||||
_selectedPort!,
|
||||
);
|
||||
debugPrint(
|
||||
'UsbScreen: connect pressed for $_selectedPort (raw: $rawPortName)',
|
||||
appLogger.info(
|
||||
'Connect pressed for $_selectedPort (raw: $rawPortName)',
|
||||
tag: 'UsbScreen',
|
||||
);
|
||||
_connectSelectedPort();
|
||||
}
|
||||
|
|
@ -413,7 +419,7 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
_selectedPort = port;
|
||||
_errorText = null;
|
||||
});
|
||||
debugPrint('UsbScreen: selected port $port');
|
||||
appLogger.info('Selected port $port', tag: 'UsbScreen');
|
||||
},
|
||||
leading: Icon(
|
||||
Icons.usb,
|
||||
|
|
@ -511,8 +517,9 @@ class _UsbScreenState extends State<UsbScreen> {
|
|||
try {
|
||||
await _usbConnector.connect(portName: rawPortName);
|
||||
} catch (error, stackTrace) {
|
||||
debugPrint(
|
||||
'UsbScreen: connect failed for $rawPortName: $error\n$stackTrace',
|
||||
appLogger.error(
|
||||
'Connect failed for $rawPortName: $error\n$stackTrace',
|
||||
tag: 'UsbScreen',
|
||||
);
|
||||
if (!mounted) return;
|
||||
setState(() {
|
||||
|
|
|
|||
|
|
@ -135,7 +135,6 @@ class UsbSerialService {
|
|||
} on PlatformException catch (error) {
|
||||
_status = UsbSerialStatus.disconnected;
|
||||
final msg = error.message ?? error.code;
|
||||
debugPrint('[USB Serial] Android connect failed: $msg');
|
||||
_debugLogService?.error(
|
||||
'Android connect failed: $msg',
|
||||
tag: 'USB Serial',
|
||||
|
|
@ -180,7 +179,6 @@ class UsbSerialService {
|
|||
if (openStatus != FlOpenStatus.open) {
|
||||
final msg =
|
||||
'Failed to open USB port $candidate (status: $openStatus)';
|
||||
debugPrint('[USB Serial] $msg');
|
||||
_debugLogService?.error(msg, tag: 'USB Serial');
|
||||
// Not a FlSerialException — treat as terminal failure
|
||||
_status = UsbSerialStatus.disconnected;
|
||||
|
|
@ -204,9 +202,6 @@ class UsbSerialService {
|
|||
} on FlSerialException catch (error) {
|
||||
// The native fl_open() already called fl_close() on failure
|
||||
// internally, so no extra cleanup is needed here for this candidate.
|
||||
debugPrint(
|
||||
'[USB Serial] Failed to open $candidate: ${error.msg} (code ${error.error})',
|
||||
);
|
||||
_debugLogService?.warn(
|
||||
'Failed to open $candidate: ${error.msg} (code ${error.error})',
|
||||
tag: 'USB Serial',
|
||||
|
|
@ -215,11 +210,8 @@ class UsbSerialService {
|
|||
// Try next candidate
|
||||
} catch (error, stackTrace) {
|
||||
_status = UsbSerialStatus.disconnected;
|
||||
debugPrint(
|
||||
'[USB Serial] Unexpected error opening $candidate: $error\n$stackTrace',
|
||||
);
|
||||
_debugLogService?.error(
|
||||
'Unexpected error opening $candidate: $error',
|
||||
'Unexpected error opening $candidate: $error\n$stackTrace',
|
||||
tag: 'USB Serial',
|
||||
);
|
||||
rethrow;
|
||||
|
|
@ -232,7 +224,6 @@ class UsbSerialService {
|
|||
final msg = lastError != null
|
||||
? 'Failed to open USB port $primary: ${lastError.msg} (code ${lastError.error})'
|
||||
: 'Failed to open USB port $primary';
|
||||
debugPrint('[USB Serial] $msg');
|
||||
_debugLogService?.error(msg, tag: 'USB Serial');
|
||||
throw StateError(msg);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue