1#ifndef RVL_SDK_WUD_INTERNAL_H
2#define RVL_SDK_WUD_INTERNAL_H
6#include <revolution/WUD/WUD.h>
8#include <revolution/BTE.h>
9#include <revolution/OS.h>
10#include <revolution/SC.h>
15#define WUD_BDCMP(LHS, RHS) memcmp(LHS, RHS, BD_ADDR_LEN)
16#define WUD_BDCPY(DST, SRC) memcpy(DST, SRC, BD_ADDR_LEN)
19#define WUD_DEV_NAME_IS(NAME, VALUE) \
20 (memcmp(NAME, VALUE, sizeof(VALUE) - 1) == 0)
22#define WUD_DEV_NAME_IS_CNT(NAME) \
23 WUD_DEV_NAME_IS(NAME, "Nintendo RVL-CNT")
25#define WUD_DEV_NAME_IS_CNT_01(NAME) \
26 WUD_DEV_NAME_IS(NAME, "Nintendo RVL-CNT-01")
29typedef enum { WUD_STATE_START = 0, WUD_STATE_ERROR = 255 } WUDState;
32 WUD_STATE_SYNC_PREPARE_SEARCH = 1,
33 WUD_STATE_SYNC_START_SEARCH = 2,
34 WUD_STATE_SYNC_WAIT_FOR_SEARCH_RESULT = 3,
35 WUD_STATE_SYNC_CHECK_SEARCH_RESULT = 4,
36 WUD_STATE_SYNC_IS_EXISTED_DEVICE = 5,
38 WUD_STATE_SYNC_STORED_LINK_KEY_TO_EEPROM = 7,
39 WUD_STATE_SYNC_WAIT_FOR_STORING = 8,
40 WUD_STATE_SYNC_WAIT_FOR_READING = 10,
41 WUD_STATE_SYNC_11 = 11,
42 WUD_STATE_SYNC_12 = 12,
43 WUD_STATE_SYNC_13 = 13,
44 WUD_STATE_SYNC_DONE = 14,
45 WUD_STATE_SYNC_TRY_CONNECT = 15,
46 WUD_STATE_SYNC_PREPARE_FOR_EXISTED_DEVICE = 16,
47 WUD_STATE_SYNC_PREPARE_FOR_UNKNOWN_DEVICE = 17,
48 WUD_STATE_SYNC_REGISTER_DEVICE = 18,
49 WUD_STATE_SYNC_VIRGIN_SIMPLE = 19,
50 WUD_STATE_SYNC_VIRGIN_STANDARD = 20,
51 WUD_STATE_SYNC_CHANGE_SIMPLE_TO_STANDARD = 21,
52 WUD_STATE_SYNC_STORED_DEV_INFO_TO_NAND = 22,
53 WUD_STATE_SYNC_COMPLETE = 23,
54 WUD_STATE_SYNC_WAIT_FOR_INCOMING = 24,
55 WUD_STATE_SYNC_SC_FLUSH = 25,
56 WUD_STATE_SYNC_CANCEL_SEARCH = 26,
57 WUD_STATE_SYNC_WAIT_FOR_START_SEARCH = 29,
61 WUD_RESULT_SYNC_BUSY = -1,
62 WUD_RESULT_SYNC_WAITING,
67 WUD_STATE_DELETE_DISALLOW_INCOMING = 1,
68 WUD_STATE_DELETE_DISCONNECT_ALL = 2,
69 WUD_STATE_DELETE_CLEANUP_DATABASE = 3,
70 WUD_STATE_DELETE_CLEANUP_SETTING = 5,
71 WUD_STATE_DELETE_6 = 6,
72 WUD_STATE_DELETE_7 = 7,
73 WUD_STATE_DELETE_DONE = 8
77 WUD_RESULT_DELETE_BUSY = -1,
78 WUD_RESULT_DELETE_WAITING,
79 WUD_RESULT_DELETE_COMPLETE,
83 WUD_STATE_LINK_KEY_READING = 1,
84 WUD_STATE_LINK_KEY_WRITING = 2,
85 WUD_STATE_LINK_KEY_DELETING = 3,
89 WUD_STATE_STACK_GET_STORED_LINK_KEY = 1,
90 WUD_STATE_STACK_CHECK_DEVICE_INFO = 2,
91 WUD_STATE_STACK_DONE = 3,
92 WUD_STATE_STACK_INITIALIZED = 4
96 WUD_STATE_INIT_WAIT_FOR_INITIALIZATION = 1,
97 WUD_STATE_INIT_GET_DEV_INFO = 2,
98 WUD_STATE_INIT_DONE = 3,
99 WUD_STATE_INIT_INITIALIZED = 4
103 WUD_STATE_SHUTDOWN_STORE_SETTINGS = 1,
104 WUD_STATE_SHUTDOWN_FLUSH_SETTINGS = 2,
105 WUD_STATE_SHUTDOWN_DONE = 3
109 WUD_VSE_INITIATE_PAIRING = 8,
110 WUD_VSE_DELETE_ALL_KEYS,
111 WUD_VSE_SI_PORT_STATUS,
112 WUD_VSE_WATCH_DOG_RESET_HW = 16,
113} WUDVendorSpecificEvent;
125 tBTA_SERVICE_MASK services;
136#define WUD_PATCH_BUFFER_SIZE 0xFF
137#define WUD_MAX_PATCHES (WUD_PATCH_BUFFER_SIZE / (s32)sizeof(WUDPatchCmd))
140 WUDSyncDeviceCallback syncStdCB;
141 WUDSyncDeviceCallback syncSmpCB;
142 WUDClearDeviceCallback clearDevCB;
162 WUDDevInfo stdDevs[WUD_MAX_DEV_ENTRY_FOR_STD];
163 WUDDevInfo smpDevs[WUD_MAX_DEV_ENTRY_FOR_SMP];
176 WUDHidRecvCallback hidRecvCB;
177 WUDHidConnCallback hidConnCB;
179 WUDAllocFunc allocFunc;
180 WUDFreeFunc freeFunc;
202extern BD_ADDR_PTR _dev_handle_to_bda[WUD_MAX_DEV_ENTRY];
203extern u16 _dev_handle_queue_size[WUD_MAX_DEV_ENTRY];
204extern u16 _dev_handle_notack_num[WUD_MAX_DEV_ENTRY];