P3IO and EXTIO drivers, ddrio-p3io implementation #255

Merged
icex2 merged 20 commits from p3iodrv into master 2023-06-25 14:24:08 +03:00
20 Commits
Author SHA1 Message Date
icex2 6cd02fb5c8 doc: Update documentation for various tools and ddrio added 2023-06-11 19:49:26 +02:00
icex2 4edcb36205 chore(module.mk): Add various ddr related IO tools 2023-06-11 19:49:26 +02:00
icex2 b2b93b21df feat(ddriotest): Add driotest tool to test ddrio API implementations 2023-06-11 19:49:26 +02:00
icex2 e20f450f0c doc(dev/journal): Add notes when working on the P3IO driver 2023-06-11 19:49:26 +02:00
icex2 c4b4ef685a feat(ddrio-p3io): Add ddrio API implementation for DDR P3IO
Also includes EXTIO. Run a SD style cabinet with bemanitools
ddrio API.
2023-06-11 19:49:24 +02:00
icex2 93f564d958 feat(p3io-ddr-tool): CLI tool to test and debug a real DDR P3IO
Extensive tool with subcommands to trigger the various
P3IO commands and run the P3IO + EXTIO DDR hardware
combo with a hardware test menu.
2023-06-11 19:49:00 +02:00
icex2 1de4da49e9 chore(module.mk): Add extio related sub-projects 2023-06-11 19:49:00 +02:00
icex2 52ef70fe1d feat(extiotest): Add testing tool for real EXTIO devices
A small but helpful tool to run a quick functional test
of a real EXTIO device connected to the target machine.
2023-06-11 19:49:00 +02:00
icex2 9f8a0dae3a feat(extiodrv): Add (DDR) EXTIO driver
Initial version that supports the most important
features to operate a DDR SD cabinet with all
inputs and outputs working.

Note that the individual sensor cycling modes are
currently broken. The driver will always set the
sensor read mode to all for now.
2023-06-11 19:49:00 +02:00
icex2 5ed972c16c feat(extio): Add EXTIO command data structures
Reverse engineered from a real EXTIO device, open-io
project as further reference
2023-06-11 19:49:00 +02:00
icex2 166f1f183a feat(p3iodrv): Add DDR compatible P3IO driver
Initial version that supports the most important
features to operate all inputs and outputs of a
DDR SD cabinet.
2023-06-11 19:48:56 +02:00
icex2 bb62d5241d feat(p3io/ddr): Add data structures for DDR P3IO data
Reverse engineered using a real P3IO DDR IO board and
the DDR 16 game binary for additional reference
2023-06-11 17:36:25 +02:00
icex2 367c9ca0d3 refactor(unicorntail): Adjust to p3io command structure changes 2023-06-11 17:36:25 +02:00
icex2 d52a7e0993 refactor(p3ioemu/emu): Adjust to command structure changes
Various structures were improved, some slightly changed
even. Behavior/functionality expected to be identical.
2023-06-11 17:36:25 +02:00
icex2 0013efa31a refactor(p3ioemu/uart): Adjust to command structure changes 2023-06-11 17:36:25 +02:00
icex2 93752f66a3 refactor(p3io/cmd): Add and improve p3io command helper functions
With the overhaul of commands, some helpers needed tweaks while
new ones were added to abstract p3io command details with a
common interface, e.g. dealing with the command length field.
2023-06-11 17:36:25 +02:00
icex2 b12d6e6b00 feat(p3io/cmd): Overhaul based on real P3IO DDR hardware tests
Using a real DDR P3IO (Dragon PCB), the overall P3IO command
structures improved significantly. Added further notes about
unknown/unclear commands that were not derivable from the
DDR 18 game binary either.

Note that this module is also used by jubeat to some extend.
The initial design apparently assumed a greater overlap in
commands. This now seems less likely as many commands appear
to be DDR specific.

Refactoring/splitting this is a major effort that is not being
addressed here.
2023-06-11 17:36:25 +02:00
icex2 a3f3599cf2 refactor(p3io/frame): Lift magic numbers to macro
Aligns the code with other ACIO code where the
init and escape chars have proper macros to
improve readability
2023-06-11 17:36:25 +02:00
icex2 b803084cc8 feat(util/iobuf): Improve log output
Output the full buffer and the buffer up to the
currently set position. Makes debugging a lot
easier if you know the position set is ok to
only look at the output up to there.

Otherwise, having the full view is also important
to check if data got truncated or checking for
odd looking "garbage" data.
2023-06-11 17:36:22 +02:00
icex2 178d4afec8 feat(util/log): Expose proper log level definition with enum
Internally, this was already used but it lacked a clean
public interface to set different log levels from the outside.

Useful for various command line tooling to implement verbosity
levels, e.g. -v, -vv, -vvv
2023-06-11 16:47:13 +02:00