NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
WUD.h
1#ifndef RVL_SDK_WUD_H
2#define RVL_SDK_WUD_H
3#include <types.h>
4
5#include <revolution/BTE.h>
6#include <revolution/SC.h>
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11#define WUD_MAX_DEV_ENTRY_FOR_STD SC_MAX_DEV_ENTRY_FOR_STD
12#define WUD_MAX_DEV_ENTRY_FOR_SMP SC_MAX_DEV_ENTRY_FOR_SMP
13#define WUD_MAX_DEV_ENTRY SC_MAX_DEV_ENTRY
14#define WUD_DEV_HANDLE_INVALID (-1)
15
16// Forward declarations
17typedef struct WUDDevInfo WUDDevInfo;
18
19typedef enum {
20 WUD_LIB_STATUS_0,
21 WUD_LIB_STATUS_1,
22 WUD_LIB_STATUS_2,
23 WUD_LIB_STATUS_3,
24 WUD_LIB_STATUS_4,
25 WUD_LIB_STATUS_5,
26} WUDLibStatus;
27
28typedef enum {
29 WUD_CHAN0,
30 WUD_CHAN1,
31 WUD_CHAN2,
32 WUD_CHAN3,
33
34 WUD_MAX_CHANNELS,
35 WUD_CHAN_INVALID = -1
36} WUDChannel;
37
38typedef enum {
39 WUD_SYNC_TYPE_STANDARD,
40 WUD_SYNC_TYPE_SIMPLE,
41} WUDSyncType;
42
43typedef void* (*WUDAllocFunc)(u32 size);
44typedef BOOL (*WUDFreeFunc)(void* pBlock);
45
46typedef void (*WUDSyncDeviceCallback)(s32 result, s32 num);
47typedef void (*WUDClearDeviceCallback)(s32 result);
48
49typedef void (*WUDHidConnCallback)(UINT8 devHandle, u8 open);
50typedef void (*WUDHidRecvCallback)(UINT8 devHandle, UINT8* pReport, UINT16 len);
51
52typedef struct WUDDevInfo {
53 SCDevInfo conf; // at 0x0
54 BD_ADDR devAddr; // at 0x40
55 LINK_KEY linkKey; // at 0x46
56 UINT8 devHandle; // at 0x56
57 UINT8 subclass; // at 0x57
58 UINT8 appID; // at 0x58
59 u8 status; // at 0x59
60 s8 UNK_0x5A; // at 0x5A
61 u8 UNK_0x5B; // at 0x5B
62 u8 UNK_0x5C; // at 0x5C
63 u8 UNK_0x5D[1];
64 tBTA_HH_ATTR_MASK hhAttrMask; // at 0x5E
66
67BOOL WUDInit(void);
68BOOL WUDIsBusy(void);
69void WUDRegisterAllocator(WUDAllocFunc pAllocFunc, WUDFreeFunc pFreeFunc);
70u32 WUDGetAllocatedMemSize(void);
71void WUDShutdown(void);
72
73WUDLibStatus WUDGetStatus(void);
74u8 WUDGetBufferStatus(void);
75
76void WUDSetSniffMode(BD_ADDR addr, s32 interval);
77
78// clang-format off
79WUDSyncDeviceCallback
80WUDSetSyncSimpleCallback(WUDSyncDeviceCallback pCallback);
81
82WUDClearDeviceCallback
83WUDSetClearDeviceCallback(WUDClearDeviceCallback pCallback);
84// clang-format on
85
86BOOL WUDStartSyncDevice(void);
87BOOL WUDStartFastSyncSimple(void);
88BOOL WUDStartSyncSimple(void);
89BOOL WUDStopSyncSimple(void);
90
91BOOL WUDStartClearDevice(void);
92BOOL WUDSetDisableChannel(s8 afhChannel);
93
94WUDHidRecvCallback WUDSetHidRecvCallback(WUDHidRecvCallback pCallback);
95WUDHidConnCallback WUDSetHidConnCallback(WUDHidConnCallback pCallback);
96
97void WUDSetVisibility(u8 disc, u8 conn);
98u8 WUDGetConnectable(void);
99
100void WUDiGetFirmwareVersion(void);
101void WUDiInitSub(void);
102
103void WUDiEnableStack(void);
104void WUDiAutoSync(void);
105void WUDiDeleteAllLinkKeys(void);
106
107void WUDiRegisterDevice(BD_ADDR addr);
108void WUDiRemoveDevice(BD_ADDR addr);
109
110WUDDevInfo* WUDiGetDevInfo(BD_ADDR addr);
111WUDDevInfo* WUDiGetDevInfoIndex(int idx);
112WUDDevInfo* WUDiGetNewDevInfo(void);
113void WUDiRemoveDevInfo(BD_ADDR addr);
114void WUDiClearDevice(void);
115
116u8 WUDiGetDevNumber(void);
117u8 WUDiGetDevSmpNumber(void);
118u8 WUDiGetConnNumber(void);
119u8 WUDiGetLinkNum(void);
120
121void WUDiMoveTopSmpDevInfoPtr(WUDDevInfo* pInfo);
122void WUDiMoveBottomSmpDevInfoPtr(WUDDevInfo* pInfo);
123WUDDevInfo* WUDiGetRemoveSmpDevice(void);
124void WUDiMoveTopOfDisconnectedSmpDevice(WUDDevInfo* pInfo);
125
126void WUDiMoveTopStdDevInfoPtr(WUDDevInfo* pInfo);
127void WUDiMoveBottomStdDevInfoPtr(WUDDevInfo* pInfo);
128WUDDevInfo* WUDiGetRemoveStdDevice(void);
129void WUDiMoveTopOfDisconnectedStdDevice(WUDDevInfo* pInfo);
130
131BD_ADDR_PTR _WUDGetDevAddr(UINT8 handle);
132u16 _WUDGetQueuedSize(s8 handle);
133u16 _WUDGetNotAckedSize(s8 handle);
134u8 _WUDGetLinkNumber(void);
135
136#ifdef __cplusplus
137}
138#endif
139#endif