Exemplo n.º 1
0
        private void StartService(string[] args)
        {
            try
            {
                eliteVirtualJoysticks = StartVirtualJoysticks();

                /*
                 * settings = Settings.Load();
                 * ClientActions.ClientAction += ClientActions_ClientAction;
                 * client = new CommonCommunication.Client();
                 * messageHandler = new MessageHandler
                 * {
                 *  Client = client,
                 *  ConnectJoysticks = () => {
                 *      eliteVirtualJoysticks = StartVirtualJoysticks();
                 *      StartControllers(settings, eliteVirtualJoysticks);
                 *  },
                 *  DisconnectJoysticks = () => StopControllers(),
                 *  ConnectArduino = () => ConnectArduino(),
                 *  DisconnectArduino = () => DisconnectArduino(),
                 *  ReconnectArduino = () => ReconnectArduino(),
                 *  KeyPress = (string data) => KeyPress(data),
                 * };
                 *
                 * StartIpcServer();
                 */
            }
            catch (Exception ex)
            {
                log.Error($"Error starting service: {ex.Message}");
            }
        }
Exemplo n.º 2
0
        private void StartService(string[] args)
        {
            try
            {
                settings = Settings.Load();
                ClientActions.ClientAction += ClientActions_ClientAction;
                client = new CommonCommunication.Client()
                {
                    Logger = Log
                };
                messageHandler = new MessageHandler
                {
                    Client           = client,
                    ConnectJoysticks = () => {
                        eliteVirtualJoysticks = StartVirtualJoysticks();
                        StartControllers(settings, eliteVirtualJoysticks);
                    },
                    DisconnectJoysticks = () => StopControllers(),
                    ConnectArduino      = () => ConnectArduino(),
                    DisconnectArduino   = () => DisconnectArduino(),
                    ReconnectArduino    = () => ReconnectArduino(),
                    Logger = Log,
                    //KeyPress = (string data) => KeyPress(data),
                };

                StartIpcServer();
            }
            catch (Exception ex)
            {
                Log.LogError($"Error starting service: {ex.Message}");
            }
        }
Exemplo n.º 3
0
        private void StopControllers()
        {
            foreach (var controller in Controllers)
            {
                controller.Dispose();
            }

            Controllers = new List <Controller>();

            try
            {
                eliteVirtualJoysticks?.Release();
                GameService?.Dispose();
                ForceFeedBackController?.Dispose();
                voiceMeeterDisposable?.Dispose();
            }
            catch (Exception ex)
            {
                Log.LogError(ex.Message);
            }

            eliteVirtualJoysticks   = null;
            ForceFeedBackController = null;
            voiceMeeterDisposable   = null;
        }
Exemplo n.º 4
0
 public static ScController Create(
     EliteSharedState sharedState, vJoy vjoy, EliteVirtualJoysticks virtualJoysticks, vJoyMapper vJoyMapper)
 {
     return(new ScController()
     {
         Controller = SwscController.RetrieveAll()?.First(),
         SharedState = sharedState,
         //vJoy = vjoy,
         VirtualJoysticks = virtualJoysticks,
         vJoyMapper = vJoyMapper,
     });
 }
 public static ChPedalsController Create(
     EliteSharedState sharedState, vJoyInterfaceWrap.vJoy vjoy, EliteVirtualJoysticks virtualJoysticks, vJoyMapper vJoyMapper)
 {
     return(new ChPedalsController()
     {
         Controller = Faz.SideWinderSC.Logic.CHPedalsController.RetrieveAll()?.First(),
         SharedState = sharedState,
         //vJoy = vjoy,
         VirtualJoysticks = virtualJoysticks,
         vJoyMapper = vJoyMapper,
     });
 }
Exemplo n.º 6
0
 public static SwGvController Create(
     EliteSharedState sharedState, vJoy vjoy, EliteVirtualJoysticks virtualJoysticks, vJoyMapper vJoyMapper)
 {
     return(new SwGvController()
     {
         Controller = SwgvController.RetrieveAll()?.First(),
         SharedState = sharedState,
         //vJoy = vjoy,
         VirtualJoysticks = virtualJoysticks,
         vJoyMapper = vJoyMapper,
         //VisualState = new VisualState { Name = Name }
     });
 }
 public static ButtonBoxController Create(
     EliteSharedState sharedState, vJoy vjoy, EliteVirtualJoysticks virtualJoysticks, vJoyMapper vJoyMapper, ArduinoCommunication.Arduino arduino)
 {
     return(new ButtonBoxController()
     {
         Controller = BBI32Controller.RetrieveAll()?.First(),
         SharedState = sharedState,
         //vJoy = vjoy,
         VirtualJoysticks = virtualJoysticks,
         vJoyMapper = vJoyMapper,
         Arduino = arduino,
         //VisualState = new VisualState { Name = Name }
     });
 }
Exemplo n.º 8
0
        private EliteVirtualJoysticks StartVirtualJoysticks()
        {
            var eliteVirtualJoysticks = new EliteVirtualJoysticks();

            try
            {
                eliteVirtualJoysticks.Initialize();
            }
            catch (Exception ex)
            {
                Log.LogError(ex.Message);
            }

            return(eliteVirtualJoysticks);
        }
Exemplo n.º 9
0
 public static Swff2Controller Create(EliteSharedState sharedState, vJoy vjoy, EliteVirtualJoysticks virtualJoysticks,
                                      vJoyMapper vJoyMapper, ArduinoCommunication.Arduino arduino)
 {
     try
     {
         return(new Swff2Controller()
         {
             Controller = Faz.SideWinderSC.Logic.Swff2Controller.RetrieveAll().First(),
             SharedState = sharedState,
             //vJoy = vjoy,
             VirtualJoysticks = virtualJoysticks,
             vJoyMapper = vJoyMapper,
             Arduino = arduino,
         });
     }
     catch (InvalidOperationException)
     {
     }
     return(null);
 }
Exemplo n.º 10
0
 private IDisposable StartUpdateData(EliteVirtualJoysticks eliteVirtualJoysticks, int updateFrequency = 100)
 {
     // Send an update message every x milliseconds
     return(Observable.Interval(TimeSpan.FromMilliseconds(updateFrequency)).Subscribe(_ => eliteVirtualJoysticks.UpdateAll()));
 }
Exemplo n.º 11
0
        private void StartControllers(
            Settings settings,
            EliteVirtualJoysticks eliteVirtualJoysticks)
        {
            Log.LogDebug("Connecting to Elite Game");
            GameService.Initialize();
            Log.LogDebug("Connected to Elite Game");

            Log.LogDebug("Connecting to Controllers");

            // Connect to Voicemeeter
            voiceMeeterDisposable = VoiceMeeter.Remote.Initialize(Voicemeeter.RunVoicemeeterParam.VoicemeeterBanana).Result;

            // Connect to the Force Feedback Joystick
            ForceFeedBackController = new ForceFeedBackController.Controller()
            {
                Logger = Log
            };
            ForceFeedBackController.Initialize(GameService);

            try
            {
                var ffb2 = new vJoyMapping.Microsoft.Sidewinder.ForceFeedback2.Controller
                {
                    Arduino          = arduino,
                    Name             = "Force Feedback 2",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks,
                    Logger           = Log
                };

                ffb2.Initialize(Controller.GetDevicePath(
                                    Usb.GameControllers.Microsoft.Sidewinder.ForceFeedback2.Joystick.VendorId,
                                    Usb.GameControllers.Microsoft.Sidewinder.ForceFeedback2.Joystick.ProductId));

                Controllers.Add(ffb2);

                Log.LogDebug($"Added {ffb2.Name}");

                /*
                 * var swgv = new vJoyMapping.Microsoft.Sidewinder.GameVoice.Controller
                 * {
                 *  Arduino = arduino,
                 *  Name = "Game Voice",
                 *  SharedState = SharedState,
                 *  Settings = settings,
                 *  VirtualJoysticks = eliteVirtualJoysticks,
                 *  Logger = Log
                 * };
                 *
                 * swgv.Initialize(Controller.GetDevicePath(
                 *  Usb.GameControllers.Microsoft.Sidewinder.GameVoice.Joystick.VendorId,
                 *  Usb.GameControllers.Microsoft.Sidewinder.GameVoice.Joystick.ProductId));
                 *
                 * Controllers.Add(swgv);
                 */

                var swsc = new vJoyMapping.Microsoft.Sidewinder.StrategicCommander.Controller
                {
                    Arduino          = arduino,
                    Name             = "Strategic Commander",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks,
                    Logger           = Log
                };

                swsc.Initialize(Controller.GetDevicePath(
                                    Usb.GameControllers.Microsoft.Sidewinder.StrategicCommander.Joystick.VendorId,
                                    Usb.GameControllers.Microsoft.Sidewinder.StrategicCommander.Joystick.ProductId));

                Controllers.Add(swsc);

                Log.LogDebug($"Added {swsc.Name}");

                var warthog = new vJoyMapping.Thrustmaster.Warthog.Throttle.Controller
                {
                    Arduino          = arduino,
                    Name             = "Warthog Throttle",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks,
                    Logger           = Log
                };

                warthog.Initialize(Controller.GetDevicePath(
                                       Usb.GameControllers.Thrustmaster.Warthog.Throttle.Joystick.VendorId,
                                       Usb.GameControllers.Thrustmaster.Warthog.Throttle.Joystick.ProductId));

                Controllers.Add(warthog);

                Log.LogDebug($"Added {warthog.Name}");

                var altProductId = false;

retry:

                try
                {
                    var pedals = new vJoyMapping.CHProducts.ProPedals.Controller
                    {
                        Arduino          = arduino,
                        Name             = "Pro Pedals",
                        SharedState      = SharedState,
                        Settings         = settings,
                        VirtualJoysticks = eliteVirtualJoysticks,
                        Logger           = Log
                    };

                    var productId = altProductId ?
                                    Usb.GameControllers.CHProducts.ProPedals.JoystickMSDriver.ProductId :
                                    Usb.GameControllers.CHProducts.ProPedals.Joystick.ProductId;

                    pedals.Initialize(Controller.GetDevicePath(
                                          Usb.GameControllers.CHProducts.ProPedals.Joystick.VendorId,
                                          productId), altProductId);

                    Controllers.Add(pedals);

                    Log.LogDebug($"Added {pedals.Name}");
                }
                catch (Exception _)
                {
                    if (altProductId == false)
                    {
                        altProductId = true;
                        goto retry;
                    }

                    throw;
                }

                var bbi32 = new vJoyMapping.LeoBodnar.BBI32.Controller
                {
                    Arduino          = arduino,
                    Name             = "BBI32",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks,
                    Logger           = Log
                };

                bbi32.Initialize(Controller.GetDevicePath(
                                     Usb.GameControllers.LeoBodnar.BBI32.Joystick.VendorId,
                                     Usb.GameControllers.LeoBodnar.BBI32.Joystick.ProductId));

                Controllers.Add(bbi32);

                Log.LogDebug($"Added {bbi32.Name}");

                var ddjsb2 = new vJoyMapping.Pioneer.ddjsb2.Controller
                {
                    Arduino          = arduino,
                    Name             = "DDJSB2",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks,
                    GameService      = GameService,
                    Logger           = Log
                };

                ddjsb2.Initialize(ForceFeedBackController);

                Controllers.Add(ddjsb2);

                Log.LogDebug($"Added {ddjsb2.Name}");

                /*
                 * var keyboard = new KeyboardMapping.Controller
                 * {
                 *  Arduino = arduino,
                 *  Name = "Keypad",
                 *  SharedState = SharedState,
                 *  Settings = settings,
                 *  VirtualJoysticks = eliteVirtualJoysticks,
                 *  Logger = Log
                 * };
                 *
                 * keyboard.Initialize(KeyboardController, GameService);
                 *
                 * Controllers.Add(keyboard);
                 */

                // State Handlers
                var subscription = SharedState.GearChanged.Subscribe(
                    _ => ffb2.CallActivateButton(vJoyTypes.Virtual, MappedButtons.LandingGearToggle, 200));

                virtualControllerUpdater = StartUpdateData(eliteVirtualJoysticks, 300);

                ClientActions.ClientInformationAction(this, "Controllers Ready");
                Log.LogDebug("Controllers Ready");
            }
            catch (Exception ex)
            {
                Log.LogError(ex.Message);
                ClientActions.ClientInformationAction(this, $"Controller Error: {ex.Message}");
            }
        }
Exemplo n.º 12
0
        public void TestMethod1()
        {
            try
            {
                List <Controller>     Controllers           = new List <Controller>();
                EliteVirtualJoysticks eliteVirtualJoysticks = new EliteVirtualJoysticks();
                vJoyMapper            vJoyMapper            = new vJoyMapper();
                EliteSharedState      SharedState           = new EliteSharedState {
                    OrbitLines = true, HeadsUpDisplay = true
                };
                ArduinoCommunication.Arduino arduino = null;

                Settings settings = Settings.Load();

                var ffb2 = new vJoyMapping.Microsoft.Sidewinder.ForceFeedback2.Controller
                {
                    Arduino          = arduino,
                    Name             = "Force Feedback 2",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks
                };

                Controllers.Add(ffb2);

                var swgv = new vJoyMapping.Microsoft.Sidewinder.GameVoice.Controller
                {
                    Arduino          = arduino,
                    Name             = "Game Voice",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks
                };

                Controllers.Add(swgv);

                var swsc = new vJoyMapping.Microsoft.Sidewinder.StrategicCommander.Controller
                {
                    Arduino          = arduino,
                    Name             = "Strategic Commander",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks
                };

                Controllers.Add(swsc);

                var warthog = new vJoyMapping.Thrustmaster.Warthog.Throttle.Controller
                {
                    Arduino          = arduino,
                    Name             = "Warthog Throttle",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks
                };

                Controllers.Add(warthog);

                var pedals = new vJoyMapping.CHProducts.ProPedals.Controller
                {
                    Arduino          = arduino,
                    Name             = "Pro Pedals",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks
                };

                Controllers.Add(pedals);

                var bbi32 = new vJoyMapping.LeoBodnar.BBI32.Controller
                {
                    Arduino          = arduino,
                    Name             = "BBI32",
                    SharedState      = SharedState,
                    Settings         = settings,
                    VirtualJoysticks = eliteVirtualJoysticks
                };

                Controllers.Add(bbi32);

                // State Handlers
                var subscription = SharedState.GearChanged.Subscribe(
                    x => ffb2.CallActivateButton(vJoyTypes.Virtual, MappedButtons.LandingGearToggle, 200));

                while (true)
                {
                    Thread.Sleep(1000);
                }
            }
            catch (Exception)
            {
                ;
            }
        }
 public static TmThrottleController Create(EliteSharedState sharedState, vJoy vjoy, EliteVirtualJoysticks virtualJoysticks,
                                           vJoyMapper vJoyMapper, ArduinoCommunication.Arduino arduino)
 {
     return(new TmThrottleController()
     {
         Controller = Faz.SideWinderSC.Logic.TMWartHogThrottleController.RetrieveAll()?.First(),
         SharedState = sharedState,
         VirtualJoysticks = virtualJoysticks,
         vJoyMapper = vJoyMapper,
         Arduino = arduino
     });
 }