Line 7: |
Line 7: |
| | | |
| These btm services with BLE only allow connecting to devices which have a [[#GattService]] with a certain custom UUID present. | | These btm services with BLE only allow connecting to devices which have a [[#GattService]] with a certain custom UUID present. |
| + | |
| + | The output bool from all of these btm* service get-event cmds indicates whether the Event was successfully returned, user-processes will Abort when this is 0. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 24: |
Line 26: |
| | 5 || [[#SetSlotMode]] | | | 5 || [[#SetSlotMode]] |
| |- | | |- |
− | | 6 || [1.0.0-8.1.0] [[#SetBluetoothMode]] | + | | 6 || [1.0.0-8.1.1] [[#SetBluetoothMode]] |
| |- | | |- |
| | 7 || [[#SetWlanMode]] | | | 7 || [[#SetWlanMode]] |
Line 60: |
Line 62: |
| | 23 || [5.0.0+] [[#AcquireBleScanEvent]] | | | 23 || [5.0.0+] [[#AcquireBleScanEvent]] |
| |- | | |- |
− | | 24 ([5.0.0-5.0.2] ?) || [5.0.0+] GetBleScanParameterGeneral | + | | 24 || [5.1.0+] [[#GetBleScanParameterGeneral]] |
| |- | | |- |
− | | 25 ([5.0.0-5.0.2] ?) || [5.0.0+] GetBleScanParameterSmartDevice | + | | 25 || [5.1.0+] [[#GetBleScanParameterSmartDevice]] |
| |- | | |- |
− | | 26 ([5.0.0-5.0.2] ?) || [5.0.0+] StartBleScanForGeneral | + | | 26 || [5.1.0+] [[#StartBleScanForGeneral]] |
| |- | | |- |
− | | 27 ([5.0.0-5.0.2] ?) || [5.0.0+] StopBleScanForGeneral | + | | 27 || [5.1.0+] [[#StopBleScanForGeneral]] |
| |- | | |- |
− | | 28 ([5.0.0-5.0.2] ?) || [5.0.0+] GetBleScanResultsForGeneral | + | | 28 || [5.1.0+] [[#GetBleScanResultsForGeneral]] |
| |- | | |- |
− | | 29 ([5.0.0-5.0.2] ?) || [5.0.0+] StartBleScanForPairedDevice | + | | 29 || [5.1.0+] [[#StartBleScanForPairedDevice]] |
| |- | | |- |
− | | 30 ([5.0.0-5.0.2] ?) || [5.0.0+] StopBleScanForPairedDevice | + | | 30 || [5.1.0+] [[#StopBleScanForPairedDevice]] |
| |- | | |- |
− | | 31 ([5.0.0-5.0.2] ?) || [5.0.0+] StartBleScanForSmartDevice | + | | 31 || [5.1.0+] [[#StartBleScanForSmartDevice]] |
| |- | | |- |
− | | 32 ([5.0.0-5.0.2] ?) || [5.0.0+] StopBleScanForSmartDevice | + | | 32 || [5.1.0+] [[#StopBleScanForSmartDevice]] |
| |- | | |- |
− | | 33 ([5.0.0-5.0.2] ?) || [5.0.0+] GetBleScanResultsForSmartDevice | + | | 33 || [5.1.0+] [[#GetBleScanResultsForSmartDevice]] |
| |- | | |- |
− | | 34 ([5.0.0-5.0.2] ?) || [5.0.0+] AcquireBleConnectionEvent | + | | 34 || [5.1.0+] [[#AcquireBleConnectionEvent]] |
| |- | | |- |
| | 35 ([5.0.0-5.0.2] 24) || [5.0.0+] [[#BleConnect]] | | | 35 ([5.0.0-5.0.2] 24) || [5.0.0+] [[#BleConnect]] |
| |- | | |- |
− | | 36 ([5.0.0-5.0.2] ?) || [5.0.0+] BleOverrideConnection | + | | 36 || [5.1.0+] [[#BleOverrideConnection]] |
| |- | | |- |
| | 37 ([5.0.0-5.0.2] 25) || [5.0.0+] [[#BleDisconnect]] | | | 37 ([5.0.0-5.0.2] 25) || [5.0.0+] [[#BleDisconnect]] |
| |- | | |- |
− | | 38 ([5.0.0-5.0.2] ?) || [5.0.0+] BleGetConnectionState | + | | 38 ([5.0.0-5.0.2] 26) || [5.0.0+] [[#BleGetConnectionState]] |
| |- | | |- |
− | | 39 ([5.0.0-5.0.2] ?) || [5.0.0+] BleGetGattClientConditionList | + | | 39 ([5.0.0-5.0.2] 27) || [5.0.0+] [[#BleGetGattClientConditionList]] |
| |- | | |- |
− | | 40 ([5.0.0-5.0.2] ?) || [5.0.0+] AcquireBlePairingEvent | + | | 40 ([5.0.0-5.0.2] 28) || [5.0.0+] [[#AcquireBlePairingEvent]] |
| |- | | |- |
− | | 41 ([5.0.0-5.0.2] ?) || [5.0.0+] BlePairDevice | + | | 41 || [5.1.0+] [[#BlePairDevice]] |
| |- | | |- |
− | | 42 ([5.0.0-5.0.2] ?) || [5.0.0+] BleUnpairDeviceOnBoth | + | | 42 || [5.1.0+] [[#BleUnpairDeviceOnBoth]] |
| |- | | |- |
− | | 43 || [5.1.0+] BleUnpairDevice | + | | 43 || [5.1.0+] [[#BleUnpairDevice]] |
| |- | | |- |
− | | 44 || [5.1.0+] BleGetPairedAddresses | + | | 44 || [5.1.0+] [[#BleGetPairedAddresses]] |
| |- | | |- |
− | | 45 || [5.1.0+] AcquireBleServiceDiscoveryEvent | + | | 45 || [5.1.0+] [[#AcquireBleServiceDiscoveryEvent]] |
| |- | | |- |
− | | 46 || [5.1.0+] GetGattServices | + | | 46 ([5.0.0-5.0.2] 29) || [5.0.0+] [[#GetGattServices]] |
| |- | | |- |
− | | 47 || [5.1.0+] GetGattService | + | | 47 ([5.0.0-5.0.2] 30) || [5.0.0+] [[#GetGattService]] |
| |- | | |- |
− | | 48 || [5.1.0+] GetGattIncludedServices | + | | 48 ([5.0.0-5.0.2] 31) || [5.0.0+] [[#GetGattIncludedServices]] |
| |- | | |- |
− | | 49 || [5.1.0+] GetBelongingService | + | | 49 ([5.0.0-5.0.2] 32) || [5.0.0+] [[#GetBelongingService]] |
| |- | | |- |
− | | 50 || [5.1.0+] GetGattCharacteristics | + | | 50 ([5.0.0-5.0.2] 33) || [5.0.0+] [[#GetGattCharacteristics]] |
| |- | | |- |
− | | 51 || [5.1.0+] GetGattDescriptors | + | | 51 ([5.0.0-5.0.2] 34) || [5.0.0+] [[#GetGattDescriptors]] |
| |- | | |- |
− | | 52 || [5.1.0+] AcquireBleMtuConfigEvent | + | | 52 ([5.0.0-5.0.2] 35) || [5.0.0+] [[#AcquireBleMtuConfigEvent]] |
| |- | | |- |
− | | 53 || [5.1.0+] ConfigureBleMtu | + | | 53 ([5.0.0-5.0.2] 36) || [5.0.0+] [[#ConfigureBleMtu]] |
| |- | | |- |
− | | 54 || [5.1.0+] GetBleMtu | + | | 54 ([5.0.0-5.0.2] 37) || [5.0.0+] [[#GetBleMtu]] |
| |- | | |- |
− | | 55 || [5.1.0+] RegisterBleGattDataPath | + | | 55 ([5.0.0-5.0.2] 38) || [5.0.0+] [[#RegisterBleGattDataPath]] |
| |- | | |- |
− | | 56 || [5.1.0+] UnregisterBleGattDataPath | + | | 56 ([5.0.0-5.0.2] 39) || [5.0.0+] [[#UnregisterBleGattDataPath]] |
| |- | | |- |
− | | 57 || [5.1.0+] RegisterAppletResourceUserId | + | | 57 ([5.0.0-5.0.2] 40) || [5.0.0+] [[#RegisterAppletResourceUserId]] |
| |- | | |- |
− | | 58 || [5.1.0+] UnregisterAppletResourceUserId | + | | 58 ([5.0.0-5.0.2] 41) || [5.0.0+] [[#UnregisterAppletResourceUserId]] |
| |- | | |- |
− | | 59 || [5.1.0+] SetAppletResourceUserId | + | | 59 ([5.0.0-5.0.2] 42) || [5.0.0+] [[#SetAppletResourceUserId]] |
| |- | | |- |
| | 60 || [8.0.0+] | | | 60 || [8.0.0+] |
Line 142: |
Line 144: |
| | 64 || [10.0.0+] | | | 64 || [10.0.0+] |
| |} | | |} |
− |
| |
− | With [5.1.0+] cmds 24-42 were moved/replaced/etc (input/output changed).
| |
| | | |
| == GetState == | | == GetState == |
Line 150: |
Line 150: |
| == GetHostDeviceProperty == | | == GetHostDeviceProperty == |
| No input, returns an output [[#HostDeviceProperty]]. | | No input, returns an output [[#HostDeviceProperty]]. |
| + | |
| + | This gets the previously initialized [[#HostDeviceProperty]]. |
| | | |
| == AcquireDeviceConditionEvent == | | == AcquireDeviceConditionEvent == |
| No input, returns an output Event handle with EventClearMode=1. | | No input, returns an output Event handle with EventClearMode=1. |
| | | |
− | [3.0.0+] Now returns an additional output u8. | + | [3.0.0+] Now returns an additional output bool. |
| | | |
| == GetDeviceCondition == | | == GetDeviceCondition == |
Line 174: |
Line 176: |
| No input, returns an output Event handle with EventClearMode=1. | | No input, returns an output Event handle with EventClearMode=1. |
| | | |
− | [3.0.0+] Now returns an additional output u8. | + | [3.0.0+] Now returns an additional output bool. |
| | | |
| == GetDeviceInfo == | | == GetDeviceInfo == |
Line 208: |
Line 210: |
| No input, returns an output Event handle with EventClearMode=1. | | No input, returns an output Event handle with EventClearMode=1. |
| | | |
− | [3.0.0+] Now returns an additional output u8. | + | [3.0.0+] Now returns an additional output bool. |
| | | |
| == AcquireLlrStateEvent == | | == AcquireLlrStateEvent == |
− | No input, returns an output u8 and an Event handle with EventClearMode=1. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
| == IsLlrStarted == | | == IsLlrStarted == |
Line 223: |
Line 225: |
| | | |
| == AcquireBleScanEvent == | | == AcquireBleScanEvent == |
− | No input, returns an output u8 and an Event handle with EventClearMode=1. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| + | |
| + | == GetBleScanParameterGeneral == |
| + | Takes an input u16, returns a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]]. |
| + | |
| + | The u16 must be value 0x1 or 0xFFFF. |
| + | |
| + | == GetBleScanParameterSmartDevice == |
| + | Takes an input u16, returns a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]]. |
| + | |
| + | The u16 must be value 0x2. The first 4-bytes of output is always 0 since it's not set. |
| + | |
| + | == StartBleScanForGeneral == |
| + | Takes a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. |
| + | |
| + | == StopBleScanForGeneral == |
| + | No input/output. |
| + | |
| + | == GetBleScanResultsForGeneral == |
| + | Takes a type-0x6 output buffer containing an array of [[Bluetooth_Driver_services#BleScanResult|BleScanResult]], returns an output u8 total_out. |
| + | |
| + | The max array entries is 10. |
| + | |
| + | == StartBleScanForPaired == |
| + | Takes a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. |
| + | |
| + | == StopBleScanForPaired == |
| + | No input/output. |
| + | |
| + | == StartBleScanForSmartDevice == |
| + | Takes a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], no output. |
| + | |
| + | == StopBleScanForSmartDevice == |
| + | No input/output. |
| + | |
| + | == GetBleScanResultsForSmartDevice == |
| + | Takes a type-0x6 output buffer containing an array of [[Bluetooth_Driver_services#BleScanResult|BleScanResult]], returns an output u8 total_out. |
| + | |
| + | The max array entries is 10. |
| + | |
| + | == AcquireBleConnectionEvent == |
| + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
| == BleConnect == | | == BleConnect == |
| Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. |
| + | |
| + | An error is thrown if the [[Bluetooth_Driver_services#Address|Address]] is already connected (listed in the [[Bluetooth_Driver_services#BleConnectionInfo|BleConnectionInfo]] from [[#BleGetConnectionState]]). An error is thrown if 4 [[#BleGetConnectionState|devices]] are already connected. |
| + | |
| + | == BleOverrideConnection == |
| + | Takes an input u32, no output. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. |
| | | |
| == BleDisconnect == | | == BleDisconnect == |
− | Takes an input u32, no output. | + | Takes an input u32 ConnectionHandle, no output. |
| + | |
| + | The u32 must match a ConnectionHandle in a [[Bluetooth_Driver_services#BleConnectionInfo|BleConnectionInfo]] from [[#BleGetConnectionState]]. [5.1.0+] 0xFFFFFFFF is invalid. |
| + | |
| + | == BleGetConnectionState == |
| + | Takes a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#BleConnectionInfo|BleConnectionInfo]], returns an output u8 total_out. |
| + | |
| + | Other cmds which use this internally use arraycount=4. |
| + | |
| + | == BleGetGattClientConditionList == |
| + | Takes a type-0x1A output buffer containing a 0x74-byte struct. |
| + | |
| + | == AcquireBlePairingEvent == |
| + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| + | |
| + | == BlePairDevice == |
| + | Takes an input [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]] and an u32, no output. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. |
| + | |
| + | == BleUnpairDeviceOnBoth == |
| + | Takes an input [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]] and an u32, no output. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. |
| + | |
| + | == BleUnpairDevice == |
| + | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. |
| + | |
| + | == BleGetPairedAddresses == |
| + | Takes a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#Address|Address]], a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], returns an output u8 total_out. |
| + | |
| + | The max array entries is 10. |
| + | |
| + | == AcquireBleServiceDiscoveryEvent == |
| + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| + | |
| + | == GetGattServices == |
| + | Takes a type-0x6 output buffer containing an array of [[#GattService]], an u32, returns an output u8 total_out. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. The max array entries is 100. |
| + | |
| + | == GetGattService == |
| + | Takes a type-0x1A output buffer containing a [[#GattService]], an u32, a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], returns an output bool. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. The output bool indicates whether a [[#GattService]] was returned. |
| + | |
| + | Same as [[#GetGattServices]] except this only returns the [[#GattService]] which matches the input [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]]. |
| + | |
| + | == GetGattIncludedServices == |
| + | Takes a type-0x6 output buffer containing an array of [[#GattService]], an u16 Handle, an u32, returns an output u8. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. The max array entries is 100. |
| + | |
| + | Same as [[#GetGattServices]] except this only returns [[#GattService]] entries where various checks pass with u16 fields. |
| + | |
| + | The param for the output u8 is unused by the sysmodule, hence the output is always 0. |
| + | |
| + | == GetBelongingService == |
| + | Takes a type-0x1A output buffer containing a [[#GattService]], an u16 Handle, an u32, returns an output bool. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. The output bool indicates whether a [[#GattService]] was returned. |
| + | |
| + | This is similar to [[#GetGattIncludedServices]] except this only returns 1 [[#GattService]]. |
| + | |
| + | == GetGattCharacteristics == |
| + | Takes a type-0x6 output buffer containing an array of [[#GattCharacteristic]], an u16 Handle, an u32, returns an output u8 total_out. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. The max array entries is 100. |
| + | |
| + | The u16 controls which [[#GattCharacteristic]] entries to return. |
| + | |
| + | == GetGattDescriptors == |
| + | Takes a type-0x6 output buffer containing an array of [[#GattDescriptor]], an u16 Handle, an u32, returns an output u8 total_out. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. The max array entries is 100. |
| + | |
| + | The u16 controls which [[#GattDescriptor]] entries to return. |
| + | |
| + | == AcquireBleMtuConfigEvent == |
| + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| + | |
| + | == ConfigureBleMtu == |
| + | Takes an u16, an u32, no output. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. |
| + | |
| + | == GetBleMtu == |
| + | Takes an u32, returns an output u16. |
| + | |
| + | The u32 is the same as the param for [[#BleDisconnect]]. |
| + | |
| + | == RegisterBleGattDataPath == |
| + | Takes a [[#BleDataPath]], no output. |
| + | |
| + | == UnregisterBleGattDataPath == |
| + | Takes a [[#BleDataPath]], no output. |
| + | |
| + | == RegisterAppletResourceUserId == |
| + | Takes an input u32 and an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| + | |
| + | == UnregisterAppletResourceUserId == |
| + | Takes an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| + | |
| + | == SetAppletResourceUserId == |
| + | Takes an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| | | |
| == Cmd60 == | | == Cmd60 == |
Line 255: |
Line 409: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || AcquireDiscoveryEvent | + | | 0 || [[#AcquireDiscoveryEvent]] |
| |- | | |- |
− | | 1 || StartDiscovery | + | | 1 || [[#StartDiscovery]] |
| |- | | |- |
− | | 2 || CancelDiscovery | + | | 2 || [[#CancelDiscovery]] |
| |- | | |- |
− | | 3 || GetDeviceProperty | + | | 3 || [[#GetDeviceProperty]] |
| |- | | |- |
− | | 4 || CreateBond | + | | 4 || [[#CreateBond]] |
| |- | | |- |
− | | 5 || CancelBond | + | | 5 || [[#CancelBond]] |
| |- | | |- |
− | | 6 || SetTsiMode | + | | 6 || [[#SetTsiMode]] |
| |- | | |- |
− | | 7 || GeneralTest | + | | 7 || [[#GeneralTest]] |
| |- | | |- |
− | | 8 || HidConnect | + | | 8 || [[#HidConnect]] |
| |- | | |- |
− | | 9 || [5.0.0+] GeneralGet | + | | 9 || [5.0.0+] [[#GeneralGet]] |
| |- | | |- |
− | | 10 || [5.1.0+] GetGattClientDisconnectionReason | + | | 10 || [5.1.0+] [[#GetGattClientDisconnectionReason]] |
| |- | | |- |
− | | 11 || [5.1.0+] GetBleConnectionParameter | + | | 11 || [5.1.0+] [[#GetBleConnectionParameter]] |
| |- | | |- |
− | | 12 || [5.1.0+] GetBleConnectionParameterRequest | + | | 12 || [5.1.0+] [[#GetBleConnectionParameterRequest]] |
| |} | | |} |
| | | |
− | [3.0.0+] RegisterSystemEventForDiscovery now returns an output u8. | + | == AcquireDiscoveryEvent == |
| + | No input, returns output an Event handle with EventClearMode=1. |
| + | |
| + | [3.0.0+] Now returns an additional output bool. |
| + | |
| + | == StartDiscovery == |
| + | No input/output. |
| + | |
| + | == CancelDiscovery == |
| + | No input/output. |
| + | |
| + | == GetDeviceProperty == |
| + | Takes a type-0x1A output buffer containing a [[#DevicePropertyList]]. |
| + | |
| + | == CreateBond == |
| + | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. |
| + | |
| + | == CancelBond == |
| + | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. |
| + | |
| + | == SetTsiMode == |
| + | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a [[#TsiMode]], no output. |
| + | |
| + | == GeneralTest == |
| + | Takes an input s32, no output. |
| + | |
| + | == HidConnect == |
| + | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. |
| + | |
| + | == GeneralGet == |
| + | Takes an input u32 and a type-0x1A output buffer containing a 0x11-byte struct. |
| + | |
| + | == GetGattClientDisconnectionReason == |
| + | Takes an input [[Bluetooth_Driver_services#Address|Address]] and an u32, returns an output bool and u16. |
| + | |
| + | The bool indicates whether the cmd is successful. |
| + | |
| + | == GetBleConnectionParameter == |
| + | Takes an input u32, returns an output bool and 3 u16s. |
| + | |
| + | The bool indicates whether the cmd is successful, the output u16s are only set when this bool is set. |
| + | |
| + | == GetBleConnectionParameterRequest == |
| + | Takes an input u32, returns an output bool and 4 u16s. |
| + | |
| + | The bool indicates whether the cmd is successful, the output u16s are only set when this bool is set. |
| | | |
| = btm:sys = | | = btm:sys = |
Line 349: |
Line 548: |
| | | |
| === AcquireRadioEvent === | | === AcquireRadioEvent === |
− | No input, returns an output bool and handle. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
| === AcquireGamepadPairingEvent === | | === AcquireGamepadPairingEvent === |
− | No input, returns an output bool and handle. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
| === IsGamepadPairingStarted === | | === IsGamepadPairingStarted === |
Line 387: |
Line 586: |
| | 2 || [[#GetBleScanFilterParameter2]] | | | 2 || [[#GetBleScanFilterParameter2]] |
| |- | | |- |
− | | 3 || [[#StartBleScanForGeneral]] | + | | 3 || [[#StartBleScanForGeneral_2|StartBleScanForGeneral]] |
| |- | | |- |
− | | 4 || [[#StopBleScanForGeneral]] | + | | 4 || [[#StopBleScanForGeneral_2|StopBleScanForGeneral]] |
| |- | | |- |
− | | 5 || [[#GetBleScanResultsForGeneral]] | + | | 5 || [[#GetBleScanResultsForGeneral_2|GetBleScanResultsForGeneral]] |
| |- | | |- |
− | | 6 || [[#StartBleScanForPaired]] | + | | 6 || [[#StartBleScanForPaired_2|StartBleScanForPaired]] |
| |- | | |- |
− | | 7 || [[#StopBleScanForPaired]] | + | | 7 || [[#StopBleScanForPaired_2|StopBleScanForPaired]] |
| |- | | |- |
− | | 8 || [[#StartBleScanForSmartDevice]] | + | | 8 || [[#StartBleScanForSmartDevice_2|StartBleScanForSmartDevice]] |
| |- | | |- |
− | | 9 || [[#StopBleScanForSmartDevice]] | + | | 9 || [[#StopBleScanForSmartDevice_2|StopBleScanForSmartDevice]] |
| |- | | |- |
− | | 10 || [[#GetBleScanResultsForSmartDevice]] | + | | 10 || [[#GetBleScanResultsForSmartDevice_2|GetBleScanResultsForSmartDevice]] |
| |- | | |- |
− | | 17 || [[#AcquireBleConnectionEvent]] | + | | 17 || [[#AcquireBleConnectionEvent_2|AcquireBleConnectionEvent]] |
| |- | | |- |
| | 18 || [[#BleConnect_2|BleConnect]] | | | 18 || [[#BleConnect_2|BleConnect]] |
Line 409: |
Line 608: |
| | 19 || [[#BleDisconnect_2|BleDisconnect]] | | | 19 || [[#BleDisconnect_2|BleDisconnect]] |
| |- | | |- |
− | | 20 || [[#BleGetConnectionState]] | + | | 20 || [[#BleGetConnectionState_2|BleGetConnectionState]] |
| |- | | |- |
− | | 21 || [[#AcquireBlePairingEvent]] | + | | 21 || [[#AcquireBlePairingEvent_2|AcquireBlePairingEvent]] |
| |- | | |- |
− | | 22 || [[#BlePairDevice]] | + | | 22 || [[#BlePairDevice_2|BlePairDevice]] |
| |- | | |- |
− | | 23 || [[#BleUnPairDevice]] | + | | 23 || [[#BleUnPairDevice_2|BleUnPairDevice]] |
| |- | | |- |
| | 24 || [[#BleUnPairDevice2]] | | | 24 || [[#BleUnPairDevice2]] |
Line 421: |
Line 620: |
| | 25 || [[#BleGetPairedDevices]] | | | 25 || [[#BleGetPairedDevices]] |
| |- | | |- |
− | | 26 || [[#AcquireBleServiceDiscoveryEvent]] | + | | 26 || [[#AcquireBleServiceDiscoveryEvent_2|AcquireBleServiceDiscoveryEvent]] |
| |- | | |- |
− | | 27 || [[#GetGattServices]] | + | | 27 || [[#GetGattServices_2|GetGattServices]] |
| |- | | |- |
− | | 28 || [[#GetGattService]] | + | | 28 || [[#GetGattService_2|GetGattService]] |
| |- | | |- |
− | | 29 || [[#GetGattIncludedServices]] | + | | 29 || [[#GetGattIncludedServices_2|GetGattIncludedServices]] |
| |- | | |- |
| | 30 || [[#GetBelongingGattService]] | | | 30 || [[#GetBelongingGattService]] |
| |- | | |- |
− | | 31 || [[#GetGattCharacteristics]] | + | | 31 || [[#GetGattCharacteristics_2|GetGattCharacteristics]] |
| |- | | |- |
− | | 32 || [[#GetGattDescriptors]] | + | | 32 || [[#GetGattDescriptors_2|GetGattDescriptors]] |
| |- | | |- |
− | | 33 || [[#AcquireBleMtuConfigEvent]] | + | | 33 || [[#AcquireBleMtuConfigEvent_2|AcquireBleMtuConfigEvent]] |
| |- | | |- |
− | | 34 || [[#ConfigureBleMtu]] | + | | 34 || [[#ConfigureBleMtu_2|ConfigureBleMtu]] |
| |- | | |- |
− | | 35 || [[#GetBleMtu]] | + | | 35 || [[#GetBleMtu_2|GetBleMtu]] |
| |- | | |- |
− | | 36 || [[#RegisterBleGattDataPath]] | + | | 36 || [[#RegisterBleGattDataPath_2|RegisterBleGattDataPath]] |
| |- | | |- |
− | | 37 || [[#UnregisterBleGattDataPath]] | + | | 37 || [[#UnregisterBleGattDataPath_2|UnregisterBleGattDataPath]] |
| |} | | |} |
| | | |
| === AcquireBleScanEvent === | | === AcquireBleScanEvent === |
− | No input, returns an output u8 and an Event handle with EventClearMode=1. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
− | sdknso will Abort if the output u8 is value 0.
| + | This is similar to the [[#AcquireBleScanEvent|btm]] cmd. |
| | | |
| === GetBleScanFilterParameter === | | === GetBleScanFilterParameter === |
| Takes an input u16, returns a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]]. | | Takes an input u16, returns a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]]. |
| | | |
− | The u16 must be value 0x1 or 0xFFFF.
| + | This is the same as [[#GetBleScanParameterGeneral]]. |
| | | |
| === GetBleScanFilterParameter2 === | | === GetBleScanFilterParameter2 === |
| Takes an input u16, returns a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]]. | | Takes an input u16, returns a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]]. |
| | | |
− | The u16 must be value 0x2. The first 4-bytes of output is always 0 since it's not set.
| + | This is the same as [[#GetBleScanParameterSmartDevice]]. |
| | | |
| === StartBleScanForGeneral === | | === StartBleScanForGeneral === |
| Takes a PID, a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | | Takes a PID, a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| + | |
| + | This is similar to the [[#StartBleScanForGeneral|btm]] cmd. |
| | | |
| === StopBleScanForGeneral === | | === StopBleScanForGeneral === |
| No input/output. | | No input/output. |
| + | |
| + | This is similar to the [[#StopBleScanForGeneral|btm]] cmd. |
| | | |
| === GetBleScanResultsForGeneral === | | === GetBleScanResultsForGeneral === |
| Takes a PID, a type-0x6 output buffer containing an array of [[Bluetooth_Driver_services#BleScanResult|BleScanResult]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | | Takes a PID, a type-0x6 output buffer containing an array of [[Bluetooth_Driver_services#BleScanResult|BleScanResult]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. |
| | | |
− | The max array entries is 10.
| + | This is similar to the [[#GetBleScanResultsForGeneral|btm]] cmd. |
| | | |
| === StartBleScanForPaired === | | === StartBleScanForPaired === |
| Takes a PID, a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | | Takes a PID, a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| + | |
| + | This is similar to the [[#StartBleScanForPaired|btm]] cmd. |
| | | |
| === StopBleScanForPaired === | | === StopBleScanForPaired === |
| No input/output. | | No input/output. |
| + | |
| + | This is similar to the [[#StopBleScanForPaired|btm]] cmd. |
| | | |
| === StartBleScanForSmartDevice === | | === StartBleScanForSmartDevice === |
| Takes a PID, a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | | Takes a PID, a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| + | |
| + | This is similar to the [[#StartBleScanForSmartDevice|btm]] cmd. |
| | | |
| === StopBleScanForSmartDevice === | | === StopBleScanForSmartDevice === |
| No input/output. | | No input/output. |
| + | |
| + | This is similar to the [[#StopBleScanForSmartDevice|btm]] cmd. |
| | | |
| === GetBleScanResultsForSmartDevice === | | === GetBleScanResultsForSmartDevice === |
| Takes a PID, a type-0x6 output buffer containing an array of [[Bluetooth_Driver_services#BleScanResult|BleScanResult]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | | Takes a PID, a type-0x6 output buffer containing an array of [[Bluetooth_Driver_services#BleScanResult|BleScanResult]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. |
| | | |
− | The max array entries is 10.
| + | This is similar to the [[#GetBleScanResultsForSmartDevice|btm]] cmd. |
| | | |
| === AcquireBleConnectionEvent === | | === AcquireBleConnectionEvent === |
− | No input, returns an output u8 and an Event handle with EventClearMode=1. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
− | sdknso will Abort if the output u8 is value 0.
| + | This is similar to the [[#AcquireBleConnectionEvent|btm]] cmd. |
| | | |
| === BleConnect === | | === BleConnect === |
| Takes a PID, an [[Bluetooth_Driver_services#Address|Address]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | | Takes a PID, an [[Bluetooth_Driver_services#Address|Address]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| | | |
− | An error is thrown if the [[Bluetooth_Driver_services#Address|Address]] is already connected (listed in the [[Bluetooth_Driver_services#BleConnectionInfo|BleConnectionInfo]] from [[#BleGetConnectionState]]). An error is thrown if 4 [[#BleGetConnectionState|devices]] are already connected.
| + | This is similar to the [[#BleConnect|btm]] cmd. |
| | | |
| === BleDisconnect === | | === BleDisconnect === |
| Takes an input u32, no output. | | Takes an input u32, no output. |
| | | |
− | The u32 must match an Id in a [[Bluetooth_Driver_services#BleConnectionInfo|BleConnectionInfo]] from [[#BleGetConnectionState]] (0xFFFFFFFF is invalid).
| + | This is similar to the [[#BleDisconnect|btm]] cmd. |
| | | |
| === BleGetConnectionState === | | === BleGetConnectionState === |
| Takes a PID, a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#BleConnectionInfo|BleConnectionInfo]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | | Takes a PID, a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#BleConnectionInfo|BleConnectionInfo]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. |
| | | |
− | Other cmds which use this internally use arraycount=4.
| + | This is similar to the [[#BleGetConnectionState|btm]] cmd. |
| | | |
| === AcquireBlePairingEvent === | | === AcquireBlePairingEvent === |
− | No input, returns an output u8 and an Event handle with EventClearMode=1. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
− | sdknso will Abort if the output u8 is value 0.
| + | This is similar to the [[#AcquireBlePairingEvent|btm]] cmd. |
| | | |
| === BlePairDevice === | | === BlePairDevice === |
| Takes an input [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]] and an u32, no output. | | Takes an input [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]] and an u32, no output. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]].
| + | This is similar to the [[#BlePairDevice|btm]] cmd. |
| | | |
| === BleUnPairDevice === | | === BleUnPairDevice === |
| Takes an input [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]] and an u32, no output. | | Takes an input [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]] and an u32, no output. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]].
| + | This is similar to the [[#BleUnpairDeviceOnBoth|btm]] cmd. |
| | | |
| === BleUnPairDevice2 === | | === BleUnPairDevice2 === |
| Takes an input [[Bluetooth_Driver_services#Address|Address]] and a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. | | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. |
| + | |
| + | This is similar to the [[#BleUnPairDevice|btm]] cmd. |
| | | |
| === BleGetPairedDevices === | | === BleGetPairedDevices === |
| Takes a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#Address|Address]], a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], returns an output u8 total_out. | | Takes a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#Address|Address]], a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], returns an output u8 total_out. |
| | | |
− | The max array entries is 10.
| + | This is the same as the [[#BleGetPairedAddresses|btm]] cmd. |
| | | |
| === AcquireBleServiceDiscoveryEvent === | | === AcquireBleServiceDiscoveryEvent === |
− | No input, returns an output u8 and an Event handle with EventClearMode=1. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| + | |
| + | This is similar to the [[#AcquireBleServiceDiscoveryEvent|btm]] cmd. |
| | | |
| sdknso will Abort if the output u8 is value 0. | | sdknso will Abort if the output u8 is value 0. |
Line 540: |
Line 755: |
| Takes a PID, a type-0x6 output buffer containing an array of [[#GattService]], an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | | Takes a PID, a type-0x6 output buffer containing an array of [[#GattService]], an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]]. The max array entries is 100.
| + | This is similar to the [[#GetGattServices|btm]] cmd. |
| | | |
| === GetGattService === | | === GetGattService === |
− | Takes a PID, a type-0x1A output buffer containing a [[#GattService]], an u32, a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | + | Takes a PID, a type-0x1A output buffer containing a [[#GattService]], an u32, a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output bool. |
− | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]].
| |
| | | |
− | Same as [[#GetGattServices]] except this only returns the [[#GattService]] which matches the input [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]].
| + | This is similar to the [[#GetGattService|btm]] cmd. |
| | | |
| === GetGattIncludedServices === | | === GetGattIncludedServices === |
| Takes a PID, a type-0x6 output buffer containing an array of [[#GattService]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8. | | Takes a PID, a type-0x6 output buffer containing an array of [[#GattService]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]]. The max array entries is 100.
| + | This is similar to the [[#GetGattIncludedServices|btm]] cmd. |
− | | |
− | Same as [[#GetGattServices]] except this only returns [[#GattService]] entries where various checks pass with u16 fields.
| |
| | | |
| The param for the output u8 is unused by the sysmodule, hence the output is always 0. However, a sdknso func which calls the nn::btm::* func for this expects this u8 to be set. | | The param for the output u8 is unused by the sysmodule, hence the output is always 0. However, a sdknso func which calls the nn::btm::* func for this expects this u8 to be set. |
| | | |
| === GetBelongingGattService === | | === GetBelongingGattService === |
− | Takes a PID, a type-0x1A output buffer containing a [[#GattService]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | + | Takes a PID, a type-0x1A output buffer containing a [[#GattService]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output bool. |
− | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]].
| |
| | | |
− | This is similar to [[#GetGattIncludedServices]] except this only returns 1 [[#GattService]]. | + | This is similar to the [[#GetBelongingService|btm]] cmd. |
| | | |
| === GetGattCharacteristics === | | === GetGattCharacteristics === |
| Takes a PID, a type-0x6 output buffer containing an array of [[#GattCharacteristic]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | | Takes a PID, a type-0x6 output buffer containing an array of [[#GattCharacteristic]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]]. The max array entries is 100.
| + | This is similar to the [[#GetGattCharacteristics|btm]] cmd. |
− | | |
− | The u16 controls which [[#GattCharacteristic]] entries to return.
| |
| | | |
| === GetGattDescriptors === | | === GetGattDescriptors === |
| Takes a PID, a type-0x6 output buffer containing an array of [[#GattDescriptor]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | | Takes a PID, a type-0x6 output buffer containing an array of [[#GattDescriptor]], an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]]. The max array entries is 100.
| + | This is similar to the [[#GetGattDescriptors|btm]] cmd. |
− | | |
− | The u16 controls which [[#GattDescriptor]] entries to return.
| |
| | | |
| === AcquireBleMtuConfigEvent === | | === AcquireBleMtuConfigEvent === |
− | No input, returns an output u8 and an Event handle with EventClearMode=1. | + | No input, returns an output bool and an Event handle with EventClearMode=1. |
| | | |
− | sdknso will Abort if the output u8 is value 0.
| + | This is similar to the [[#AcquireBleMtuConfigEvent|btm]] cmd. |
| | | |
| === ConfigureBleMtu === | | === ConfigureBleMtu === |
| Takes a PID, an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | | Takes a PID, an u16, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]].
| + | This is similar to the [[#ConfigureBleMtu|btm]] cmd. |
| | | |
− | sdknso will Abort if the user-specified u16 is <0x18 or >0x200. | + | sdknso will Abort if the user-specified u16 is <0x18 or >0x200 (this doesn't apply to the [[#ConfigureBleMtu|btm]] cmd). |
| | | |
| === GetBleMtu === | | === GetBleMtu === |
| Takes a PID, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u16. | | Takes a PID, an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u16. |
| | | |
− | The u32 is handled the same as [[#BleDisconnect_2|BleDisconnect]].
| + | This is similar to the [[#GetBleMtu|btm]] cmd. |
| | | |
| === RegisterBleGattDataPath === | | === RegisterBleGattDataPath === |
| Takes a PID, a [[#BleDataPath]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | | Takes a PID, a [[#BleDataPath]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| + | |
| + | This is similar to the [[#RegisterBleGattDataPath|btm]] cmd. |
| | | |
| === UnregisterBleGattDataPath === | | === UnregisterBleGattDataPath === |
| Takes a PID, a [[#BleDataPath]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | | Takes a PID, a [[#BleDataPath]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| + | |
| + | This is similar to the [[#UnregisterBleGattDataPath|btm]] cmd. |
| | | |
| = BtmState = | | = BtmState = |
Line 610: |
Line 819: |
| = WlanMode = | | = WlanMode = |
| This is "nn::btm::WlanMode". This is an u32 enum. | | This is "nn::btm::WlanMode". This is an u32 enum. |
| + | |
| + | = TsiMode = |
| + | This is "nn::btm::TsiMode". This is an u32 enum. |
| | | |
| = HostDeviceProperty = | | = HostDeviceProperty = |
| This is "nn::btm::HostDeviceProperty". This is a 0x2A-byte struct. | | This is "nn::btm::HostDeviceProperty". This is a 0x2A-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x9 || Same as [[Bluetooth_Driver_services#AdapterProperty|AdapterProperty]]+0x0. |
| + | |- |
| + | | 0x9 || 0x1F || Same as [[Bluetooth_Driver_services#AdapterProperty|AdapterProperty]]+0x9. |
| + | |- |
| + | | 0x28 || 0x1 || Always zero. |
| + | |- |
| + | | 0x29 || 0x1 || Same as [[Bluetooth_Driver_services#AdapterProperty|AdapterProperty]]+0x102. |
| + | |} |
| | | |
| = DeviceSlotModeList = | | = DeviceSlotModeList = |
Line 619: |
Line 846: |
| = DeviceInfoList = | | = DeviceInfoList = |
| This is "nn::btm::DeviceInfoList". This is a 0x3C4-byte struct. | | This is "nn::btm::DeviceInfoList". This is a 0x3C4-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x1 || Total entries. |
| + | |- |
| + | | 0x1 || 0x3 || Padding |
| + | |- |
| + | | 0x4 || 0xA*60(0x3C0) || Array of [[#DeviceInfo]]. |
| + | |} |
| | | |
| = DeviceInfo = | | = DeviceInfo = |
| This is "nn::btm::DeviceInfo". This is a 0x60-byte struct. | | This is "nn::btm::DeviceInfo". This is a 0x60-byte struct. |
| + | |
| + | = DevicePropertyList = |
| + | This is "nn::btm::DevicePropertyList". This is a 0x268-byte struct. |
| | | |
| = ZeroRetransmissionList = | | = ZeroRetransmissionList = |
Line 639: |
Line 882: |
| | 0x4 || 0x14 || [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]] | | | 0x4 || 0x14 || [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]] |
| |- | | |- |
− | | 0x18 || 0x2 || | + | | 0x18 || 0x2 || Handle |
| + | |- |
| + | | 0x1A || 0x2 || |
| |- | | |- |
− | | 0x1A || 0x4 || | + | | 0x1C || 0x2 || InstanceId |
| |- | | |- |
− | | 0x1E || 0x2 || | + | | 0x1E || 0x2 || EndGroupHandle |
| |- | | |- |
− | | 0x20 || 0x1 || | + | | 0x20 || 0x1 || PrimaryService flag |
| |- | | |- |
| | 0x21 || 0x3 || Padding | | | 0x21 || 0x3 || Padding |
Line 652: |
Line 897: |
| = GattCharacteristic = | | = GattCharacteristic = |
| This is "nn::btm::user::GattCharacteristic". This is a 0x24-byte struct. | | This is "nn::btm::user::GattCharacteristic". This is a 0x24-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x4 || |
| + | |- |
| + | | 0x4 || 0x14 || [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]] |
| + | |- |
| + | | 0x18 || 0x2 || Handle |
| + | |- |
| + | | 0x1A || 0x2 || |
| + | |- |
| + | | 0x1C || 0x2 || InstanceId |
| + | |- |
| + | | 0x1E || 0x1 || Properties |
| + | |- |
| + | | 0x1F || 0x5 || |
| + | |} |
| | | |
| = GattDescriptor = | | = GattDescriptor = |
| This is "nn::btm::user::GattDescriptor". This is a 0x20-byte struct. | | This is "nn::btm::user::GattDescriptor". This is a 0x20-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x4 || |
| + | |- |
| + | | 0x4 || 0x14 || [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]] |
| + | |- |
| + | | 0x18 || 0x2 || Handle |
| + | |- |
| + | | 0x1A || 0x6 || |
| + | |} |
| | | |
| = BleDataPath = | | = BleDataPath = |