Line 162: |
Line 162: |
| | | |
| == SetBurstMode == | | == SetBurstMode == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a bool, no output. | + | Takes an input [[#BdAddress|BdAddress]] and a bool, no output. |
| | | |
| == SetSlotMode == | | == SetSlotMode == |
Line 185: |
Line 185: |
| | | |
| == RemoveDeviceInfo == | | == RemoveDeviceInfo == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], no output. |
| | | |
| == IncreaseDeviceInfoOrder == | | == IncreaseDeviceInfoOrder == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], no output. |
| | | |
| == LlrNotify == | | == LlrNotify == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], no output. |
| | | |
− | [9.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]] and a s32, no output. | + | [9.0.0+] Takes an input [[#BdAddress|BdAddress]] and a s32, no output. |
| | | |
| == EnableRadio == | | == EnableRadio == |
Line 202: |
Line 202: |
| | | |
| == HidDisconnect == | | == HidDisconnect == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], no output. |
| | | |
| == HidSetRetransmissionMode == | | == HidSetRetransmissionMode == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a type-0x19 input buffer containing a [[#ZeroRetransmissionList]], no output. | + | Takes an input [[#BdAddress|BdAddress]] and a type-0x19 input buffer containing a [[#ZeroRetransmissionList]], no output. |
| | | |
| == AcquireAwakeReqEvent == | | == AcquireAwakeReqEvent == |
Line 222: |
Line 222: |
| | | |
| == ProtectDeviceInfo == | | == ProtectDeviceInfo == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a bool, no output. | + | Takes an input [[#BdAddress|BdAddress]] and a bool, no output. |
| | | |
| == AcquireBleScanEvent == | | == AcquireBleScanEvent == |
Line 269: |
Line 269: |
| | | |
| == BleConnect == | | == BleConnect == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], 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. | + | An error is thrown if the [[#BdAddress|BdAddress]] 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 == | | == BleOverrideConnection == |
Line 305: |
Line 305: |
| | | |
| == BleUnpairDevice == | | == BleUnpairDevice == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. | + | Takes an input [[#BdAddress|BdAddress]] and a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. |
| | | |
| == BleGetPairedAddresses == | | == 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. | + | Takes a type-0xA output buffer containing an array of [[#BdAddress|BdAddress]], a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], returns an output u8 total_out. |
| | | |
| The max array entries is 10. | | The max array entries is 10. |
Line 394: |
Line 394: |
| | | |
| Sends a request which is then handled as follows: | | Sends a request which is then handled as follows: |
− | * Goes through multiple arrays of [[Bluetooth_Driver_services#Address|Address]]. | + | * Goes through multiple arrays of [[#BdAddress|BdAddress]]. |
| ** First array: | | ** First array: |
− | *** Validates the [[Bluetooth_Driver_services#Address|Address]] with state, skipping it if not found. | + | *** Validates the [[#BdAddress|BdAddress]] with state, skipping it if not found. |
− | *** Calls the SetTsi wrapper func described below, with the above [[Bluetooth_Driver_services#Address|Address]] and tsi=0xFF (Exit). If this returns false, [[Bluetooth_Driver_services#CloseHidConnection|CloseHidConnection]] is used with the [[Bluetooth_Driver_services#Address|Address]]. | + | *** Calls the SetTsi wrapper func described below, with the above [[#BdAddress|BdAddress]] and tsi=0xFF (Exit). If this returns false, [[Bluetooth_Driver_services#CloseHidConnection|CloseHidConnection]] is used with the [[#BdAddress|BdAddress]]. |
| ** Second array: | | ** Second array: |
− | *** Validates the [[Bluetooth_Driver_services#Address|Address]] with state, skipping it if not found. | + | *** Validates the [[#BdAddress|BdAddress]] with state, skipping it if not found. |
| *** Uses [[Bluetooth_Driver_services#SetBleConnectionParameter|SetBleConnectionParameter]] with bool=true. Then the required EventInfo is loaded, {...}. | | *** Uses [[Bluetooth_Driver_services#SetBleConnectionParameter|SetBleConnectionParameter]] with bool=true. Then the required EventInfo is loaded, {...}. |
| ** Then it goes through the first array again, except here it does the following: | | ** Then it goes through the first array again, except here it does the following: |
− | *** Calls the same func for validating the [[Bluetooth_Driver_services#Address|Address]] with state, skipping it if not found. It is also skipped if the u32 at Address+0x8 is value 0x3. | + | *** Calls the same func for validating the [[#BdAddress|BdAddress]] with state, skipping it if not found. It is also skipped if the u32 at Address+0x8 is value 0x3. |
| *** Determines what Tsi value to use, on failure [[Bluetooth_Driver_services#CloseHidConnection|CloseHidConnection]] is used and the loop is continued. | | *** Determines what Tsi value to use, on failure [[Bluetooth_Driver_services#CloseHidConnection|CloseHidConnection]] is used and the loop is continued. |
− | *** Calls the SetTsi wrapper func described below, with the [[Bluetooth_Driver_services#Address|Address]] and the above Tsi value. If this returns false, [[Bluetooth_Driver_services#CloseHidConnection|CloseHidConnection]] is used with the [[Bluetooth_Driver_services#Address|Address]]. | + | *** Calls the SetTsi wrapper func described below, with the [[#BdAddress|BdAddress]] and the above Tsi value. If this returns false, [[Bluetooth_Driver_services#CloseHidConnection|CloseHidConnection]] is used with the [[#BdAddress|BdAddress]]. |
| ** It then goes through various arrays again for updating state. | | ** It then goes through various arrays again for updating state. |
| ** {...} | | ** {...} |
Line 478: |
Line 478: |
| | | |
| == CreateBond == | | == CreateBond == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], no output. |
| | | |
| == CancelBond == | | == CancelBond == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], no output. |
| | | |
| == SetTsiMode == | | == SetTsiMode == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a [[#TsiMode]], no output. | + | Takes an input [[#BdAddress|BdAddress]] and a [[#TsiMode]], no output. |
| | | |
| Sends a request which is handled as follows: uses [[Bluetooth_Driver_services#SetTsi|SetTsi]] directly with the specified params. | | Sends a request which is handled as follows: uses [[Bluetooth_Driver_services#SetTsi|SetTsi]] directly with the specified params. |
Line 492: |
Line 492: |
| | | |
| == HidConnect == | | == HidConnect == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | + | Takes an input [[#BdAddress|BdAddress]], no output. |
| | | |
| == GeneralGet == | | == GeneralGet == |
Line 498: |
Line 498: |
| | | |
| == GetGattClientDisconnectionReason == | | == GetGattClientDisconnectionReason == |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]] and an u32, returns an output bool and u16. | + | Takes an input [[#BdAddress|BdAddress]] and an u32, returns an output bool and u16. |
| | | |
| The bool indicates whether the cmd is successful. | | The bool indicates whether the cmd is successful. |
Line 735: |
Line 735: |
| | | |
| === BleConnect === | | === BleConnect === |
− | Takes a PID, an [[Bluetooth_Driver_services#Address|Address]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. | + | Takes a PID, an [[#BdAddress|BdAddress]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], no output. |
| | | |
| This is similar to the [[#BleConnect|btm]] cmd. | | This is similar to the [[#BleConnect|btm]] cmd. |
Line 765: |
Line 765: |
| | | |
| === BleUnPairDevice2 === | | === BleUnPairDevice2 === |
− | Takes an input [[Bluetooth_Driver_services#Address|Address]] and a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. | + | Takes an input [[#BdAddress|BdAddress]] and a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], no output. |
| | | |
| This is similar to the [[#BleUnPairDevice|btm]] cmd. | | 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 [[#BdAddress|BdAddress]], a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], returns an output u8 total_out. |
| | | |
| This is the same as the [[#BleGetPairedAddresses|btm]] cmd. | | This is the same as the [[#BleGetPairedAddresses|btm]] cmd. |
Line 839: |
Line 839: |
| | | |
| This is similar to the [[#UnregisterBleGattDataPath|btm]] cmd. | | This is similar to the [[#UnregisterBleGattDataPath|btm]] cmd. |
| + | |
| + | = BdAddress = |
| + | This is "nn::btm::BdAddress". This is a 0x6-byte struct with 1-byte alignment. |
| + | |
| + | = BdName = |
| + | This is "nn::btm::BdName". This is a 0x20-byte struct with 1-byte alignment. |
| + | |
| + | = ClassOfDevice = |
| + | This is "nn::btm::ClassOfDevice". This is a 0x3-byte struct with 1-byte alignment. |
| + | |
| + | = LinkKey = |
| + | This is "nn::btm::LinkKey". This is a 0x10-byte struct with 1-byte alignment. |
| | | |
| = BtmState = | | = BtmState = |
− | This is "nn::btm::BtmState". This is an u32 enum. | + | This is "nn::btm::BtmState". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Description |
| + | |- |
| + | | 0 || NotInitialized |
| + | |- |
| + | | 1 || RadioOff |
| + | |- |
| + | | 2 || MinorSlept |
| + | |- |
| + | | 3 || RadioOffMinorSlept |
| + | |- |
| + | | 4 || Slept |
| + | |- |
| + | | 5 || RadioOffSlept |
| + | |- |
| + | | 6 || Initialized |
| + | |- |
| + | | 7 || Working |
| + | |} |
| | | |
| = BluetoothMode = | | = BluetoothMode = |
− | This is "nn::btm::BluetoothMode". This is an u32 enum. | + | This is "nn::btm::BluetoothMode". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Description |
| + | |- |
| + | | 0 || Dynamic2Slot |
| + | |- |
| + | | 1 || StaticJoy |
| + | |} |
| | | |
| = WlanMode = | | = WlanMode = |
− | This is "nn::btm::WlanMode". This is an u32 enum. | + | This is "nn::btm::WlanMode". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Description |
| + | |- |
| + | | 0 || Local4 |
| + | |- |
| + | | 1 || Local8 |
| + | |- |
| + | | 2 || None |
| + | |} |
| | | |
| = TsiMode = | | = TsiMode = |
− | This is "nn::btm::TsiMode". This is an u32 enum. | + | This is "nn::btm::TsiMode". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 879: |
Line 932: |
| |- | | |- |
| | 255 || Active | | | 255 || Active |
| + | |} |
| + | |
| + | = SlotMode = |
| + | This is "nn::btm::SlotMode". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Description |
| + | |- |
| + | | 0 || 2 |
| + | |- |
| + | | 1 || 4 |
| + | |- |
| + | | 2 || 6 |
| + | |- |
| + | | 3 || Active |
| + | |} |
| + | |
| + | = Profile = |
| + | This is "nn::btm::Profile". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Description |
| + | |- |
| + | | 0 || None |
| + | |- |
| + | | 1 || Hid |
| + | |} |
| + | |
| + | = HidDeviceInfo = |
| + | This is "nn::btm::HidDeviceInfo". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x2 || Vid |
| + | |- |
| + | | 0x2 || 0x2 || Pid |
| |} | | |} |
| | | |
Line 890: |
Line 985: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x0 || 0x9 || Same as [[Bluetooth_Driver_services#AdapterProperty|AdapterProperty]]+0x0. | + | | 0x0 || 0x6 || [[#BdAddress|BdAddress]] |
| |- | | |- |
− | | 0x9 || 0x1F || Same as [[Bluetooth_Driver_services#AdapterProperty|AdapterProperty]]+0x9. | + | | 0x6 || 0x3 || [[#ClassOfDevice|ClassOfDevice]] |
| |- | | |- |
− | | 0x28 || 0x1 || Always zero. | + | | 0x9 || 0x20 || [[#BdName|BdName]] |
| |- | | |- |
− | | 0x29 || 0x1 || Same as [[Bluetooth_Driver_services#AdapterProperty|AdapterProperty]]+0x102. | + | | 0x29 || 0x1 || FeatureSet |
| + | |} |
| + | |
| + | = DeviceSlotMode = |
| + | This is "nn::btm::DeviceSlotMode". This is a 0xC-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x6 || [[#BdAddress|BdAddress]] |
| + | |- |
| + | | 0x6 || 0x2 || Reserved |
| + | |- |
| + | | 0x8 || 0xC || [[#SlotMode|SlotMode]] |
| |} | | |} |
| | | |
| = DeviceSlotModeList = | | = DeviceSlotModeList = |
| This is "nn::btm::DeviceSlotModeList". This is a 0x64-byte struct. | | This is "nn::btm::DeviceSlotModeList". This is a 0x64-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x1 || DeviceCount |
| + | |- |
| + | | 0x1 || 0x3 || Reserved |
| + | |- |
| + | | 0x4 || 0xC * 8 || Array of [[#DeviceSlotMode|DeviceSlotMode]] |
| + | |} |
| + | |
| + | = DeviceInfo = |
| + | This is "nn::btm::DeviceInfo". This is a 0x60-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x6 || [[#BdAddress|BdAddress]] |
| + | |- |
| + | | 0x6 || 0x3 || [[#ClassOfDevice|ClassOfDevice]] |
| + | |- |
| + | | 0x9 || 0x20 || [[#BdName|BdName]] |
| + | |- |
| + | | 0x29 || 0x10 || [[#LinkKey|LinkKey]] |
| + | |- |
| + | | 0x39 || 0x3 || Reserved |
| + | |- |
| + | | 0x3C || 0x4 || [[#Profile|Profile]] |
| + | |- |
| + | | 0x40 || 0x4 || Empty (Profile = None) or [[#HidDeviceInfo|HidDeviceInfo]] (Profile = Hid) |
| + | |- |
| + | | 0x44 || 0x1C || Reserved |
| + | |} |
| | | |
| = DeviceInfoList = | | = DeviceInfoList = |
Line 911: |
Line 1,061: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x0 || 0x1 || Total entries. | + | | 0x0 || 0x1 || DeviceCount |
| |- | | |- |
− | | 0x1 || 0x3 || Padding | + | | 0x1 || 0x3 || Reserved |
| |- | | |- |
− | | 0x4 || 0xA*60(0x3C0) || Array of [[#DeviceInfo]]. | + | | 0x4 || 0xA * 60 || Array of [[#DeviceInfo|DeviceInfo]] |
| |} | | |} |
| | | |
− | = DeviceInfo = | + | = DeviceProperty = |
− | This is "nn::btm::DeviceInfo". This is a 0x60-byte struct. | + | This is "nn::btm::DeviceProperty". This is a 0x29-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x6 || [[#BdAddress|BdAddress]] |
| + | |- |
| + | | 0x6 || 0x3 || [[#ClassOfDevice|ClassOfDevice]] |
| + | |- |
| + | | 0x9 || 0x20 || [[#BdName|BdName]] |
| + | |} |
| | | |
| = DevicePropertyList = | | = DevicePropertyList = |
| This is "nn::btm::DevicePropertyList". This is a 0x268-byte struct. | | This is "nn::btm::DevicePropertyList". This is a 0x268-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x1 || DeviceCount |
| + | |- |
| + | | 0x1 || 0x29 * 15 || Array of [[#DeviceProperty|DeviceProperty]] |
| + | |} |
| | | |
| = ZeroRetransmissionList = | | = ZeroRetransmissionList = |
| This is "nn::btm::ZeroRetransmissionList". This is a 0x11-byte struct. | | This is "nn::btm::ZeroRetransmissionList". This is a 0x11-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x1 || EnabledReportIdCount |
| + | |- |
| + | | 0x1 || 0x1 * 16 || Array of EnabledReportId |
| + | |} |
| | | |
| = GattService = | | = GattService = |