Phase 0: scaffold modern RIOJoy solution + plan

Modernization of the legacy vJoy-based RIO cockpit interface for Win10/11,
removing the vJoy dependency in favor of a custom VHF/UMDF HID driver,
rewritten in C#/.NET 8 as a background tray app with per-game profiles.

- Reorganize: legacy C++ -> legacy/, cockpit art -> docs/reference/
- RioJoy.sln: src/RioJoy.Core (lib) + src/RioJoy.Tray (tray app), net8.0-windows x64
- driver/ placeholder for the RioGamepad WDK driver
- docs/PLAN.md (7-phase plan; profiles + serial-yield model)
- docs/PROTOCOL.md (RIO wire format + iRIO input-map reference)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-06-26 12:43:01 -05:00
co-authored by Claude Opus 4.8
commit 39a3dab1fc
54 changed files with 13616 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
namespace RioJoy.Tray;
/// <summary>
/// Owns the tray icon and (eventually) the RIOJoy runtime: the serial link to
/// the RIO, the active profile, the virtual-HID feeder, and the profile
/// auto-switch watcher.
///
/// Phase 0 scaffold: just the tray icon + a minimal menu. Wiring the runtime is
/// Phase 5 work; the menu items below are placeholders that mirror the legacy
/// console menu (reset/recalibrate axes, version/status, quit).
/// </summary>
internal sealed class TrayApplicationContext : ApplicationContext
{
private readonly NotifyIcon _trayIcon;
public TrayApplicationContext()
{
var menu = new ContextMenuStrip();
menu.Items.Add("RIOJoy (scaffold)").Enabled = false;
menu.Items.Add(new ToolStripSeparator());
menu.Items.Add("Exit", null, (_, _) => ExitThread());
_trayIcon = new NotifyIcon
{
Icon = SystemIcons.Application,
Text = "RIOJoy",
Visible = true,
ContextMenuStrip = menu,
};
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
_trayIcon.Visible = false;
_trayIcon.Dispose();
}
base.Dispose(disposing);
}
}