mirror of https://github.com/zeldaret/tp.git
151 lines
3.7 KiB
C
151 lines
3.7 KiB
C
#ifndef RVL_SDK_WUD_H
|
|
#define RVL_SDK_WUD_H
|
|
|
|
|
|
#include <revolution/sc.h>
|
|
#include <revolution/wpad/bte.h>
|
|
|
|
#include "types.h"
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define WUD_MAX_DEV_ENTRY_FOR_STD SC_MAX_DEV_ENTRY_FOR_STD
|
|
#define WUD_MAX_DEV_ENTRY_FOR_SMP SC_MAX_DEV_ENTRY_FOR_SMP
|
|
#define WUD_MAX_DEV_ENTRY SC_MAX_DEV_ENTRY
|
|
#define WUD_DEV_HANDLE_INVALID (-1)
|
|
#define WUD_ADDR_LEN BD_ADDR_LEN
|
|
|
|
// Forward declarations
|
|
typedef struct WUDDevInfo WUDDevInfo;
|
|
|
|
typedef enum {
|
|
WUD_LIB_STATUS_0,
|
|
WUD_LIB_STATUS_1,
|
|
WUD_LIB_STATUS_2,
|
|
WUD_LIB_STATUS_3,
|
|
WUD_LIB_STATUS_4,
|
|
WUD_LIB_STATUS_5,
|
|
} WUDLibStatus;
|
|
|
|
typedef enum {
|
|
WUD_CHAN0,
|
|
WUD_CHAN1,
|
|
WUD_CHAN2,
|
|
WUD_CHAN3,
|
|
|
|
WUD_MAX_CHANNELS,
|
|
WUD_CHAN_INVALID = -1
|
|
} WUDChannel;
|
|
|
|
typedef enum {
|
|
WUD_SYNC_TYPE_STANDARD,
|
|
WUD_SYNC_TYPE_SIMPLE,
|
|
} WUDSyncType;
|
|
|
|
typedef enum {
|
|
WUD_RESULT_SYNC_BUSY = -1,
|
|
WUD_RESULT_SYNC_WAITING,
|
|
WUD_RESULT_SYNC_DONE,
|
|
} WUDSyncResult;
|
|
|
|
typedef void* (*WUDAllocFunc)(u32 size);
|
|
typedef BOOL (*WUDFreeFunc)(void* pBlock);
|
|
|
|
typedef void (*WUDSyncDeviceCallback)(s32 result, s32 num);
|
|
typedef void (*WUDClearDeviceCallback)(s32 result);
|
|
|
|
typedef void (*WUDHidConnCallback)(u8, u8);
|
|
typedef void (*WUDHidRecvCallback)(UINT8 devHandle, UINT8* pReport, UINT16 len);
|
|
|
|
typedef struct WUDDevInfo {
|
|
SCDevInfo conf; // at 0x0
|
|
BD_ADDR devAddr; // at 0x40
|
|
LINK_KEY linkKey; // at 0x46
|
|
UINT8 devHandle; // at 0x56
|
|
UINT8 subclass; // at 0x57
|
|
UINT8 appID; // at 0x58
|
|
u8 status; // at 0x59
|
|
s8 UNK_0x5A; // at 0x5A
|
|
u8 sync_type; // at 0x5B
|
|
u8 UNK_0x5C; // at 0x5C
|
|
u8 UNK_0x5D[1];
|
|
tBTA_HH_ATTR_MASK hhAttrMask; // at 0x5E
|
|
} WUDDevInfo;
|
|
|
|
BOOL WUDInit(void);
|
|
BOOL WUDIsBusy(void);
|
|
void WUDRegisterAllocator(WUDAllocFunc pAllocFunc, WUDFreeFunc pFreeFunc);
|
|
u32 WUDGetAllocatedMemSize(void);
|
|
void WUDShutdown(void);
|
|
|
|
WUDLibStatus WUDGetStatus(void);
|
|
u8 WUDGetBufferStatus(void);
|
|
|
|
void WUDSetSniffMode(BD_ADDR addr, s32 interval);
|
|
|
|
// clang-format off
|
|
WUDSyncDeviceCallback
|
|
WUDSetSyncSimpleCallback(WUDSyncDeviceCallback pCallback);
|
|
|
|
WUDClearDeviceCallback
|
|
WUDSetClearDeviceCallback(WUDClearDeviceCallback pCallback);
|
|
// clang-format on
|
|
|
|
BOOL WUDStartSyncDevice(void);
|
|
BOOL WUDStartFastSyncSimple(void);
|
|
BOOL WUDStartSyncSimple(void);
|
|
BOOL WUDStopSyncSimple(void);
|
|
BOOL WUDCancelSyncDevice(void);
|
|
|
|
BOOL WUDStartClearDevice(void);
|
|
BOOL WUDSetDisableChannel(s8 afhChannel);
|
|
|
|
WUDHidRecvCallback WUDSetHidRecvCallback(WUDHidRecvCallback pCallback);
|
|
WUDHidConnCallback WUDSetHidConnCallback(WUDHidConnCallback pCallback);
|
|
|
|
void WUDSetVisibility(u8 disc, u8 conn);
|
|
u8 WUDGetConnectable(void);
|
|
|
|
void WUDiGetFirmwareVersion(void);
|
|
void WUDiInitSub(void);
|
|
|
|
void WUDiEnableStack(void);
|
|
void WUDiAutoSync(void);
|
|
void WUDiDeleteAllLinkKeys(void);
|
|
|
|
void WUDiRegisterDevice(BD_ADDR addr);
|
|
void WUDiRemoveDevice(BD_ADDR addr);
|
|
|
|
WUDDevInfo* WUDiGetDevInfo(BD_ADDR addr);
|
|
WUDDevInfo* WUDiGetDevInfoIndex(int idx);
|
|
WUDDevInfo* WUDiGetNewDevInfo(void);
|
|
void WUDiRemoveDevInfo(BD_ADDR addr);
|
|
void WUDiClearDevice(void);
|
|
|
|
u8 WUDiGetDevNumber(void);
|
|
u8 WUDiGetDevSmpNumber(void);
|
|
u8 WUDiGetConnNumber(void);
|
|
u8 WUDiGetLinkNum(void);
|
|
|
|
void WUDiMoveTopSmpDevInfoPtr(WUDDevInfo* pInfo);
|
|
void WUDiMoveBottomSmpDevInfoPtr(WUDDevInfo* pInfo);
|
|
WUDDevInfo* WUDiGetRemoveSmpDevice(void);
|
|
void WUDiMoveTopOfDisconnectedSmpDevice(WUDDevInfo* pInfo);
|
|
|
|
void WUDiMoveTopStdDevInfoPtr(WUDDevInfo* pInfo);
|
|
void WUDiMoveBottomStdDevInfoPtr(WUDDevInfo* pInfo);
|
|
WUDDevInfo* WUDiGetRemoveStdDevice(void);
|
|
void WUDiMoveTopOfDisconnectedStdDevice(WUDDevInfo* pInfo);
|
|
|
|
BD_ADDR_PTR _WUDGetDevAddr(UINT8 handle);
|
|
u16 _WUDGetQueuedSize(s8 dev_handle);
|
|
u16 _WUDGetNotAckedSize(s8 dev_handle);
|
|
u8 _WUDGetLinkNumber(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|