public void Connect() { if (!this.Connected) { // ensure device is available VjdStat status = this.joystick.GetVJDStatus(this.ID); switch (status) { case VjdStat.VJD_STAT_OWN: logger.Warn("vJoy Device {0} is already owned by this feeder", this.ID); break; case VjdStat.VJD_STAT_FREE: logger.Info("vJoy Device {0} is free", this.ID); break; case VjdStat.VJD_STAT_BUSY: logger.Fatal("vJoy Device {0} is already owned by another feeder\nCannot continue", this.ID); return; case VjdStat.VJD_STAT_MISS: logger.Fatal("vJoy Device {0} is not installed or disabled\nCannot continue", this.ID); return; default: logger.Fatal("vJoy Device {0} general error\nCannot continue", this.ID); return; } ; this.loadCapabilities(); // now aquire the vJoy device if ((status == VjdStat.VJD_STAT_OWN) || ((status == VjdStat.VJD_STAT_FREE) && (!joystick.AcquireVJD(this.ID)))) { logger.Fatal("Failed to acquire vJoy device number {0}.", this.ID); return; } else { logger.Info("Acquired: vJoy device number {0}.", this.ID); } if (this.SupportedFFBEffects.Count > 0) { VirtualFFBPacketHandler.AddFFBHandler(this.ID, this.FFBDataReceivedHandler); // this.ffbPacketHandler = new VirtualFFBPacketHandler(this.joystick, this); // this.joystick.FfbRegisterGenCB(this.OnVirtualFFBDataReceived, null); } this.joystick.ResetVJD(this.ID); this.Connected = true; } }
public void Disconnect() { if (this.Connected) { if (this.SupportedFFBEffects.Count > 0) { VirtualFFBPacketHandler.RemoveFFBHandler(this.ID); //this.joystick.FfbRegisterGenCB(null, null); //this.ffbPacketHandler = new VirtualFFBPacketHandler(this.joystick); } this.joystick.ResetVJD(this.ID); Thread.Sleep(1000); this.joystick.RelinquishVJD(this.ID); logger.Info("Dropped: vJoy device number {0}.", this.ID); this.Connected = false; } }