using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Salamax { public class TeensySimulatorDevice : USBDevice { private USBSimulator.USBSimulatorDevice _device = null; private SimulatedController _controller = null; public override bool IsConnected { get { return _device != null ? _device.IsConnected : false; } } public TeensySimulatorDevice() { _Detect(); /* while (true) { if (Console.KeyAvailable) { var key = Console.ReadKey(true).Key; if (key == ConsoleKey.Escape) break; if (key == ConsoleKey.RightArrow) controller.KeyData[2] |= 0x08; } System.Threading.Thread.Sleep(10); controller.KeyData[2] = 0x00; } */ } public override void Find() { _Detect(); } public void SendKeyData(byte[] keyData) { Array.Copy(keyData, 0, _controller.KeyData, 0, Math.Min(_controller.KeyData.Length, keyData.Length)); } public override void Disconnect() { if (_controller != null) { _controller.Stop(); } if (_device != null) { _device.DetachDevice(); System.Threading.Thread.Sleep(3000); _device.CurrentDevice = null; } if (_controller != null) _controller.OnShutdown(); if (_device != null) _device.Close(); _controller = null; _device = null; } private bool _Detect() { bool ret = false; try { if (_device == null) _device = new USBSimulator.USBSimulatorDevice(); if (_controller == null) { _controller = new SimulatedController(); _device.CurrentDevice = _controller; } if (_device != null) _device.AttachDevice(); ret = true; } catch { //Uh-oh... } return ret; } } }