Changes

Jump to navigation Jump to search
9,993 bytes added ,  23:00, 26 August 2020
no edit summary
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 =

Navigation menu