diff --git a/Meshtastic.Cli/CommandHandlers/RegisterCommandHandler.cs b/Meshtastic.Cli/CommandHandlers/RegisterCommandHandler.cs new file mode 100644 index 0000000..45d0032 --- /dev/null +++ b/Meshtastic.Cli/CommandHandlers/RegisterCommandHandler.cs @@ -0,0 +1,52 @@ +using System.Security.Cryptography; +using Meshtastic.Data; +using Meshtastic.Data.MessageFactories; +using Meshtastic.Protobufs; +using Microsoft.Extensions.Logging; +using Spectre.Console.Json; +using Newtonsoft.Json; + +namespace Meshtastic.Cli.CommandHandlers; + +public class RegisterCommandHandlerCommandHandler(DeviceConnectionContext context, CommandContext commandContext) : DeviceCommandHandler(context, commandContext) +{ + public async Task Handle() + { + var wantConfig = new ToRadioMessageFactory().CreateWantConfigMessage(); + var container = await Connection.WriteToRadio(wantConfig, CompleteOnConfigReceived); + Connection.Disconnect(); + return container; + } + + public override async Task OnCompleted(FromRadio packet, DeviceStateContainer container) + { + Logger.LogInformation("Getting registration info..."); + var key = container.MyNodeInfo.DeviceId; + var user = container.Nodes.Find(n => n.Num == container.MyNodeInfo.MyNodeNum)?.User; +#pragma warning disable CS0612 // Type or member is obsolete + var macAddress = user?.Macaddr; +#pragma warning restore CS0612 // Type or member is obsolete + if (key == null || key.All(b => b == 0) || user == null || macAddress == null) + { + Logger.LogError("Device does not have a valid key or mac address, and cannot be registered."); + return; + } + var jsonForm = JsonConvert.SerializeObject(new + { + MeshtasticDeviceId = Convert.ToHexString(key.ToByteArray()), + MACAddress = Convert.ToHexString(macAddress.ToByteArray()), + DeviceHardwareId = container.Metadata.HwModel, + container.Metadata.FirmwareVersion, + }); + + var json = new JsonText(jsonForm); + + AnsiConsole.Write( new Panel(json) + .Header("Registration Information") + .Collapse() + .RoundedBorder() + .BorderColor(Color.Blue)); + + await Task.CompletedTask; + } +} diff --git a/Meshtastic.Cli/Commands/RegisterCommand.cs b/Meshtastic.Cli/Commands/RegisterCommand.cs new file mode 100644 index 0000000..26c84e2 --- /dev/null +++ b/Meshtastic.Cli/Commands/RegisterCommand.cs @@ -0,0 +1,21 @@ +using Meshtastic.Cli.Binders; +using Meshtastic.Cli.CommandHandlers; +using Meshtastic.Cli.Enums; +using Microsoft.Extensions.Logging; + +namespace Meshtastic.Cli.Commands; + +public class RegisterCommand : Command +{ + public RegisterCommand(string name, string description, Option port, Option host, + Option output, Option log) : base(name, description) + { + this.SetHandler(async (context, commandContext) => + { + var handler = new RegisterCommandHandlerCommandHandler(context, commandContext); + await handler.Handle(); + }, + new DeviceConnectionBinder(port, host), + new CommandContextBinder(log, output, new Option("dest"), new Option("select-dest"))); + } +} diff --git a/Meshtastic.Cli/Meshtastic.Cli.csproj b/Meshtastic.Cli/Meshtastic.Cli.csproj index bca5471..80af809 100644 --- a/Meshtastic.Cli/Meshtastic.Cli.csproj +++ b/Meshtastic.Cli/Meshtastic.Cli.csproj @@ -43,7 +43,9 @@ - + + + diff --git a/Meshtastic.Cli/Program.cs b/Meshtastic.Cli/Program.cs index 1da4542..f4cd047 100644 --- a/Meshtastic.Cli/Program.cs +++ b/Meshtastic.Cli/Program.cs @@ -48,6 +48,7 @@ root.AddCommand(new ChannelCommand("channel", "Enable, Disable, Add, Save channels on the device", port, host, output, log, dest, selectDest)); root.AddCommand(new UrlCommand("url", "Get or set shared channel url", port, host, output, log)); root.AddCommand(new RebootCommand("reboot", "Reboot the device", port, host, output, log, dest, selectDest)); +root.AddCommand(new RegisterCommand("register", "Print registration info for the device", port, host, output, log)); root.AddCommand(new MetadataCommand("metadata", "Get device metadata from the device", port, host, output, log, dest, selectDest)); root.AddCommand(new FactoryResetCommand("factory-reset", "Factory reset configuration of the device", port, host, output, log, dest, selectDest)); root.AddCommand(new FixedPositionCommand("fixed-position", "Set the device to a fixed position", port, host, output, log, dest, selectDest)); diff --git a/Meshtastic/Generated/Config.cs b/Meshtastic/Generated/Config.cs index 8399842..fc51569 100644 --- a/Meshtastic/Generated/Config.cs +++ b/Meshtastic/Generated/Config.cs @@ -24,120 +24,122 @@ public static partial class ConfigReflection { static ConfigReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "ChdtZXNodGFzdGljL2NvbmZpZy5wcm90bxIKbWVzaHRhc3RpYyKqJQoGQ29u", - "ZmlnEjEKBmRldmljZRgBIAEoCzIfLm1lc2h0YXN0aWMuQ29uZmlnLkRldmlj", - "ZUNvbmZpZ0gAEjUKCHBvc2l0aW9uGAIgASgLMiEubWVzaHRhc3RpYy5Db25m", - "aWcuUG9zaXRpb25Db25maWdIABIvCgVwb3dlchgDIAEoCzIeLm1lc2h0YXN0", - "aWMuQ29uZmlnLlBvd2VyQ29uZmlnSAASMwoHbmV0d29yaxgEIAEoCzIgLm1l", - "c2h0YXN0aWMuQ29uZmlnLk5ldHdvcmtDb25maWdIABIzCgdkaXNwbGF5GAUg", - "ASgLMiAubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZ0gAEi0KBGxv", - "cmEYBiABKAsyHS5tZXNodGFzdGljLkNvbmZpZy5Mb1JhQ29uZmlnSAASNwoJ", - "Ymx1ZXRvb3RoGAcgASgLMiIubWVzaHRhc3RpYy5Db25maWcuQmx1ZXRvb3Ro", - "Q29uZmlnSAASNQoIc2VjdXJpdHkYCCABKAsyIS5tZXNodGFzdGljLkNvbmZp", - "Zy5TZWN1cml0eUNvbmZpZ0gAEjkKCnNlc3Npb25rZXkYCSABKAsyIy5tZXNo", - "dGFzdGljLkNvbmZpZy5TZXNzaW9ua2V5Q29uZmlnSAAapAUKDERldmljZUNv", - "bmZpZxIyCgRyb2xlGAEgASgOMiQubWVzaHRhc3RpYy5Db25maWcuRGV2aWNl", - "Q29uZmlnLlJvbGUSGgoOc2VyaWFsX2VuYWJsZWQYAiABKAhCAhgBEhMKC2J1", - "dHRvbl9ncGlvGAQgASgNEhMKC2J1enplcl9ncGlvGAUgASgNEkkKEHJlYnJv", - "YWRjYXN0X21vZGUYBiABKA4yLy5tZXNodGFzdGljLkNvbmZpZy5EZXZpY2VD", - "b25maWcuUmVicm9hZGNhc3RNb2RlEiAKGG5vZGVfaW5mb19icm9hZGNhc3Rf", - "c2VjcxgHIAEoDRIiChpkb3VibGVfdGFwX2FzX2J1dHRvbl9wcmVzcxgIIAEo", - "CBIWCgppc19tYW5hZ2VkGAkgASgIQgIYARIcChRkaXNhYmxlX3RyaXBsZV9j", - "bGljaxgKIAEoCBINCgV0emRlZhgLIAEoCRIeChZsZWRfaGVhcnRiZWF0X2Rp", - "c2FibGVkGAwgASgIIq4BCgRSb2xlEgoKBkNMSUVOVBAAEg8KC0NMSUVOVF9N", - "VVRFEAESCgoGUk9VVEVSEAISFQoNUk9VVEVSX0NMSUVOVBADGgIIARIMCghS", - "RVBFQVRFUhAEEgsKB1RSQUNLRVIQBRIKCgZTRU5TT1IQBhIHCgNUQUsQBxIR", - "Cg1DTElFTlRfSElEREVOEAgSEgoOTE9TVF9BTkRfRk9VTkQQCRIPCgtUQUtf", - "VFJBQ0tFUhAKInMKD1JlYnJvYWRjYXN0TW9kZRIHCgNBTEwQABIVChFBTExf", - "U0tJUF9ERUNPRElORxABEg4KCkxPQ0FMX09OTFkQAhIOCgpLTk9XTl9PTkxZ", - "EAMSCAoETk9ORRAEEhYKEkNPUkVfUE9SVE5VTVNfT05MWRAFGpEFCg5Qb3Np", - "dGlvbkNvbmZpZxIfChdwb3NpdGlvbl9icm9hZGNhc3Rfc2VjcxgBIAEoDRIo", - "CiBwb3NpdGlvbl9icm9hZGNhc3Rfc21hcnRfZW5hYmxlZBgCIAEoCBIWCg5m", - "aXhlZF9wb3NpdGlvbhgDIAEoCBIXCgtncHNfZW5hYmxlZBgEIAEoCEICGAES", - "GwoTZ3BzX3VwZGF0ZV9pbnRlcnZhbBgFIAEoDRIcChBncHNfYXR0ZW1wdF90", - "aW1lGAYgASgNQgIYARIWCg5wb3NpdGlvbl9mbGFncxgHIAEoDRIPCgdyeF9n", - "cGlvGAggASgNEg8KB3R4X2dwaW8YCSABKA0SKAogYnJvYWRjYXN0X3NtYXJ0", - "X21pbmltdW1fZGlzdGFuY2UYCiABKA0SLQolYnJvYWRjYXN0X3NtYXJ0X21p", - "bmltdW1faW50ZXJ2YWxfc2VjcxgLIAEoDRITCgtncHNfZW5fZ3BpbxgMIAEo", - "DRI7CghncHNfbW9kZRgNIAEoDjIpLm1lc2h0YXN0aWMuQ29uZmlnLlBvc2l0", - "aW9uQ29uZmlnLkdwc01vZGUiqwEKDVBvc2l0aW9uRmxhZ3MSCQoFVU5TRVQQ", - "ABIMCghBTFRJVFVERRABEhAKDEFMVElUVURFX01TTBACEhYKEkdFT0lEQUxf", - "U0VQQVJBVElPThAEEgcKA0RPUBAIEgkKBUhWRE9QEBASDQoJU0FUSU5WSUVX", - "ECASCgoGU0VRX05PEEASDgoJVElNRVNUQU1QEIABEgwKB0hFQURJTkcQgAIS", - "CgoFU1BFRUQQgAQiNQoHR3BzTW9kZRIMCghESVNBQkxFRBAAEgsKB0VOQUJM", - "RUQQARIPCgtOT1RfUFJFU0VOVBACGoQCCgtQb3dlckNvbmZpZxIXCg9pc19w", - "b3dlcl9zYXZpbmcYASABKAgSJgoeb25fYmF0dGVyeV9zaHV0ZG93bl9hZnRl", - "cl9zZWNzGAIgASgNEh8KF2FkY19tdWx0aXBsaWVyX292ZXJyaWRlGAMgASgC", - "EhsKE3dhaXRfYmx1ZXRvb3RoX3NlY3MYBCABKA0SEAoIc2RzX3NlY3MYBiAB", - "KA0SDwoHbHNfc2VjcxgHIAEoDRIVCg1taW5fd2FrZV9zZWNzGAggASgNEiIK", - "GmRldmljZV9iYXR0ZXJ5X2luYV9hZGRyZXNzGAkgASgNEhgKEHBvd2VybW9u", - "X2VuYWJsZXMYICABKAQa/gIKDU5ldHdvcmtDb25maWcSFAoMd2lmaV9lbmFi", - "bGVkGAEgASgIEhEKCXdpZmlfc3NpZBgDIAEoCRIQCgh3aWZpX3BzaxgEIAEo", - "CRISCgpudHBfc2VydmVyGAUgASgJEhMKC2V0aF9lbmFibGVkGAYgASgIEkIK", - "DGFkZHJlc3NfbW9kZRgHIAEoDjIsLm1lc2h0YXN0aWMuQ29uZmlnLk5ldHdv", - "cmtDb25maWcuQWRkcmVzc01vZGUSQAoLaXB2NF9jb25maWcYCCABKAsyKy5t", - "ZXNodGFzdGljLkNvbmZpZy5OZXR3b3JrQ29uZmlnLklwVjRDb25maWcSFgoO", - "cnN5c2xvZ19zZXJ2ZXIYCSABKAkaRgoKSXBWNENvbmZpZxIKCgJpcBgBIAEo", - "BxIPCgdnYXRld2F5GAIgASgHEg4KBnN1Ym5ldBgDIAEoBxILCgNkbnMYBCAB", - "KAciIwoLQWRkcmVzc01vZGUSCAoEREhDUBAAEgoKBlNUQVRJQxABGs0HCg1E", - "aXNwbGF5Q29uZmlnEhYKDnNjcmVlbl9vbl9zZWNzGAEgASgNEkgKCmdwc19m", - "b3JtYXQYAiABKA4yNC5tZXNodGFzdGljLkNvbmZpZy5EaXNwbGF5Q29uZmln", - "Lkdwc0Nvb3JkaW5hdGVGb3JtYXQSIQoZYXV0b19zY3JlZW5fY2Fyb3VzZWxf", - "c2VjcxgDIAEoDRIZChFjb21wYXNzX25vcnRoX3RvcBgEIAEoCBITCgtmbGlw", - "X3NjcmVlbhgFIAEoCBI8CgV1bml0cxgGIAEoDjItLm1lc2h0YXN0aWMuQ29u", - "ZmlnLkRpc3BsYXlDb25maWcuRGlzcGxheVVuaXRzEjcKBG9sZWQYByABKA4y", - "KS5tZXNodGFzdGljLkNvbmZpZy5EaXNwbGF5Q29uZmlnLk9sZWRUeXBlEkEK", - "C2Rpc3BsYXltb2RlGAggASgOMiwubWVzaHRhc3RpYy5Db25maWcuRGlzcGxh", - "eUNvbmZpZy5EaXNwbGF5TW9kZRIUCgxoZWFkaW5nX2JvbGQYCSABKAgSHQoV", - "d2FrZV9vbl90YXBfb3JfbW90aW9uGAogASgIElAKE2NvbXBhc3Nfb3JpZW50", - "YXRpb24YCyABKA4yMy5tZXNodGFzdGljLkNvbmZpZy5EaXNwbGF5Q29uZmln", - "LkNvbXBhc3NPcmllbnRhdGlvbiJNChNHcHNDb29yZGluYXRlRm9ybWF0EgcK", - "A0RFQxAAEgcKA0RNUxABEgcKA1VUTRACEggKBE1HUlMQAxIHCgNPTEMQBBII", - "CgRPU0dSEAUiKAoMRGlzcGxheVVuaXRzEgoKBk1FVFJJQxAAEgwKCElNUEVS", - "SUFMEAEiTQoIT2xlZFR5cGUSDQoJT0xFRF9BVVRPEAASEAoMT0xFRF9TU0Qx", - "MzA2EAESDwoLT0xFRF9TSDExMDYQAhIPCgtPTEVEX1NIMTEwNxADIkEKC0Rp", - "c3BsYXlNb2RlEgsKB0RFRkFVTFQQABIMCghUV09DT0xPUhABEgwKCElOVkVS", - "VEVEEAISCQoFQ09MT1IQAyK6AQoSQ29tcGFzc09yaWVudGF0aW9uEg0KCURF", - "R1JFRVNfMBAAEg4KCkRFR1JFRVNfOTAQARIPCgtERUdSRUVTXzE4MBACEg8K", - "C0RFR1JFRVNfMjcwEAMSFgoSREVHUkVFU18wX0lOVkVSVEVEEAQSFwoTREVH", - "UkVFU185MF9JTlZFUlRFRBAFEhgKFERFR1JFRVNfMTgwX0lOVkVSVEVEEAYS", - "GAoUREVHUkVFU18yNzBfSU5WRVJURUQQBxqdBwoKTG9SYUNvbmZpZxISCgp1", - "c2VfcHJlc2V0GAEgASgIEj8KDG1vZGVtX3ByZXNldBgCIAEoDjIpLm1lc2h0", - "YXN0aWMuQ29uZmlnLkxvUmFDb25maWcuTW9kZW1QcmVzZXQSEQoJYmFuZHdp", - "ZHRoGAMgASgNEhUKDXNwcmVhZF9mYWN0b3IYBCABKA0SEwoLY29kaW5nX3Jh", - "dGUYBSABKA0SGAoQZnJlcXVlbmN5X29mZnNldBgGIAEoAhI4CgZyZWdpb24Y", - "ByABKA4yKC5tZXNodGFzdGljLkNvbmZpZy5Mb1JhQ29uZmlnLlJlZ2lvbkNv", - "ZGUSEQoJaG9wX2xpbWl0GAggASgNEhIKCnR4X2VuYWJsZWQYCSABKAgSEAoI", - "dHhfcG93ZXIYCiABKAUSEwoLY2hhbm5lbF9udW0YCyABKA0SGwoTb3ZlcnJp", - "ZGVfZHV0eV9jeWNsZRgMIAEoCBIeChZzeDEyNnhfcnhfYm9vc3RlZF9nYWlu", - "GA0gASgIEhoKEm92ZXJyaWRlX2ZyZXF1ZW5jeRgOIAEoAhIXCg9wYV9mYW5f", - "ZGlzYWJsZWQYDyABKAgSFwoPaWdub3JlX2luY29taW5nGGcgAygNEhMKC2ln", - "bm9yZV9tcXR0GGggASgIEhkKEWNvbmZpZ19va190b19tcXR0GGkgASgIIvEB", - "CgpSZWdpb25Db2RlEgkKBVVOU0VUEAASBgoCVVMQARIKCgZFVV80MzMQAhIK", - "CgZFVV84NjgQAxIGCgJDThAEEgYKAkpQEAUSBwoDQU5aEAYSBgoCS1IQBxIG", - "CgJUVxAIEgYKAlJVEAkSBgoCSU4QChIKCgZOWl84NjUQCxIGCgJUSBAMEgsK", - "B0xPUkFfMjQQDRIKCgZVQV80MzMQDhIKCgZVQV84NjgQDxIKCgZNWV80MzMQ", - "EBIKCgZNWV85MTkQERIKCgZTR185MjMQEhIKCgZQSF80MzMQExIKCgZQSF84", - "NjgQFBIKCgZQSF85MTUQFSKpAQoLTW9kZW1QcmVzZXQSDQoJTE9OR19GQVNU", - "EAASDQoJTE9OR19TTE9XEAESFgoOVkVSWV9MT05HX1NMT1cQAhoCCAESDwoL", - "TUVESVVNX1NMT1cQAxIPCgtNRURJVU1fRkFTVBAEEg4KClNIT1JUX1NMT1cQ", - "BRIOCgpTSE9SVF9GQVNUEAYSEQoNTE9OR19NT0RFUkFURRAHEg8KC1NIT1JU", - "X1RVUkJPEAgarQEKD0JsdWV0b290aENvbmZpZxIPCgdlbmFibGVkGAEgASgI", - "EjwKBG1vZGUYAiABKA4yLi5tZXNodGFzdGljLkNvbmZpZy5CbHVldG9vdGhD", - "b25maWcuUGFpcmluZ01vZGUSEQoJZml4ZWRfcGluGAMgASgNIjgKC1BhaXJp", - "bmdNb2RlEg4KClJBTkRPTV9QSU4QABINCglGSVhFRF9QSU4QARIKCgZOT19Q", - "SU4QAhq2AQoOU2VjdXJpdHlDb25maWcSEgoKcHVibGljX2tleRgBIAEoDBIT", - "Cgtwcml2YXRlX2tleRgCIAEoDBIRCglhZG1pbl9rZXkYAyADKAwSEgoKaXNf", - "bWFuYWdlZBgEIAEoCBIWCg5zZXJpYWxfZW5hYmxlZBgFIAEoCBIdChVkZWJ1", - "Z19sb2dfYXBpX2VuYWJsZWQYBiABKAgSHQoVYWRtaW5fY2hhbm5lbF9lbmFi", - "bGVkGAggASgIGhIKEFNlc3Npb25rZXlDb25maWdCEQoPcGF5bG9hZF92YXJp", - "YW50QmEKE2NvbS5nZWVrc3ZpbGxlLm1lc2hCDENvbmZpZ1Byb3Rvc1oiZ2l0", - "aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMu", - "UHJvdG9idWZzugIAYgZwcm90bzM=")); + "ChdtZXNodGFzdGljL2NvbmZpZy5wcm90bxIKbWVzaHRhc3RpYxoabWVzaHRh", + "c3RpYy9kZXZpY2VfdWkucHJvdG8i2yUKBkNvbmZpZxIxCgZkZXZpY2UYASAB", + "KAsyHy5tZXNodGFzdGljLkNvbmZpZy5EZXZpY2VDb25maWdIABI1Cghwb3Np", + "dGlvbhgCIAEoCzIhLm1lc2h0YXN0aWMuQ29uZmlnLlBvc2l0aW9uQ29uZmln", + "SAASLwoFcG93ZXIYAyABKAsyHi5tZXNodGFzdGljLkNvbmZpZy5Qb3dlckNv", + "bmZpZ0gAEjMKB25ldHdvcmsYBCABKAsyIC5tZXNodGFzdGljLkNvbmZpZy5O", + "ZXR3b3JrQ29uZmlnSAASMwoHZGlzcGxheRgFIAEoCzIgLm1lc2h0YXN0aWMu", + "Q29uZmlnLkRpc3BsYXlDb25maWdIABItCgRsb3JhGAYgASgLMh0ubWVzaHRh", + "c3RpYy5Db25maWcuTG9SYUNvbmZpZ0gAEjcKCWJsdWV0b290aBgHIAEoCzIi", + "Lm1lc2h0YXN0aWMuQ29uZmlnLkJsdWV0b290aENvbmZpZ0gAEjUKCHNlY3Vy", + "aXR5GAggASgLMiEubWVzaHRhc3RpYy5Db25maWcuU2VjdXJpdHlDb25maWdI", + "ABI5CgpzZXNzaW9ua2V5GAkgASgLMiMubWVzaHRhc3RpYy5Db25maWcuU2Vz", + "c2lvbmtleUNvbmZpZ0gAEi8KCWRldmljZV91aRgKIAEoCzIaLm1lc2h0YXN0", + "aWMuRGV2aWNlVUlDb25maWdIABqkBQoMRGV2aWNlQ29uZmlnEjIKBHJvbGUY", + "ASABKA4yJC5tZXNodGFzdGljLkNvbmZpZy5EZXZpY2VDb25maWcuUm9sZRIa", + "Cg5zZXJpYWxfZW5hYmxlZBgCIAEoCEICGAESEwoLYnV0dG9uX2dwaW8YBCAB", + "KA0SEwoLYnV6emVyX2dwaW8YBSABKA0SSQoQcmVicm9hZGNhc3RfbW9kZRgG", + "IAEoDjIvLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5SZWJyb2Fk", + "Y2FzdE1vZGUSIAoYbm9kZV9pbmZvX2Jyb2FkY2FzdF9zZWNzGAcgASgNEiIK", + "GmRvdWJsZV90YXBfYXNfYnV0dG9uX3ByZXNzGAggASgIEhYKCmlzX21hbmFn", + "ZWQYCSABKAhCAhgBEhwKFGRpc2FibGVfdHJpcGxlX2NsaWNrGAogASgIEg0K", + "BXR6ZGVmGAsgASgJEh4KFmxlZF9oZWFydGJlYXRfZGlzYWJsZWQYDCABKAgi", + "rgEKBFJvbGUSCgoGQ0xJRU5UEAASDwoLQ0xJRU5UX01VVEUQARIKCgZST1VU", + "RVIQAhIVCg1ST1VURVJfQ0xJRU5UEAMaAggBEgwKCFJFUEVBVEVSEAQSCwoH", + "VFJBQ0tFUhAFEgoKBlNFTlNPUhAGEgcKA1RBSxAHEhEKDUNMSUVOVF9ISURE", + "RU4QCBISCg5MT1NUX0FORF9GT1VORBAJEg8KC1RBS19UUkFDS0VSEAoicwoP", + "UmVicm9hZGNhc3RNb2RlEgcKA0FMTBAAEhUKEUFMTF9TS0lQX0RFQ09ESU5H", + "EAESDgoKTE9DQUxfT05MWRACEg4KCktOT1dOX09OTFkQAxIICgROT05FEAQS", + "FgoSQ09SRV9QT1JUTlVNU19PTkxZEAUakQUKDlBvc2l0aW9uQ29uZmlnEh8K", + "F3Bvc2l0aW9uX2Jyb2FkY2FzdF9zZWNzGAEgASgNEigKIHBvc2l0aW9uX2Jy", + "b2FkY2FzdF9zbWFydF9lbmFibGVkGAIgASgIEhYKDmZpeGVkX3Bvc2l0aW9u", + "GAMgASgIEhcKC2dwc19lbmFibGVkGAQgASgIQgIYARIbChNncHNfdXBkYXRl", + "X2ludGVydmFsGAUgASgNEhwKEGdwc19hdHRlbXB0X3RpbWUYBiABKA1CAhgB", + "EhYKDnBvc2l0aW9uX2ZsYWdzGAcgASgNEg8KB3J4X2dwaW8YCCABKA0SDwoH", + "dHhfZ3BpbxgJIAEoDRIoCiBicm9hZGNhc3Rfc21hcnRfbWluaW11bV9kaXN0", + "YW5jZRgKIAEoDRItCiVicm9hZGNhc3Rfc21hcnRfbWluaW11bV9pbnRlcnZh", + "bF9zZWNzGAsgASgNEhMKC2dwc19lbl9ncGlvGAwgASgNEjsKCGdwc19tb2Rl", + "GA0gASgOMikubWVzaHRhc3RpYy5Db25maWcuUG9zaXRpb25Db25maWcuR3Bz", + "TW9kZSKrAQoNUG9zaXRpb25GbGFncxIJCgVVTlNFVBAAEgwKCEFMVElUVURF", + "EAESEAoMQUxUSVRVREVfTVNMEAISFgoSR0VPSURBTF9TRVBBUkFUSU9OEAQS", + "BwoDRE9QEAgSCQoFSFZET1AQEBINCglTQVRJTlZJRVcQIBIKCgZTRVFfTk8Q", + "QBIOCglUSU1FU1RBTVAQgAESDAoHSEVBRElORxCAAhIKCgVTUEVFRBCABCI1", + "CgdHcHNNb2RlEgwKCERJU0FCTEVEEAASCwoHRU5BQkxFRBABEg8KC05PVF9Q", + "UkVTRU5UEAIahAIKC1Bvd2VyQ29uZmlnEhcKD2lzX3Bvd2VyX3NhdmluZxgB", + "IAEoCBImCh5vbl9iYXR0ZXJ5X3NodXRkb3duX2FmdGVyX3NlY3MYAiABKA0S", + "HwoXYWRjX211bHRpcGxpZXJfb3ZlcnJpZGUYAyABKAISGwoTd2FpdF9ibHVl", + "dG9vdGhfc2VjcxgEIAEoDRIQCghzZHNfc2VjcxgGIAEoDRIPCgdsc19zZWNz", + "GAcgASgNEhUKDW1pbl93YWtlX3NlY3MYCCABKA0SIgoaZGV2aWNlX2JhdHRl", + "cnlfaW5hX2FkZHJlc3MYCSABKA0SGAoQcG93ZXJtb25fZW5hYmxlcxggIAEo", + "BBr+AgoNTmV0d29ya0NvbmZpZxIUCgx3aWZpX2VuYWJsZWQYASABKAgSEQoJ", + "d2lmaV9zc2lkGAMgASgJEhAKCHdpZmlfcHNrGAQgASgJEhIKCm50cF9zZXJ2", + "ZXIYBSABKAkSEwoLZXRoX2VuYWJsZWQYBiABKAgSQgoMYWRkcmVzc19tb2Rl", + "GAcgASgOMiwubWVzaHRhc3RpYy5Db25maWcuTmV0d29ya0NvbmZpZy5BZGRy", + "ZXNzTW9kZRJACgtpcHY0X2NvbmZpZxgIIAEoCzIrLm1lc2h0YXN0aWMuQ29u", + "ZmlnLk5ldHdvcmtDb25maWcuSXBWNENvbmZpZxIWCg5yc3lzbG9nX3NlcnZl", + "chgJIAEoCRpGCgpJcFY0Q29uZmlnEgoKAmlwGAEgASgHEg8KB2dhdGV3YXkY", + "AiABKAcSDgoGc3VibmV0GAMgASgHEgsKA2RucxgEIAEoByIjCgtBZGRyZXNz", + "TW9kZRIICgRESENQEAASCgoGU1RBVElDEAEazQcKDURpc3BsYXlDb25maWcS", + "FgoOc2NyZWVuX29uX3NlY3MYASABKA0SSAoKZ3BzX2Zvcm1hdBgCIAEoDjI0", + "Lm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuR3BzQ29vcmRpbmF0", + "ZUZvcm1hdBIhChlhdXRvX3NjcmVlbl9jYXJvdXNlbF9zZWNzGAMgASgNEhkK", + "EWNvbXBhc3Nfbm9ydGhfdG9wGAQgASgIEhMKC2ZsaXBfc2NyZWVuGAUgASgI", + "EjwKBXVuaXRzGAYgASgOMi0ubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNv", + "bmZpZy5EaXNwbGF5VW5pdHMSNwoEb2xlZBgHIAEoDjIpLm1lc2h0YXN0aWMu", + "Q29uZmlnLkRpc3BsYXlDb25maWcuT2xlZFR5cGUSQQoLZGlzcGxheW1vZGUY", + "CCABKA4yLC5tZXNodGFzdGljLkNvbmZpZy5EaXNwbGF5Q29uZmlnLkRpc3Bs", + "YXlNb2RlEhQKDGhlYWRpbmdfYm9sZBgJIAEoCBIdChV3YWtlX29uX3RhcF9v", + "cl9tb3Rpb24YCiABKAgSUAoTY29tcGFzc19vcmllbnRhdGlvbhgLIAEoDjIz", + "Lm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuQ29tcGFzc09yaWVu", + "dGF0aW9uIk0KE0dwc0Nvb3JkaW5hdGVGb3JtYXQSBwoDREVDEAASBwoDRE1T", + "EAESBwoDVVRNEAISCAoETUdSUxADEgcKA09MQxAEEggKBE9TR1IQBSIoCgxE", + "aXNwbGF5VW5pdHMSCgoGTUVUUklDEAASDAoISU1QRVJJQUwQASJNCghPbGVk", + "VHlwZRINCglPTEVEX0FVVE8QABIQCgxPTEVEX1NTRDEzMDYQARIPCgtPTEVE", + "X1NIMTEwNhACEg8KC09MRURfU0gxMTA3EAMiQQoLRGlzcGxheU1vZGUSCwoH", + "REVGQVVMVBAAEgwKCFRXT0NPTE9SEAESDAoISU5WRVJURUQQAhIJCgVDT0xP", + "UhADIroBChJDb21wYXNzT3JpZW50YXRpb24SDQoJREVHUkVFU18wEAASDgoK", + "REVHUkVFU185MBABEg8KC0RFR1JFRVNfMTgwEAISDwoLREVHUkVFU18yNzAQ", + "AxIWChJERUdSRUVTXzBfSU5WRVJURUQQBBIXChNERUdSRUVTXzkwX0lOVkVS", + "VEVEEAUSGAoUREVHUkVFU18xODBfSU5WRVJURUQQBhIYChRERUdSRUVTXzI3", + "MF9JTlZFUlRFRBAHGp0HCgpMb1JhQ29uZmlnEhIKCnVzZV9wcmVzZXQYASAB", + "KAgSPwoMbW9kZW1fcHJlc2V0GAIgASgOMikubWVzaHRhc3RpYy5Db25maWcu", + "TG9SYUNvbmZpZy5Nb2RlbVByZXNldBIRCgliYW5kd2lkdGgYAyABKA0SFQoN", + "c3ByZWFkX2ZhY3RvchgEIAEoDRITCgtjb2RpbmdfcmF0ZRgFIAEoDRIYChBm", + "cmVxdWVuY3lfb2Zmc2V0GAYgASgCEjgKBnJlZ2lvbhgHIAEoDjIoLm1lc2h0", + "YXN0aWMuQ29uZmlnLkxvUmFDb25maWcuUmVnaW9uQ29kZRIRCglob3BfbGlt", + "aXQYCCABKA0SEgoKdHhfZW5hYmxlZBgJIAEoCBIQCgh0eF9wb3dlchgKIAEo", + "BRITCgtjaGFubmVsX251bRgLIAEoDRIbChNvdmVycmlkZV9kdXR5X2N5Y2xl", + "GAwgASgIEh4KFnN4MTI2eF9yeF9ib29zdGVkX2dhaW4YDSABKAgSGgoSb3Zl", + "cnJpZGVfZnJlcXVlbmN5GA4gASgCEhcKD3BhX2Zhbl9kaXNhYmxlZBgPIAEo", + "CBIXCg9pZ25vcmVfaW5jb21pbmcYZyADKA0SEwoLaWdub3JlX21xdHQYaCAB", + "KAgSGQoRY29uZmlnX29rX3RvX21xdHQYaSABKAgi8QEKClJlZ2lvbkNvZGUS", + "CQoFVU5TRVQQABIGCgJVUxABEgoKBkVVXzQzMxACEgoKBkVVXzg2OBADEgYK", + "AkNOEAQSBgoCSlAQBRIHCgNBTloQBhIGCgJLUhAHEgYKAlRXEAgSBgoCUlUQ", + "CRIGCgJJThAKEgoKBk5aXzg2NRALEgYKAlRIEAwSCwoHTE9SQV8yNBANEgoK", + "BlVBXzQzMxAOEgoKBlVBXzg2OBAPEgoKBk1ZXzQzMxAQEgoKBk1ZXzkxORAR", + "EgoKBlNHXzkyMxASEgoKBlBIXzQzMxATEgoKBlBIXzg2OBAUEgoKBlBIXzkx", + "NRAVIqkBCgtNb2RlbVByZXNldBINCglMT05HX0ZBU1QQABINCglMT05HX1NM", + "T1cQARIWCg5WRVJZX0xPTkdfU0xPVxACGgIIARIPCgtNRURJVU1fU0xPVxAD", + "Eg8KC01FRElVTV9GQVNUEAQSDgoKU0hPUlRfU0xPVxAFEg4KClNIT1JUX0ZB", + "U1QQBhIRCg1MT05HX01PREVSQVRFEAcSDwoLU0hPUlRfVFVSQk8QCBqtAQoP", + "Qmx1ZXRvb3RoQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSPAoEbW9kZRgCIAEo", + "DjIuLm1lc2h0YXN0aWMuQ29uZmlnLkJsdWV0b290aENvbmZpZy5QYWlyaW5n", + "TW9kZRIRCglmaXhlZF9waW4YAyABKA0iOAoLUGFpcmluZ01vZGUSDgoKUkFO", + "RE9NX1BJThAAEg0KCUZJWEVEX1BJThABEgoKBk5PX1BJThACGrYBCg5TZWN1", + "cml0eUNvbmZpZxISCgpwdWJsaWNfa2V5GAEgASgMEhMKC3ByaXZhdGVfa2V5", + "GAIgASgMEhEKCWFkbWluX2tleRgDIAMoDBISCgppc19tYW5hZ2VkGAQgASgI", + "EhYKDnNlcmlhbF9lbmFibGVkGAUgASgIEh0KFWRlYnVnX2xvZ19hcGlfZW5h", + "YmxlZBgGIAEoCBIdChVhZG1pbl9jaGFubmVsX2VuYWJsZWQYCCABKAgaEgoQ", + "U2Vzc2lvbmtleUNvbmZpZ0IRCg9wYXlsb2FkX3ZhcmlhbnRCYQoTY29tLmdl", + "ZWtzdmlsbGUubWVzaEIMQ29uZmlnUHJvdG9zWiJnaXRodWIuY29tL21lc2h0", + "YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBi", + "BnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, + new pbr::FileDescriptor[] { global::Meshtastic.Protobufs.DeviceUiReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config), global::Meshtastic.Protobufs.Config.Parser, new[]{ "Device", "Position", "Power", "Network", "Display", "Lora", "Bluetooth", "Security", "Sessionkey" }, new[]{ "PayloadVariant" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config.Types.DeviceConfig), global::Meshtastic.Protobufs.Config.Types.DeviceConfig.Parser, new[]{ "Role", "SerialEnabled", "ButtonGpio", "BuzzerGpio", "RebroadcastMode", "NodeInfoBroadcastSecs", "DoubleTapAsButtonPress", "IsManaged", "DisableTripleClick", "Tzdef", "LedHeartbeatDisabled" }, null, new[]{ typeof(global::Meshtastic.Protobufs.Config.Types.DeviceConfig.Types.Role), typeof(global::Meshtastic.Protobufs.Config.Types.DeviceConfig.Types.RebroadcastMode) }, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config), global::Meshtastic.Protobufs.Config.Parser, new[]{ "Device", "Position", "Power", "Network", "Display", "Lora", "Bluetooth", "Security", "Sessionkey", "DeviceUi" }, new[]{ "PayloadVariant" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config.Types.DeviceConfig), global::Meshtastic.Protobufs.Config.Types.DeviceConfig.Parser, new[]{ "Role", "SerialEnabled", "ButtonGpio", "BuzzerGpio", "RebroadcastMode", "NodeInfoBroadcastSecs", "DoubleTapAsButtonPress", "IsManaged", "DisableTripleClick", "Tzdef", "LedHeartbeatDisabled" }, null, new[]{ typeof(global::Meshtastic.Protobufs.Config.Types.DeviceConfig.Types.Role), typeof(global::Meshtastic.Protobufs.Config.Types.DeviceConfig.Types.RebroadcastMode) }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config.Types.PositionConfig), global::Meshtastic.Protobufs.Config.Types.PositionConfig.Parser, new[]{ "PositionBroadcastSecs", "PositionBroadcastSmartEnabled", "FixedPosition", "GpsEnabled", "GpsUpdateInterval", "GpsAttemptTime", "PositionFlags", "RxGpio", "TxGpio", "BroadcastSmartMinimumDistance", "BroadcastSmartMinimumIntervalSecs", "GpsEnGpio", "GpsMode" }, null, new[]{ typeof(global::Meshtastic.Protobufs.Config.Types.PositionConfig.Types.PositionFlags), typeof(global::Meshtastic.Protobufs.Config.Types.PositionConfig.Types.GpsMode) }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config.Types.PowerConfig), global::Meshtastic.Protobufs.Config.Types.PowerConfig.Parser, new[]{ "IsPowerSaving", "OnBatteryShutdownAfterSecs", "AdcMultiplierOverride", "WaitBluetoothSecs", "SdsSecs", "LsSecs", "MinWakeSecs", "DeviceBatteryInaAddress", "PowermonEnables" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config.Types.NetworkConfig), global::Meshtastic.Protobufs.Config.Types.NetworkConfig.Parser, new[]{ "WifiEnabled", "WifiSsid", "WifiPsk", "NtpServer", "EthEnabled", "AddressMode", "Ipv4Config", "RsyslogServer" }, null, new[]{ typeof(global::Meshtastic.Protobufs.Config.Types.NetworkConfig.Types.AddressMode) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Config.Types.NetworkConfig.Types.IpV4Config), global::Meshtastic.Protobufs.Config.Types.NetworkConfig.Types.IpV4Config.Parser, new[]{ "Ip", "Gateway", "Subnet", "Dns" }, null, null, null, null)}), @@ -214,6 +216,9 @@ public Config(Config other) : this() { case PayloadVariantOneofCase.Sessionkey: Sessionkey = other.Sessionkey.Clone(); break; + case PayloadVariantOneofCase.DeviceUi: + DeviceUi = other.DeviceUi.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -333,6 +338,18 @@ public Config Clone() { } } + /// Field number for the "device_ui" field. + public const int DeviceUiFieldNumber = 10; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Meshtastic.Protobufs.DeviceUIConfig DeviceUi { + get { return payloadVariantCase_ == PayloadVariantOneofCase.DeviceUi ? (global::Meshtastic.Protobufs.DeviceUIConfig) payloadVariant_ : null; } + set { + payloadVariant_ = value; + payloadVariantCase_ = value == null ? PayloadVariantOneofCase.None : PayloadVariantOneofCase.DeviceUi; + } + } + private object payloadVariant_; /// Enum of possible cases for the "payload_variant" oneof. public enum PayloadVariantOneofCase { @@ -346,6 +363,7 @@ public enum PayloadVariantOneofCase { Bluetooth = 7, Security = 8, Sessionkey = 9, + DeviceUi = 10, } private PayloadVariantOneofCase payloadVariantCase_ = PayloadVariantOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -385,6 +403,7 @@ public bool Equals(Config other) { if (!object.Equals(Bluetooth, other.Bluetooth)) return false; if (!object.Equals(Security, other.Security)) return false; if (!object.Equals(Sessionkey, other.Sessionkey)) return false; + if (!object.Equals(DeviceUi, other.DeviceUi)) return false; if (PayloadVariantCase != other.PayloadVariantCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -402,6 +421,7 @@ public override int GetHashCode() { if (payloadVariantCase_ == PayloadVariantOneofCase.Bluetooth) hash ^= Bluetooth.GetHashCode(); if (payloadVariantCase_ == PayloadVariantOneofCase.Security) hash ^= Security.GetHashCode(); if (payloadVariantCase_ == PayloadVariantOneofCase.Sessionkey) hash ^= Sessionkey.GetHashCode(); + if (payloadVariantCase_ == PayloadVariantOneofCase.DeviceUi) hash ^= DeviceUi.GetHashCode(); hash ^= (int) payloadVariantCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -457,6 +477,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(74); output.WriteMessage(Sessionkey); } + if (payloadVariantCase_ == PayloadVariantOneofCase.DeviceUi) { + output.WriteRawTag(82); + output.WriteMessage(DeviceUi); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -503,6 +527,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(74); output.WriteMessage(Sessionkey); } + if (payloadVariantCase_ == PayloadVariantOneofCase.DeviceUi) { + output.WriteRawTag(82); + output.WriteMessage(DeviceUi); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -540,6 +568,9 @@ public int CalculateSize() { if (payloadVariantCase_ == PayloadVariantOneofCase.Sessionkey) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sessionkey); } + if (payloadVariantCase_ == PayloadVariantOneofCase.DeviceUi) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(DeviceUi); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -607,6 +638,12 @@ public void MergeFrom(Config other) { } Sessionkey.MergeFrom(other.Sessionkey); break; + case PayloadVariantOneofCase.DeviceUi: + if (DeviceUi == null) { + DeviceUi = new global::Meshtastic.Protobufs.DeviceUIConfig(); + } + DeviceUi.MergeFrom(other.DeviceUi); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -705,6 +742,15 @@ public void MergeFrom(pb::CodedInputStream input) { Sessionkey = subBuilder; break; } + case 82: { + global::Meshtastic.Protobufs.DeviceUIConfig subBuilder = new global::Meshtastic.Protobufs.DeviceUIConfig(); + if (payloadVariantCase_ == PayloadVariantOneofCase.DeviceUi) { + subBuilder.MergeFrom(DeviceUi); + } + input.ReadMessage(subBuilder); + DeviceUi = subBuilder; + break; + } } } #endif @@ -801,6 +847,15 @@ public void MergeFrom(pb::CodedInputStream input) { Sessionkey = subBuilder; break; } + case 82: { + global::Meshtastic.Protobufs.DeviceUIConfig subBuilder = new global::Meshtastic.Protobufs.DeviceUIConfig(); + if (payloadVariantCase_ == PayloadVariantOneofCase.DeviceUi) { + subBuilder.MergeFrom(DeviceUi); + } + input.ReadMessage(subBuilder); + DeviceUi = subBuilder; + break; + } } } } diff --git a/Meshtastic/Generated/DeviceUi.cs b/Meshtastic/Generated/DeviceUi.cs index 79eba5f..735d23d 100644 --- a/Meshtastic/Generated/DeviceUi.cs +++ b/Meshtastic/Generated/DeviceUi.cs @@ -24,30 +24,35 @@ public static partial class DeviceUiReflection { static DeviceUiReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "ChptZXNodGFzdGljL2RldmljZV91aS5wcm90bxIKbWVzaHRhc3RpYyKZAgoO", - "RGV2aWNlVUlDb25maWcSGQoRc2NyZWVuX2JyaWdodG5lc3MYASABKA0SFgoO", - "c2NyZWVuX3RpbWVvdXQYAiABKA0SEwoLc2NyZWVuX2xvY2sYAyABKAgSIAoF", - "dGhlbWUYBCABKA4yES5tZXNodGFzdGljLlRoZW1lEhUKDWFsZXJ0X2VuYWJs", - "ZWQYBSABKAgSJgoIbGFuZ3VhZ2UYBiABKA4yFC5tZXNodGFzdGljLkxhbmd1", - "YWdlEisKC25vZGVfZmlsdGVyGAcgASgLMhYubWVzaHRhc3RpYy5Ob2RlRmls", - "dGVyEjEKDm5vZGVfaGlnaGxpZ2h0GAggASgLMhkubWVzaHRhc3RpYy5Ob2Rl", - "SGlnaGxpZ2h0IpYBCgpOb2RlRmlsdGVyEhYKDnVua25vd25fc3dpdGNoGAEg", - "ASgIEhYKDm9mZmxpbmVfc3dpdGNoGAIgASgIEhkKEXB1YmxpY19rZXlfc3dp", - "dGNoGAMgASgIEhEKCWhvcHNfYXdheRgEIAEoBRIXCg9wb3NpdGlvbl9zd2l0", - "Y2gYBSABKAgSEQoJbm9kZV9uYW1lGAYgASgJIn4KDU5vZGVIaWdobGlnaHQS", - "EwoLY2hhdF9zd2l0Y2gYASABKAgSFwoPcG9zaXRpb25fc3dpdGNoGAIgASgI", - "EhgKEHRlbGVtZXRyeV9zd2l0Y2gYAyABKAgSEgoKaWFxX3N3aXRjaBgEIAEo", - "CBIRCglub2RlX25hbWUYBSABKAkqJQoFVGhlbWUSCAoEREFSSxAAEgkKBUxJ", - "R0hUEAESBwoDUkVEEAIqjAEKCExhbmd1YWdlEgsKB0VOR0xJU0gQABIKCgZG", - "UkVOQ0gQARIKCgZHRVJNQU4QAhILCgdJVEFMSUFOEAMSDgoKUE9SVFVHVUVT", - "RRAEEgsKB1NQQU5JU0gQBRILCgdTV0VESVNIEAYSCwoHRklOTklTSBAHEgoK", - "BlBPTElTSBAIEgsKB1RVUktJU0gQCUJjChNjb20uZ2Vla3N2aWxsZS5tZXNo", - "Qg5EZXZpY2VVSVByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dl", - "bmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM=")); + "ChptZXNodGFzdGljL2RldmljZV91aS5wcm90bxIKbWVzaHRhc3RpYyKBAwoO", + "RGV2aWNlVUlDb25maWcSDwoHdmVyc2lvbhgBIAEoDRIZChFzY3JlZW5fYnJp", + "Z2h0bmVzcxgCIAEoDRIWCg5zY3JlZW5fdGltZW91dBgDIAEoDRITCgtzY3Jl", + "ZW5fbG9jaxgEIAEoCBIVCg1zZXR0aW5nc19sb2NrGAUgASgIEhAKCHBpbl9j", + "b2RlGAYgASgNEiAKBXRoZW1lGAcgASgOMhEubWVzaHRhc3RpYy5UaGVtZRIV", + "Cg1hbGVydF9lbmFibGVkGAggASgIEhYKDmJhbm5lcl9lbmFibGVkGAkgASgI", + "EhQKDHJpbmdfdG9uZV9pZBgKIAEoDRImCghsYW5ndWFnZRgLIAEoDjIULm1l", + "c2h0YXN0aWMuTGFuZ3VhZ2USKwoLbm9kZV9maWx0ZXIYDCABKAsyFi5tZXNo", + "dGFzdGljLk5vZGVGaWx0ZXISMQoObm9kZV9oaWdobGlnaHQYDSABKAsyGS5t", + "ZXNodGFzdGljLk5vZGVIaWdobGlnaHQilgEKCk5vZGVGaWx0ZXISFgoOdW5r", + "bm93bl9zd2l0Y2gYASABKAgSFgoOb2ZmbGluZV9zd2l0Y2gYAiABKAgSGQoR", + "cHVibGljX2tleV9zd2l0Y2gYAyABKAgSEQoJaG9wc19hd2F5GAQgASgFEhcK", + "D3Bvc2l0aW9uX3N3aXRjaBgFIAEoCBIRCglub2RlX25hbWUYBiABKAkifgoN", + "Tm9kZUhpZ2hsaWdodBITCgtjaGF0X3N3aXRjaBgBIAEoCBIXCg9wb3NpdGlv", + "bl9zd2l0Y2gYAiABKAgSGAoQdGVsZW1ldHJ5X3N3aXRjaBgDIAEoCBISCgpp", + "YXFfc3dpdGNoGAQgASgIEhEKCW5vZGVfbmFtZRgFIAEoCSolCgVUaGVtZRII", + "CgREQVJLEAASCQoFTElHSFQQARIHCgNSRUQQAirtAQoITGFuZ3VhZ2USCwoH", + "RU5HTElTSBAAEgoKBkZSRU5DSBABEgoKBkdFUk1BThACEgsKB0lUQUxJQU4Q", + "AxIOCgpQT1JUVUdVRVNFEAQSCwoHU1BBTklTSBAFEgsKB1NXRURJU0gQBhIL", + "CgdGSU5OSVNIEAcSCgoGUE9MSVNIEAgSCwoHVFVSS0lTSBAJEgsKB1NFUkJJ", + "QU4QChILCgdSVVNTSUFOEAsSCQoFRFVUQ0gQDBIJCgVHUkVFSxANEhYKElNJ", + "TVBMSUZJRURfQ0hJTkVTRRAeEhcKE1RSQURJVElPTkFMX0NISU5FU0UQH0Jj", + "ChNjb20uZ2Vla3N2aWxsZS5tZXNoQg5EZXZpY2VVSVByb3Rvc1oiZ2l0aHVi", + "LmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJv", + "dG9idWZzugIAYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Meshtastic.Protobufs.Theme), typeof(global::Meshtastic.Protobufs.Language), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.DeviceUIConfig), global::Meshtastic.Protobufs.DeviceUIConfig.Parser, new[]{ "ScreenBrightness", "ScreenTimeout", "ScreenLock", "Theme", "AlertEnabled", "Language", "NodeFilter", "NodeHighlight" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.DeviceUIConfig), global::Meshtastic.Protobufs.DeviceUIConfig.Parser, new[]{ "Version", "ScreenBrightness", "ScreenTimeout", "ScreenLock", "SettingsLock", "PinCode", "Theme", "AlertEnabled", "BannerEnabled", "RingToneId", "Language", "NodeFilter", "NodeHighlight" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.NodeFilter), global::Meshtastic.Protobufs.NodeFilter.Parser, new[]{ "UnknownSwitch", "OfflineSwitch", "PublicKeySwitch", "HopsAway", "PositionSwitch", "NodeName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.NodeHighlight), global::Meshtastic.Protobufs.NodeHighlight.Parser, new[]{ "ChatSwitch", "PositionSwitch", "TelemetrySwitch", "IaqSwitch", "NodeName" }, null, null, null, null) })); @@ -129,6 +134,36 @@ public enum Language { /// Turkish /// [pbr::OriginalName("TURKISH")] Turkish = 9, + /// + /// + /// Serbian + /// + [pbr::OriginalName("SERBIAN")] Serbian = 10, + /// + /// + /// Russian + /// + [pbr::OriginalName("RUSSIAN")] Russian = 11, + /// + /// + /// Dutch + /// + [pbr::OriginalName("DUTCH")] Dutch = 12, + /// + /// + /// Greek + /// + [pbr::OriginalName("GREEK")] Greek = 13, + /// + /// + /// Simplified Chinese (experimental) + /// + [pbr::OriginalName("SIMPLIFIED_CHINESE")] SimplifiedChinese = 30, + /// + /// + /// Traditional Chinese (experimental) + /// + [pbr::OriginalName("TRADITIONAL_CHINESE")] TraditionalChinese = 31, } #endregion @@ -168,11 +203,16 @@ public DeviceUIConfig() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public DeviceUIConfig(DeviceUIConfig other) : this() { + version_ = other.version_; screenBrightness_ = other.screenBrightness_; screenTimeout_ = other.screenTimeout_; screenLock_ = other.screenLock_; + settingsLock_ = other.settingsLock_; + pinCode_ = other.pinCode_; theme_ = other.theme_; alertEnabled_ = other.alertEnabled_; + bannerEnabled_ = other.bannerEnabled_; + ringToneId_ = other.ringToneId_; language_ = other.language_; nodeFilter_ = other.nodeFilter_ != null ? other.nodeFilter_.Clone() : null; nodeHighlight_ = other.nodeHighlight_ != null ? other.nodeHighlight_.Clone() : null; @@ -185,8 +225,24 @@ public DeviceUIConfig Clone() { return new DeviceUIConfig(this); } + /// Field number for the "version" field. + public const int VersionFieldNumber = 1; + private uint version_; + /// + /// + /// A version integer used to invalidate saved files when we make incompatible changes. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Version { + get { return version_; } + set { + version_ = value; + } + } + /// Field number for the "screen_brightness" field. - public const int ScreenBrightnessFieldNumber = 1; + public const int ScreenBrightnessFieldNumber = 2; private uint screenBrightness_; /// /// @@ -202,7 +258,7 @@ public uint ScreenBrightness { } /// Field number for the "screen_timeout" field. - public const int ScreenTimeoutFieldNumber = 2; + public const int ScreenTimeoutFieldNumber = 3; private uint screenTimeout_; /// /// @@ -218,11 +274,11 @@ public uint ScreenTimeout { } /// Field number for the "screen_lock" field. - public const int ScreenLockFieldNumber = 3; + public const int ScreenLockFieldNumber = 4; private bool screenLock_; /// /// - /// Screen lock enabled + /// Screen/Settings lock enabled /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -233,8 +289,32 @@ public bool ScreenLock { } } + /// Field number for the "settings_lock" field. + public const int SettingsLockFieldNumber = 5; + private bool settingsLock_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool SettingsLock { + get { return settingsLock_; } + set { + settingsLock_ = value; + } + } + + /// Field number for the "pin_code" field. + public const int PinCodeFieldNumber = 6; + private uint pinCode_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint PinCode { + get { return pinCode_; } + set { + pinCode_ = value; + } + } + /// Field number for the "theme" field. - public const int ThemeFieldNumber = 4; + public const int ThemeFieldNumber = 7; private global::Meshtastic.Protobufs.Theme theme_ = global::Meshtastic.Protobufs.Theme.Dark; /// /// @@ -250,11 +330,11 @@ public bool ScreenLock { } /// Field number for the "alert_enabled" field. - public const int AlertEnabledFieldNumber = 5; + public const int AlertEnabledFieldNumber = 8; private bool alertEnabled_; /// /// - /// Audible message alert enabled + /// Audible message, banner and ring tone /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -265,8 +345,32 @@ public bool AlertEnabled { } } + /// Field number for the "banner_enabled" field. + public const int BannerEnabledFieldNumber = 9; + private bool bannerEnabled_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool BannerEnabled { + get { return bannerEnabled_; } + set { + bannerEnabled_ = value; + } + } + + /// Field number for the "ring_tone_id" field. + public const int RingToneIdFieldNumber = 10; + private uint ringToneId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint RingToneId { + get { return ringToneId_; } + set { + ringToneId_ = value; + } + } + /// Field number for the "language" field. - public const int LanguageFieldNumber = 6; + public const int LanguageFieldNumber = 11; private global::Meshtastic.Protobufs.Language language_ = global::Meshtastic.Protobufs.Language.English; /// /// @@ -282,7 +386,7 @@ public bool AlertEnabled { } /// Field number for the "node_filter" field. - public const int NodeFilterFieldNumber = 7; + public const int NodeFilterFieldNumber = 12; private global::Meshtastic.Protobufs.NodeFilter nodeFilter_; /// /// @@ -298,11 +402,11 @@ public bool AlertEnabled { } /// Field number for the "node_highlight" field. - public const int NodeHighlightFieldNumber = 8; + public const int NodeHighlightFieldNumber = 13; private global::Meshtastic.Protobufs.NodeHighlight nodeHighlight_; /// /// - /// Node list highlightening + /// Node list highlightening /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -328,11 +432,16 @@ public bool Equals(DeviceUIConfig other) { if (ReferenceEquals(other, this)) { return true; } + if (Version != other.Version) return false; if (ScreenBrightness != other.ScreenBrightness) return false; if (ScreenTimeout != other.ScreenTimeout) return false; if (ScreenLock != other.ScreenLock) return false; + if (SettingsLock != other.SettingsLock) return false; + if (PinCode != other.PinCode) return false; if (Theme != other.Theme) return false; if (AlertEnabled != other.AlertEnabled) return false; + if (BannerEnabled != other.BannerEnabled) return false; + if (RingToneId != other.RingToneId) return false; if (Language != other.Language) return false; if (!object.Equals(NodeFilter, other.NodeFilter)) return false; if (!object.Equals(NodeHighlight, other.NodeHighlight)) return false; @@ -343,11 +452,16 @@ public bool Equals(DeviceUIConfig other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; + if (Version != 0) hash ^= Version.GetHashCode(); if (ScreenBrightness != 0) hash ^= ScreenBrightness.GetHashCode(); if (ScreenTimeout != 0) hash ^= ScreenTimeout.GetHashCode(); if (ScreenLock != false) hash ^= ScreenLock.GetHashCode(); + if (SettingsLock != false) hash ^= SettingsLock.GetHashCode(); + if (PinCode != 0) hash ^= PinCode.GetHashCode(); if (Theme != global::Meshtastic.Protobufs.Theme.Dark) hash ^= Theme.GetHashCode(); if (AlertEnabled != false) hash ^= AlertEnabled.GetHashCode(); + if (BannerEnabled != false) hash ^= BannerEnabled.GetHashCode(); + if (RingToneId != 0) hash ^= RingToneId.GetHashCode(); if (Language != global::Meshtastic.Protobufs.Language.English) hash ^= Language.GetHashCode(); if (nodeFilter_ != null) hash ^= NodeFilter.GetHashCode(); if (nodeHighlight_ != null) hash ^= NodeHighlight.GetHashCode(); @@ -369,36 +483,56 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (ScreenBrightness != 0) { + if (Version != 0) { output.WriteRawTag(8); + output.WriteUInt32(Version); + } + if (ScreenBrightness != 0) { + output.WriteRawTag(16); output.WriteUInt32(ScreenBrightness); } if (ScreenTimeout != 0) { - output.WriteRawTag(16); + output.WriteRawTag(24); output.WriteUInt32(ScreenTimeout); } if (ScreenLock != false) { - output.WriteRawTag(24); + output.WriteRawTag(32); output.WriteBool(ScreenLock); } + if (SettingsLock != false) { + output.WriteRawTag(40); + output.WriteBool(SettingsLock); + } + if (PinCode != 0) { + output.WriteRawTag(48); + output.WriteUInt32(PinCode); + } if (Theme != global::Meshtastic.Protobufs.Theme.Dark) { - output.WriteRawTag(32); + output.WriteRawTag(56); output.WriteEnum((int) Theme); } if (AlertEnabled != false) { - output.WriteRawTag(40); + output.WriteRawTag(64); output.WriteBool(AlertEnabled); } + if (BannerEnabled != false) { + output.WriteRawTag(72); + output.WriteBool(BannerEnabled); + } + if (RingToneId != 0) { + output.WriteRawTag(80); + output.WriteUInt32(RingToneId); + } if (Language != global::Meshtastic.Protobufs.Language.English) { - output.WriteRawTag(48); + output.WriteRawTag(88); output.WriteEnum((int) Language); } if (nodeFilter_ != null) { - output.WriteRawTag(58); + output.WriteRawTag(98); output.WriteMessage(NodeFilter); } if (nodeHighlight_ != null) { - output.WriteRawTag(66); + output.WriteRawTag(106); output.WriteMessage(NodeHighlight); } if (_unknownFields != null) { @@ -411,36 +545,56 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (ScreenBrightness != 0) { + if (Version != 0) { output.WriteRawTag(8); + output.WriteUInt32(Version); + } + if (ScreenBrightness != 0) { + output.WriteRawTag(16); output.WriteUInt32(ScreenBrightness); } if (ScreenTimeout != 0) { - output.WriteRawTag(16); + output.WriteRawTag(24); output.WriteUInt32(ScreenTimeout); } if (ScreenLock != false) { - output.WriteRawTag(24); + output.WriteRawTag(32); output.WriteBool(ScreenLock); } + if (SettingsLock != false) { + output.WriteRawTag(40); + output.WriteBool(SettingsLock); + } + if (PinCode != 0) { + output.WriteRawTag(48); + output.WriteUInt32(PinCode); + } if (Theme != global::Meshtastic.Protobufs.Theme.Dark) { - output.WriteRawTag(32); + output.WriteRawTag(56); output.WriteEnum((int) Theme); } if (AlertEnabled != false) { - output.WriteRawTag(40); + output.WriteRawTag(64); output.WriteBool(AlertEnabled); } + if (BannerEnabled != false) { + output.WriteRawTag(72); + output.WriteBool(BannerEnabled); + } + if (RingToneId != 0) { + output.WriteRawTag(80); + output.WriteUInt32(RingToneId); + } if (Language != global::Meshtastic.Protobufs.Language.English) { - output.WriteRawTag(48); + output.WriteRawTag(88); output.WriteEnum((int) Language); } if (nodeFilter_ != null) { - output.WriteRawTag(58); + output.WriteRawTag(98); output.WriteMessage(NodeFilter); } if (nodeHighlight_ != null) { - output.WriteRawTag(66); + output.WriteRawTag(106); output.WriteMessage(NodeHighlight); } if (_unknownFields != null) { @@ -453,6 +607,9 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; + if (Version != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Version); + } if (ScreenBrightness != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ScreenBrightness); } @@ -462,12 +619,24 @@ public int CalculateSize() { if (ScreenLock != false) { size += 1 + 1; } + if (SettingsLock != false) { + size += 1 + 1; + } + if (PinCode != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(PinCode); + } if (Theme != global::Meshtastic.Protobufs.Theme.Dark) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Theme); } if (AlertEnabled != false) { size += 1 + 1; } + if (BannerEnabled != false) { + size += 1 + 1; + } + if (RingToneId != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(RingToneId); + } if (Language != global::Meshtastic.Protobufs.Language.English) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Language); } @@ -489,6 +658,9 @@ public void MergeFrom(DeviceUIConfig other) { if (other == null) { return; } + if (other.Version != 0) { + Version = other.Version; + } if (other.ScreenBrightness != 0) { ScreenBrightness = other.ScreenBrightness; } @@ -498,12 +670,24 @@ public void MergeFrom(DeviceUIConfig other) { if (other.ScreenLock != false) { ScreenLock = other.ScreenLock; } + if (other.SettingsLock != false) { + SettingsLock = other.SettingsLock; + } + if (other.PinCode != 0) { + PinCode = other.PinCode; + } if (other.Theme != global::Meshtastic.Protobufs.Theme.Dark) { Theme = other.Theme; } if (other.AlertEnabled != false) { AlertEnabled = other.AlertEnabled; } + if (other.BannerEnabled != false) { + BannerEnabled = other.BannerEnabled; + } + if (other.RingToneId != 0) { + RingToneId = other.RingToneId; + } if (other.Language != global::Meshtastic.Protobufs.Language.English) { Language = other.Language; } @@ -535,37 +719,57 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { - ScreenBrightness = input.ReadUInt32(); + Version = input.ReadUInt32(); break; } case 16: { - ScreenTimeout = input.ReadUInt32(); + ScreenBrightness = input.ReadUInt32(); break; } case 24: { - ScreenLock = input.ReadBool(); + ScreenTimeout = input.ReadUInt32(); break; } case 32: { - Theme = (global::Meshtastic.Protobufs.Theme) input.ReadEnum(); + ScreenLock = input.ReadBool(); break; } case 40: { - AlertEnabled = input.ReadBool(); + SettingsLock = input.ReadBool(); break; } case 48: { + PinCode = input.ReadUInt32(); + break; + } + case 56: { + Theme = (global::Meshtastic.Protobufs.Theme) input.ReadEnum(); + break; + } + case 64: { + AlertEnabled = input.ReadBool(); + break; + } + case 72: { + BannerEnabled = input.ReadBool(); + break; + } + case 80: { + RingToneId = input.ReadUInt32(); + break; + } + case 88: { Language = (global::Meshtastic.Protobufs.Language) input.ReadEnum(); break; } - case 58: { + case 98: { if (nodeFilter_ == null) { NodeFilter = new global::Meshtastic.Protobufs.NodeFilter(); } input.ReadMessage(NodeFilter); break; } - case 66: { + case 106: { if (nodeHighlight_ == null) { NodeHighlight = new global::Meshtastic.Protobufs.NodeHighlight(); } @@ -588,37 +792,57 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 8: { - ScreenBrightness = input.ReadUInt32(); + Version = input.ReadUInt32(); break; } case 16: { - ScreenTimeout = input.ReadUInt32(); + ScreenBrightness = input.ReadUInt32(); break; } case 24: { - ScreenLock = input.ReadBool(); + ScreenTimeout = input.ReadUInt32(); break; } case 32: { - Theme = (global::Meshtastic.Protobufs.Theme) input.ReadEnum(); + ScreenLock = input.ReadBool(); break; } case 40: { - AlertEnabled = input.ReadBool(); + SettingsLock = input.ReadBool(); break; } case 48: { + PinCode = input.ReadUInt32(); + break; + } + case 56: { + Theme = (global::Meshtastic.Protobufs.Theme) input.ReadEnum(); + break; + } + case 64: { + AlertEnabled = input.ReadBool(); + break; + } + case 72: { + BannerEnabled = input.ReadBool(); + break; + } + case 80: { + RingToneId = input.ReadUInt32(); + break; + } + case 88: { Language = (global::Meshtastic.Protobufs.Language) input.ReadEnum(); break; } - case 58: { + case 98: { if (nodeFilter_ == null) { NodeFilter = new global::Meshtastic.Protobufs.NodeFilter(); } input.ReadMessage(NodeFilter); break; } - case 66: { + case 106: { if (nodeHighlight_ == null) { NodeHighlight = new global::Meshtastic.Protobufs.NodeHighlight(); } diff --git a/protobufs b/protobufs index fd57601..8072368 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit fd5760108a2399ca58cd7df280afe2b434aae2c2 +Subproject commit 807236815d61cc0ebd89472c2a2aa76758bc92ac