DSP: Implement Pipe 2
Pipe 2 is a DSP pipe that is used to initialize both the DSP hardware (the application signals to the DSP to initialize) and the application (the DSP provides the memory location of structures in the shared memory region).
This commit is contained in:
parent
2d40891b45
commit
004991d79e
4 changed files with 346 additions and 78 deletions
|
@ -4,6 +4,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <cstddef>
|
||||
#include <vector>
|
||||
|
||||
#include "common/common_types.h"
|
||||
|
@ -14,25 +15,43 @@ namespace HLE {
|
|||
/// Reset the pipes by setting pipe positions back to the beginning.
|
||||
void ResetPipes();
|
||||
|
||||
enum class DspPipe {
|
||||
Debug = 0,
|
||||
Dma = 1,
|
||||
Audio = 2,
|
||||
Binary = 3,
|
||||
DspPipe_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
* Read a DSP pipe.
|
||||
* Pipe IDs:
|
||||
* pipe_number = 0: Debug
|
||||
* pipe_number = 1: P-DMA
|
||||
* pipe_number = 2: Audio
|
||||
* pipe_number = 3: Binary
|
||||
* @param pipe_number The Pipe ID
|
||||
* @param length How much data to request.
|
||||
* @return The data read from the pipe. The size of this vector can be less than the length requested.
|
||||
*/
|
||||
std::vector<u8> PipeRead(u32 pipe_number, u32 length);
|
||||
std::vector<u8> PipeRead(DspPipe pipe_number, u32 length);
|
||||
|
||||
/**
|
||||
* How much data is left in pipe
|
||||
* @param pipe_number The Pipe ID
|
||||
* @return The amount of data remaning in the pipe. This is the maximum length PipeRead will return.
|
||||
*/
|
||||
size_t GetPipeReadableSize(DspPipe pipe_number);
|
||||
|
||||
/**
|
||||
* Write to a DSP pipe.
|
||||
* @param pipe_number The Pipe ID
|
||||
* @param buffer The data to write to the pipe.
|
||||
*/
|
||||
void PipeWrite(u32 pipe_number, const std::vector<u8>& buffer);
|
||||
void PipeWrite(DspPipe pipe_number, const std::vector<u8>& buffer);
|
||||
|
||||
enum class DspState {
|
||||
Off,
|
||||
On,
|
||||
Sleeping
|
||||
};
|
||||
/// Get the state of the DSP
|
||||
DspState GetDspState();
|
||||
|
||||
} // namespace HLE
|
||||
} // namespace DSP
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue