* Solid connection?
* Add a small wait after we reset the port
* Moving up to latest as this fixes a lot of reset logic
* Moving libraries over to jfedor's set, standard does not work for SDK 2.1.1
* Switching Pico and TinyUSB to specific versions via hid-remapper
* Working?
* Move TX to PIO0:2
Move NeoPico to PIO0:1
* Moving state machines back to 0.7.11 alignment
* And a pause/wait for core1 to be ready before running it solves my last issue
* Removing core1 reset entirely, remove i2c hangup if display is not present during web config
* Reverting / clean some code, restore tusb to our old config, update aux and remove comments for PR
* Xbox 360 authentication - Santroller + XSM3
* Adding the missing files to the make
* ANd the missing XSM3 files
my build has both a lever (dpad mode) and buttons assigned to direct
digital, and a display that is intended to be input-pin-based rather
than output-based (so that the same things display in the viewer
regardless of which profile mode I am in). main works great for that,
for buttons, but the current GP_LEVER_MODEs all are looking at the
output, e.g. GP_LEVER_MODE_DIGITAL only shows the lever moving if the
dpad is set to digital output, not e.g. left analog output. meanwhile,
it would also show lever activity if I was pressing the direct digital
buttons even when I wasn't moving the lever.
this fixes that by adding a new GP_LEVER_MODE_DPAD, which is looking at
the unaltered dpad-mode input, regardless of how it is output, bringing
the display lever functionally equivalent to GPIO-based button displays.
conveniently, we already were holding onto the dpad inputs in the main
loop in order to handle the direct directionals, this just puts it in
the gamepad state object instead
Fixes the USB host not working by reverting the tinyusb and pico-pio-usb libraries to jfedor's branch. There are several issues that make these libraries not work in SDK 2.1.1, but jfedor's dev branch on pico-pio-usb fixes the issues we were having.
I2C breaks on web config in this build, but I will be investigating i2c hal implementation which reverts some of the i2c functionality. If that works, we can add that as a patch as well.
Changed magic numbers for PS4 device IDs to use defines in Gamepad Host.
Added main PS4 "Console" IDs to Gamepad Host device check to allow both modes to function.
* Moved config mode check to the DriverManager
Removed ConfigManager as this idiom never took off and we have better ones in place
Modified NetDriver to run rndis making it the controller of web
Moved Storage -> config Mode to Driver -> config Mode
Fixed no-save issue with web config calls
* Move our reboot translations back to WEB -> SYSTEM
* Added rebootMode to event trigger handling in gp2040
* Adding unregister event handler, and removing during button layout screen shutdown()
* Updating cmake version
* bss pointed this out, should be 3.13 not 3.5
* Testing ubuntu roll-back
* Reverting back to 22.04
* Attempting to downgrade cmake to 3.16.x
* Fix for hotkeys not allowing repeats.
Re-arrange on the main menu screen code.
Added virtual to GPEvent destructors to make sure we are calling all the way up the chain.
* Lock-up fixes, new/delete was happening while the update() function was being called by display
Some code clean-ups, moved all of the gpscreen destructors to virtual so we do not have to switch() the delete function.
Moved some init functions around so we always call init() first
* Add ability to exit menu with pin-based menu toggle. Fix rapid-press of menu toggle
* Updating for main menu ( mini menu ) gamepad button masks
* Added Mini Menu gamepad input as a web configurable option.
This means we can use a toggle on the gamepad settings page / in the board config for allowing the mini menu to be controlled by the gamepad (directional, B1/B2).
A user will still have to set Menu Toggle using the pins in web config, but this gets us much closer.
Also cleaned a little bit of code.
* Duelpad Zen does not need gamepad mini menu input as we have dedicated pins!
* Removed comment
* Missed adding the mini menu option to the webconfig
* Disable mini menu gamepad input by default
* Removed some leftover code
* Modified animation effects so they return a bool if animation was successful.
This is important to our linkage frame as we use the "pre-button press" frame to copy to our case linkage RGBs.
Minor clean-ups to code
* Adding our missing button configs to our Javascript in WWW
* Initial commit of a working Haute Lite / Ultra with translated comments.
Enabling/disabling the ambient light and counts will need to be moved to the web config.
* Moved AnimationStation over to our actual code base instead of a library. This allows us to use protobuf, modify the file formats a bit more, and make the code a lot more dynamic.
Also removed .hpp as we do not use that naming convention in our code.
* Renaming some lowercases
* Lowercase the folder as well
* Linux is sensitive to case while Windows doesn't care :(
* More casing
* More capitalizations
* Moved everything out of the animationstation and playerled libraries, removed as many statics as I could find. Still a few statics in Animation:: but still cleaning.
DO NOT USE: This doesn't work yet, but it is getting closer
* Removed the static case rgbs in favor of ambient / linkage now that we're fully integrated into the source.
This is very close to where we want to be
* Added COSMOX M Ultra and M Lite configs
Moved all of our ambient lighting over to boardconfig defines
Updated the OpenCore0 definitions to use our new ambient lighting
* Almost done, changed bytes over to our RGB define for colors, touched up a lot of different things. Chase effect is now properly working with wrap-around, cycling is all much better. Removed power-on animations as we have no real reason for them right now, we can add them back in later.
* Changed hotkeys for case lights a bit
* Slight code clean-ups, I'm happy with this
* Last bit of clean-up before moving to review
* Revert back to nothing
* More code cleanups. There's a known bug with linkage that will be solved in the next branch
* Deprecated some proto config settings
* Added 5 additional "alternative" layouts for board config-defined layouts.
* Added string resources for new layout definitions.
* Disable turbo functionality in the process loop and hide from display if addon is disabled or no turbo button is defined.
Fixed issue preventing status change of turbo addon in mini menu. Addon can be enabled, but will not function without a bound pin.
* Update GPButton to support turbo rings for pin-defined elements.
* Fixed issue with SOCD mode changes not being picked up.
Menu navigation left/right actions will now act as page up/down.
Choosing an option will go back one menu level instead of staying in the current.
Menu toggle action will only open/close menu, and will not prompt for saving changes.
* Added menu "reset to home" function.
Added ability to open menu if MENU_NAVIGATION_SELECT is pressed in addition to MENU_NAVIGATION_TOGGLE.
Set previous button state on "reset to home" to prevent debouncing when launching menu via MENU_NAVIGATION_SELECT.
* Fixed increment value for menu pagination
* Changed Save & Exit options from "Yes" & "No" to "Save & Exit" and "Exit"
Fixed issue with No/Exit menu not functioning
* Rewrote the add-ons and drivers a bit. This is a much cleaner way to do it, and should hopefully fix the timing in Turbo as well as any other add-ons having issues with USB reporting vs. actual timing.
* Removed player num, updated post process add-on call with a boolean if the USB report was sent. Fixed up add-ons config page and config.proto appropriately
* Moved headers for add-ons from tabs to spaces (we're not enforcing this yet but this gets us closer)
* Removing bitmaps.h with our very temporary old logo
Updated toaster and bounce to use current boot screen. Toaster now does a little more randomness
Changed web config as well
* Testing Xbox One randomization for serial ID
* Moving USB host start to before we run in gp2040. Added a 0.1s sleep to slowing down the CPU, fixes issues with tinyusb sync'ing
* Missed this, important to not start it twice
* Moving the order so tinyusb host boots up first?
* Reverted usb host start to core1
* This might be the issue, the variable is undefined when gp2040 input driver runs a process() and xbone has not been opened yet.
* We have to send descriptor on LED request for player 2
* Moved from enums.js to enums.ts
* Testing Volume Dial using GPEvents
* Missed an include
* Add volume up / down reset on usb report complete (this should be a built-in in input drivers). Also fixed a silly web config thing
* Update Rotary.tsx
* Update Rotary.jsx
* Initial commit for mini config menu
* Implemented menu options and prepared methods for save functionality.
* Removed stdio init
* Added screen saver mode in addition to display timeout. Default is Display Off (original behavior).
Added "snow", "bounce", "pipes", and "toast" screen savers.
drawSprite can now scale sprite data.
* Added VLX and Sega 2P 6 button layout variants
Added button layout orientation feature to switch layouts for handedness
Updated Display config page to update enum definitions for i18n
* Added menu navigation helper function in prep for event system
Added layout and menu action locale strings
* Adjustments to Arcade, Button Angled, and Capcom layouts to make them less likely to cut off on SH110X displays.
* Improved screen autodetection and manual override
* Adjusting conflicts
* Conflicts part deux
* Conflicts with enums
* One more time with conflicts
* Button layout screen conflicts with change between profile banner and generic banner
* Remove profile variables
* Mostly implemented menu navigation, config change storage, and reboot events
* Full menu navigation implementation.
Added timer for reboot cases.
* Increased storage size to 32k
* Added options to disable different components of the status bar on ButtonLayoutScreen.
Removed & deprecated input history addon remnants and migrated to Display options proper.
* Remove deprecated input history init
* Set default Display tab to Hardware
* _Actually_ set default Display tab to Hardware
* Adjust bounce velocity
* Event System Implementation
Re-implemented event system from previous PR #971 to be up to date with current codebase.
* Moved profile change event to setProfile
* Fixed stray semicolon in adding restart event handler.
* Added semicolon to event macro to keep event handlers clean
* Removed semicolons from remaining event handler registrations
* Case RGBs, Bounty #22
First attempt, going to see if this works locally but this is very similar to the turbo led code
* Update LED count for case RGBs, change default white to green
* Added configs for Open Core0 and Open Core0 WASD! Happy Holidays Train!!
* Fix for led index
* Update app.js
* Bounty #4 - Add Turbo LED to RGB Stack
* Set the Turbo LED to RGB from the Add-On Configs Menu, and set the index value same as player LEDs
* Can be configured in the BoardConfig.h (will be for OpenCore0)
* [ImgBot] Optimize images
*Total -- 6,536.44kb -> 6,081.92kb (6.95%)
/configs/OpenCore0/assets/Open_Core0_LED_order.png -- 81.87kb -> 34.77kb (57.53%)
/configs/OpenCore0/assets/Open_Core0_pin_mapping.png -- 79.46kb -> 34.15kb (57.02%)
/configs/OpenCore0/assets/Open_Core0_layout.png -- 80.33kb -> 34.76kb (56.73%)
/configs/OpenCore0/assets/Open_Core0_2.jpg -- 3,134.92kb -> 2,976.17kb (5.06%)
/configs/OpenCore0/assets/Open_Core0.jpg -- 3,159.87kb -> 3,002.07kb (4.99%)
Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
* Updated X-Input serial index 3 to use Pico ID instead of static value (converted to bytes)
* Let's try the tail end of the pico ID
* Lots of tabs in this driver, moved over to spaces
* Also convert these indents to spaces
---------
Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
Previous PR #1102 by @smahdink
* Updates naming to GamepadUSB instead of Controller to avoid collision with controller objects.
* Adds secondary PID for DS4 usage
* Fixes issue where GPIO-based inputs are overridden, preventing main GPIO controls from functioning
* Initial commit of standalone directional inputs in addition to mode-specific and DDI.
* Moved directions experiment to feature branch.
Updated Tilt addon to remove pin allocation in favor of GpioAction usage.
* Removed Reverse button pin allocation in favor of GpioAction
* Deprecated Reverse button pin proto definition.
* Remove unused Reverse pin variable
* Added SUSTAIN_FOCUS_MODE definition for toggling Focus Mode state
* Removed Focus Mode pin allocation in favor of GpioAction
* Removed deprecated pins from webconfig Addon views
* Migrate previous addon pin settings to pin mappings and GpioActions
* Revert deprecated pin names for focus, tilt, and reverse to previous names
* Update tilt, focus, and reverse migrations to use fromProtoBuf
* Remove stray equals sign
* only write the config to flash when it is safe to
the USB host port uses the flash, as does our config. both cores
accessing the flash at the same time is no good and will crash the host
port, so the host port core is locked when writing flash for saving the
config, but this disables interrupts on the port and may interfere with
auth, so this only saves at runtime when it is safe to (when USB host is
disabled), with an optional flag to force saving the config, which
should only be used in limited circumstances.
* always force config saves in the webconfig
it doesn't use the USB host port for anything so this should always be
fine
* add a hotkey to force a save of the config
this removes a bunch of code to support the addon, naturally, but the
idea is the same, just in core. of note, the default mode when no slider
pins are active has been folded into the core gamepad setting, so a tiny
migration copies the user's default mode into the gamepad setting in
order to not violate expectations. the user can still change this
setting there via webconfig or hotkeys.
this also updates the DDI addon to get the active mode (rather than the
settings mode) so that it doesn't do weird cleaning and/or override
things, and updates the display code to show the active mode
Co-authored-by: Luke A <arntsonl@gmail.com>
* add a enabled flag to GpioMappings to indicate what's active
with this flag we no longer need to copy profile 1 to 2-4 by default, so
that migration goes away, but because of that we need to migrate the old
way of doing things and only enable profiles that are actually different
than the base.
in the end, new fresh boards should have profile 1 only enabled, and
profiles 2-4 blank (no copying, disabled by default), and migrated
configs should have profiles (that exist) that differ from profile 1
enabled and profiles that don't disabled
* refactor set/next/previousProfile to only set enabled profiles
* always provide a list in getProfileOptions
* Add possibility to add, disabled/enable profiles. State can now handle any amount of profiles
* Mock data with enabled flag, handle flag correctly
* Correctly handle disabled translation string
* Ignore base profile enabled label in menu
* add enabled flag to the API; not sure how I missed this
---------
Co-authored-by: ian <ian@vidales.se>
* add the ability to give a profile a name
* Add support for changing profile labels
* Letters, numbers, and spaces allowed in profile label
* actually retain the alt. profile labels
aka increment the array index *after* you're done using it, silly bss
* actually provide the alt mappings profileLabels in the proper API spot
this fixes the issues with Pelsin's UI change, which was immaculately
done and only thwarted by my bugs =)
* display the profile label on the display when a label is set
e.g. the top line splash says "SNES FG" instead of "Profile #2"
---------
Co-authored-by: ian <ian@vidales.se>
* initial commit
Functionally working, web is broken in the following ways:
1 - Error Rate title shows regardless of Forced Circularity being checked, but the selection box hides as expected
2 - Selecting a value saves, but when reloading the webpage there is an error and it thinks it's set to 0%
* Convert FormSelect to ts, add types for label. add support for hiding with prop
* Reorder checkboxes for better flow
* Fix key error for focus mode
* Remove logging used to check values
* fix errors and initial value
* remove web floats
---------
Co-authored-by: ian <ian@vidales.se>
* PS5 fix for auth
* What started as a simple fix has become a complete revamp of PS4/PS5 auth
- Simplified auth down to a single 1064 buffer for nonce + signed nonce passing
- All auth console<->dongle passing now use a single GPAuthState enum
- Lots of simplifications of design for PS4 and PS4-usb-listener
Still need to test against PS4 loaded keys but it should work
* Fix for USB stalling
* Revert sensor data back to what it was before
* Update PS4Auth.h
* Update PS4Driver.cpp
* [ImgBot] Optimize images
*Total -- 6,536.44kb -> 6,081.92kb (6.95%)
/configs/OpenCore0/assets/Open_Core0_LED_order.png -- 81.87kb -> 34.77kb (57.53%)
/configs/OpenCore0/assets/Open_Core0_pin_mapping.png -- 79.46kb -> 34.15kb (57.02%)
/configs/OpenCore0/assets/Open_Core0_layout.png -- 80.33kb -> 34.76kb (56.73%)
/configs/OpenCore0/assets/Open_Core0_2.jpg -- 3,134.92kb -> 2,976.17kb (5.06%)
/configs/OpenCore0/assets/Open_Core0.jpg -- 3,159.87kb -> 3,002.07kb (4.99%)
Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
* Very WIP xbox 360 auth, don't use this for any reason
* Packet size has to be 64
* Fixed a bug with descriptor strings that was causing the xbox 360 security auth to fail
* X360 Auth Working! Need to go over a lot of this code because I sync cores now, a lot of xinput changes, etc.
* Re-enabling printf to figure out what is going wrong with release
DO NOT USE THIS VERSION
* Let's revert some core dependence if that's the issue on release
* Add sync back in and move add-ons to after driver init
* Removing stdio init seems to fix haute42
* Lots of code cleaning. Core0 will always setup() before Core1() so we can remove core1 wait. Added nop to while loop just to add some CPU spice
* Updating TinyUSB to 0.17.0 release from Sept. 2024
* Getting x360 back up to working, fixing some small bugs
* One merge fix for feature data + tud auth data
* Formatting, getting ready for merge
* Last of the formatting!
---------
Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
* [ImgBot] Optimize images
*Total -- 11,807.83kb -> 10,597.19kb (10.25%)
/configs/MavercadeRev2/assets/Rev2_config_pic.jpg -- 1,148.71kb -> 1,001.39kb (12.83%)
/configs/MavercadeRev2/assets/Rev2_thumbnail.png -- 4,501.00kb -> 3,984.05kb (11.49%)
/configs/ZeroRhythm/Assets/ZeroThythm 2.jpg -- 2,954.52kb -> 2,669.00kb (9.66%)
/configs/ZeroRhythm/Assets/ZeroRhythm 1.jpg -- 2,687.40kb -> 2,428.72kb (9.63%)
/configs/MavercadeRev1/assets/Rev1_config_pic.png -- 516.19kb -> 514.02kb (0.42%)
Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
* Added actual board flash info to homepage
* Missing define
* Bump up the TX/RX memory space even more
* Last attempt at correctness
* Updated system flash size to be a static int32_t only called once at start of web
---------
Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
* Started implementation of GamepadAuxState to store values that are outside of normal Gamepad button/analog functions, such as IMU (accelerometer, gyroscope) and rumble state.
* Added gyroscope values for future Wii Motion Plus implementation.
* Reduced additional PS sensor fields until necessary.
Renamed PS gyro_accel_misc to sensor_data.
Changed sensor fields to u16.
* Refactored Wii data handler & added Motion Plus support
* Implemented rumble, gyro, and accelerometer data structure usage if enabled
* Refactor how Motion Plus and standard Extensions are detected. Prioritize Motion Plus if both are available.
* Added missing report types and OUT report endpoint to PS4.
* Added UDraw Wii Tablet support to WiiExtension library
* Implemented touch counter for PS4 touchpad usage.
* Added "active" state to Aux sensors to be used when a sensor is enabled, but not actively sending data.
* Added sensor types for relative values
* Added A3 & A4 button bindings to keyboard host
Keyboard host now implements mouse bindings for left, middle, right buttons
Relative mouse movements stored in the GamepadAux mouse sensor for later usage
Added exclusion list for KeyboardMapper control to filter out unused entries
* Temporarily removed GamepadAuxState from gamepad.h to resolve conflict
* Removed blank space for resolving merge
* Reimplemented GamepadAuxState in gamepad.h
* Changed length checks on PS4 get reports to return max of request value and array size.
* Replaced GamepadRumbleState with GamepadAuxHaptics structures.
Implemented haptics control in PS4 and OGXbox modes.
* Fix indentation on PS4 descriptors. Comment out debug outputs.
* Added WiiExtension wrapper for new I2C interface
Fixed initial states for MotionPlus gyro
* Added PS4 accelerometer and gyrometer known range values
* DS3 additions
* Removed HID report repeating as this could cause incorrect report parsing to occur
* Removed old quirks mode PS3 descriptors in favor of DS3 specific ones.
This change would make PS3 mode specifically PS3, and standard HID/"DInput" should no longer use this mode. Still to do: better define and explain what each report blob is used for.
* Updated PS3/PS4 device constants to not conflict with HID defines.
Included state checking for Aux gyro and accel sensors.
* Remove USB report repeat sample code
* Added haptic enable state checks on most modes supporting it
* Clean up debug code for PS4 expansion
* Fix tabs for keyboard host mouse definitions
* Started cleaning up naming of PS3 report IDs for documentation.
Removed btaddr values for actual PS3 devices.
* Removed hard-coded data for BT device details (0xF2) in favor of a data struct.
Randomized BT addresses on start for 0xF2 and 0xF5 reports.
* Update all drivers to remove feature data parameter in process().
Added player ID & LED data to main Aux structure.
Set default values of zero on integer Aux values.
Deprecated Storage::*FeatureData methods in favor of Aux values.
* Updated DRV8833 to validate left/right motor pins and enable the Aux haptics if valid.
* Aligned forced player number to new Aux storage, but functionally still not working as expected.
* Updated XInput, PS3 & PS4 feature outputs to store LED & rumble status on processed gamepad.
* Added new speed settings and a custom blink timing mode to PlayerLEDs.
Added on/off blink timing to DS4 lightbar usage in RGB PLEDs.
* Added PS4 configuration switch between Console and Emulation modes
* Added PS4 ID mode help text and included option in PS5 mode.
* Removed XInput reference from Player LED as other modes now make use of it.
* Set active state to true when Wii gyro/accel sensors are being fed data