mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-20 20:22:38 +02:00
btdrv: complete definition of BtdrvBleAdvertisePacketData struct and add supporting enums
This commit is contained in:
parent
0ae0792770
commit
60bf943ec1
@ -193,6 +193,37 @@ typedef enum {
|
|||||||
BtdrvGattAuthReqType_SignedMitm = 4,
|
BtdrvGattAuthReqType_SignedMitm = 4,
|
||||||
} BtdrvGattAuthReqType;
|
} BtdrvGattAuthReqType;
|
||||||
|
|
||||||
|
/// BtdrvBleAdBit
|
||||||
|
typedef enum {
|
||||||
|
BtdrvBleAdBit_DeviceName = BIT(0),
|
||||||
|
BtdrvBleAdBit_Flags = BIT(1),
|
||||||
|
BtdrvBleAdBit_Manufacturer = BIT(2),
|
||||||
|
BtdrvBleAdBit_TxPower = BIT(3),
|
||||||
|
BtdrvBleAdBit_Service32 = BIT(4),
|
||||||
|
BtdrvBleAdBit_IntRange = BIT(5),
|
||||||
|
BtdrvBleAdBit_Service = BIT(6),
|
||||||
|
BtdrvBleAdBit_ServiceSol = BIT(7),
|
||||||
|
BtdrvBleAdBit_ServiceData = BIT(8),
|
||||||
|
BtdrvBleAdBit_SignData = BIT(9),
|
||||||
|
BtdrvBleAdBit_Service128Sol = BIT(10),
|
||||||
|
BtdrvBleAdBit_Appearance = BIT(11),
|
||||||
|
BtdrvBleAdBit_PublicAddress = BIT(12),
|
||||||
|
BtdrvBleAdBit_RandomAddress = BIT(13),
|
||||||
|
BtdrvBleAdBit_Service32Sol = BIT(14),
|
||||||
|
BtdrvBleAdBit_Proprietary = BIT(15),
|
||||||
|
BtdrvBleAdBit_Service128 = BIT(16),
|
||||||
|
} BtdrvBleAdBit;
|
||||||
|
|
||||||
|
/// BtdrvBleAdFlag
|
||||||
|
typedef enum {
|
||||||
|
BtdrvBleAdFlag_None = 0,
|
||||||
|
BtdrvBleAdFlag_LimitedDiscovery = BIT(0),
|
||||||
|
BtdrvBleAdFlag_GeneralDiscovery = BIT(1),
|
||||||
|
BtdrvBleAdFlag_BrEdrNotSupported = BIT(2),
|
||||||
|
BtdrvBleAdFlag_DualModeControllerSupport = BIT(3),
|
||||||
|
BtdrvBleAdFlag_DualModeHostSupport = BIT(4),
|
||||||
|
} BtdrvBleAdFlag;
|
||||||
|
|
||||||
/// AudioEventType
|
/// AudioEventType
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BtdrvAudioEventType_None = 0, ///< None
|
BtdrvAudioEventType_None = 0, ///< None
|
||||||
@ -280,6 +311,29 @@ typedef struct {
|
|||||||
u8 unk_x0[0x88]; ///< Unknown
|
u8 unk_x0[0x88]; ///< Unknown
|
||||||
} BtdrvChannelMapList;
|
} BtdrvChannelMapList;
|
||||||
|
|
||||||
|
/// GattAttributeUuid
|
||||||
|
typedef struct {
|
||||||
|
u32 size; ///< UUID size, must be 0x2, 0x4, or 0x10.
|
||||||
|
u8 uuid[0x10]; ///< UUID with the above size.
|
||||||
|
} BtdrvGattAttributeUuid;
|
||||||
|
|
||||||
|
/// GattId
|
||||||
|
typedef struct {
|
||||||
|
u8 instance_id; ///< InstanceId
|
||||||
|
u8 pad[3]; ///< Padding
|
||||||
|
BtdrvGattAttributeUuid uuid; ///< \ref BtdrvGattAttributeUuid
|
||||||
|
} BtdrvGattId;
|
||||||
|
|
||||||
|
/// GattAttribute
|
||||||
|
typedef struct {
|
||||||
|
BtdrvGattId id; ///< \ref BtdrvGattId
|
||||||
|
u16 type; ///< \ref BtdrvGattAttributeType
|
||||||
|
u16 handle;
|
||||||
|
u16 group_end_handle;
|
||||||
|
u8 property; ///< Only used when type is characteristic. \ref BtdrvGattCharacteristicProperty
|
||||||
|
bool is_primary; ///< Only used when type is service
|
||||||
|
} BtdrvGattAttribute;
|
||||||
|
|
||||||
/// LeConnectionParams [5.0.0-8.1.1]
|
/// LeConnectionParams [5.0.0-8.1.1]
|
||||||
typedef struct {
|
typedef struct {
|
||||||
BtdrvAddress addr; ///< \ref BtdrvAddress
|
BtdrvAddress addr; ///< \ref BtdrvAddress
|
||||||
@ -303,30 +357,24 @@ typedef struct {
|
|||||||
u16 supervision_tout; ///< Connection supervision timeout multiplier
|
u16 supervision_tout; ///< Connection supervision timeout multiplier
|
||||||
} BtdrvBleConnectionParameter;
|
} BtdrvBleConnectionParameter;
|
||||||
|
|
||||||
/// BtdrvBleAdvertisePacketDataEntry
|
/// BtdrvBleAdvertisePacketData
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u16 unk_x0; ///< Unknown
|
u32 adv_data_mask; ///< Bitmask of following AD data to be included in advertising packets \ref BtdrvBleAdBit
|
||||||
u8 unused[0x12]; ///< Unused
|
u8 flag; ///< AD flag value to be advertised \ref BtdrvBleAdFlag. Included with BtdrvBleAdBit_Flags
|
||||||
} BtdrvBleAdvertisePacketDataEntry;
|
u8 manu_data_len; ///< Size of manu_data below
|
||||||
|
u8 manu_data[0x1F]; ///< Manufacturer-specific data to be advertised. Included with BtdrvBleAdBit_Manufacturer
|
||||||
/// BleAdvertisePacketData
|
u8 pad[1]; ///< Padding
|
||||||
typedef struct {
|
u16 appearance_data; ///< Device appearance data to be advertised \ref BtdrvAppearanceType. Included with BtdrvBleAdBit_Appearance
|
||||||
u32 unk_x0; ///< Unknown
|
u8 num_service; ///< Number of services in uuid_val array below
|
||||||
u8 unk_x4; ///< Unknown
|
u8 pad2[3]; ///< Padding
|
||||||
u8 size0; ///< Size of the data at unk_x6.
|
BtdrvGattAttributeUuid uuid_val[0x6]; ///< Array of 16-bit UUIDs to be advertised \ref BtdrvGattAttributeUuid. Included with BtdrvBleAdBit_Service
|
||||||
u8 unk_x6[0x1F]; ///< Unknown, see size0.
|
u8 service_data_len; ///< Size of service_data below
|
||||||
u8 pad[3]; ///< Padding
|
u8 pad3[1]; ///< Padding
|
||||||
u8 count; ///< Total array entries, see entries.
|
u16 service_data_uuid; ///< 16-bit UUID of service_data below
|
||||||
u8 pad2[7]; ///< Padding
|
u8 service_data[0x1F]; ///< Service data to be advertised. Included with BtdrvBleAdBit_ServiceData
|
||||||
BtdrvBleAdvertisePacketDataEntry entries[0x5]; ///< \ref BtdrvBleAdvertisePacketDataEntry
|
bool is_scan_rsp; ///< Whether this is an inquiry scan response or advertising data
|
||||||
u8 pad3[0x10]; ///< Padding
|
u8 tx_power; ///< Inquiry transmit power to be advertised. Included with BtdrvBleAdBit_TxPower
|
||||||
u8 size2; ///< Size of the data at unk_xA8.
|
u8 pad4[3]; ///< Padding
|
||||||
u8 unk_xA5; ///< Unknown
|
|
||||||
u8 pad4[2]; ///< Padding
|
|
||||||
u8 unk_xA8[0x1F]; ///< Unknown, see size2.
|
|
||||||
u8 unk_xC7; ///< Unknown
|
|
||||||
u8 unk_xC8; ///< Unknown
|
|
||||||
u8 pad5[3]; ///< Padding
|
|
||||||
} BtdrvBleAdvertisePacketData;
|
} BtdrvBleAdvertisePacketData;
|
||||||
|
|
||||||
/// BleAdvertisement
|
/// BleAdvertisement
|
||||||
@ -366,29 +414,6 @@ typedef struct {
|
|||||||
u8 pad[2]; ///< Padding
|
u8 pad[2]; ///< Padding
|
||||||
} BtdrvBleConnectionInfo;
|
} BtdrvBleConnectionInfo;
|
||||||
|
|
||||||
/// GattAttributeUuid
|
|
||||||
typedef struct {
|
|
||||||
u32 size; ///< UUID size, must be 0x2, 0x4, or 0x10.
|
|
||||||
u8 uuid[0x10]; ///< UUID with the above size.
|
|
||||||
} BtdrvGattAttributeUuid;
|
|
||||||
|
|
||||||
/// GattId
|
|
||||||
typedef struct {
|
|
||||||
u8 instance_id; ///< InstanceId
|
|
||||||
u8 pad[3]; ///< Padding
|
|
||||||
BtdrvGattAttributeUuid uuid; ///< \ref BtdrvGattAttributeUuid
|
|
||||||
} BtdrvGattId;
|
|
||||||
|
|
||||||
/// GattAttribute
|
|
||||||
typedef struct {
|
|
||||||
BtdrvGattId id; ///< \ref BtdrvGattId
|
|
||||||
u16 type; ///< \ref BtdrvGattAttributeType
|
|
||||||
u16 handle;
|
|
||||||
u16 group_end_handle;
|
|
||||||
u8 property; ///< Only used when type is characteristic. \ref BtdrvGattCharacteristicProperty
|
|
||||||
bool is_primary; ///< Only used when type is service
|
|
||||||
} BtdrvGattAttribute;
|
|
||||||
|
|
||||||
/// LeEventInfo
|
/// LeEventInfo
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u32 unk_x0; ///< Unknown
|
u32 unk_x0; ///< Unknown
|
||||||
|
Loading…
Reference in New Issue
Block a user