Merge pull request from wheremyfoodat/ir

Merging despite it still being partially broken because I don't want this to be isolated in a random branch
This commit is contained in:
wheremyfoodat 2023-07-24 01:11:46 +03:00 committed by GitHub
commit 4a24a331da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 119 additions and 2 deletions
include/services

View file

@ -11,6 +11,10 @@
class Kernel;
class IRUserService {
enum class DeviceID : u8 {
CirclePadPro = 1,
};
Handle handle = KernelHandles::IR_USER;
Memory& mem;
Kernel& kernel;
@ -20,10 +24,35 @@ class IRUserService {
void disconnect(u32 messagePointer);
void finalizeIrnop(u32 messagePointer);
void getConnectionStatusEvent(u32 messagePointer);
void getReceiveEvent(u32 messagePointer);
void initializeIrnopShared(u32 messagePointer);
void requireConnection(u32 messagePointer);
void sendIrnop(u32 messagePointer);
std::optional<Handle> connectionStatusEvent = std::nullopt;
using IREvent = std::optional<Handle>;
IREvent connectionStatusEvent = std::nullopt;
IREvent receiveEvent = std::nullopt;
std::optional<MemoryBlock> sharedMemory = std::nullopt;
bool connectedDevice = false;
// Header of the IR shared memory containing various bits of info
// https://www.3dbrew.org/wiki/IRUSER_Shared_Memory
struct SharedMemoryStatus {
u32 latestReceiveError;
u32 latestSharedError;
u8 connectionStatus;
u8 connectionAttemptStatus;
u8 connectionRole;
u8 machineID;
u8 isConnected;
u8 networkID;
u8 isInitialized; // https://github.com/citra-emu/citra/blob/c10ffda91feb3476a861c47fb38641c1007b9d33/src/core/hle/service/ir/ir_user.cpp#L41
u8 unk1;
};
static_assert(sizeof(SharedMemoryStatus) == 16);
public:
IRUserService(Memory& mem, Kernel& kernel) : mem(mem), kernel(kernel) {}