mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-08-11 18:26:27 +10:00
Merge pull request #514 from Hacuchino-hash/device-hardware-info
Show connected node hardware and firmware in device info
This commit is contained in:
@@ -271,6 +271,8 @@ class MeshCoreConnector extends ChangeNotifier {
|
|||||||
bool _batteryRequested = false;
|
bool _batteryRequested = false;
|
||||||
bool _awaitingSelfInfo = false;
|
bool _awaitingSelfInfo = false;
|
||||||
bool _hasReceivedDeviceInfo = false;
|
bool _hasReceivedDeviceInfo = false;
|
||||||
|
String? _manufacturerName;
|
||||||
|
String? _firmwareVersionString;
|
||||||
// Initial sync is serialized for predictable progress. Firmware exposes one
|
// Initial sync is serialized for predictable progress. Firmware exposes one
|
||||||
// FIFO queued-message stream, so direct/room frames are buffered until after
|
// FIFO queued-message stream, so direct/room frames are buffered until after
|
||||||
// contacts are known.
|
// contacts are known.
|
||||||
@@ -459,6 +461,8 @@ class MeshCoreConnector extends ChangeNotifier {
|
|||||||
Uint8List? get selfPublicKey => _selfPublicKey;
|
Uint8List? get selfPublicKey => _selfPublicKey;
|
||||||
String get selfPublicKeyHex => pubKeyToHex(_selfPublicKey ?? Uint8List(0));
|
String get selfPublicKeyHex => pubKeyToHex(_selfPublicKey ?? Uint8List(0));
|
||||||
String? get selfName => _selfName;
|
String? get selfName => _selfName;
|
||||||
|
String? get manufacturerName => _manufacturerName;
|
||||||
|
String? get firmwareVersionString => _firmwareVersionString;
|
||||||
double? get selfLatitude => _selfLatitude;
|
double? get selfLatitude => _selfLatitude;
|
||||||
double? get selfLongitude => _selfLongitude;
|
double? get selfLongitude => _selfLongitude;
|
||||||
List<DirectRepeater> get directRepeaters => _directRepeaters;
|
List<DirectRepeater> get directRepeaters => _directRepeaters;
|
||||||
@@ -4460,6 +4464,20 @@ class MeshCoreConnector extends ChangeNotifier {
|
|||||||
}
|
}
|
||||||
_firmwareVerCode = frame[1];
|
_firmwareVerCode = frame[1];
|
||||||
|
|
||||||
|
// Manufacturer/model name (bytes 20..59) and firmware version (60..79)
|
||||||
|
String? readCString(int start, int maxLen) {
|
||||||
|
if (frame.length < start + maxLen) return null;
|
||||||
|
final bytes = frame.sublist(start, start + maxLen);
|
||||||
|
final end = bytes.indexOf(0);
|
||||||
|
final s = String.fromCharCodes(
|
||||||
|
end >= 0 ? bytes.sublist(0, end) : bytes,
|
||||||
|
).trim();
|
||||||
|
return s.isEmpty ? null : s;
|
||||||
|
}
|
||||||
|
|
||||||
|
_manufacturerName = readCString(20, 40);
|
||||||
|
_firmwareVersionString = readCString(60, 20);
|
||||||
|
|
||||||
// Parse client_repeat from firmware v9+ (byte 80)
|
// Parse client_repeat from firmware v9+ (byte 80)
|
||||||
if (frame.length >= 81) {
|
if (frame.length >= 81) {
|
||||||
_clientRepeat = frame[80] != 0;
|
_clientRepeat = frame[80] != 0;
|
||||||
|
|||||||
@@ -248,6 +248,8 @@
|
|||||||
"settings_infoPublicKey": "Public Key",
|
"settings_infoPublicKey": "Public Key",
|
||||||
"settings_infoContactsCount": "Contacts Count",
|
"settings_infoContactsCount": "Contacts Count",
|
||||||
"settings_infoChannelCount": "Channel Count",
|
"settings_infoChannelCount": "Channel Count",
|
||||||
|
"settings_infoHardware": "Hardware",
|
||||||
|
"settings_infoFirmware": "Firmware",
|
||||||
"settings_presets": "Presets",
|
"settings_presets": "Presets",
|
||||||
"settings_frequency": "Frequency (MHz)",
|
"settings_frequency": "Frequency (MHz)",
|
||||||
"settings_frequencyHelper": "300.0 - 2500.0",
|
"settings_frequencyHelper": "300.0 - 2500.0",
|
||||||
|
|||||||
@@ -1240,6 +1240,18 @@ abstract class AppLocalizations {
|
|||||||
/// **'Channel Count'**
|
/// **'Channel Count'**
|
||||||
String get settings_infoChannelCount;
|
String get settings_infoChannelCount;
|
||||||
|
|
||||||
|
/// No description provided for @settings_infoHardware.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Hardware'**
|
||||||
|
String get settings_infoHardware;
|
||||||
|
|
||||||
|
/// No description provided for @settings_infoFirmware.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Firmware'**
|
||||||
|
String get settings_infoFirmware;
|
||||||
|
|
||||||
/// No description provided for @settings_presets.
|
/// No description provided for @settings_presets.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
|
|||||||
@@ -626,6 +626,12 @@ class AppLocalizationsBg extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Брой канали';
|
String get settings_infoChannelCount => 'Брой канали';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Предварителни настройки';
|
String get settings_presets => 'Предварителни настройки';
|
||||||
|
|
||||||
|
|||||||
@@ -623,6 +623,12 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Kanäle';
|
String get settings_infoChannelCount => 'Kanäle';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Voreinstellungen';
|
String get settings_presets => 'Voreinstellungen';
|
||||||
|
|
||||||
|
|||||||
@@ -611,6 +611,12 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Channel Count';
|
String get settings_infoChannelCount => 'Channel Count';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Presets';
|
String get settings_presets => 'Presets';
|
||||||
|
|
||||||
|
|||||||
@@ -622,6 +622,12 @@ class AppLocalizationsEs extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Número de canales';
|
String get settings_infoChannelCount => 'Número de canales';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Preajustes';
|
String get settings_presets => 'Preajustes';
|
||||||
|
|
||||||
|
|||||||
@@ -626,6 +626,12 @@ class AppLocalizationsFr extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Nombre de canaux';
|
String get settings_infoChannelCount => 'Nombre de canaux';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Préréglages';
|
String get settings_presets => 'Préréglages';
|
||||||
|
|
||||||
|
|||||||
@@ -619,6 +619,12 @@ class AppLocalizationsHu extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Csatornaszám';
|
String get settings_infoChannelCount => 'Csatornaszám';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Előbeállítások';
|
String get settings_presets => 'Előbeállítások';
|
||||||
|
|
||||||
|
|||||||
@@ -624,6 +624,12 @@ class AppLocalizationsIt extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Numero di canali';
|
String get settings_infoChannelCount => 'Numero di canali';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Preset';
|
String get settings_presets => 'Preset';
|
||||||
|
|
||||||
|
|||||||
@@ -594,6 +594,12 @@ class AppLocalizationsJa extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'チャンネル数';
|
String get settings_infoChannelCount => 'チャンネル数';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'プリセット';
|
String get settings_presets => 'プリセット';
|
||||||
|
|
||||||
|
|||||||
@@ -595,6 +595,12 @@ class AppLocalizationsKo extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => '채널 수';
|
String get settings_infoChannelCount => '채널 수';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => '프리셋';
|
String get settings_presets => '프리셋';
|
||||||
|
|
||||||
|
|||||||
@@ -618,6 +618,12 @@ class AppLocalizationsNl extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Aantal Kanalen';
|
String get settings_infoChannelCount => 'Aantal Kanalen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Voorgeprogrammeerde instellingen';
|
String get settings_presets => 'Voorgeprogrammeerde instellingen';
|
||||||
|
|
||||||
|
|||||||
@@ -626,6 +626,12 @@ class AppLocalizationsPl extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Liczba kanałów';
|
String get settings_infoChannelCount => 'Liczba kanałów';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Presety';
|
String get settings_presets => 'Presety';
|
||||||
|
|
||||||
|
|||||||
@@ -624,6 +624,12 @@ class AppLocalizationsPt extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Número do Canal';
|
String get settings_infoChannelCount => 'Número do Canal';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Configurações pré-definidas';
|
String get settings_presets => 'Configurações pré-definidas';
|
||||||
|
|
||||||
|
|||||||
@@ -623,6 +623,12 @@ class AppLocalizationsRu extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Количество каналов';
|
String get settings_infoChannelCount => 'Количество каналов';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Пресеты';
|
String get settings_presets => 'Пресеты';
|
||||||
|
|
||||||
|
|||||||
@@ -618,6 +618,12 @@ class AppLocalizationsSk extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Počet kanálov';
|
String get settings_infoChannelCount => 'Počet kanálov';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Prednastavenia';
|
String get settings_presets => 'Prednastavenia';
|
||||||
|
|
||||||
|
|||||||
@@ -616,6 +616,12 @@ class AppLocalizationsSl extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Število kanalov';
|
String get settings_infoChannelCount => 'Število kanalov';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Prednastavitve';
|
String get settings_presets => 'Prednastavitve';
|
||||||
|
|
||||||
|
|||||||
@@ -613,6 +613,12 @@ class AppLocalizationsSv extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Kanalantal';
|
String get settings_infoChannelCount => 'Kanalantal';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Fördefinierade inställningar';
|
String get settings_presets => 'Fördefinierade inställningar';
|
||||||
|
|
||||||
|
|||||||
@@ -621,6 +621,12 @@ class AppLocalizationsUk extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => 'Кількість каналів';
|
String get settings_infoChannelCount => 'Кількість каналів';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => 'Попередні налаштування';
|
String get settings_presets => 'Попередні налаштування';
|
||||||
|
|
||||||
|
|||||||
@@ -587,6 +587,12 @@ class AppLocalizationsZh extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get settings_infoChannelCount => '频道数量';
|
String get settings_infoChannelCount => '频道数量';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoHardware => 'Hardware';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get settings_infoFirmware => 'Firmware';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get settings_presets => '预设';
|
String get settings_presets => '预设';
|
||||||
|
|
||||||
|
|||||||
@@ -280,6 +280,18 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
|||||||
value: connector.deviceIdLabel,
|
value: connector.deviceIdLabel,
|
||||||
),
|
),
|
||||||
_buildBatteryInfoRow(context, connector),
|
_buildBatteryInfoRow(context, connector),
|
||||||
|
if (connector.manufacturerName != null)
|
||||||
|
_infoRow(
|
||||||
|
context,
|
||||||
|
label: l10n.settings_infoHardware,
|
||||||
|
value: connector.manufacturerName!,
|
||||||
|
),
|
||||||
|
if (connector.firmwareVersionString != null)
|
||||||
|
_infoRow(
|
||||||
|
context,
|
||||||
|
label: l10n.settings_infoFirmware,
|
||||||
|
value: connector.firmwareVersionString!,
|
||||||
|
),
|
||||||
if (connector.selfName != null)
|
if (connector.selfName != null)
|
||||||
_infoRow(
|
_infoRow(
|
||||||
context,
|
context,
|
||||||
|
|||||||
Reference in New Issue
Block a user