mirror of
https://git.planet-casio.com/Lephenixnoir/gint.git
synced 2025-01-03 23:43:36 +01:00
a547235f8f
This changes fixes the way gint uses the FIFO controllers D0F and D1F to access the FIFO. It previously used D0F in the main thread and D1F during interrupt handling, but this is incorrect for several reasons, mainly the possible change of controllers between a write and a commit, and numerous instances of two FIFOs managing the same pipe caused by the constant switching. gint now treats FIFO controllers as resources allocated to pipes for the duration of a commit-terminated sequence of writes. The same controller is used for a single pipe in both normal and interrupt modes, and released when the pipe is committed. If no controller is available, asynchronous writes fail and synchronous ones wait. The fxlink API is also added with a small amount of functions, namely to transfer screenshots and raw text. Currently these are synchronous and do not use the DMA, this will be improved later. Finally: * Removed pipe logic from src/usb/setup.c, instead letting pipes.c handle the special case of the DCP (which might be regularized later) * Removed the usb_pipe_mode_{read,write} functions as they're actually about FIFo controllers and it's not clear yet how a pipe with both read and write should be handled. This is left for the future. * Clarified end-of-sequence semantics after a successful commit. |
||
---|---|---|
.. | ||
gint |