mirror of
https://github.com/zeldaret/ss
synced 2026-05-25 23:35:13 -04:00
26af4db82d
* update from dtk-template and start work towards using clangd * include <a> -> "a" * Update build.yml * remove/add non-trivial class in union warning
109 lines
3.1 KiB
C
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
|