Skip to content

Commit

Permalink
Rename namespace and classes: FlightSim -> SimConnect
Browse files Browse the repository at this point in the history
  • Loading branch information
astenlund committed Oct 7, 2020
1 parent 63de517 commit 0dc0028
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 52 deletions.
4 changes: 2 additions & 2 deletions App.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using System.Reflection;
using System.Windows;
using fs2ff.FlightSim;
using fs2ff.SimConnect;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

Expand Down Expand Up @@ -49,7 +49,7 @@ protected override async void OnStartup(StartupEventArgs e)
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<MainViewModel>();
services.AddSingleton<FlightSimAdapter>();
services.AddSingleton<SimConnectAdapter>();
services.AddSingleton<DataSender>();
services.AddSingleton<IpDetectionService>();
services.AddHostedService(provider => provider.GetRequiredService<IpDetectionService>());
Expand Down
50 changes: 25 additions & 25 deletions MainViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@
using System.Threading.Tasks;
using System.Windows.Input;
using System.Windows.Threading;
using fs2ff.FlightSim;
using fs2ff.Models;
using fs2ff.SimConnect;

#pragma warning disable 67

namespace fs2ff
{
[SuppressMessage("ReSharper", "NotAccessedField.Local", Justification = "DispatcherTimer field is kept to prevent premature GC")]
public class MainViewModel : INotifyPropertyChanged, IFlightSimMessageHandler
public class MainViewModel : INotifyPropertyChanged, ISimConnectMessageHandler
{
private readonly DataSender _dataSender;
private readonly FlightSimAdapter _flightSim;
private readonly SimConnectAdapter _simConnect;
private readonly IpDetectionService _ipDetectionService;
private readonly DispatcherTimer _ipHintTimer;

Expand All @@ -31,15 +31,15 @@ public class MainViewModel : INotifyPropertyChanged, IFlightSimMessageHandler
private IPAddress? _ipAddress;
private uint _ipHintMinutesLeft = Preferences.Default.ip_hint_time;

public MainViewModel(DataSender dataSender, FlightSimAdapter flightSim, IpDetectionService ipDetectionService)
public MainViewModel(DataSender dataSender, SimConnectAdapter simConnect, IpDetectionService ipDetectionService)
{
_dataSender = dataSender;

_flightSim = flightSim;
_flightSim.StateChanged += FlightSim_StateChanged;
_flightSim.PositionReceived += FlightSim_PositionReceived;
_flightSim.AttitudeReceived += FlightSim_AttitudeReceived;
_flightSim.TrafficReceived += FlightSim_TrafficReceived;
_simConnect = simConnect;
_simConnect.StateChanged += SimConnectStateChanged;
_simConnect.PositionReceived += SimConnectPositionReceived;
_simConnect.AttitudeReceived += SimConnectAttitudeReceived;
_simConnect.TrafficReceived += SimConnectTrafficReceived;

_ipDetectionService = ipDetectionService;
_ipDetectionService.NewIpDetected += IpDetectionService_NewIpDetected;
Expand Down Expand Up @@ -77,7 +77,7 @@ public uint AttitudeFrequency
set
{
_attitudeFrequency = value.AdjustToBounds(AttitudeFrequencyMin, AttitudeFrequencyMax);
_flightSim.SetAttitudeFrequency(_attitudeFrequency);
_simConnect.SetAttitudeFrequency(_attitudeFrequency);
Preferences.Default.att_freq = value;
Preferences.Default.Save();
}
Expand Down Expand Up @@ -203,7 +203,7 @@ public IntPtr WindowHandle
private FlightSimState CurrentFlightSimState =>
_errorOccurred
? FlightSimState.ErrorOccurred
: _flightSim.Connected
: _simConnect.Connected
? FlightSimState.Connected
: FlightSimState.Disconnected;

Expand All @@ -227,16 +227,16 @@ public void Dispose()
{
_ipDetectionService.NewIpDetected -= IpDetectionService_NewIpDetected;

_flightSim.TrafficReceived -= FlightSim_TrafficReceived;
_flightSim.AttitudeReceived -= FlightSim_AttitudeReceived;
_flightSim.PositionReceived -= FlightSim_PositionReceived;
_flightSim.StateChanged -= FlightSim_StateChanged;
_flightSim.Dispose();
_simConnect.TrafficReceived -= SimConnectTrafficReceived;
_simConnect.AttitudeReceived -= SimConnectAttitudeReceived;
_simConnect.PositionReceived -= SimConnectPositionReceived;
_simConnect.StateChanged -= SimConnectStateChanged;
_simConnect.Dispose();

_dataSender.Dispose();
}

public void ReceiveFlightSimMessage() => _flightSim.ReceiveMessage();
public void ReceiveFlightSimMessage() => _simConnect.ReceiveMessage();

private bool CanConnect() => WindowHandle != IntPtr.Zero;

Expand All @@ -245,37 +245,37 @@ private void CheckForUpdates()
UpdateChecker.Check().ContinueWith(task => UpdateInfo = task.Result, TaskScheduler.FromCurrentSynchronizationContext());
}

private void Connect() => _flightSim.Connect(WindowHandle, AttitudeFrequency);
private void Connect() => _simConnect.Connect(WindowHandle, AttitudeFrequency);

private void Disconnect() => _flightSim.Disconnect();
private void Disconnect() => _simConnect.Disconnect();

private void DismissSettingsPane() => SettingsPaneVisible = false;

private async Task FlightSim_AttitudeReceived(Attitude att)
private async Task SimConnectAttitudeReceived(Attitude att)
{
if (DataAttitudeEnabled)
{
await _dataSender.Send(att).ConfigureAwait(false);
}
}

private async Task FlightSim_PositionReceived(Position pos)
private async Task SimConnectPositionReceived(Position pos)
{
if (DataPositionEnabled)
{
await _dataSender.Send(pos).ConfigureAwait(false);
}
}

private void FlightSim_StateChanged(bool failure)
private void SimConnectStateChanged(bool failure)
{
_errorOccurred = failure;

ResetDataSenderConnection();
UpdateVisualState();
}

private async Task FlightSim_TrafficReceived(Traffic tfk, uint id)
private async Task SimConnectTrafficReceived(Traffic tfk, uint id)
{
if (DataTrafficEnabled)
{
Expand All @@ -301,7 +301,7 @@ private void IpDetectionService_NewIpDetected(IPAddress ip)

private void IpHintCallback(object? sender, EventArgs e)
{
if (IpHintMinutesLeft > 0 && IpAddress == null && _flightSim.Connected)
if (IpHintMinutesLeft > 0 && IpAddress == null && _simConnect.Connected)
{
IpHintMinutesLeft--;
}
Expand Down Expand Up @@ -330,7 +330,7 @@ private void ResetIpHintMinutesLeft()

private void ToggleConnect()
{
if (_flightSim.Connected) Disconnect();
if (_simConnect.Connected) Disconnect();
else Connect();
}

Expand Down
8 changes: 4 additions & 4 deletions MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using System.ComponentModel;
using System.Windows;
using System.Windows.Interop;
using fs2ff.FlightSim;
using fs2ff.SimConnect;

namespace fs2ff
{
Expand All @@ -23,22 +23,22 @@ protected override void OnSourceInitialized(EventArgs e)

HwndSource hwndSource = (HwndSource) PresentationSource.FromVisual(this)!;
hwndSource.AddHook(WndProc);
((IFlightSimMessageHandler) DataContext).WindowHandle = hwndSource.Handle;
((ISimConnectMessageHandler) DataContext).WindowHandle = hwndSource.Handle;
}

private IntPtr WndProc(IntPtr hWnd, int iMsg, IntPtr hWParam, IntPtr hLParam, ref bool bHandled)
{
if (iMsg == WM_USER_SIMCONNECT)
{
((IFlightSimMessageHandler) DataContext).ReceiveFlightSimMessage();
((ISimConnectMessageHandler) DataContext).ReceiveFlightSimMessage();
}

return IntPtr.Zero;
}

private void Window_Closing(object sender, CancelEventArgs e)
{
((IFlightSimMessageHandler) DataContext).Dispose();
((ISimConnectMessageHandler) DataContext).Dispose();
}
}
}
2 changes: 1 addition & 1 deletion FlightSim/DEFINITION.cs → SimConnect/DEFINITION.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// ReSharper disable InconsistentNaming
// ReSharper disable UnusedMember.Global

namespace fs2ff.FlightSim
namespace fs2ff.SimConnect
{
public enum DEFINITION : uint
{
Expand Down
2 changes: 1 addition & 1 deletion FlightSim/EVENT.cs → SimConnect/EVENT.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// ReSharper disable InconsistentNaming
// ReSharper disable UnusedMember.Global

namespace fs2ff.FlightSim
namespace fs2ff.SimConnect
{
public enum EVENT : uint
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using System;

namespace fs2ff.FlightSim
namespace fs2ff.SimConnect
{
public interface IFlightSimMessageHandler : IDisposable
public interface ISimConnectMessageHandler : IDisposable
{
public void ReceiveFlightSimMessage();
public IntPtr WindowHandle { set; }
Expand Down
2 changes: 1 addition & 1 deletion FlightSim/REQUEST.cs → SimConnect/REQUEST.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// ReSharper disable InconsistentNaming
// ReSharper disable UnusedMember.Global

namespace fs2ff.FlightSim
namespace fs2ff.SimConnect
{
public enum REQUEST : uint
{
Expand Down
33 changes: 17 additions & 16 deletions FlightSim/FlightSimAdapter.cs → SimConnect/SimConnectAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,17 @@
using System.Threading.Tasks;
using fs2ff.Models;
using Microsoft.FlightSimulator.SimConnect;
using SimConnectImpl = Microsoft.FlightSimulator.SimConnect.SimConnect;

namespace fs2ff.FlightSim
namespace fs2ff.SimConnect
{
public class FlightSimAdapter : IDisposable
public class SimConnectAdapter : IDisposable
{
private const string AppName = "fs2ff";
private const uint WM_USER_SIMCONNECT = 0x0402;

private Timer? _attitudeTimer;
private SimConnect? _simConnect;
private SimConnectImpl? _simConnect;

public event Func<Attitude, Task>? AttitudeReceived;
public event Func<Position, Task>? PositionReceived;
Expand All @@ -34,7 +35,7 @@ public void Connect(IntPtr hwnd, uint attitudeFrequency)
_simConnect?.Dispose();
_attitudeTimer?.Dispose();

_simConnect = new SimConnect(AppName, hwnd, WM_USER_SIMCONNECT, null, 0);
_simConnect = new SimConnectImpl(AppName, hwnd, WM_USER_SIMCONNECT, null, 0);
_attitudeTimer = new Timer(RequestAttitudeData, null, 100, 1000 / attitudeFrequency);

SubscribeEvents();
Expand Down Expand Up @@ -72,7 +73,7 @@ public void SetAttitudeFrequency(uint frequency)

private void AddToDataDefinition(DEFINITION defineId, string datumName, string? unitsName, SIMCONNECT_DATATYPE datumType = SIMCONNECT_DATATYPE.FLOAT64)
{
_simConnect?.AddToDataDefinition(defineId, datumName, unitsName, datumType, 0, SimConnect.SIMCONNECT_UNUSED);
_simConnect?.AddToDataDefinition(defineId, datumName, unitsName, datumType, 0, SimConnectImpl.SIMCONNECT_UNUSED);
}

private void DisconnectInternal(bool failure)
Expand Down Expand Up @@ -130,7 +131,7 @@ private void RequestAttitudeData(object? _)
{
_simConnect?.RequestDataOnSimObject(
REQUEST.Attitude, DEFINITION.Attitude,
SimConnect.SIMCONNECT_OBJECT_ID_USER,
SimConnectImpl.SIMCONNECT_OBJECT_ID_USER,
SIMCONNECT_PERIOD.ONCE,
SIMCONNECT_DATA_REQUEST_FLAG.DEFAULT,
0, 0, 0);
Expand All @@ -141,12 +142,12 @@ private void RequestAttitudeData(object? _)
}
}

private void SimConnect_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
private void SimConnect_OnRecvEventObjectAddremove(SimConnectImpl sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
{
if (data.uEventID == (uint) EVENT.ObjectAdded &&
(data.eObjType == SIMCONNECT_SIMOBJECT_TYPE.AIRCRAFT ||
data.eObjType == SIMCONNECT_SIMOBJECT_TYPE.HELICOPTER) &&
data.dwData != SimConnect.SIMCONNECT_OBJECT_ID_USER)
data.dwData != SimConnectImpl.SIMCONNECT_OBJECT_ID_USER)
{
_simConnect?.RequestDataOnSimObject(
REQUEST.TrafficObjectBase + data.dwData,
Expand All @@ -157,21 +158,21 @@ private void SimConnect_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT
}
}

private void SimConnect_OnRecvException(SimConnect sender, SIMCONNECT_RECV_EXCEPTION data)
private void SimConnect_OnRecvException(SimConnectImpl sender, SIMCONNECT_RECV_EXCEPTION data)
{
Console.Error.WriteLine("Exception caught: " + data.dwException);
DisconnectInternal(true);
}

private void SimConnect_OnRecvOpen(SimConnect sender, SIMCONNECT_RECV data)
private void SimConnect_OnRecvOpen(SimConnectImpl sender, SIMCONNECT_RECV data)
{
RegisterPositionStruct();
RegisterAttitudeStruct();
RegisterTrafficStruct();

_simConnect?.RequestDataOnSimObject(
REQUEST.Position, DEFINITION.Position,
SimConnect.SIMCONNECT_OBJECT_ID_USER,
SimConnectImpl.SIMCONNECT_OBJECT_ID_USER,
SIMCONNECT_PERIOD.SECOND,
SIMCONNECT_DATA_REQUEST_FLAG.DEFAULT,
0, 0, 0);
Expand All @@ -183,12 +184,12 @@ private void SimConnect_OnRecvOpen(SimConnect sender, SIMCONNECT_RECV data)
_simConnect?.SubscribeToSystemEvent(EVENT.SixHz, "6Hz");
}

private void SimConnect_OnRecvQuit(SimConnect sender, SIMCONNECT_RECV data)
private void SimConnect_OnRecvQuit(SimConnectImpl sender, SIMCONNECT_RECV data)
{
DisconnectInternal(false);
}

private async void SimConnect_OnRecvSimobjectData(SimConnect sender, SIMCONNECT_RECV_SIMOBJECT_DATA data)
private async void SimConnect_OnRecvSimobjectData(SimConnectImpl sender, SIMCONNECT_RECV_SIMOBJECT_DATA data)
{
if (data.dwRequestID == (uint) REQUEST.Position &&
data.dwDefineID == (uint) DEFINITION.Position &&
Expand All @@ -206,19 +207,19 @@ private async void SimConnect_OnRecvSimobjectData(SimConnect sender, SIMCONNECT_

if (data.dwRequestID == (uint) REQUEST.TrafficObjectBase + data.dwObjectID &&
data.dwDefineID == (uint) DEFINITION.Traffic &&
data.dwObjectID != SimConnect.SIMCONNECT_OBJECT_ID_USER &&
data.dwObjectID != SimConnectImpl.SIMCONNECT_OBJECT_ID_USER &&
data.dwData?.FirstOrDefault() is Traffic tfk)
{
await TrafficReceived.RaiseAsync(tfk, data.dwObjectID).ConfigureAwait(false);
}
}

private void SimConnect_OnRecvSimobjectDataBytype(SimConnect sender, SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE data)
private void SimConnect_OnRecvSimobjectDataBytype(SimConnectImpl sender, SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE data)
{
if ((data.dwRequestID == (uint) REQUEST.TrafficAircraft ||
data.dwRequestID == (uint) REQUEST.TrafficHelicopter) &&
data.dwDefineID == (uint) DEFINITION.Traffic &&
data.dwObjectID != SimConnect.SIMCONNECT_OBJECT_ID_USER)
data.dwObjectID != SimConnectImpl.SIMCONNECT_OBJECT_ID_USER)
{
_simConnect?.RequestDataOnSimObject(
REQUEST.TrafficObjectBase + data.dwObjectID,
Expand Down

0 comments on commit 0dc0028

Please sign in to comment.