Skip to content

Commit dc5cf77

Browse files
committed
#149 added an auto update check feature
1 parent 60e1ec7 commit dc5cf77

28 files changed

Lines changed: 586 additions & 93 deletions

ImageSource/update-available.pdn

4.83 KB
Binary file not shown.

ImageSource/update-available.png

880 Bytes
Loading

ImageSource/update-check-due.pdn

4.31 KB
Binary file not shown.

ImageSource/update-check-due.png

721 Bytes
Loading

Trixter.XDream.API/Communication/XDreamMessage.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
namespace Trixter.XDream.API.Communications
77
{
88
[DebuggerDisplay("{DebuggerDisplay}")]
9-
public class XDreamMessage : XDreamState
9+
public class XDreamMessage : XDreamState
1010
{
1111
/* Packet content
1212
* 6A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@@ -28,7 +28,7 @@ public class XDreamMessage : XDreamState
2828
* (0F) XOR of 00..0E------------------------------------------------------+
2929
*/
3030
internal const int MessageSize = 32;
31-
31+
3232
public const int Error = -1;
3333

3434
private const int packetLength = 16;
@@ -122,7 +122,7 @@ internal static byte[] GetDataPacket(XDreamState state)
122122
result[0x06] = 255;
123123
result[0x07] = 255;
124124

125-
int notButtons = ~(int)state.Buttons;
125+
int notButtons = ~(int)state.Buttons;
126126

127127
result[0x08] = (byte)(notButtons >> 8);
128128
result[0x09] = (byte)(notButtons & 0xFF);
@@ -142,12 +142,17 @@ internal static string GetDataPacketText(XDreamState state)
142142
return null;
143143

144144
byte[] packetBytes = GetDataPacket(state);
145-
return string.Join(string.Empty, packetBytes.Select(b=>b.ToString("x2")));
145+
return string.Join(string.Empty, packetBytes.Select(b => b.ToString("x2")));
146+
}
147+
148+
internal static byte[] GetDataPacketTextBytes(XDreamState state)
149+
{
150+
if (state == null)
151+
throw new ArgumentNullException(nameof(state));
152+
return Encoding.ASCII.GetBytes(GetDataPacketText(state));
146153
}
147154

148-
internal static byte [] GetDataPacketTextBytes(XDreamState state) => Encoding.ASCII.GetBytes(GetDataPacketText(state));
149-
150155
}
151156

152-
157+
153158
}

Trixter.XDream.API/Communication/XDreamSerialPortBase.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,16 @@ public abstract class XDreamSerialPortBase : IDisposable
1313

1414
public bool IsDisposed { get; private set; } = false;
1515

16-
protected bool MessageTimerEnabled { get => this.messageTimer.Enabled; set => this.messageTimer.Enabled=value; }
16+
protected bool MessageTimerEnabled
17+
{
18+
get => this.messageTimer != null ? this.messageTimer.Enabled : false;
19+
set {
20+
if (this.messageTimer == null)
21+
throw new InvalidOperationException();
22+
23+
this.messageTimer.Enabled = value;
24+
}
25+
}
1726

1827
/// <summary>
1928
/// Override to do something with an incoming packet.

Trixter.XDream.API/Communication/XDreamSerialPortServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ private void ResistanceTimer_Elapsed(object sender, System.Timers.ElapsedEventAr
125125

126126
if (this.resistanceExpires == DateTimeOffset.MaxValue)
127127
return;
128-
double t = (this.resistanceExpires - DateTime.UtcNow).TotalMilliseconds;
128+
double t = (this.resistanceExpires - DateTimeOffset.UtcNow).TotalMilliseconds;
129129
if (t<=0)
130130
{
131131
this.Resistance = 0;

Trixter.XDream.API/XDreamBike.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ public void Dispose()
115115

116116
// wait a few ms for the processing to stop
117117
for (DateTimeOffset start = DateTimeOffset.Now;
118-
this.queueProcessor.CancellationPending && DateTimeOffset.Now.Subtract(start).TotalMilliseconds < 500;) { }
118+
this.queueProcessor.CancellationPending && DateTimeOffset.Now.Subtract(start).TotalMilliseconds < 500;) {
119+
System.Threading.Thread.Sleep(50);
120+
}
119121

120122
this.queueProcessor.Dispose();
121123
this.queueProcessor = null;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<configuration>
3+
<configSections>
4+
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
5+
<section name="Trixter.XDream.Diagnostics.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
6+
</sectionGroup>
7+
</configSections>
8+
<userSettings>
9+
<Trixter.XDream.Diagnostics.Properties.Settings>
10+
<setting name="LastUpdateCheckDateUtc" serializeAs="String">
11+
<value>2026-01-01</value>
12+
</setting>
13+
<setting name="AutomaticUpdateChecksEnabled" serializeAs="String">
14+
<value>True</value>
15+
</setting>
16+
<setting name="UpdateIntervalCheckDays" serializeAs="String">
17+
<value>14</value>
18+
</setting>
19+
</Trixter.XDream.Diagnostics.Properties.Settings>
20+
</userSettings>
21+
</configuration>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Trixter.XDream.Diagnostics
2+
{
3+
internal static class Constants
4+
{
5+
public const string GithubUpdateUrl = "xdream-biking/trixter-xdream-bike";
6+
}
7+
}

0 commit comments

Comments
 (0)