[IR] Implement shmem header

This commit is contained in:
wheremyfoodat 2023-07-13 14:24:37 +03:00
parent be801e544d
commit 03ae0d02d8
2 changed files with 71 additions and 1 deletions
include/services

View file

@ -24,6 +24,25 @@ class IRUserService {
void requireConnection(u32 messagePointer);
std::optional<Handle> connectionStatusEvent = 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) {}