Files
vitasdk-odin/Bt/types.odin
T

287 lines
16 KiB
Odin

package bt
import "core:c"
SceBtErrorCode :: enum c.uint {
REG_NOT_READY = 0x802F0101,
REG_DELETE_NO_ENTRY = 0x802F0102,
REG_UPDATE_CANNOT_SAVE = 0x802F0103,
REG_SET_HID_DESC_BAD_ARG = 0x802F0105,
REG_SET_HID_DESC_NO_REG = 0x802F0106,
REG_GET_HID_DESC_NO_REG = 0x802F0107,
REG_GET_HID_DESC_TOO_SHORT = 0x802F0108,
REG_DELETE_CONNECTING = 0x802F0109,
REG_CANNOT_LOAD = 0x802F010A,
REG_CANNOT_OPEN = 0x802F010B,
REG_CANNOT_READ = 0x802F010C,
REG_CANNOT_WRITE = 0x802F010D,
INQUIRY_START_BUSY = 0x802F0201,
CONNECT_START_NO_REG = 0x802F0202,
CONNECT_START_NOT_CONNECTABLE = 0x802F0203,
CONNECT_START_BUSY = 0x802F0204,
DISCONNECT_START_NOT_CONNECTED = 0x802F0205,
PIN_INVALID_LENGTH = 0x802F0206,
USER_CONFIRM_NOT_CONNECTED = 0x802F0207,
SDP_OPEN_NO_L2C = 0x802F0208,
CONNECT_START_REG_FULL = 0x802F0209,
CONNECT_START_CONNECTED = 0x802F020A,
CONNECT_START_TOO_MANY = 0x802F020D,
CONNECT_START_DELETING = 0x802F020E,
AVDTP_OPEN_NO_L2C = 0x802F0501,
AVDTP_CLOSE_BAD_SERV = 0x802F0502,
AVDTP_CLOSE_BAD_STATE = 0x802F0503,
AVDTP_START_BAD_SERV = 0x802F0504,
AVDTP_START_BAD_STATE = 0x802F0505,
AVDTP_STOP_BAD_SERV = 0x802F0506,
AVDTP_STOP_BAD_STATE = 0x802F0507,
AVDTP_SEND_BAD_STATE = 0x802F0508,
AVDTP_RECONF_BAD_SERV = 0x802F0509,
AVDTP_RECONF_BAD_STATE = 0x802F050A,
AVCTP_OPEN_NO_L2C = 0x802F0601,
AVCTP_SEND_NO_L2C = 0x802F0603,
AVCTP_NOT_CONNECTED = 0x802F0604,
AVCTP_SEND_BUSY = 0x802F0605,
AVCTP_SEND_NO_PRESS = 0x802F0606,
AVCTP_SEND_NO_RELEASE = 0x802F0607,
AVCTP_READ_NO_VOLUME = 0x802F0608,
AVCTP_SEND_NOT_RUBY = 0x802F0609,
HID_OPEN_NO_L2C = 0x802F0901,
HID_CLOSE_NO_L2C = 0x802F0902,
HID_SEND_NO_L2C = 0x802F0903,
HID_NOT_CONNECTED = 0x802F0904,
HID_NO_CAP = 0x802F0905,
HID_INVALID_REQUEST_TYPE = 0x802F0906,
HID_INVALID_BUFFER_ADDRESS = 0x802F0907,
HID_INVALID_PROTOCOL = 0x802F0908,
HID_INVALID_IDLE = 0x802F0909,
HID_NOT_YET = 0x802F090C,
HID_INVALID_LENGTH = 0x802F090D,
HID_INVALID_REPORT_ID = 0x802F090E,
HID_OVERWRITE_REQ = 0x802F090F,
JUMBO_UNLOCK_NOT_OWNER = 0x802F0B01,
HCI_TX_OVERFLOW = 0x802F0B02,
ACL_TX_BUF_OVERFLOW = 0x802F0B03,
ACL_TX_CB_OVERFLOW = 0x802F0B04,
TIMER_CANCEL_BAD_ID = 0x802F0B05,
TIMER_CANCEL_NOT_INITIALIZED = 0x802F0B06,
TIMER_SET_NOT_INITIALIZED = 0x802F0B07,
TIMER_SET_NO_SPACE = 0x802F0B08,
COPYIN_FAILED = 0x802F0B09,
COPYOUT_FAILED = 0x802F0B0A,
GET_NAME_NO_DEVICE = 0x802F0C01,
CB_TOO_MANY = 0x802F0C02,
CB_NOT_REGISTERED = 0x802F0C03,
CB_OVERFLOW = 0x802F0C04,
AUDIO_START_NOT_CONNECTED = 0x802F0D01,
AUDIO_START_NO_CAP = 0x802F0D02,
AUDIO_STOP_NOT_CONNECTED = 0x802F0D03,
AUDIO_STOP_NO_CAP = 0x802F0D04,
AUDIO_SEND_NOT_CONNECTED = 0x802F0D05,
AUDIO_SEND_NOT_STARTED = 0x802F0D06,
AUDIO_SEND_INVALID_LENGTH = 0x802F0D07,
AUDIO_RECV_NOT_CONNECTED = 0x802F0D08,
AUDIO_RECV_NOT_STARTED = 0x802F0D09,
AUDIO_RECV_INVALID_LENGTH = 0x802F0D0A,
AUDIO_START_INVALID_SERV = 0x802F0D0B,
AUDIO_STOP_INVALID_SERV = 0x802F0D0C,
AUDIO_START_SERV_FAILED = 0x802F0D0D,
AUDIO_STOP_SERV_FAILED = 0x802F0D0E,
AUDIO_FREQ_NOT_CONNECTED = 0x802F0D0F,
AUDIO_SEND_NO_CP = 0x802F0D10,
AUDIO_SEND_BAD_TYPE = 0x802F0D11,
AUDIO_RECV_BAD_TYPE = 0x802F0D12,
AUDIO_COMBI_NOT_FOUND = 0x802F0D16,
AUDIO_SEND_NO_L2C = 0x802F0D17,
AUDIO_INTERNAL_1 = 0x802F0D18,
AUDIO_SEND_BUSY = 0x802F0D19,
AUDIO_RECV_BUSY = 0x802F0D1A,
AUDIO_SEND_NO_CAP = 0x802F0D1B,
AUDIO_SEND_SERV_FAILED = 0x802F0D1C,
AUDIO_RECV_NO_CAP = 0x802F0D1D,
AUDIO_RECV_SERV_FAILED = 0x802F0D1E,
HID_RECV_NOT_CONNECTED = 0x802F0E01,
HID_RECV_INVALID_LENGTH = 0x802F0E02,
AVRCP_TOO_LONG_TITLE = 0x802F1201,
AVRCP_INVALID_PLAY_STATUS = 0x802F1202,
CONF_NOT_READY = 0x802F1501,
CONF_INVALID_VALUE = 0x802F1502,
CONF_BT_INACTIVE = 0x802F1503,
CONF_TIMEOUT = 0x802F1504,
CONF_CARD_NOT_FOUND = 0x802F1505,
CONF_FUNCTION_NOT_FOUND = 0x802F1506,
CONF_CANT_ENABLE_FUNCTION = 0x802F1507,
CONF_CANT_DISABLE_FUNCTION = 0x802F1508,
CONF_REGISTER_SUBINTR_HANDLER = 0x802F1509,
CONF_RELEASE_SUBINTR_HANDLER = 0x802F150A,
CONF_ENABLE_SUBINTR = 0x802F150B,
CONF_DISABLE_SUBINTR = 0x802F150C,
CONF_ON_TIMEOUT = 0x802F150D,
CONF_OFF_TIMEOUT = 0x802F150E,
CONF_SUSPEND_TIMEOUT = 0x802F150F,
CONF_CANT_ENTER = 0x802F1520,
NOTIMP = 0x802F2001,
KPROC_CREATE = 0x802F2002,
SDIO_GET_FUNCTION = 0x802F2003,
SDIO_REGISTER_INTR_HANDLER = 0x802F2004,
SDIO_UNREGISTER_INTR_HANDLER = 0x802F2005,
SDIO_LOCK = 0x802F2006,
SDIO_UNLOCK = 0x802F2007,
SDIO_ENABLE_FUNCTION = 0x802F2008,
SDIO_DISABLE_FUNCTION = 0x802F2009,
SDIO_SET_BLOCK_LEN = 0x802F200A,
SDIO_SET_BUS_SPEED = 0x802F200B,
SDIO_READ_DIR = 0x802F200C,
SDIO_WRITE_DIR = 0x802F200D,
SDIO_READ_FIX = 0x802F200E,
SDIO_WRITE_FIX = 0x802F200F,
TSLEEP = 0x802F2010,
GET_DEBUG_INFO_INVALID_REQUEST = 0x802F2101,
SET_DEBUG_INFO_INVALID_REQUEST = 0x802F2102,
GET_DEBUG_INFO_INVALID_SIZE = 0x802F2103,
SET_DEBUG_INFO_INVALID_SIZE = 0x802F2104,
GET_DEBUG_INFO_INVALID_ARGUMENT = 0x802F2105,
SET_DEBUG_INFO_INVALID_ARGUMENT = 0x802F2106,
GET_DEBUG_INFO_INVALID_STATE = 0x802F2107,
SET_DEBUG_INFO_INVALID_STATE = 0x802F2108,
GET_DEBUG_INFO_NOT_CONNECTED = 0x802F2109,
SET_DEBUG_INFO_NOT_CONNECTED = 0x802F210A,
PIN_IS_LE = 0x802F2201,
CONNECT_START_IS_LE = 0x802F2202,
AVCTP_IS_LE = 0x802F2203,
HID_IS_LE = 0x802F2204,
AUDIO_START_IS_LE = 0x802F2205,
AUDIO_STOP_IS_LE = 0x802F2206,
AUDIO_SEND_IS_LE = 0x802F2207,
AUDIO_RECV_IS_LE = 0x802F2208,
AUDIO_FREQ_IS_LE = 0x802F2209,
ATT_BASE = 0x802F2300,
ATT_INVALID_HANDLE = 0x802F2301,
ATT_READ_NOT_PERMITTED = 0x802F2302,
ATT_WRITE_NOT_PERMITTED = 0x802F2303,
ATT_INVALID_PDU = 0x802F2304,
ATT_INSUFFICIENT_AUTHENTICATION = 0x802F2305,
ATT_REQUEST_NOT_SUPPORTED = 0x802F2306,
ATT_INVALID_OFFSET = 0x802F2307,
ATT_INSUFFICIENT_AUTHORIZATION = 0x802F2308,
ATT_PEPARE_QUEUE_FULL = 0x802F2309,
ATT_ATTRIBUTE_NOT_FOUND = 0x802F230A,
ATT_ATTRIBUTE_NOT_LONG = 0x802F230B,
ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE = 0x802F230C,
ATT_INVALID_ATTRIBUTE_VALUE_LENGTH = 0x802F230D,
ATT_UNLIKELY_ERROR = 0x802F230E,
ATT_INSUFFICIENT_ENCRYPTION = 0x802F230F,
ATT_UNSUPPORTED_GROUP_TYPE = 0x802F2310,
ATT_INSUFFICIENT_RESOURCES = 0x802F2311,
ATT_APPLICATION_ERROR_LO = 0x802F2380,
ATT_APPLICATION_ERROR_HI = 0x802F23FF,
GATT_INVALID_NO = 0x802F2401,
GATT_NOT_CONNECTED = 0x802F2402,
GATT_BUSY = 0x802F2403,
GATT_INVALID_HANDLE = 0x802F2404,
GATT_INVALID_FLAGS = 0x802F2405,
GATT_INVALID_SIZE = 0x802F2406,
GATT_NOT_LE = 0x802F2407,
GATT_TOO_BIG_RECORD = 0x802F2408,
GATT_NOT_YET = 0x802F2409,
GATT_DISCONNECT = 0x802F240A,
GATT_TSLEEP = 0x802F240B,
GATT_ENTER = 0x802F240C,
GATT_TOO_BIG_BUFFER = 0x802F240D,
SM_INVALID_KEY_LENGTH = 0x802F2501,
SM_NOT_DIGIT = 0x802F2502,
SM_NO_REQ = 0x802F2503,
SM_NOT_NEEDED_PIN = 0x802F2504,
SM_INVALID_CONFIRM_REPLY = 0x802F2505,
LE_SET_ADVERTISING_INVALID_REQ = 0x802F2601,
LE_SET_ADVERTISING_INVALID_LENGTH = 0x802F2602,
LE_SET_ADVERTISING_INVALID_INTERVAL_MIN = 0x802F2603,
LE_SET_ADVERTISING_INVALID_INTERVAL_MAX = 0x802F2604,
LE_SET_ADVERTISING_INVALID_OWN_ADDRESS_TYPE = 0x802F2605,
LE_SET_ADVERTISING_INVALID_DIRECT_ADDRESS_TYPE = 0x802F2606,
LE_SET_ADVERTISING_INVALID_DIRECT_ADDRESS = 0x802F2607,
LE_SET_SCAN_INVALID_REQ = 0x802F2701,
LE_SET_SCAN_INVALID_LENGTH = 0x802F2702,
LE_SET_SCAN_INVALID_INTERVAL = 0x802F2703,
LE_SET_SCAN_INVALID_WINDOW = 0x802F2704,
LE_SET_SCAN_INVALID_OWN_ADDRESS_TYPE = 0x802F2705,
LE_GET_ADVERTISING_NOT_FOUND = 0x802F2801,
LE_CREATE_CONNECTION_INVALID_SCAN_INTERVAL = 0x802F2901,
LE_CREATE_CONNECTION_INVALID_SCAN_WINDOW = 0x802F2902,
LE_CREATE_CONNECTION_INVALID_PEER_ADDRESS = 0x802F2903,
LE_CREATE_CONNECTION_INVALID_OWN_ADDRESS_TYPE = 0x802F2904,
LE_CREATE_CONNECTION_INVALID_INTERVAL_MIN = 0x802F2905,
LE_CREATE_CONNECTION_INVALID_INTERVAL_MAX = 0x802F2906,
LE_CREATE_CONNECTION_INVALID_LATENCY = 0x802F2907,
LE_CREATE_CONNECTION_INVALID_TIMEOUT = 0x802F2908,
LE_CREATE_CONNECTION_REG_FULL = 0x802F2909,
LE_CREATE_CONNECTION_REG_ERROR = 0x802F290A,
LE_CREATE_CONNECTION_CONNECTED = 0x802F290B,
LE_CREATE_CONNECTION_FULL = 0x802F290C,
LE_CREATE_CONNECTION_BUSY = 0x802F290D,
ATT_READ_INVALID_NO = 0x802F2A01,
ATT_READ_INVALID_LENGTH = 0x802F2A02,
ATT_READ_INVALID_INTERNAL = 0x802F2A03,
ATT_WRITE_INVALID_NO = 0x802F2A04,
ATT_WRITE_INVALID_LENGTH = 0x802F2A05,
ATT_WRITE_INVALID_INTERNAL = 0x802F2A06,
ATT_NOT_YET = 0x802F2A07,
LE_NOT_SUPPORTED = 0x802F2B01,
PAIRING_OOB_TIMEOUT = 0x802F3101,
PAIRING_OOB_FULL = 0x802F3102,
PAIRING_OOB_CAN_NOT_DISCONNECT = 0x802F3103,
PAIRING_OOB_INTERNAL_ERROR = 0x802F3104,
NOT_READY = 0x802F3201,
GET_JACK_STATUS_NOT_CONNECTED = 0x802F3301,
TOO_MANY_CONNECTION = 0x802F3401,
TOO_MANY_HID = 0x802F3402,
NOT_SUPPORTED_DEVICE = 0x802F3403,
JEDI_VOLUME_GAIN_NOT_CONNECTED = 0x802F3501,
JEDI_SNIFF_NOT_CONNECTED = 0x802F3601,
JEDI_SNIFF_NOT_JEDI = 0x802F3602
}
SceBtRegisteredInfo :: struct {
mac: [6]c.uchar,
unk0: c.ushort,
bt_class: c.uint,
unk1: c.uint,
unk2: c.uint,
vid: c.ushort,
pid: c.ushort,
unk3: c.uint,
unk4: c.uint,
name: [128]c.char,
unk5: [0x60]c.uchar,
}
#assert(size_of(SceBtRegisteredInfo) == 0x100)
SceBtEvent :: struct {
using _: struct #raw_union {
data: [0x10]c.uchar,
using _: struct {
id: c.uchar,
unk1: c.uchar,
unk2: c.ushort,
unk3: c.uint,
mac0: c.uint,
mac1: c.uint,
},
},
}
#assert(size_of(SceBtEvent) == 0x10)
SceBtCallback :: #type ^proc "c" (r0: c.int, r1: c.int, r2: c.int, r3: c.int)
SceBtHidRequest :: struct #packed {
unk00: c.uint32_t,
unk04: c.uint32_t,
type: c.uint8_t, //!< 0 = read?, 1 = write?, 2 = feature?, 3 = ?
unk09: c.uint8_t,
unk0A: c.uint8_t,
unk0B: c.uint8_t,
buffer: rawptr,
length: c.uint32_t,
next: ^SceBtHidRequest,
}