Skip to content

Commit 81739bb

Browse files
authored
Merge pull request #33 from meshtastic/wip
More progress in fixing bugs and more verbose logging hopefully
2 parents 3f43983 + a142f5c commit 81739bb

16 files changed

+139
-49
lines changed

Meshtastic.Cli/CommandHandlers/ChannelCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public override async Task OnCompleted(FromRadio fromRadio, DeviceStateContainer
6161
var adminMessage = adminMessageFactory.CreateSetChannelMessage(channel!);
6262
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(adminMessage), (fromRadio, container) =>
6363
{
64-
return Task.FromResult(fromRadio.GetMessage<Routing>()?.ErrorReason == Routing.Types.Error.None);
64+
return Task.FromResult(fromRadio.GetPayload<Routing>()?.ErrorReason == Routing.Types.Error.None);
6565
});
6666

6767
await CommitEditSettings(adminMessageFactory);

Meshtastic.Cli/CommandHandlers/FileCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public override async Task OnCompleted(FromRadio _, DeviceStateContainer contain
3333
fileRequest.XmodemPacket.Buffer = ByteString.CopyFromUtf8(path);
3434
await Connection.WriteToRadio(fileRequest, async (fromRadio, container) =>
3535
{
36-
var xmodem = fromRadio.GetMessage<XModem>();
36+
var xmodem = fromRadio.GetPayload<XModem>();
3737
if (xmodem == null)
3838
return false;
3939

Meshtastic.Cli/CommandHandlers/FixedPositionCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public override async Task OnCompleted(FromRadio packet, DeviceStateContainer co
5757

5858
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(adminMessage), (fromRadio, container) =>
5959
{
60-
return Task.FromResult(fromRadio.GetMessage<Routing>() != null);
60+
return Task.FromResult(fromRadio.GetPayload<Routing>() != null);
6161
});
6262

6363
await CommitEditSettings(adminMessageFactory);

Meshtastic.Cli/CommandHandlers/GetCannedMessagesCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public override async Task OnCompleted(FromRadio packet, DeviceStateContainer co
2828
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(adminMessage),
2929
(fromRadio, container) =>
3030
{
31-
var adminMessage = fromRadio.GetMessage<AdminMessage>();
31+
var adminMessage = fromRadio.GetPayload<AdminMessage>();
3232
if (adminMessage?.PayloadVariantCase == AdminMessage.PayloadVariantOneofCase.GetCannedMessageModuleMessagesResponse)
3333
{
3434
Logger.LogInformation($"Canned messages: {adminMessage?.GetCannedMessageModuleMessagesResponse}");

Meshtastic.Cli/CommandHandlers/ImportCommandHandler.cs

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,14 @@ public override async Task OnCompleted(FromRadio packet, DeviceStateContainer co
4747

4848
if (deviceProfile.HasLongName)
4949
{
50-
var myNode = container.GetDeviceNodeInfo();
51-
if (myNode != null && myNode.User != null)
50+
Logger.LogInformation("Setting long / short name...");
51+
var user = new User()
5252
{
53-
Logger.LogInformation("Setting long / short name...");
54-
myNode.User!.LongName = deviceProfile.LongName;
55-
myNode.User!.ShortName = deviceProfile.ShortName;
56-
var setOwner = adminMessageFactory.CreateSetOwnerMessage(myNode.User);
57-
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(setOwner), AnyResponseReceived);
58-
}
59-
else
60-
Logger.LogError("Could not set long / short name because we were unable to retrieve User from NodeDB");
53+
LongName = deviceProfile.LongName,
54+
ShortName = deviceProfile.ShortName
55+
};
56+
var setOwner = adminMessageFactory.CreateSetOwnerMessage(user);
57+
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(setOwner), AnyResponseReceived);
6158
}
6259

6360
if (deviceProfile.HasChannelUrl)
@@ -70,6 +67,11 @@ public override async Task OnCompleted(FromRadio packet, DeviceStateContainer co
7067
else
7168
Logger.LogDebug("No Config profile specified. Skipping...");
7269

70+
if (deviceProfile.ModuleConfig != null)
71+
await SetModuleConfigs(container, deviceProfile, adminMessageFactory);
72+
else
73+
Logger.LogDebug("No ModuleConfig profile specified. Skipping...");
74+
7375

7476
await CommitEditSettings(adminMessageFactory);
7577
}
@@ -90,6 +92,21 @@ private async Task SetConfigs(DeviceStateContainer container, DeviceProfile devi
9092
}
9193
}
9294

95+
private async Task SetModuleConfigs(DeviceStateContainer container, DeviceProfile deviceProfile, AdminMessageFactory adminMessageFactory)
96+
{
97+
foreach(var section in deviceProfile.ModuleConfig.GetProperties())
98+
{
99+
var instance = section.GetValue(deviceProfile.ModuleConfig);
100+
if (instance == null) {
101+
Logger.LogDebug($"No {section.Name} profile specified. Skipping...");
102+
continue;
103+
}
104+
Logger.LogInformation($"Sending {section.Name} config to device...");
105+
var adminMessage = adminMessageFactory.CreateSetModuleConfigMessage(instance);
106+
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(adminMessage), AnyResponseReceived);
107+
}
108+
}
109+
93110
private async Task SetChannels(AdminMessageFactory adminMessageFactory, string url)
94111
{
95112
var urlParser = new UrlParser(url);

Meshtastic.Cli/CommandHandlers/MetadataCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public override async Task OnCompleted(FromRadio packet, DeviceStateContainer co
2727
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(adminMessage),
2828
(fromRadio, container) =>
2929
{
30-
var adminMessage = fromRadio.GetMessage<AdminMessage>();
30+
var adminMessage = fromRadio.GetPayload<AdminMessage>();
3131
if (adminMessage?.PayloadVariantCase == AdminMessage.PayloadVariantOneofCase.GetDeviceMetadataResponse)
3232
{
3333
var printer = new ProtobufPrinter(container, OutputFormat);

Meshtastic.Cli/CommandHandlers/SendTextCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public override async Task OnCompleted(FromRadio packet, DeviceStateContainer co
3232
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(textMessage),
3333
(fromRadio, container) =>
3434
{
35-
var routingResult = fromRadio.GetMessage<Routing>();
35+
var routingResult = fromRadio.GetPayload<Routing>();
3636
if (routingResult != null && fromRadio.Packet.Priority == MeshPacket.Types.Priority.Ack)
3737
{
3838
if (routingResult.ErrorReason == Routing.Types.Error.None)

Meshtastic.Cli/CommandHandlers/TraceRouteCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public override async Task OnCompleted(FromRadio packet, DeviceStateContainer co
2727
await Connection.WriteToRadio(ToRadioMessageFactory.CreateMeshPacketMessage(message),
2828
(fromRadio, container) =>
2929
{
30-
var routeDiscovery = fromRadio.GetMessage<RouteDiscovery>();
30+
var routeDiscovery = fromRadio.GetPayload<RouteDiscovery>();
3131
if (routeDiscovery != null)
3232
{
3333
if (routeDiscovery.Route.Count > 0)

Meshtastic.Test/CommandHandlers/CommandHandlerTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public async Task MetadataCommandHandler_Should_ReceiveMetadataResponse()
4444
ReceivedWantConfigPayloads();
4545
InformationLogsContain("Getting device metadata");
4646
container.FromRadioMessageLog.Should()
47-
.Contain(fromRadio => fromRadio.GetMessage<AdminMessage>() != null &&
48-
fromRadio.GetMessage<AdminMessage>()!.GetDeviceMetadataResponse != null);
47+
.Contain(fromRadio => fromRadio.GetPayload<AdminMessage>() != null &&
48+
fromRadio.GetPayload<AdminMessage>()!.GetDeviceMetadataResponse != null);
4949
}
5050

5151
[Test]
@@ -97,8 +97,8 @@ public async Task FixedPositionCommandHandler_Should_Acknowledge()
9797
var container = await handler.Handle();
9898
InformationLogsContain("Sending position to device");
9999
InformationLogsContain("Setting Position.FixedPosition to True");
100-
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetMessage<Routing>() != null);
101-
routingPacket.GetMessage<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
100+
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetPayload<Routing>() != null);
101+
routingPacket.GetPayload<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
102102
}
103103

104104
[Test]
@@ -109,8 +109,8 @@ public async Task ChannelCommandHandler_Should_SavePrimaryChannel()
109109
var handler = new ChannelCommandHandler(channelSettings, ConnectionContext, CommandContext);
110110
var container = await handler.Handle();
111111
InformationLogsContain("Writing channel");
112-
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetMessage<Routing>() != null);
113-
routingPacket.GetMessage<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
112+
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetPayload<Routing>() != null);
113+
routingPacket.GetPayload<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
114114
var adminMessages = container.ToRadioMessageLog.Where(toRadio => toRadio?.Packet?.Decoded.Portnum == PortNum.AdminApp);
115115
adminMessages.Should().Contain(adminMessage =>
116116
AdminMessage.Parser.ParseFrom(adminMessage.Packet.Decoded.Payload).PayloadVariantCase == AdminMessage.PayloadVariantOneofCase.SetChannel);
@@ -124,8 +124,8 @@ public async Task ChannelCommandHandler_Should_SavePrimaryChannelWithNoPsk()
124124
var handler = new ChannelCommandHandler(channelSettings, ConnectionContext, CommandContext);
125125
var container = await handler.Handle();
126126
InformationLogsContain("Writing channel");
127-
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetMessage<Routing>() != null);
128-
routingPacket.GetMessage<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
127+
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetPayload<Routing>() != null);
128+
routingPacket.GetPayload<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
129129
var adminMessages = container.ToRadioMessageLog.Where(toRadio => toRadio?.Packet?.Decoded.Portnum == PortNum.AdminApp);
130130
adminMessages.Should().Contain(adminMessage =>
131131
AdminMessage.Parser.ParseFrom(adminMessage.Packet.Decoded.Payload).PayloadVariantCase == AdminMessage.PayloadVariantOneofCase.SetChannel);
@@ -139,8 +139,8 @@ public async Task ChannelCommandHandler_Should_SavePrimaryChannelWithPsk()
139139
var handler = new ChannelCommandHandler(channelSettings, ConnectionContext, CommandContext);
140140
var container = await handler.Handle();
141141
InformationLogsContain("Writing channel");
142-
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetMessage<Routing>() != null);
143-
routingPacket.GetMessage<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
142+
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetPayload<Routing>() != null);
143+
routingPacket.GetPayload<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
144144
var adminMessages = container.ToRadioMessageLog.Where(toRadio => toRadio?.Packet?.Decoded.Portnum == PortNum.AdminApp);
145145
adminMessages.Should().Contain(adminMessage =>
146146
AdminMessage.Parser.ParseFrom(adminMessage.Packet.Decoded.Payload).PayloadVariantCase == AdminMessage.PayloadVariantOneofCase.SetChannel);
@@ -154,8 +154,8 @@ public async Task ChannelCommandHandler_Should_AllowEnableOfSecondary()
154154
var handler = new ChannelCommandHandler(channelSettings, ConnectionContext, CommandContext);
155155
var container = await handler.Handle();
156156
InformationLogsContain("Writing channel");
157-
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetMessage<Routing>() != null);
158-
routingPacket.GetMessage<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
157+
var routingPacket = container.FromRadioMessageLog.First(fromRadio => fromRadio.GetPayload<Routing>() != null);
158+
routingPacket.GetPayload<Routing>()!.ErrorReason.Should().Be(Routing.Types.Error.None);
159159
var adminMessages = container.ToRadioMessageLog.Where(toRadio => toRadio?.Packet?.Decoded.Portnum == PortNum.AdminApp);
160160
adminMessages.Should().Contain(adminMessage =>
161161
AdminMessage.Parser.ParseFrom(adminMessage.Packet.Decoded.Payload).PayloadVariantCase == AdminMessage.PayloadVariantOneofCase.SetChannel);

Meshtastic.Test/Data/FromDeviceMessageTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ public void FromDeviceMessage_GivesResult_Given_ValidFromRadioPayload()
4747
}
4848
};
4949
var result = fromDeviceMessage.ParsedFromRadio(fromRadio.ToByteArray());
50-
result!.GetMessage<AdminMessage>()!.BeginEditSettings.Should().BeTrue();
50+
result!.GetPayload<AdminMessage>()!.BeginEditSettings.Should().BeTrue();
5151
}
5252
}

0 commit comments

Comments
 (0)