Files
ss/include/rvl/WPAD/WUD.h
T
Elijah Thomas dc221b4795 Misc Egg (#37)
* EGG: Archive, DvdFile, DvdRipper

* start eggStream

* FrmHeap and AssertHeap OK

* progress on EggController

* port in WPAD stuff

* update WPAD/WUD/KPAD/SC symbols

* eggController OK

* bytematch more CoreController virtual funcs

* eggDecomp/eggStreamDecomp Ok

* eggDvdRipper OK

* EGG gfx splits

* Finished Splitting EGG

* create egg Files

* eggDecomp.h -> eggStreamDecomp.h

* Revert some format changes
2024-10-01 20:24:25 -04:00

109 lines
3.1 KiB
C

#ifndef RVL_SDK_WPAD_WUD_H
#define RVL_SDK_WPAD_WUD_H
#include <common.h>
// TODO: Fix when possible
#include "context_bte.h"
#define WUD_MAX_DEV_ENTRY_FOR_STD 10 // name known from asserts
#define WUD_MAX_DEV_ENTRY_FOR_SMP 6 // name known from asserts
#define WUD_MAX_DEV_ENTRY 16 // name known from asserts
#ifdef __cplusplus
extern "C" {
#endif
typedef s8 WUDDevHandle;
#define WUD_DEV_HANDLE_INVALID (-1)
typedef s32 WUDChannel;
enum WUDChannel_et {
WUD_CHAN0,
WUD_CHAN1,
WUD_CHAN2,
WUD_CHAN3,
WUD_MAX_CHANNELS,
WUD_CHAN_INVALID = -1
};
typedef s32 WUDLibStatus;
enum WUDLibStatus_et {
WUD_LIB_STATUS_0,
WUD_LIB_STATUS_1,
WUD_LIB_STATUS_2,
WUD_LIB_STATUS_3,
WUD_LIB_STATUS_4,
};
typedef u8 WUDSyncType;
enum WUDSyncType_et {
WUD_SYNC_TYPE_STANDARD,
WUD_SYNC_TYPE_SIMPLE,
};
typedef void *WUDAllocFunc(size_t size);
typedef int WUDFreeFunc(void *ptr); // signature from petari. not sure what the int is, though
typedef void WUDSyncDeviceCallback(s32 result, s32 num); // what is result?
typedef void WUDClearDeviceCallback(signed);
typedef struct WUDDevInfo WUDDevInfo;
typedef void WUDHidConnectCallback(WUDDevInfo *devInfo, u8 isOpenEvent);
typedef void WUDHidReceiveCallback(UINT8 dev_handle, UINT8 *p_rpt, UINT16 len);
struct WUDDevInfo {
struct small_dev_info small; // size 0x40, offset 0x00
BD_ADDR devAddr; // size 0x06, offset 0x40
LINK_KEY linkKey; // size 0x10, offset 0x46
UINT8 devHandle; // size 0x01, offset 0x56
UINT8 subclass; // size 0x01, offset 0x57
UINT8 appID; // size 0x01, offset 0x58
u8 at_0x59; // size 0x01, offset 0x59
char signed at_0x5a; // size 0x01, offset 0x5a /* unknown */
u8 at_0x5b; // size 0x01, offset 0x5b
u8 at_0x5c; // size 0x01, offset 0x5c
byte_t unk_0x5d[1]; // padding?
tBTA_HH_ATTR_MASK hhAttrMask; // size 0x02, offset 0x5e
}; // size 0x60
/*******************************************************************************
* functions
*/
BOOL WUDIsLinkedWBC(void);
BOOL WUDInit(void);
void WUDRegisterAllocator(WUDAllocFunc *alloc, WUDFreeFunc *free);
void WUDShutdown(BOOL saveSimpleDevs);
WUDLibStatus WUDGetStatus(void);
u8 WUDGetBufferStatus(void);
void WUDSetSniffMode(BD_ADDR addr, int interval);
WUDSyncDeviceCallback *WUDSetSyncSimpleCallback(WUDSyncDeviceCallback *cb);
BOOL WUDStartSyncDevice(void);
BOOL WUDStartFastSyncSimple(void);
BOOL WUDCancelSyncDevice(void);
BOOL WUDStopSyncSimple(void);
BOOL WUDStartClearDevice(void);
BOOL WUDSetDisableChannel(s8 afhChannel);
WUDHidConnectCallback *WUDSetHidConnCallback(WUDHidConnectCallback *hidConn);
WUDHidReceiveCallback *WUDSetHidRecvCallback(WUDHidReceiveCallback *hidRecv);
void WUDSetVisibility(u8 discoverable, u8 connectable);
u8 WUDGetConnectable(void);
BOOL WUDIsBusy(void);
void WUDSetDeviceHistory(WUDChannel chan, BD_ADDR addr);
BOOL WUDIsLatestDevice(WUDChannel chan, BD_ADDR addr);
void WUDUpdateSCSetting(void);
#ifdef __cplusplus
}
#endif
#endif // RVL_SDK_WPAD_WUD_H