private TetrisApp() { // Create the object that configures the GPIO pins to buttons. GPIOButtonInputProvider inputProvider = new GPIOButtonInputProvider(null); // Assign GPIO / Key functions to GPIOButtonInputProvider #if ESP32 // This is an example mapping, work them out for your needs! inputProvider.AddButton(12, Button.VK_LEFT, true); inputProvider.AddButton(13, Button.VK_RIGHT, true); inputProvider.AddButton(34, Button.VK_UP, true); inputProvider.AddButton(35, Button.VK_SELECT, true); inputProvider.AddButton(36, Button.VK_DOWN, true); DisplayControl.Initialize(new SpiConfiguration(1, 22, 21, 18, 5), new ScreenConfiguration(0, 0, 320, 240)); #elif STM32F769I_DISCO // This is an example (working) button map, work the actual pins out for your need! //WARNING: Invalid pin mappings will never be returned, and may need you to reflash the device! inputProvider.AddButton(PinNumber('J', 0), Button.VK_LEFT, true); inputProvider.AddButton(PinNumber('J', 1), Button.VK_RIGHT, true); inputProvider.AddButton(PinNumber('J', 3), Button.VK_UP, true); inputProvider.AddButton(PinNumber('J', 4), Button.VK_DOWN, true); inputProvider.AddButton(PinNumber('A', 6), Button.VK_SELECT, true); DisplayControl.Initialize(new SpiConfiguration(), new ScreenConfiguration()); //TODO: surely this should "actually" be I2C?! #else throw new System.Exception("Unknown button and/or display mapping!"); #endif // Create ExtendedWeakReference for high score table highScoreEWD = ExtendedWeakReference.RecoverOrCreate( typeof(TetrisApp), 0, ExtendedWeakReference.c_SurvivePowerdown); // Set persistence priority highScoreEWD.Priority = (int)ExtendedWeakReference.PriorityLevel.Important; // Try to recover previously saved HighScore HighScore = (HighScoreTable)highScoreEWD.Target; // If nothing was recovered - create new if (HighScore == null) { HighScore = new HighScoreTable(); } }
private TetrisApp() { // Create the object that configures the GPIO pins to buttons. GPIOButtonInputProvider inputProvider = new GPIOButtonInputProvider(null); // Assign GPIO / Key functions to GPIOButtonInputProvider // Esp32 inputProvider.AddButton(12, Button.VK_LEFT, true); inputProvider.AddButton(13, Button.VK_RIGHT, true); inputProvider.AddButton(34, Button.VK_UP, true); inputProvider.AddButton(35, Button.VK_SELECT, true); inputProvider.AddButton(36, Button.VK_DOWN, true); // STM32 //inputProvider.AddButton(PinNumber('A', 0), Button.VK_LEFT, true); //inputProvider.AddButton(PinNumber('A', 1), Button.VK_RIGHT, true); //inputProvider.AddButton(PinNumber('A', 2), Button.VK_UP, true); //inputProvider.AddButton(PinNumber('A', 3), Button.VK_SELECT, true); //inputProvider.AddButton(PinNumber('A', 4), Button.VK_DOWN, true); // Create ExtendedWeakReference for high score table highScoreEWD = ExtendedWeakReference.RecoverOrCreate( typeof(TetrisApp), 0, ExtendedWeakReference.c_SurvivePowerdown); // Set persistence priority highScoreEWD.Priority = (int)ExtendedWeakReference.PriorityLevel.Important; // Try to recover previously saved HighScore HighScore = (HighScoreTable)highScoreEWD.Target; // If nothing was recovered - create new if (HighScore == null) { HighScore = new HighScoreTable(); } }
/// <summary> /// Constructs a ButtonPad object that handles the /// hardware's button interrupts. /// </summary> /// <param name="sink"></param> /// <param name="button"></param> /// <param name="pin"></param> public ButtonPad(GPIOButtonInputProvider sink, Button button, GpioPin pin) { this.sink = sink; this.button = button; pin.ValueChanged += Pin_ValueChanged; }