diff --git a/Meshtastic/Connections/SerialConnection.cs b/Meshtastic/Connections/SerialConnection.cs
index cd4737d..cb03498 100644
--- a/Meshtastic/Connections/SerialConnection.cs
+++ b/Meshtastic/Connections/SerialConnection.cs
@@ -10,22 +10,24 @@ namespace Meshtastic.Connections;
public class SerialConnection : DeviceConnection
{
private readonly SerialPort serialPort;
+ private const Handshake DEFAULT_HANDSHAKE = Handshake.None;
+ private const bool DEFAULT_DTR_ENABLE = true;
public SerialConnection(ILogger logger, string port, int baudRate = Resources.DEFAULT_BAUD_RATE) : base(logger)
{
serialPort = new SerialPort(port, baudRate)
{
- DtrEnable = true,
- Handshake = Handshake.XOnXOff,
- WriteBufferSize = 8,
+ DtrEnable = DEFAULT_DTR_ENABLE,
+ Handshake = DEFAULT_HANDSHAKE,
+ WriteBufferSize = 256,
};
}
public SerialConnection(ILogger logger,
string port,
DeviceStateContainer container,
- bool dtrEnable = true,
- Handshake handshake = Handshake.XOnXOff,
+ bool dtrEnable = DEFAULT_DTR_ENABLE,
+ Handshake handshake = DEFAULT_HANDSHAKE,
int baudRate = Resources.DEFAULT_BAUD_RATE) : base(logger)
{
serialPort = new SerialPort(port, baudRate)
diff --git a/Meshtastic/Generated/Admin.cs b/Meshtastic/Generated/Admin.cs
index be5249c..c49c4ac 100644
--- a/Meshtastic/Generated/Admin.cs
+++ b/Meshtastic/Generated/Admin.cs
@@ -775,7 +775,7 @@ public uint RemoveFavoriteNode {
public const int RemoveFixedPositionFieldNumber = 42;
///
///
- /// Clear fixed position coordinates and then set position.fixed_position = false
+ /// Clear fixed position coordinates and then set position.fixed_position = false
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
diff --git a/Meshtastic/Generated/Atak.cs b/Meshtastic/Generated/Atak.cs
index 6595373..d7b05c1 100644
--- a/Meshtastic/Generated/Atak.cs
+++ b/Meshtastic/Generated/Atak.cs
@@ -197,7 +197,7 @@ public enum MemberRole {
#region Messages
///
///
- /// Packets for the official ATAK Plugin
+ /// Packets for the official ATAK Plugin
///
public sealed partial class TAKPacket : pb::IMessage
#if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
diff --git a/Meshtastic/Generated/Channel.cs b/Meshtastic/Generated/Channel.cs
index 649a47c..a708f39 100644
--- a/Meshtastic/Generated/Channel.cs
+++ b/Meshtastic/Generated/Channel.cs
@@ -29,19 +29,19 @@ static ChannelReflection() {
"GAIgASgMEgwKBG5hbWUYAyABKAkSCgoCaWQYBCABKAcSFgoOdXBsaW5rX2Vu",
"YWJsZWQYBSABKAgSGAoQZG93bmxpbmtfZW5hYmxlZBgGIAEoCBIzCg9tb2R1",
"bGVfc2V0dGluZ3MYByABKAsyGi5tZXNodGFzdGljLk1vZHVsZVNldHRpbmdz",
- "IiwKDk1vZHVsZVNldHRpbmdzEhoKEnBvc2l0aW9uX3ByZWNpc2lvbhgBIAEo",
- "DSKhAQoHQ2hhbm5lbBINCgVpbmRleBgBIAEoBRItCghzZXR0aW5ncxgCIAEo",
- "CzIbLm1lc2h0YXN0aWMuQ2hhbm5lbFNldHRpbmdzEiYKBHJvbGUYAyABKA4y",
- "GC5tZXNodGFzdGljLkNoYW5uZWwuUm9sZSIwCgRSb2xlEgwKCERJU0FCTEVE",
- "EAASCwoHUFJJTUFSWRABEg0KCVNFQ09OREFSWRACQmIKE2NvbS5nZWVrc3Zp",
- "bGxlLm1lc2hCDUNoYW5uZWxQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3Rp",
- "Yy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJv",
- "dG8z"));
+ "IkUKDk1vZHVsZVNldHRpbmdzEhoKEnBvc2l0aW9uX3ByZWNpc2lvbhgBIAEo",
+ "DRIXCg9pc19jbGllbnRfbXV0ZWQYAiABKAgioQEKB0NoYW5uZWwSDQoFaW5k",
+ "ZXgYASABKAUSLQoIc2V0dGluZ3MYAiABKAsyGy5tZXNodGFzdGljLkNoYW5u",
+ "ZWxTZXR0aW5ncxImCgRyb2xlGAMgASgOMhgubWVzaHRhc3RpYy5DaGFubmVs",
+ "LlJvbGUiMAoEUm9sZRIMCghESVNBQkxFRBAAEgsKB1BSSU1BUlkQARINCglT",
+ "RUNPTkRBUlkQAkJiChNjb20uZ2Vla3N2aWxsZS5tZXNoQg1DaGFubmVsUHJv",
+ "dG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVz",
+ "aHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.ChannelSettings), global::Meshtastic.Protobufs.ChannelSettings.Parser, new[]{ "ChannelNum", "Psk", "Name", "Id", "UplinkEnabled", "DownlinkEnabled", "ModuleSettings" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.ModuleSettings), global::Meshtastic.Protobufs.ModuleSettings.Parser, new[]{ "PositionPrecision" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.ModuleSettings), global::Meshtastic.Protobufs.ModuleSettings.Parser, new[]{ "PositionPrecision", "IsClientMuted" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Channel), global::Meshtastic.Protobufs.Channel.Parser, new[]{ "Index", "Settings", "Role" }, null, new[]{ typeof(global::Meshtastic.Protobufs.Channel.Types.Role) }, null, null)
}));
}
@@ -581,6 +581,7 @@ public ModuleSettings() {
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public ModuleSettings(ModuleSettings other) : this() {
positionPrecision_ = other.positionPrecision_;
+ isClientMuted_ = other.isClientMuted_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -606,6 +607,23 @@ public uint PositionPrecision {
}
}
+ /// Field number for the "is_client_muted" field.
+ public const int IsClientMutedFieldNumber = 2;
+ private bool isClientMuted_;
+ ///
+ ///
+ /// Controls whether or not the phone / clients should mute the current channel
+ /// Useful for noisy public channels you don't necessarily want to disable
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool IsClientMuted {
+ get { return isClientMuted_; }
+ set {
+ isClientMuted_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
@@ -622,6 +640,7 @@ public bool Equals(ModuleSettings other) {
return true;
}
if (PositionPrecision != other.PositionPrecision) return false;
+ if (IsClientMuted != other.IsClientMuted) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -630,6 +649,7 @@ public bool Equals(ModuleSettings other) {
public override int GetHashCode() {
int hash = 1;
if (PositionPrecision != 0) hash ^= PositionPrecision.GetHashCode();
+ if (IsClientMuted != false) hash ^= IsClientMuted.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -652,6 +672,10 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(8);
output.WriteUInt32(PositionPrecision);
}
+ if (IsClientMuted != false) {
+ output.WriteRawTag(16);
+ output.WriteBool(IsClientMuted);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -666,6 +690,10 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(8);
output.WriteUInt32(PositionPrecision);
}
+ if (IsClientMuted != false) {
+ output.WriteRawTag(16);
+ output.WriteBool(IsClientMuted);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@@ -679,6 +707,9 @@ public int CalculateSize() {
if (PositionPrecision != 0) {
size += 1 + pb::CodedOutputStream.ComputeUInt32Size(PositionPrecision);
}
+ if (IsClientMuted != false) {
+ size += 1 + 1;
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -694,6 +725,9 @@ public void MergeFrom(ModuleSettings other) {
if (other.PositionPrecision != 0) {
PositionPrecision = other.PositionPrecision;
}
+ if (other.IsClientMuted != false) {
+ IsClientMuted = other.IsClientMuted;
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -713,6 +747,10 @@ public void MergeFrom(pb::CodedInputStream input) {
PositionPrecision = input.ReadUInt32();
break;
}
+ case 16: {
+ IsClientMuted = input.ReadBool();
+ break;
+ }
}
}
#endif
@@ -732,6 +770,10 @@ public void MergeFrom(pb::CodedInputStream input) {
PositionPrecision = input.ReadUInt32();
break;
}
+ case 16: {
+ IsClientMuted = input.ReadBool();
+ break;
+ }
}
}
}
diff --git a/Meshtastic/Generated/Config.cs b/Meshtastic/Generated/Config.cs
index 2d071b2..0e94d7b 100644
--- a/Meshtastic/Generated/Config.cs
+++ b/Meshtastic/Generated/Config.cs
@@ -24,7 +24,7 @@ public static partial class ConfigReflection {
static ConfigReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "ChdtZXNodGFzdGljL2NvbmZpZy5wcm90bxIKbWVzaHRhc3RpYyKTHwoGQ29u",
+ "ChdtZXNodGFzdGljL2NvbmZpZy5wcm90bxIKbWVzaHRhc3RpYyLCHwoGQ29u",
"ZmlnEjEKBmRldmljZRgBIAEoCzIfLm1lc2h0YXN0aWMuQ29uZmlnLkRldmlj",
"ZUNvbmZpZ0gAEjUKCHBvc2l0aW9uGAIgASgLMiEubWVzaHRhc3RpYy5Db25m",
"aWcuUG9zaXRpb25Db25maWdIABIvCgVwb3dlchgDIAEoCzIeLm1lc2h0YXN0",
@@ -33,7 +33,7 @@ static ConfigReflection() {
"ASgLMiAubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZ0gAEi0KBGxv",
"cmEYBiABKAsyHS5tZXNodGFzdGljLkNvbmZpZy5Mb1JhQ29uZmlnSAASNwoJ",
"Ymx1ZXRvb3RoGAcgASgLMiIubWVzaHRhc3RpYy5Db25maWcuQmx1ZXRvb3Ro",
- "Q29uZmlnSAAa4gQKDERldmljZUNvbmZpZxIyCgRyb2xlGAEgASgOMiQubWVz",
+ "Q29uZmlnSAAakQUKDERldmljZUNvbmZpZxIyCgRyb2xlGAEgASgOMiQubWVz",
"aHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnLlJvbGUSFgoOc2VyaWFsX2Vu",
"YWJsZWQYAiABKAgSGQoRZGVidWdfbG9nX2VuYWJsZWQYAyABKAgSEwoLYnV0",
"dG9uX2dwaW8YBCABKA0SEwoLYnV6emVyX2dwaW8YBSABKA0SSQoQcmVicm9h",
@@ -41,85 +41,86 @@ static ConfigReflection() {
"bmZpZy5SZWJyb2FkY2FzdE1vZGUSIAoYbm9kZV9pbmZvX2Jyb2FkY2FzdF9z",
"ZWNzGAcgASgNEiIKGmRvdWJsZV90YXBfYXNfYnV0dG9uX3ByZXNzGAggASgI",
"EhIKCmlzX21hbmFnZWQYCSABKAgSHAoUZGlzYWJsZV90cmlwbGVfY2xpY2sY",
- "CiABKAgiqgEKBFJvbGUSCgoGQ0xJRU5UEAASDwoLQ0xJRU5UX01VVEUQARIK",
- "CgZST1VURVIQAhIRCg1ST1VURVJfQ0xJRU5UEAMSDAoIUkVQRUFURVIQBBIL",
- "CgdUUkFDS0VSEAUSCgoGU0VOU09SEAYSBwoDVEFLEAcSEQoNQ0xJRU5UX0hJ",
- "RERFThAIEhIKDkxPU1RfQU5EX0ZPVU5EEAkSDwoLVEFLX1RSQUNLRVIQCiJR",
- "Cg9SZWJyb2FkY2FzdE1vZGUSBwoDQUxMEAASFQoRQUxMX1NLSVBfREVDT0RJ",
- "TkcQARIOCgpMT0NBTF9PTkxZEAISDgoKS05PV05fT05MWRADGpEFCg5Qb3Np",
- "dGlvbkNvbmZpZxIfChdwb3NpdGlvbl9icm9hZGNhc3Rfc2VjcxgBIAEoDRIo",
- "CiBwb3NpdGlvbl9icm9hZGNhc3Rfc21hcnRfZW5hYmxlZBgCIAEoCBIWCg5m",
- "aXhlZF9wb3NpdGlvbhgDIAEoCBIXCgtncHNfZW5hYmxlZBgEIAEoCEICGAES",
- "GwoTZ3BzX3VwZGF0ZV9pbnRlcnZhbBgFIAEoDRIcChBncHNfYXR0ZW1wdF90",
- "aW1lGAYgASgNQgIYARIWCg5wb3NpdGlvbl9mbGFncxgHIAEoDRIPCgdyeF9n",
- "cGlvGAggASgNEg8KB3R4X2dwaW8YCSABKA0SKAogYnJvYWRjYXN0X3NtYXJ0",
- "X21pbmltdW1fZGlzdGFuY2UYCiABKA0SLQolYnJvYWRjYXN0X3NtYXJ0X21p",
- "bmltdW1faW50ZXJ2YWxfc2VjcxgLIAEoDRITCgtncHNfZW5fZ3BpbxgMIAEo",
- "DRI7CghncHNfbW9kZRgNIAEoDjIpLm1lc2h0YXN0aWMuQ29uZmlnLlBvc2l0",
- "aW9uQ29uZmlnLkdwc01vZGUiqwEKDVBvc2l0aW9uRmxhZ3MSCQoFVU5TRVQQ",
- "ABIMCghBTFRJVFVERRABEhAKDEFMVElUVURFX01TTBACEhYKEkdFT0lEQUxf",
- "U0VQQVJBVElPThAEEgcKA0RPUBAIEgkKBUhWRE9QEBASDQoJU0FUSU5WSUVX",
- "ECASCgoGU0VRX05PEEASDgoJVElNRVNUQU1QEIABEgwKB0hFQURJTkcQgAIS",
- "CgoFU1BFRUQQgAQiNQoHR3BzTW9kZRIMCghESVNBQkxFRBAAEgsKB0VOQUJM",
- "RUQQARIPCgtOT1RfUFJFU0VOVBACGuoBCgtQb3dlckNvbmZpZxIXCg9pc19w",
- "b3dlcl9zYXZpbmcYASABKAgSJgoeb25fYmF0dGVyeV9zaHV0ZG93bl9hZnRl",
- "cl9zZWNzGAIgASgNEh8KF2FkY19tdWx0aXBsaWVyX292ZXJyaWRlGAMgASgC",
- "EhsKE3dhaXRfYmx1ZXRvb3RoX3NlY3MYBCABKA0SEAoIc2RzX3NlY3MYBiAB",
- "KA0SDwoHbHNfc2VjcxgHIAEoDRIVCg1taW5fd2FrZV9zZWNzGAggASgNEiIK",
- "GmRldmljZV9iYXR0ZXJ5X2luYV9hZGRyZXNzGAkgASgNGv4CCg1OZXR3b3Jr",
- "Q29uZmlnEhQKDHdpZmlfZW5hYmxlZBgBIAEoCBIRCgl3aWZpX3NzaWQYAyAB",
- "KAkSEAoId2lmaV9wc2sYBCABKAkSEgoKbnRwX3NlcnZlchgFIAEoCRITCgtl",
- "dGhfZW5hYmxlZBgGIAEoCBJCCgxhZGRyZXNzX21vZGUYByABKA4yLC5tZXNo",
- "dGFzdGljLkNvbmZpZy5OZXR3b3JrQ29uZmlnLkFkZHJlc3NNb2RlEkAKC2lw",
- "djRfY29uZmlnGAggASgLMisubWVzaHRhc3RpYy5Db25maWcuTmV0d29ya0Nv",
- "bmZpZy5JcFY0Q29uZmlnEhYKDnJzeXNsb2dfc2VydmVyGAkgASgJGkYKCklw",
- "VjRDb25maWcSCgoCaXAYASABKAcSDwoHZ2F0ZXdheRgCIAEoBxIOCgZzdWJu",
- "ZXQYAyABKAcSCwoDZG5zGAQgASgHIiMKC0FkZHJlc3NNb2RlEggKBERIQ1AQ",
- "ABIKCgZTVEFUSUMQARq+BQoNRGlzcGxheUNvbmZpZxIWCg5zY3JlZW5fb25f",
- "c2VjcxgBIAEoDRJICgpncHNfZm9ybWF0GAIgASgOMjQubWVzaHRhc3RpYy5D",
- "b25maWcuRGlzcGxheUNvbmZpZy5HcHNDb29yZGluYXRlRm9ybWF0EiEKGWF1",
- "dG9fc2NyZWVuX2Nhcm91c2VsX3NlY3MYAyABKA0SGQoRY29tcGFzc19ub3J0",
- "aF90b3AYBCABKAgSEwoLZmxpcF9zY3JlZW4YBSABKAgSPAoFdW5pdHMYBiAB",
- "KA4yLS5tZXNodGFzdGljLkNvbmZpZy5EaXNwbGF5Q29uZmlnLkRpc3BsYXlV",
- "bml0cxI3CgRvbGVkGAcgASgOMikubWVzaHRhc3RpYy5Db25maWcuRGlzcGxh",
- "eUNvbmZpZy5PbGVkVHlwZRJBCgtkaXNwbGF5bW9kZRgIIAEoDjIsLm1lc2h0",
- "YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuRGlzcGxheU1vZGUSFAoMaGVh",
- "ZGluZ19ib2xkGAkgASgIEh0KFXdha2Vfb25fdGFwX29yX21vdGlvbhgKIAEo",
- "CCJNChNHcHNDb29yZGluYXRlRm9ybWF0EgcKA0RFQxAAEgcKA0RNUxABEgcK",
- "A1VUTRACEggKBE1HUlMQAxIHCgNPTEMQBBIICgRPU0dSEAUiKAoMRGlzcGxh",
- "eVVuaXRzEgoKBk1FVFJJQxAAEgwKCElNUEVSSUFMEAEiTQoIT2xlZFR5cGUS",
- "DQoJT0xFRF9BVVRPEAASEAoMT0xFRF9TU0QxMzA2EAESDwoLT0xFRF9TSDEx",
- "MDYQAhIPCgtPTEVEX1NIMTEwNxADIkEKC0Rpc3BsYXlNb2RlEgsKB0RFRkFV",
- "TFQQABIMCghUV09DT0xPUhABEgwKCElOVkVSVEVEEAISCQoFQ09MT1IQAxqw",
- "BgoKTG9SYUNvbmZpZxISCgp1c2VfcHJlc2V0GAEgASgIEj8KDG1vZGVtX3By",
- "ZXNldBgCIAEoDjIpLm1lc2h0YXN0aWMuQ29uZmlnLkxvUmFDb25maWcuTW9k",
- "ZW1QcmVzZXQSEQoJYmFuZHdpZHRoGAMgASgNEhUKDXNwcmVhZF9mYWN0b3IY",
- "BCABKA0SEwoLY29kaW5nX3JhdGUYBSABKA0SGAoQZnJlcXVlbmN5X29mZnNl",
- "dBgGIAEoAhI4CgZyZWdpb24YByABKA4yKC5tZXNodGFzdGljLkNvbmZpZy5M",
- "b1JhQ29uZmlnLlJlZ2lvbkNvZGUSEQoJaG9wX2xpbWl0GAggASgNEhIKCnR4",
- "X2VuYWJsZWQYCSABKAgSEAoIdHhfcG93ZXIYCiABKAUSEwoLY2hhbm5lbF9u",
- "dW0YCyABKA0SGwoTb3ZlcnJpZGVfZHV0eV9jeWNsZRgMIAEoCBIeChZzeDEy",
- "NnhfcnhfYm9vc3RlZF9nYWluGA0gASgIEhoKEm92ZXJyaWRlX2ZyZXF1ZW5j",
- "eRgOIAEoAhIXCg9pZ25vcmVfaW5jb21pbmcYZyADKA0SEwoLaWdub3JlX21x",
- "dHQYaCABKAgizQEKClJlZ2lvbkNvZGUSCQoFVU5TRVQQABIGCgJVUxABEgoK",
- "BkVVXzQzMxACEgoKBkVVXzg2OBADEgYKAkNOEAQSBgoCSlAQBRIHCgNBTloQ",
- "BhIGCgJLUhAHEgYKAlRXEAgSBgoCUlUQCRIGCgJJThAKEgoKBk5aXzg2NRAL",
- "EgYKAlRIEAwSCwoHTE9SQV8yNBANEgoKBlVBXzQzMxAOEgoKBlVBXzg2OBAP",
- "EgoKBk1ZXzQzMxAQEgoKBk1ZXzkxORAREgoKBlNHXzkyMxASIpQBCgtNb2Rl",
- "bVByZXNldBINCglMT05HX0ZBU1QQABINCglMT05HX1NMT1cQARISCg5WRVJZ",
- "X0xPTkdfU0xPVxACEg8KC01FRElVTV9TTE9XEAMSDwoLTUVESVVNX0ZBU1QQ",
- "BBIOCgpTSE9SVF9TTE9XEAUSDgoKU0hPUlRfRkFTVBAGEhEKDUxPTkdfTU9E",
- "RVJBVEUQBxqtAQoPQmx1ZXRvb3RoQ29uZmlnEg8KB2VuYWJsZWQYASABKAgS",
- "PAoEbW9kZRgCIAEoDjIuLm1lc2h0YXN0aWMuQ29uZmlnLkJsdWV0b290aENv",
- "bmZpZy5QYWlyaW5nTW9kZRIRCglmaXhlZF9waW4YAyABKA0iOAoLUGFpcmlu",
- "Z01vZGUSDgoKUkFORE9NX1BJThAAEg0KCUZJWEVEX1BJThABEgoKBk5PX1BJ",
- "ThACQhEKD3BheWxvYWRfdmFyaWFudEJhChNjb20uZ2Vla3N2aWxsZS5tZXNo",
- "QgxDb25maWdQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5l",
- "cmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"));
+ "CiABKAgSDQoFdHpkZWYYCyABKAkSHgoWbGVkX2hlYXJ0YmVhdF9kaXNhYmxl",
+ "ZBgMIAEoCCKqAQoEUm9sZRIKCgZDTElFTlQQABIPCgtDTElFTlRfTVVURRAB",
+ "EgoKBlJPVVRFUhACEhEKDVJPVVRFUl9DTElFTlQQAxIMCghSRVBFQVRFUhAE",
+ "EgsKB1RSQUNLRVIQBRIKCgZTRU5TT1IQBhIHCgNUQUsQBxIRCg1DTElFTlRf",
+ "SElEREVOEAgSEgoOTE9TVF9BTkRfRk9VTkQQCRIPCgtUQUtfVFJBQ0tFUhAK",
+ "IlEKD1JlYnJvYWRjYXN0TW9kZRIHCgNBTEwQABIVChFBTExfU0tJUF9ERUNP",
+ "RElORxABEg4KCkxPQ0FMX09OTFkQAhIOCgpLTk9XTl9PTkxZEAMakQUKDlBv",
+ "c2l0aW9uQ29uZmlnEh8KF3Bvc2l0aW9uX2Jyb2FkY2FzdF9zZWNzGAEgASgN",
+ "EigKIHBvc2l0aW9uX2Jyb2FkY2FzdF9zbWFydF9lbmFibGVkGAIgASgIEhYK",
+ "DmZpeGVkX3Bvc2l0aW9uGAMgASgIEhcKC2dwc19lbmFibGVkGAQgASgIQgIY",
+ "ARIbChNncHNfdXBkYXRlX2ludGVydmFsGAUgASgNEhwKEGdwc19hdHRlbXB0",
+ "X3RpbWUYBiABKA1CAhgBEhYKDnBvc2l0aW9uX2ZsYWdzGAcgASgNEg8KB3J4",
+ "X2dwaW8YCCABKA0SDwoHdHhfZ3BpbxgJIAEoDRIoCiBicm9hZGNhc3Rfc21h",
+ "cnRfbWluaW11bV9kaXN0YW5jZRgKIAEoDRItCiVicm9hZGNhc3Rfc21hcnRf",
+ "bWluaW11bV9pbnRlcnZhbF9zZWNzGAsgASgNEhMKC2dwc19lbl9ncGlvGAwg",
+ "ASgNEjsKCGdwc19tb2RlGA0gASgOMikubWVzaHRhc3RpYy5Db25maWcuUG9z",
+ "aXRpb25Db25maWcuR3BzTW9kZSKrAQoNUG9zaXRpb25GbGFncxIJCgVVTlNF",
+ "VBAAEgwKCEFMVElUVURFEAESEAoMQUxUSVRVREVfTVNMEAISFgoSR0VPSURB",
+ "TF9TRVBBUkFUSU9OEAQSBwoDRE9QEAgSCQoFSFZET1AQEBINCglTQVRJTlZJ",
+ "RVcQIBIKCgZTRVFfTk8QQBIOCglUSU1FU1RBTVAQgAESDAoHSEVBRElORxCA",
+ "AhIKCgVTUEVFRBCABCI1CgdHcHNNb2RlEgwKCERJU0FCTEVEEAASCwoHRU5B",
+ "QkxFRBABEg8KC05PVF9QUkVTRU5UEAIa6gEKC1Bvd2VyQ29uZmlnEhcKD2lz",
+ "X3Bvd2VyX3NhdmluZxgBIAEoCBImCh5vbl9iYXR0ZXJ5X3NodXRkb3duX2Fm",
+ "dGVyX3NlY3MYAiABKA0SHwoXYWRjX211bHRpcGxpZXJfb3ZlcnJpZGUYAyAB",
+ "KAISGwoTd2FpdF9ibHVldG9vdGhfc2VjcxgEIAEoDRIQCghzZHNfc2VjcxgG",
+ "IAEoDRIPCgdsc19zZWNzGAcgASgNEhUKDW1pbl93YWtlX3NlY3MYCCABKA0S",
+ "IgoaZGV2aWNlX2JhdHRlcnlfaW5hX2FkZHJlc3MYCSABKA0a/gIKDU5ldHdv",
+ "cmtDb25maWcSFAoMd2lmaV9lbmFibGVkGAEgASgIEhEKCXdpZmlfc3NpZBgD",
+ "IAEoCRIQCgh3aWZpX3BzaxgEIAEoCRISCgpudHBfc2VydmVyGAUgASgJEhMK",
+ "C2V0aF9lbmFibGVkGAYgASgIEkIKDGFkZHJlc3NfbW9kZRgHIAEoDjIsLm1l",
+ "c2h0YXN0aWMuQ29uZmlnLk5ldHdvcmtDb25maWcuQWRkcmVzc01vZGUSQAoL",
+ "aXB2NF9jb25maWcYCCABKAsyKy5tZXNodGFzdGljLkNvbmZpZy5OZXR3b3Jr",
+ "Q29uZmlnLklwVjRDb25maWcSFgoOcnN5c2xvZ19zZXJ2ZXIYCSABKAkaRgoK",
+ "SXBWNENvbmZpZxIKCgJpcBgBIAEoBxIPCgdnYXRld2F5GAIgASgHEg4KBnN1",
+ "Ym5ldBgDIAEoBxILCgNkbnMYBCABKAciIwoLQWRkcmVzc01vZGUSCAoEREhD",
+ "UBAAEgoKBlNUQVRJQxABGr4FCg1EaXNwbGF5Q29uZmlnEhYKDnNjcmVlbl9v",
+ "bl9zZWNzGAEgASgNEkgKCmdwc19mb3JtYXQYAiABKA4yNC5tZXNodGFzdGlj",
+ "LkNvbmZpZy5EaXNwbGF5Q29uZmlnLkdwc0Nvb3JkaW5hdGVGb3JtYXQSIQoZ",
+ "YXV0b19zY3JlZW5fY2Fyb3VzZWxfc2VjcxgDIAEoDRIZChFjb21wYXNzX25v",
+ "cnRoX3RvcBgEIAEoCBITCgtmbGlwX3NjcmVlbhgFIAEoCBI8CgV1bml0cxgG",
+ "IAEoDjItLm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuRGlzcGxh",
+ "eVVuaXRzEjcKBG9sZWQYByABKA4yKS5tZXNodGFzdGljLkNvbmZpZy5EaXNw",
+ "bGF5Q29uZmlnLk9sZWRUeXBlEkEKC2Rpc3BsYXltb2RlGAggASgOMiwubWVz",
+ "aHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZy5EaXNwbGF5TW9kZRIUCgxo",
+ "ZWFkaW5nX2JvbGQYCSABKAgSHQoVd2FrZV9vbl90YXBfb3JfbW90aW9uGAog",
+ "ASgIIk0KE0dwc0Nvb3JkaW5hdGVGb3JtYXQSBwoDREVDEAASBwoDRE1TEAES",
+ "BwoDVVRNEAISCAoETUdSUxADEgcKA09MQxAEEggKBE9TR1IQBSIoCgxEaXNw",
+ "bGF5VW5pdHMSCgoGTUVUUklDEAASDAoISU1QRVJJQUwQASJNCghPbGVkVHlw",
+ "ZRINCglPTEVEX0FVVE8QABIQCgxPTEVEX1NTRDEzMDYQARIPCgtPTEVEX1NI",
+ "MTEwNhACEg8KC09MRURfU0gxMTA3EAMiQQoLRGlzcGxheU1vZGUSCwoHREVG",
+ "QVVMVBAAEgwKCFRXT0NPTE9SEAESDAoISU5WRVJURUQQAhIJCgVDT0xPUhAD",
+ "GrAGCgpMb1JhQ29uZmlnEhIKCnVzZV9wcmVzZXQYASABKAgSPwoMbW9kZW1f",
+ "cHJlc2V0GAIgASgOMikubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZy5N",
+ "b2RlbVByZXNldBIRCgliYW5kd2lkdGgYAyABKA0SFQoNc3ByZWFkX2ZhY3Rv",
+ "chgEIAEoDRITCgtjb2RpbmdfcmF0ZRgFIAEoDRIYChBmcmVxdWVuY3lfb2Zm",
+ "c2V0GAYgASgCEjgKBnJlZ2lvbhgHIAEoDjIoLm1lc2h0YXN0aWMuQ29uZmln",
+ "LkxvUmFDb25maWcuUmVnaW9uQ29kZRIRCglob3BfbGltaXQYCCABKA0SEgoK",
+ "dHhfZW5hYmxlZBgJIAEoCBIQCgh0eF9wb3dlchgKIAEoBRITCgtjaGFubmVs",
+ "X251bRgLIAEoDRIbChNvdmVycmlkZV9kdXR5X2N5Y2xlGAwgASgIEh4KFnN4",
+ "MTI2eF9yeF9ib29zdGVkX2dhaW4YDSABKAgSGgoSb3ZlcnJpZGVfZnJlcXVl",
+ "bmN5GA4gASgCEhcKD2lnbm9yZV9pbmNvbWluZxhnIAMoDRITCgtpZ25vcmVf",
+ "bXF0dBhoIAEoCCLNAQoKUmVnaW9uQ29kZRIJCgVVTlNFVBAAEgYKAlVTEAES",
+ "CgoGRVVfNDMzEAISCgoGRVVfODY4EAMSBgoCQ04QBBIGCgJKUBAFEgcKA0FO",
+ "WhAGEgYKAktSEAcSBgoCVFcQCBIGCgJSVRAJEgYKAklOEAoSCgoGTlpfODY1",
+ "EAsSBgoCVEgQDBILCgdMT1JBXzI0EA0SCgoGVUFfNDMzEA4SCgoGVUFfODY4",
+ "EA8SCgoGTVlfNDMzEBASCgoGTVlfOTE5EBESCgoGU0dfOTIzEBIilAEKC01v",
+ "ZGVtUHJlc2V0Eg0KCUxPTkdfRkFTVBAAEg0KCUxPTkdfU0xPVxABEhIKDlZF",
+ "UllfTE9OR19TTE9XEAISDwoLTUVESVVNX1NMT1cQAxIPCgtNRURJVU1fRkFT",
+ "VBAEEg4KClNIT1JUX1NMT1cQBRIOCgpTSE9SVF9GQVNUEAYSEQoNTE9OR19N",
+ "T0RFUkFURRAHGq0BCg9CbHVldG9vdGhDb25maWcSDwoHZW5hYmxlZBgBIAEo",
+ "CBI8CgRtb2RlGAIgASgOMi4ubWVzaHRhc3RpYy5Db25maWcuQmx1ZXRvb3Ro",
+ "Q29uZmlnLlBhaXJpbmdNb2RlEhEKCWZpeGVkX3BpbhgDIAEoDSI4CgtQYWly",
+ "aW5nTW9kZRIOCgpSQU5ET01fUElOEAASDQoJRklYRURfUElOEAESCgoGTk9f",
+ "UElOEAJCEQoPcGF5bG9hZF92YXJpYW50QmEKE2NvbS5nZWVrc3ZpbGxlLm1l",
+ "c2hCDENvbmZpZ1Byb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dl",
+ "bmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
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" }, 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", "DebugLogEnabled", "ButtonGpio", "BuzzerGpio", "RebroadcastMode", "NodeInfoBroadcastSecs", "DoubleTapAsButtonPress", "IsManaged", "DisableTripleClick" }, 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" }, 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", "DebugLogEnabled", "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" }, 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)}),
@@ -733,6 +734,8 @@ public DeviceConfig(DeviceConfig other) : this() {
doubleTapAsButtonPress_ = other.doubleTapAsButtonPress_;
isManaged_ = other.isManaged_;
disableTripleClick_ = other.disableTripleClick_;
+ tzdef_ = other.tzdef_;
+ ledHeartbeatDisabled_ = other.ledHeartbeatDisabled_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -907,6 +910,38 @@ public bool DisableTripleClick {
}
}
+ /// Field number for the "tzdef" field.
+ public const int TzdefFieldNumber = 11;
+ private string tzdef_ = "";
+ ///
+ ///
+ /// POSIX Timezone definition string from https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Tzdef {
+ get { return tzdef_; }
+ set {
+ tzdef_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "led_heartbeat_disabled" field.
+ public const int LedHeartbeatDisabledFieldNumber = 12;
+ private bool ledHeartbeatDisabled_;
+ ///
+ ///
+ /// If true, disable the default blinking LED (LED_PIN) behavior on the device
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool LedHeartbeatDisabled {
+ get { return ledHeartbeatDisabled_; }
+ set {
+ ledHeartbeatDisabled_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
@@ -932,6 +967,8 @@ public bool Equals(DeviceConfig other) {
if (DoubleTapAsButtonPress != other.DoubleTapAsButtonPress) return false;
if (IsManaged != other.IsManaged) return false;
if (DisableTripleClick != other.DisableTripleClick) return false;
+ if (Tzdef != other.Tzdef) return false;
+ if (LedHeartbeatDisabled != other.LedHeartbeatDisabled) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -949,6 +986,8 @@ public override int GetHashCode() {
if (DoubleTapAsButtonPress != false) hash ^= DoubleTapAsButtonPress.GetHashCode();
if (IsManaged != false) hash ^= IsManaged.GetHashCode();
if (DisableTripleClick != false) hash ^= DisableTripleClick.GetHashCode();
+ if (Tzdef.Length != 0) hash ^= Tzdef.GetHashCode();
+ if (LedHeartbeatDisabled != false) hash ^= LedHeartbeatDisabled.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -1007,6 +1046,14 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(80);
output.WriteBool(DisableTripleClick);
}
+ if (Tzdef.Length != 0) {
+ output.WriteRawTag(90);
+ output.WriteString(Tzdef);
+ }
+ if (LedHeartbeatDisabled != false) {
+ output.WriteRawTag(96);
+ output.WriteBool(LedHeartbeatDisabled);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -1057,6 +1104,14 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(80);
output.WriteBool(DisableTripleClick);
}
+ if (Tzdef.Length != 0) {
+ output.WriteRawTag(90);
+ output.WriteString(Tzdef);
+ }
+ if (LedHeartbeatDisabled != false) {
+ output.WriteRawTag(96);
+ output.WriteBool(LedHeartbeatDisabled);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@@ -1097,6 +1152,12 @@ public int CalculateSize() {
if (DisableTripleClick != false) {
size += 1 + 1;
}
+ if (Tzdef.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Tzdef);
+ }
+ if (LedHeartbeatDisabled != false) {
+ size += 1 + 1;
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -1139,6 +1200,12 @@ public void MergeFrom(DeviceConfig other) {
if (other.DisableTripleClick != false) {
DisableTripleClick = other.DisableTripleClick;
}
+ if (other.Tzdef.Length != 0) {
+ Tzdef = other.Tzdef;
+ }
+ if (other.LedHeartbeatDisabled != false) {
+ LedHeartbeatDisabled = other.LedHeartbeatDisabled;
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -1194,6 +1261,14 @@ public void MergeFrom(pb::CodedInputStream input) {
DisableTripleClick = input.ReadBool();
break;
}
+ case 90: {
+ Tzdef = input.ReadString();
+ break;
+ }
+ case 96: {
+ LedHeartbeatDisabled = input.ReadBool();
+ break;
+ }
}
}
#endif
@@ -1249,6 +1324,14 @@ public void MergeFrom(pb::CodedInputStream input) {
DisableTripleClick = input.ReadBool();
break;
}
+ case 90: {
+ Tzdef = input.ReadString();
+ break;
+ }
+ case 96: {
+ LedHeartbeatDisabled = input.ReadBool();
+ break;
+ }
}
}
}
@@ -1299,7 +1382,7 @@ public enum Role {
///
/// Description: Broadcasts GPS position packets as priority.
/// Technical Details: Position Mesh packets will be prioritized higher and sent more frequently by default.
- /// When used in conjunction with power.is_power_saving = true, nodes will wake up,
+ /// When used in conjunction with power.is_power_saving = true, nodes will wake up,
/// send position, and then sleep for position.position_broadcast_secs seconds.
///
[pbr::OriginalName("TRACKER")] Tracker = 5,
@@ -1307,7 +1390,7 @@ public enum Role {
///
/// Description: Broadcasts telemetry packets as priority.
/// Technical Details: Telemetry Mesh packets will be prioritized higher and sent more frequently by default.
- /// When used in conjunction with power.is_power_saving = true, nodes will wake up,
+ /// When used in conjunction with power.is_power_saving = true, nodes will wake up,
/// send environment telemetry, and then sleep for telemetry.environment_update_interval seconds.
///
[pbr::OriginalName("SENSOR")] Sensor = 6,
@@ -1325,13 +1408,13 @@ public enum Role {
/// Technical Details: Used for nodes that "only speak when spoken to"
/// Turns all of the routine broadcasts but allows for ad-hoc communication
/// Still rebroadcasts, but with local only rebroadcast mode (known meshes only)
- /// Can be used for clandestine operation or to dramatically reduce airtime / power consumption
+ /// Can be used for clandestine operation or to dramatically reduce airtime / power consumption
///
[pbr::OriginalName("CLIENT_HIDDEN")] ClientHidden = 8,
///
///
/// Description: Broadcasts location as message to default channel regularly for to assist with device recovery.
- /// Technical Details: Used to automatically send a text message to the mesh
+ /// Technical Details: Used to automatically send a text message to the mesh
/// with the current position of the device on a frequent interval:
/// "I'm lost! Position: lat / long"
///
@@ -2237,10 +2320,9 @@ public PowerConfig Clone() {
private bool isPowerSaving_;
///
///
- /// If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in
- /// we should try to minimize power consumption as much as possible.
- /// YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case).
- /// Advanced Option
+ /// Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio.
+ /// Don't use this setting if you want to use your device with the phone apps or are using a device without a user button.
+ /// Technical Details: Works for ESP32 devices and NRF52 devices in the Sensor or Tracker roles
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@@ -2256,7 +2338,7 @@ public bool IsPowerSaving {
private uint onBatteryShutdownAfterSecs_;
///
///
- /// If non-zero, the device will fully power off this many seconds after external power is removed.
+ /// Description: If non-zero, the device will fully power off this many seconds after external power is removed.
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@@ -2274,8 +2356,8 @@ public uint OnBatteryShutdownAfterSecs {
///
/// Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k)
/// Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation.
- /// Should be set to floating point value between 2 and 4
- /// Fixes issues on Heltec v2
+ /// https://meshtastic.org/docs/configuration/radio/power/#adc-multiplier-override
+ /// Should be set to floating point value between 2 and 6
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@@ -2291,9 +2373,8 @@ public float AdcMultiplierOverride {
private uint waitBluetoothSecs_;
///
///
- /// Wait Bluetooth Seconds
- /// The number of seconds for to wait before turning off BLE in No Bluetooth states
- /// 0 for default of 1 minute
+ /// Description: The number of seconds for to wait before turning off BLE in No Bluetooth states
+ /// Technical Details: ESP32 Only 0 for default of 1 minute
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@@ -2328,10 +2409,8 @@ public uint SdsSecs {
private uint lsSecs_;
///
///
- /// Light Sleep Seconds
- /// In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
- /// ESP32 Only
- /// 0 for default of 300
+ /// Description: In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
+ /// Technical Details: ESP32 Only 0 for default of 300
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@@ -2347,9 +2426,8 @@ public uint LsSecs {
private uint minWakeSecs_;
///
///
- /// Minimum Wake Seconds
- /// While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
- /// 0 for default of 10 seconds
+ /// Description: While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
+ /// Technical Details: ESP32 Only 0 for default of 10 seconds
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
diff --git a/Meshtastic/Generated/Mesh.cs b/Meshtastic/Generated/Mesh.cs
index 2247634..5568250 100644
--- a/Meshtastic/Generated/Mesh.cs
+++ b/Meshtastic/Generated/Mesh.cs
@@ -129,7 +129,7 @@ static MeshReflection() {
"dGljLkhhcmR3YXJlTW9kZWwSGQoRaGFzUmVtb3RlSGFyZHdhcmUYCiABKAgi",
"CwoJSGVhcnRiZWF0IlUKFU5vZGVSZW1vdGVIYXJkd2FyZVBpbhIQCghub2Rl",
"X251bRgBIAEoDRIqCgNwaW4YAiABKAsyHS5tZXNodGFzdGljLlJlbW90ZUhh",
- "cmR3YXJlUGluKtQHCg1IYXJkd2FyZU1vZGVsEgkKBVVOU0VUEAASDAoIVExP",
+ "cmR3YXJlUGluKpUICg1IYXJkd2FyZU1vZGVsEgkKBVVOU0VUEAASDAoIVExP",
"UkFfVjIQARIMCghUTE9SQV9WMRACEhIKDlRMT1JBX1YyXzFfMVA2EAMSCQoF",
"VEJFQU0QBBIPCgtIRUxURUNfVjJfMBAFEg4KClRCRUFNX1YwUDcQBhIKCgZU",
"X0VDSE8QBxIQCgxUTE9SQV9WMV8xUDMQCBILCgdSQUs0NjMxEAkSDwoLSEVM",
@@ -150,16 +150,18 @@ static MeshReflection() {
"QVRDSF9TMxAzEhEKDVBJQ09NUFVURVJfUzMQNBIPCgtIRUxURUNfSFQ2MhA1",
"EhIKDkVCWVRFX0VTUDMyX1MzEDYSEQoNRVNQMzJfUzNfUElDTxA3Eg0KCUNI",
"QVRURVJfMhA4Eh4KGkhFTFRFQ19XSVJFTEVTU19QQVBFUl9WMV8wEDkSIAoc",
- "SEVMVEVDX1dJUkVMRVNTX1RSQUNLRVJfVjFfMBA6Eg8KClBSSVZBVEVfSFcQ",
- "/wEqLAoJQ29uc3RhbnRzEggKBFpFUk8QABIVChBEQVRBX1BBWUxPQURfTEVO",
- "EO0BKu4BChFDcml0aWNhbEVycm9yQ29kZRIICgROT05FEAASDwoLVFhfV0FU",
- "Q0hET0cQARIUChBTTEVFUF9FTlRFUl9XQUlUEAISDAoITk9fUkFESU8QAxIP",
- "CgtVTlNQRUNJRklFRBAEEhUKEVVCTE9YX1VOSVRfRkFJTEVEEAUSDQoJTk9f",
- "QVhQMTkyEAYSGQoVSU5WQUxJRF9SQURJT19TRVRUSU5HEAcSEwoPVFJBTlNN",
- "SVRfRkFJTEVEEAgSDAoIQlJPV05PVVQQCRISCg5TWDEyNjJfRkFJTFVSRRAK",
- "EhEKDVJBRElPX1NQSV9CVUcQC0JfChNjb20uZ2Vla3N2aWxsZS5tZXNoQgpN",
- "ZXNoUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVk",
- "qgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw=="));
+ "SEVMVEVDX1dJUkVMRVNTX1RSQUNLRVJfVjFfMBA6EgsKB1VOUEhPTkUQOxIM",
+ "CghURF9MT1JBQxA8EhMKD0NERUJZVEVfRU9SQV9TMxA9Eg8KC1RXQ19NRVNI",
+ "X1Y0ED4SDwoKUFJJVkFURV9IVxD/ASosCglDb25zdGFudHMSCAoEWkVSTxAA",
+ "EhUKEERBVEFfUEFZTE9BRF9MRU4Q7QEq7gEKEUNyaXRpY2FsRXJyb3JDb2Rl",
+ "EggKBE5PTkUQABIPCgtUWF9XQVRDSERPRxABEhQKEFNMRUVQX0VOVEVSX1dB",
+ "SVQQAhIMCghOT19SQURJTxADEg8KC1VOU1BFQ0lGSUVEEAQSFQoRVUJMT1hf",
+ "VU5JVF9GQUlMRUQQBRINCglOT19BWFAxOTIQBhIZChVJTlZBTElEX1JBRElP",
+ "X1NFVFRJTkcQBxITCg9UUkFOU01JVF9GQUlMRUQQCBIMCghCUk9XTk9VVBAJ",
+ "EhIKDlNYMTI2Ml9GQUlMVVJFEAoSEQoNUkFESU9fU1BJX0JVRxALQl8KE2Nv",
+ "bS5nZWVrc3ZpbGxlLm1lc2hCCk1lc2hQcm90b3NaImdpdGh1Yi5jb20vbWVz",
+ "aHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oC",
+ "AGIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Meshtastic.Protobufs.ChannelReflection.Descriptor, global::Meshtastic.Protobufs.ConfigReflection.Descriptor, global::Meshtastic.Protobufs.ModuleConfigReflection.Descriptor, global::Meshtastic.Protobufs.PortnumsReflection.Descriptor, global::Meshtastic.Protobufs.TelemetryReflection.Descriptor, global::Meshtastic.Protobufs.XmodemReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Meshtastic.Protobufs.HardwareModel), typeof(global::Meshtastic.Protobufs.Constants), typeof(global::Meshtastic.Protobufs.CriticalErrorCode), }, null, new pbr::GeneratedClrTypeInfo[] {
@@ -481,6 +483,28 @@ public enum HardwareModel {
[pbr::OriginalName("HELTEC_WIRELESS_TRACKER_V1_0")] HeltecWirelessTrackerV10 = 58,
///
///
+ /// unPhone with ESP32-S3, TFT touchscreen, LSM6DS3TR-C accelerometer and gyroscope
+ ///
+ [pbr::OriginalName("UNPHONE")] Unphone = 59,
+ ///
+ ///
+ /// Teledatics TD-LORAC NRF52840 based M.2 LoRA module
+ /// Compatible with the TD-WRLS development board
+ ///
+ [pbr::OriginalName("TD_LORAC")] TdLorac = 60,
+ ///
+ ///
+ /// CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3
+ ///
+ [pbr::OriginalName("CDEBYTE_EORA_S3")] CdebyteEoraS3 = 61,
+ ///
+ ///
+ /// TWC_MESH_V4
+ /// Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS
+ ///
+ [pbr::OriginalName("TWC_MESH_V4")] TwcMeshV4 = 62,
+ ///
+ ///
/// ------------------------------------------------------------------------------------------------------------------------------------------
/// Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
/// ------------------------------------------------------------------------------------------------------------------------------------------
@@ -4519,8 +4543,8 @@ public bool ViaMqtt {
public const int HopStartFieldNumber = 15;
private uint hopStart_;
///
- ///
- /// Hop limit with which the original packet started. Sent via LoRa using three bits in the unencrypted header.
+ ///
+ /// Hop limit with which the original packet started. Sent via LoRa using three bits in the unencrypted header.
/// When receiving a packet, the difference between hop_start and hop_limit gives how many hops it traveled.
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -9605,7 +9629,7 @@ public void MergeFrom(pb::CodedInputStream input) {
}
///
- ///
+ ///
/// A heartbeat message is sent to the node from the client to keep the connection alive.
/// This is currently only needed to keep serial connections alive, but can be used by any PhoneAPI.
///
diff --git a/Meshtastic/Generated/Mqtt.cs b/Meshtastic/Generated/Mqtt.cs
index 556d279..b4939df 100644
--- a/Meshtastic/Generated/Mqtt.cs
+++ b/Meshtastic/Generated/Mqtt.cs
@@ -24,8 +24,8 @@ public static partial class MqttReflection {
static MqttReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "ChVtZXNodGFzdGljL21xdHQucHJvdG8SCm1lc2h0YXN0aWMaFW1lc2h0YXN0",
- "aWMvbWVzaC5wcm90bxoXbWVzaHRhc3RpYy9jb25maWcucHJvdG8iYQoPU2Vy",
+ "ChVtZXNodGFzdGljL21xdHQucHJvdG8SCm1lc2h0YXN0aWMaF21lc2h0YXN0",
+ "aWMvY29uZmlnLnByb3RvGhVtZXNodGFzdGljL21lc2gucHJvdG8iYQoPU2Vy",
"dmljZUVudmVsb3BlEiYKBnBhY2tldBgBIAEoCzIWLm1lc2h0YXN0aWMuTWVz",
"aFBhY2tldBISCgpjaGFubmVsX2lkGAIgASgJEhIKCmdhdGV3YXlfaWQYAyAB",
"KAkivAMKCU1hcFJlcG9ydBIRCglsb25nX25hbWUYASABKAkSEgoKc2hvcnRf",
@@ -42,7 +42,7 @@ static MqttReflection() {
"bS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9i",
"dWZzugIAYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
- new pbr::FileDescriptor[] { global::Meshtastic.Protobufs.MeshReflection.Descriptor, global::Meshtastic.Protobufs.ConfigReflection.Descriptor, },
+ new pbr::FileDescriptor[] { global::Meshtastic.Protobufs.ConfigReflection.Descriptor, global::Meshtastic.Protobufs.MeshReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.ServiceEnvelope), global::Meshtastic.Protobufs.ServiceEnvelope.Parser, new[]{ "Packet", "ChannelId", "GatewayId" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.MapReport), global::Meshtastic.Protobufs.MapReport.Parser, new[]{ "LongName", "ShortName", "Role", "HwModel", "FirmwareVersion", "Region", "ModemPreset", "HasDefaultChannel", "LatitudeI", "LongitudeI", "Altitude", "PositionPrecision", "NumOnlineLocalNodes" }, null, null, null, null)
diff --git a/Meshtastic/Generated/Telemetry.cs b/Meshtastic/Generated/Telemetry.cs
index ba3fea4..fd8236b 100644
--- a/Meshtastic/Generated/Telemetry.cs
+++ b/Meshtastic/Generated/Telemetry.cs
@@ -24,42 +24,44 @@ public static partial class TelemetryReflection {
static TelemetryReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "ChptZXNodGFzdGljL3RlbGVtZXRyeS5wcm90bxIKbWVzaHRhc3RpYyJpCg1E",
- "ZXZpY2VNZXRyaWNzEhUKDWJhdHRlcnlfbGV2ZWwYASABKA0SDwoHdm9sdGFn",
- "ZRgCIAEoAhIbChNjaGFubmVsX3V0aWxpemF0aW9uGAMgASgCEhMKC2Fpcl91",
- "dGlsX3R4GAQgASgCIpsBChJFbnZpcm9ubWVudE1ldHJpY3MSEwoLdGVtcGVy",
- "YXR1cmUYASABKAISGQoRcmVsYXRpdmVfaHVtaWRpdHkYAiABKAISGwoTYmFy",
- "b21ldHJpY19wcmVzc3VyZRgDIAEoAhIWCg5nYXNfcmVzaXN0YW5jZRgEIAEo",
- "AhIPCgd2b2x0YWdlGAUgASgCEg8KB2N1cnJlbnQYBiABKAIijAEKDFBvd2Vy",
- "TWV0cmljcxITCgtjaDFfdm9sdGFnZRgBIAEoAhITCgtjaDFfY3VycmVudBgC",
- "IAEoAhITCgtjaDJfdm9sdGFnZRgDIAEoAhITCgtjaDJfY3VycmVudBgEIAEo",
- "AhITCgtjaDNfdm9sdGFnZRgFIAEoAhITCgtjaDNfY3VycmVudBgGIAEoAiK/",
- "AgoRQWlyUXVhbGl0eU1ldHJpY3MSFQoNcG0xMF9zdGFuZGFyZBgBIAEoDRIV",
- "Cg1wbTI1X3N0YW5kYXJkGAIgASgNEhYKDnBtMTAwX3N0YW5kYXJkGAMgASgN",
- "EhoKEnBtMTBfZW52aXJvbm1lbnRhbBgEIAEoDRIaChJwbTI1X2Vudmlyb25t",
- "ZW50YWwYBSABKA0SGwoTcG0xMDBfZW52aXJvbm1lbnRhbBgGIAEoDRIWCg5w",
- "YXJ0aWNsZXNfMDN1bRgHIAEoDRIWCg5wYXJ0aWNsZXNfMDV1bRgIIAEoDRIW",
- "Cg5wYXJ0aWNsZXNfMTB1bRgJIAEoDRIWCg5wYXJ0aWNsZXNfMjV1bRgKIAEo",
- "DRIWCg5wYXJ0aWNsZXNfNTB1bRgLIAEoDRIXCg9wYXJ0aWNsZXNfMTAwdW0Y",
- "DCABKA0iiQIKCVRlbGVtZXRyeRIMCgR0aW1lGAEgASgHEjMKDmRldmljZV9t",
- "ZXRyaWNzGAIgASgLMhkubWVzaHRhc3RpYy5EZXZpY2VNZXRyaWNzSAASPQoT",
- "ZW52aXJvbm1lbnRfbWV0cmljcxgDIAEoCzIeLm1lc2h0YXN0aWMuRW52aXJv",
- "bm1lbnRNZXRyaWNzSAASPAoTYWlyX3F1YWxpdHlfbWV0cmljcxgEIAEoCzId",
- "Lm1lc2h0YXN0aWMuQWlyUXVhbGl0eU1ldHJpY3NIABIxCg1wb3dlcl9tZXRy",
- "aWNzGAUgASgLMhgubWVzaHRhc3RpYy5Qb3dlck1ldHJpY3NIAEIJCgd2YXJp",
- "YW50KuABChNUZWxlbWV0cnlTZW5zb3JUeXBlEhAKDFNFTlNPUl9VTlNFVBAA",
- "EgoKBkJNRTI4MBABEgoKBkJNRTY4MBACEgsKB01DUDk4MDgQAxIKCgZJTkEy",
- "NjAQBBIKCgZJTkEyMTkQBRIKCgZCTVAyODAQBhIJCgVTSFRDMxAHEgkKBUxQ",
- "UzIyEAgSCwoHUU1DNjMxMBAJEgsKB1FNSTg2NTgQChIMCghRTUM1ODgzTBAL",
- "EgkKBVNIVDMxEAwSDAoIUE1TQTAwM0kQDRILCgdJTkEzMjIxEA4SCgoGQk1Q",
- "MDg1EA9CZAoTY29tLmdlZWtzdmlsbGUubWVzaEIPVGVsZW1ldHJ5UHJvdG9z",
- "WiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRh",
- "c3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw=="));
+ "ChptZXNodGFzdGljL3RlbGVtZXRyeS5wcm90bxIKbWVzaHRhc3RpYyKBAQoN",
+ "RGV2aWNlTWV0cmljcxIVCg1iYXR0ZXJ5X2xldmVsGAEgASgNEg8KB3ZvbHRh",
+ "Z2UYAiABKAISGwoTY2hhbm5lbF91dGlsaXphdGlvbhgDIAEoAhITCgthaXJf",
+ "dXRpbF90eBgEIAEoAhIWCg51cHRpbWVfc2Vjb25kcxgFIAEoDSK6AQoSRW52",
+ "aXJvbm1lbnRNZXRyaWNzEhMKC3RlbXBlcmF0dXJlGAEgASgCEhkKEXJlbGF0",
+ "aXZlX2h1bWlkaXR5GAIgASgCEhsKE2Jhcm9tZXRyaWNfcHJlc3N1cmUYAyAB",
+ "KAISFgoOZ2FzX3Jlc2lzdGFuY2UYBCABKAISDwoHdm9sdGFnZRgFIAEoAhIP",
+ "CgdjdXJyZW50GAYgASgCEgsKA2lhcRgHIAEoDRIQCghkaXN0YW5jZRgIIAEo",
+ "AiKMAQoMUG93ZXJNZXRyaWNzEhMKC2NoMV92b2x0YWdlGAEgASgCEhMKC2No",
+ "MV9jdXJyZW50GAIgASgCEhMKC2NoMl92b2x0YWdlGAMgASgCEhMKC2NoMl9j",
+ "dXJyZW50GAQgASgCEhMKC2NoM192b2x0YWdlGAUgASgCEhMKC2NoM19jdXJy",
+ "ZW50GAYgASgCIr8CChFBaXJRdWFsaXR5TWV0cmljcxIVCg1wbTEwX3N0YW5k",
+ "YXJkGAEgASgNEhUKDXBtMjVfc3RhbmRhcmQYAiABKA0SFgoOcG0xMDBfc3Rh",
+ "bmRhcmQYAyABKA0SGgoScG0xMF9lbnZpcm9ubWVudGFsGAQgASgNEhoKEnBt",
+ "MjVfZW52aXJvbm1lbnRhbBgFIAEoDRIbChNwbTEwMF9lbnZpcm9ubWVudGFs",
+ "GAYgASgNEhYKDnBhcnRpY2xlc18wM3VtGAcgASgNEhYKDnBhcnRpY2xlc18w",
+ "NXVtGAggASgNEhYKDnBhcnRpY2xlc18xMHVtGAkgASgNEhYKDnBhcnRpY2xl",
+ "c18yNXVtGAogASgNEhYKDnBhcnRpY2xlc181MHVtGAsgASgNEhcKD3BhcnRp",
+ "Y2xlc18xMDB1bRgMIAEoDSKJAgoJVGVsZW1ldHJ5EgwKBHRpbWUYASABKAcS",
+ "MwoOZGV2aWNlX21ldHJpY3MYAiABKAsyGS5tZXNodGFzdGljLkRldmljZU1l",
+ "dHJpY3NIABI9ChNlbnZpcm9ubWVudF9tZXRyaWNzGAMgASgLMh4ubWVzaHRh",
+ "c3RpYy5FbnZpcm9ubWVudE1ldHJpY3NIABI8ChNhaXJfcXVhbGl0eV9tZXRy",
+ "aWNzGAQgASgLMh0ubWVzaHRhc3RpYy5BaXJRdWFsaXR5TWV0cmljc0gAEjEK",
+ "DXBvd2VyX21ldHJpY3MYBSABKAsyGC5tZXNodGFzdGljLlBvd2VyTWV0cmlj",
+ "c0gAQgkKB3ZhcmlhbnQq7gEKE1RlbGVtZXRyeVNlbnNvclR5cGUSEAoMU0VO",
+ "U09SX1VOU0VUEAASCgoGQk1FMjgwEAESCgoGQk1FNjgwEAISCwoHTUNQOTgw",
+ "OBADEgoKBklOQTI2MBAEEgoKBklOQTIxORAFEgoKBkJNUDI4MBAGEgkKBVNI",
+ "VEMzEAcSCQoFTFBTMjIQCBILCgdRTUM2MzEwEAkSCwoHUU1JODY1OBAKEgwK",
+ "CFFNQzU4ODNMEAsSCQoFU0hUMzEQDBIMCghQTVNBMDAzSRANEgsKB0lOQTMy",
+ "MjEQDhIKCgZCTVAwODUQDxIMCghSQ1dMOTYyMBAQQmQKE2NvbS5nZWVrc3Zp",
+ "bGxlLm1lc2hCD1RlbGVtZXRyeVByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFz",
+ "dGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZw",
+ "cm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Meshtastic.Protobufs.TelemetrySensorType), }, null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.DeviceMetrics), global::Meshtastic.Protobufs.DeviceMetrics.Parser, new[]{ "BatteryLevel", "Voltage", "ChannelUtilization", "AirUtilTx" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.EnvironmentMetrics), global::Meshtastic.Protobufs.EnvironmentMetrics.Parser, new[]{ "Temperature", "RelativeHumidity", "BarometricPressure", "GasResistance", "Voltage", "Current" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.DeviceMetrics), global::Meshtastic.Protobufs.DeviceMetrics.Parser, new[]{ "BatteryLevel", "Voltage", "ChannelUtilization", "AirUtilTx", "UptimeSeconds" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.EnvironmentMetrics), global::Meshtastic.Protobufs.EnvironmentMetrics.Parser, new[]{ "Temperature", "RelativeHumidity", "BarometricPressure", "GasResistance", "Voltage", "Current", "Iaq", "Distance" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.PowerMetrics), global::Meshtastic.Protobufs.PowerMetrics.Parser, new[]{ "Ch1Voltage", "Ch1Current", "Ch2Voltage", "Ch2Current", "Ch3Voltage", "Ch3Current" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.AirQualityMetrics), global::Meshtastic.Protobufs.AirQualityMetrics.Parser, new[]{ "Pm10Standard", "Pm25Standard", "Pm100Standard", "Pm10Environmental", "Pm25Environmental", "Pm100Environmental", "Particles03Um", "Particles05Um", "Particles10Um", "Particles25Um", "Particles50Um", "Particles100Um" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Meshtastic.Protobufs.Telemetry), global::Meshtastic.Protobufs.Telemetry.Parser, new[]{ "Time", "DeviceMetrics", "EnvironmentMetrics", "AirQualityMetrics", "PowerMetrics" }, new[]{ "Variant" }, null, null, null)
@@ -154,6 +156,11 @@ public enum TelemetrySensorType {
/// BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280)
///
[pbr::OriginalName("BMP085")] Bmp085 = 15,
+ ///
+ ///
+ /// RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
+ ///
+ [pbr::OriginalName("RCWL9620")] Rcwl9620 = 16,
}
#endregion
@@ -201,6 +208,7 @@ public DeviceMetrics(DeviceMetrics other) : this() {
voltage_ = other.voltage_;
channelUtilization_ = other.channelUtilization_;
airUtilTx_ = other.airUtilTx_;
+ uptimeSeconds_ = other.uptimeSeconds_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -274,6 +282,22 @@ public float AirUtilTx {
}
}
+ /// Field number for the "uptime_seconds" field.
+ public const int UptimeSecondsFieldNumber = 5;
+ private uint uptimeSeconds_;
+ ///
+ ///
+ /// How long the device has been running since the last reboot (in seconds)
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint UptimeSeconds {
+ get { return uptimeSeconds_; }
+ set {
+ uptimeSeconds_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
@@ -293,6 +317,7 @@ public bool Equals(DeviceMetrics other) {
if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Voltage, other.Voltage)) return false;
if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ChannelUtilization, other.ChannelUtilization)) return false;
if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(AirUtilTx, other.AirUtilTx)) return false;
+ if (UptimeSeconds != other.UptimeSeconds) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -304,6 +329,7 @@ public override int GetHashCode() {
if (Voltage != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Voltage);
if (ChannelUtilization != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ChannelUtilization);
if (AirUtilTx != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(AirUtilTx);
+ if (UptimeSeconds != 0) hash ^= UptimeSeconds.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -338,6 +364,10 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(37);
output.WriteFloat(AirUtilTx);
}
+ if (UptimeSeconds != 0) {
+ output.WriteRawTag(40);
+ output.WriteUInt32(UptimeSeconds);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -364,6 +394,10 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(37);
output.WriteFloat(AirUtilTx);
}
+ if (UptimeSeconds != 0) {
+ output.WriteRawTag(40);
+ output.WriteUInt32(UptimeSeconds);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@@ -386,6 +420,9 @@ public int CalculateSize() {
if (AirUtilTx != 0F) {
size += 1 + 4;
}
+ if (UptimeSeconds != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UptimeSeconds);
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -410,6 +447,9 @@ public void MergeFrom(DeviceMetrics other) {
if (other.AirUtilTx != 0F) {
AirUtilTx = other.AirUtilTx;
}
+ if (other.UptimeSeconds != 0) {
+ UptimeSeconds = other.UptimeSeconds;
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -441,6 +481,10 @@ public void MergeFrom(pb::CodedInputStream input) {
AirUtilTx = input.ReadFloat();
break;
}
+ case 40: {
+ UptimeSeconds = input.ReadUInt32();
+ break;
+ }
}
}
#endif
@@ -472,6 +516,10 @@ public void MergeFrom(pb::CodedInputStream input) {
AirUtilTx = input.ReadFloat();
break;
}
+ case 40: {
+ UptimeSeconds = input.ReadUInt32();
+ break;
+ }
}
}
}
@@ -523,6 +571,8 @@ public EnvironmentMetrics(EnvironmentMetrics other) : this() {
gasResistance_ = other.gasResistance_;
voltage_ = other.voltage_;
current_ = other.current_;
+ iaq_ = other.iaq_;
+ distance_ = other.distance_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -628,6 +678,39 @@ public float Current {
}
}
+ /// Field number for the "iaq" field.
+ public const int IaqFieldNumber = 7;
+ private uint iaq_;
+ ///
+ ///
+ /// relative scale IAQ value as measured by Bosch BME680 . value 0-500.
+ /// Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint Iaq {
+ get { return iaq_; }
+ set {
+ iaq_ = value;
+ }
+ }
+
+ /// Field number for the "distance" field.
+ public const int DistanceFieldNumber = 8;
+ private float distance_;
+ ///
+ ///
+ /// RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public float Distance {
+ get { return distance_; }
+ set {
+ distance_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
@@ -649,6 +732,8 @@ public bool Equals(EnvironmentMetrics other) {
if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(GasResistance, other.GasResistance)) return false;
if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Voltage, other.Voltage)) return false;
if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Current, other.Current)) return false;
+ if (Iaq != other.Iaq) return false;
+ if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Distance, other.Distance)) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -662,6 +747,8 @@ public override int GetHashCode() {
if (GasResistance != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(GasResistance);
if (Voltage != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Voltage);
if (Current != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Current);
+ if (Iaq != 0) hash ^= Iaq.GetHashCode();
+ if (Distance != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Distance);
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -704,6 +791,14 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(53);
output.WriteFloat(Current);
}
+ if (Iaq != 0) {
+ output.WriteRawTag(56);
+ output.WriteUInt32(Iaq);
+ }
+ if (Distance != 0F) {
+ output.WriteRawTag(69);
+ output.WriteFloat(Distance);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -738,6 +833,14 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(53);
output.WriteFloat(Current);
}
+ if (Iaq != 0) {
+ output.WriteRawTag(56);
+ output.WriteUInt32(Iaq);
+ }
+ if (Distance != 0F) {
+ output.WriteRawTag(69);
+ output.WriteFloat(Distance);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@@ -766,6 +869,12 @@ public int CalculateSize() {
if (Current != 0F) {
size += 1 + 4;
}
+ if (Iaq != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Iaq);
+ }
+ if (Distance != 0F) {
+ size += 1 + 4;
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -796,6 +905,12 @@ public void MergeFrom(EnvironmentMetrics other) {
if (other.Current != 0F) {
Current = other.Current;
}
+ if (other.Iaq != 0) {
+ Iaq = other.Iaq;
+ }
+ if (other.Distance != 0F) {
+ Distance = other.Distance;
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -835,6 +950,14 @@ public void MergeFrom(pb::CodedInputStream input) {
Current = input.ReadFloat();
break;
}
+ case 56: {
+ Iaq = input.ReadUInt32();
+ break;
+ }
+ case 69: {
+ Distance = input.ReadFloat();
+ break;
+ }
}
}
#endif
@@ -874,6 +997,14 @@ public void MergeFrom(pb::CodedInputStream input) {
Current = input.ReadFloat();
break;
}
+ case 56: {
+ Iaq = input.ReadUInt32();
+ break;
+ }
+ case 69: {
+ Distance = input.ReadFloat();
+ break;
+ }
}
}
}
@@ -2062,7 +2193,7 @@ public uint Time {
public const int PowerMetricsFieldNumber = 5;
///
///
- /// Power Metrics
+ /// Power Metrics
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
diff --git a/protobufs b/protobufs
index 53e1c4f..e21899a 160000
--- a/protobufs
+++ b/protobufs
@@ -1 +1 @@
-Subproject commit 53e1c4f6bda68c11d12d17ba650f8792fc8e2325
+Subproject commit e21899aa6b2b49863cfa2758e5e3b6faacf04bba