aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/btm/btm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/btm/btm.cpp')
-rw-r--r--src/core/hle/service/btm/btm.cpp497
1 files changed, 97 insertions, 400 deletions
diff --git a/src/core/hle/service/btm/btm.cpp b/src/core/hle/service/btm/btm.cpp
index e8fa29af7c..b358387ffe 100644
--- a/src/core/hle/service/btm/btm.cpp
+++ b/src/core/hle/service/btm/btm.cpp
@@ -6,414 +6,111 @@
#include <memory>
-#include "common/logging.h"
-#include "core/hle/service/cmif_serialization.h"
-#include "core/hle/service/set/system_settings_server.h"
-#include "core/hle/service/sm/sm.h"
#include "core/hle/service/btm/btm.h"
+#include "core/hle/service/btm/btm_debug.h"
+#include "core/hle/service/btm/btm_system.h"
+#include "core/hle/service/btm/btm_user.h"
#include "core/hle/service/server_manager.h"
#include "core/hle/service/service.h"
-namespace Kernel {
-class KEvent;
-class KReadableEvent;
-} // namespace Kernel
-
-namespace Core {
-class System;
-}
-
-namespace Service::Set {
-class ISystemSettingsServer;
-}
-
namespace Service::BTM {
-class IBtmSystemCore final : public ServiceFramework<IBtmSystemCore> {
-public:
- explicit IBtmSystemCore(Core::System& system_)
- : ServiceFramework{system_, "IBtmSystemCore"}, service_context{system_, "IBtmSystemCore"} {
- radio_event = service_context.CreateEvent("IBtmSystemCore:RadioEvent");
- audio_device_connection_event = service_context.CreateEvent("IBtmSystemCore:AudioDeviceConnectionEvent");
- m_set_sys = system.ServiceManager().GetService<Service::Set::ISystemSettingsServer>("set:sys", true);
- }
-
- ~IBtmSystemCore() override {
- service_context.CloseEvent(radio_event);
- service_context.CloseEvent(audio_device_connection_event);
- }
-
- Result StartGamepadPairing() {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
- R_SUCCEED();
- }
-
- Result CancelGamepadPairing() {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
- R_SUCCEED();
- }
-
- Result EnableRadio() {
- LOG_DEBUG(Service_BTM, "called");
-
- R_RETURN(m_set_sys->SetBluetoothEnableFlag(true));
- }
- Result DisableRadio() {
- LOG_DEBUG(Service_BTM, "called");
-
- R_RETURN(m_set_sys->SetBluetoothEnableFlag(false));
- }
-
- Result IsRadioEnabled(Out<bool> out_is_enabled) {
- LOG_DEBUG(Service_BTM, "called");
-
- R_RETURN(m_set_sys->GetBluetoothEnableFlag(out_is_enabled));
- }
-
- Result AcquireRadioEvent(Out<bool> out_is_valid,
- OutCopyHandle<Kernel::KReadableEvent> out_event) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_is_valid = true;
- *out_event = &radio_event->GetReadableEvent();
- R_SUCCEED();
- }
-
- Result GetDiscoveredAudioDevice(OutArray<std::array<u8, 0xFF>, BufferAttr_HipcPointer> out_audio_devices, s32 count, Out<s32> out_total) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
- R_SUCCEED();
- }
-
- Result AcquireAudioDeviceConnectionEvent(
- OutCopyHandle<Kernel::KReadableEvent> out_event) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_event = &audio_device_connection_event->GetReadableEvent();
- R_SUCCEED();
- }
-
- Result GetConnectedAudioDevices(
- Out<s32> out_count, OutArray<std::array<u8, 0xFF>, BufferAttr_HipcPointer> out_audio_devices) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_count = 0;
- R_SUCCEED();
- }
-
- Result GetPairedAudioDevices(
- Out<s32> out_count, OutArray<std::array<u8, 0xFF>, BufferAttr_HipcPointer> out_audio_devices) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_count = 0;
- R_SUCCEED();
- }
-
- Result RequestAudioDeviceConnectionRejection(ClientAppletResourceUserId aruid) {
- LOG_WARNING(Service_BTM, "(STUBBED) called, applet_resource_user_id={}", aruid.pid);
- R_SUCCEED();
- }
-
- Result CancelAudioDeviceConnectionRejection(ClientAppletResourceUserId aruid) {
- LOG_WARNING(Service_BTM, "(STUBBED) called, applet_resource_user_id={}", aruid.pid);
- R_SUCCEED();
- }
-
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
- }
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, C<&IBtmSystemCore::StartGamepadPairing>, "StartGamepadPairing"},
- FunctionInfo{1, C<&IBtmSystemCore::CancelGamepadPairing>, "CancelGamepadPairing"},
- FunctionInfo{2, nullptr, "ClearGamepadPairingDatabase"},
- FunctionInfo{3, nullptr, "GetPairedGamepadCount"},
- FunctionInfo{4, C<&IBtmSystemCore::EnableRadio>, "EnableRadio"},
- FunctionInfo{5, C<&IBtmSystemCore::DisableRadio>, "DisableRadio"},
- FunctionInfo{6, C<&IBtmSystemCore::IsRadioEnabled>, "IsRadioEnabled"},
- FunctionInfo{7, C<&IBtmSystemCore::AcquireRadioEvent>, "AcquireRadioEvent"},
- FunctionInfo{8, nullptr, "AcquireGamepadPairingEvent"},
- FunctionInfo{9, nullptr, "IsGamepadPairingStarted"},
- FunctionInfo{10, nullptr, "StartAudioDeviceDiscovery"},
- FunctionInfo{11, nullptr, "StopAudioDeviceDiscovery"},
- FunctionInfo{12, nullptr, "IsDiscoveryingAudioDevice"},
- FunctionInfo{13, C<&IBtmSystemCore::GetDiscoveredAudioDevice>, "GetDiscoveredAudioDevice"},
- FunctionInfo{14, C<&IBtmSystemCore::AcquireAudioDeviceConnectionEvent>, "AcquireAudioDeviceConnectionEvent"},
- FunctionInfo{15, nullptr, "ConnectAudioDevice"},
- FunctionInfo{16, nullptr, "IsConnectingAudioDevice"},
- FunctionInfo{17, C<&IBtmSystemCore::GetConnectedAudioDevices>, "GetConnectedAudioDevices"},
- FunctionInfo{18, nullptr, "DisconnectAudioDevice"},
- FunctionInfo{19, nullptr, "AcquirePairedAudioDeviceInfoChangedEvent"},
- FunctionInfo{20, C<&IBtmSystemCore::GetPairedAudioDevices>, "GetPairedAudioDevices"},
- FunctionInfo{21, nullptr, "RemoveAudioDevicePairing"},
- FunctionInfo{22, C<&IBtmSystemCore::RequestAudioDeviceConnectionRejection>, "RequestAudioDeviceConnectionRejection"},
- FunctionInfo{23, C<&IBtmSystemCore::CancelAudioDeviceConnectionRejection>, "CancelAudioDeviceConnectionRejection"}
- );
- KernelHelpers::ServiceContext service_context;
- Kernel::KEvent* radio_event;
- Kernel::KEvent* audio_device_connection_event;
- std::shared_ptr<Service::Set::ISystemSettingsServer> m_set_sys;
-};
-
-class IBtmSystem final : public ServiceFramework<IBtmSystem> {
-public:
- explicit IBtmSystem(Core::System& system_) : ServiceFramework{system_, "btm:sys"} {}
- ~IBtmSystem() override = default;
-
- Result GetCore(OutInterface<IBtmSystemCore> out_interface) {
- LOG_WARNING(Service_BTM, "called");
-
- *out_interface = std::make_shared<IBtmSystemCore>(system);
- R_SUCCEED();
- }
-
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
- }
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, C<&IBtmSystem::GetCore>, "GetCore"}
- );
-};
-
-class IBtmUserCore final : public ServiceFramework<IBtmUserCore> {
-public:
- explicit IBtmUserCore(Core::System& system_)
- : ServiceFramework{system_, "IBtmUserCore"}, service_context{system_, "IBtmUserCore"} {
- scan_event = service_context.CreateEvent("IBtmUserCore:ScanEvent");
- connection_event = service_context.CreateEvent("IBtmUserCore:ConnectionEvent");
- service_discovery_event = service_context.CreateEvent("IBtmUserCore:DiscoveryEvent");
- config_event = service_context.CreateEvent("IBtmUserCore:ConfigEvent");
- }
-
- ~IBtmUserCore() override {
- service_context.CloseEvent(scan_event);
- service_context.CloseEvent(connection_event);
- service_context.CloseEvent(service_discovery_event);
- service_context.CloseEvent(config_event);
- }
-
- Result AcquireBleScanEvent(Out<bool> out_is_valid,
- OutCopyHandle<Kernel::KReadableEvent> out_event) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_is_valid = true;
- *out_event = &scan_event->GetReadableEvent();
- R_SUCCEED();
- }
-
- Result AcquireBleConnectionEvent(Out<bool> out_is_valid,
- OutCopyHandle<Kernel::KReadableEvent> out_event) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_is_valid = true;
- *out_event = &connection_event->GetReadableEvent();
- R_SUCCEED();
- }
-
- Result AcquireBleServiceDiscoveryEvent(
- Out<bool> out_is_valid, OutCopyHandle<Kernel::KReadableEvent> out_event) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_is_valid = true;
- *out_event = &service_discovery_event->GetReadableEvent();
- R_SUCCEED();
- }
-
- Result AcquireBleMtuConfigEvent(Out<bool> out_is_valid,
- OutCopyHandle<Kernel::KReadableEvent> out_event) {
- LOG_WARNING(Service_BTM, "(STUBBED) called");
-
- *out_is_valid = true;
- *out_event = &config_event->GetReadableEvent();
- R_SUCCEED();
- }
-
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
- }
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, C<&IBtmUserCore::AcquireBleScanEvent>, "AcquireBleScanEvent"},
- FunctionInfo{1, nullptr, "GetBleScanFilterParameter"},
- FunctionInfo{2, nullptr, "GetBleScanFilterParameter2"},
- FunctionInfo{3, nullptr, "StartBleScanForGeneral"},
- FunctionInfo{4, nullptr, "StopBleScanForGeneral"},
- FunctionInfo{5, nullptr, "GetBleScanResultsForGeneral"},
- FunctionInfo{6, nullptr, "StartBleScanForPaired"},
- FunctionInfo{7, nullptr, "StopBleScanForPaired"},
- FunctionInfo{8, nullptr, "StartBleScanForSmartDevice"},
- FunctionInfo{9, nullptr, "StopBleScanForSmartDevice"},
- FunctionInfo{10, nullptr, "GetBleScanResultsForSmartDevice"},
- FunctionInfo{17, C<&IBtmUserCore::AcquireBleConnectionEvent>, "AcquireBleConnectionEvent"},
- FunctionInfo{18, nullptr, "BleConnect"},
- FunctionInfo{19, nullptr, "BleDisconnect"},
- FunctionInfo{20, nullptr, "BleGetConnectionState"},
- FunctionInfo{21, nullptr, "AcquireBlePairingEvent"},
- FunctionInfo{22, nullptr, "BlePairDevice"},
- FunctionInfo{23, nullptr, "BleUnPairDevice"},
- FunctionInfo{24, nullptr, "BleUnPairDevice2"},
- FunctionInfo{25, nullptr, "BleGetPairedDevices"},
- FunctionInfo{26, C<&IBtmUserCore::AcquireBleServiceDiscoveryEvent>, "AcquireBleServiceDiscoveryEvent"},
- FunctionInfo{27, nullptr, "GetGattServices"},
- FunctionInfo{28, nullptr, "GetGattService"},
- FunctionInfo{29, nullptr, "GetGattIncludedServices"},
- FunctionInfo{30, nullptr, "GetBelongingGattService"},
- FunctionInfo{31, nullptr, "GetGattCharacteristics"},
- FunctionInfo{32, nullptr, "GetGattDescriptors"},
- FunctionInfo{33, C<&IBtmUserCore::AcquireBleMtuConfigEvent>, "AcquireBleMtuConfigEvent"},
- FunctionInfo{34, nullptr, "ConfigureBleMtu"},
- FunctionInfo{35, nullptr, "GetBleMtu"},
- FunctionInfo{36, nullptr, "RegisterBleGattDataPath"},
- FunctionInfo{37, nullptr, "UnregisterBleGattDataPath"}
- );
- KernelHelpers::ServiceContext service_context;
- Kernel::KEvent* scan_event;
- Kernel::KEvent* connection_event;
- Kernel::KEvent* service_discovery_event;
- Kernel::KEvent* config_event;
-};
-
-class IBtmUser final : public ServiceFramework<IBtmUser> {
-public:
- explicit IBtmUser(Core::System& system_) : ServiceFramework{system_, "btm:u"} {}
- ~IBtmUser() override = default;
-
- Result GetCore(OutInterface<IBtmUserCore> out_interface) {
- LOG_WARNING(Service_BTM, "called");
-
- *out_interface = std::make_shared<IBtmUserCore>(system);
- R_SUCCEED();
- }
-
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
- }
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, C<&IBtmUser::GetCore>, "GetCore"}
- );
-};
-
-class IBtmDebug final : public ServiceFramework<IBtmDebug> {
-public:
- explicit IBtmDebug(Core::System& system_) : ServiceFramework{system_, "btm:dbg"} {}
- ~IBtmDebug() override = default;
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
- }
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, nullptr, "AcquireDiscoveryEvent"},
- FunctionInfo{1, nullptr, "StartDiscovery"},
- FunctionInfo{2, nullptr, "CancelDiscovery"},
- FunctionInfo{3, nullptr, "GetDeviceProperty"},
- FunctionInfo{4, nullptr, "CreateBond"},
- FunctionInfo{5, nullptr, "CancelBond"},
- FunctionInfo{6, nullptr, "SetTsiMode"},
- FunctionInfo{7, nullptr, "GeneralTest"},
- FunctionInfo{8, nullptr, "HidConnect"},
- FunctionInfo{9, nullptr, "GeneralGet", MakeVersionGate({5,0,0})},
- FunctionInfo{10, nullptr, "GetGattClientDisconnectionReason", MakeVersionGate({5,0,0})},
- FunctionInfo{11, nullptr, "GetBleConnectionParameter", MakeVersionGate({5,1,0})},
- FunctionInfo{12, nullptr, "GetBleConnectionParameterRequest", MakeVersionGate({5,1,0})},
- FunctionInfo{13, nullptr, "GetDiscoveredDevice", MakeVersionGate({12,0,0})},
- FunctionInfo{14, nullptr, "SleepAwakeLoopTest", MakeVersionGate({15,0,0})},
- FunctionInfo{15, nullptr, "SleepTest", MakeVersionGate({15,0,0})},
- FunctionInfo{16, nullptr, "MinimumAwakeTest", MakeVersionGate({15,0,0})},
- FunctionInfo{17, nullptr, "ForceEnableBtm", MakeVersionGate({15,0,0})}
- );
-};
-
class IBtm final : public ServiceFramework<IBtm> {
public:
- explicit IBtm(Core::System& system_) : ServiceFramework{system_, "btm"} {}
-
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, nullptr, "GetState"},
- FunctionInfo{1, nullptr, "GetHostDeviceProperty"},
- FunctionInfo{2, nullptr, "AcquireDeviceConditionEvent"},
- FunctionInfo{3, nullptr, "GetDeviceCondition"},
- FunctionInfo{4, nullptr, "SetBurstMode"},
- FunctionInfo{5, nullptr, "SetSlotMode"},
- FunctionInfo{6, nullptr, "SetBluetoothMode"},
- FunctionInfo{7, nullptr, "SetWlanMode"},
- FunctionInfo{8, nullptr, "AcquireDeviceInfoEvent"},
- FunctionInfo{9, nullptr, "GetDeviceInfo"},
- FunctionInfo{10, nullptr, "AddDeviceInfo"},
- FunctionInfo{11, nullptr, "RemoveDeviceInfo"},
- FunctionInfo{12, nullptr, "IncreaseDeviceInfoOrder"},
- FunctionInfo{13, nullptr, "LlrNotify"},
- FunctionInfo{14, nullptr, "EnableRadio"},
- FunctionInfo{15, nullptr, "DisableRadio"},
- FunctionInfo{16, nullptr, "HidDisconnect"},
- FunctionInfo{17, nullptr, "HidSetRetransmissionMode"},
- FunctionInfo{18, nullptr, "AcquireAwakeReqEvent"},
- FunctionInfo{19, nullptr, "AcquireLlrStateEvent"},
- FunctionInfo{20, nullptr, "IsLlrStarted"},
- FunctionInfo{21, nullptr, "EnableSlotSaving"},
- FunctionInfo{22, nullptr, "ProtectDeviceInfo"},
- FunctionInfo{23, nullptr, "AcquireBleScanEvent"},
- FunctionInfo{24, nullptr, "GetBleScanParameterGeneral"},
- FunctionInfo{25, nullptr, "GetBleScanParameterSmartDevice"},
- FunctionInfo{26, nullptr, "StartBleScanForGeneral"},
- FunctionInfo{27, nullptr, "StopBleScanForGeneral"},
- FunctionInfo{28, nullptr, "GetBleScanResultsForGeneral"},
- FunctionInfo{29, nullptr, "StartBleScanForPairedDevice"},
- FunctionInfo{30, nullptr, "StopBleScanForPairedDevice"},
- FunctionInfo{31, nullptr, "StartBleScanForSmartDevice"},
- FunctionInfo{32, nullptr, "StopBleScanForSmartDevice"},
- FunctionInfo{33, nullptr, "GetBleScanResultsForSmartDevice"},
- FunctionInfo{34, nullptr, "AcquireBleConnectionEvent"},
- FunctionInfo{35, nullptr, "BleConnect"},
- FunctionInfo{36, nullptr, "BleOverrideConnection"},
- FunctionInfo{37, nullptr, "BleDisconnect"},
- FunctionInfo{38, nullptr, "BleGetConnectionState"},
- FunctionInfo{39, nullptr, "BleGetGattClientConditionList"},
- FunctionInfo{40, nullptr, "AcquireBlePairingEvent"},
- FunctionInfo{41, nullptr, "BlePairDevice"},
- FunctionInfo{42, nullptr, "BleUnpairDeviceOnBoth"},
- FunctionInfo{43, nullptr, "BleUnpairDevice"},
- FunctionInfo{44, nullptr, "BleGetPairedAddresses"},
- FunctionInfo{45, nullptr, "AcquireBleServiceDiscoveryEvent"},
- FunctionInfo{46, nullptr, "GetGattServices"},
- FunctionInfo{47, nullptr, "GetGattService"},
- FunctionInfo{48, nullptr, "GetGattIncludedServices"},
- FunctionInfo{49, nullptr, "GetBelongingService"},
- FunctionInfo{50, nullptr, "GetGattCharacteristics"},
- FunctionInfo{51, nullptr, "GetGattDescriptors"},
- FunctionInfo{52, nullptr, "AcquireBleMtuConfigEvent"},
- FunctionInfo{53, nullptr, "ConfigureBleMtu"},
- FunctionInfo{54, nullptr, "GetBleMtu"},
- FunctionInfo{55, nullptr, "RegisterBleGattDataPath"},
- FunctionInfo{56, nullptr, "UnregisterBleGattDataPath"},
- FunctionInfo{57, nullptr, "RegisterAppletResourceUserId"},
- FunctionInfo{58, nullptr, "UnregisterAppletResourceUserId"},
- FunctionInfo{59, nullptr, "SetAppletResourceUserId"},
- FunctionInfo{60, nullptr, "AcquireBleConnectionParameterUpdateEvent", MakeVersionGate({8,0,0})},
- FunctionInfo{61, nullptr, "SetCeLength", MakeVersionGate({8,0,0})},
- FunctionInfo{62, nullptr, "EnsureSlotExpansion", MakeVersionGate({9,0,0})},
- FunctionInfo{63, nullptr, "IsSlotExpansionEnsured", MakeVersionGate({9,0,0})},
- FunctionInfo{64, nullptr, "CancelConnectionTrigger", MakeVersionGate({10,0,0})},
- FunctionInfo{65, nullptr, "GetConnectionCapacity", MakeVersionGate({13,0,0})},
- FunctionInfo{66, nullptr, "GetWlanMode", MakeVersionGate({13,0,0})},
- FunctionInfo{67, nullptr, "IsSlotSavingEnabled", MakeVersionGate({13,0,0})},
- FunctionInfo{68, nullptr, "IsSlotSavingForPairingEnabled", MakeVersionGate({13,0,0})},
- FunctionInfo{69, nullptr, "AcquireAudioDeviceConnectionEvent", MakeVersionGate({13,0,0})},
- FunctionInfo{70, nullptr, "GetConnectedAudioDevices", MakeVersionGate({13,0,0})},
- FunctionInfo{71, nullptr, "SetAudioSourceVolume", MakeVersionGate({13,0,0})},
- FunctionInfo{72, nullptr, "GetAudioSourceVolume", MakeVersionGate({13,0,0})},
- FunctionInfo{73, nullptr, "RequestAudioDeviceConnectionRejection", MakeVersionGate({13,0,0})},
- FunctionInfo{74, nullptr, "CancelAudioDeviceConnectionRejection", MakeVersionGate({13,0,0})},
- FunctionInfo{75, nullptr, "GetPairedAudioDevices", MakeVersionGate({13,0,0})},
- FunctionInfo{76, nullptr, "SetWlanModeWithOption", MakeVersionGate({13,1,0})},
- FunctionInfo{100, nullptr, "AcquireConnectionDisallowedEvent", MakeVersionGate({13,0,0})},
- FunctionInfo{101, nullptr, "GetUsecaseViolationFactor", MakeVersionGate({13,0,0})},
- FunctionInfo{110, nullptr, "GetShortenedDeviceInfo", MakeVersionGate({13,0,0})},
- FunctionInfo{111, nullptr, "AcquirePairingCountUpdateEvent"},//13.0.0+
- FunctionInfo{112, nullptr, "Unknown112", MakeVersionGate({14,0,0}, {14,1,2})},
- FunctionInfo{113, nullptr, "Unknown113", MakeVersionGate({14,0,0}, {14,1,2})},
- FunctionInfo{114, nullptr, "IsFirstAudioControlConnection", MakeVersionGate({14,0,0})},
- FunctionInfo{115, nullptr, "GetShortenedDeviceCondition", MakeVersionGate({14,0,0})},
- FunctionInfo{116, nullptr, "SetAudioSinkVolume", MakeVersionGate({15,0,0})},
- FunctionInfo{117, nullptr, "GetAudioSinkVolume", MakeVersionGate({15,0,0})}
- );
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
+ explicit IBtm(Core::System& system_) : ServiceFramework{system_, "btm"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetState"},
+ {1, nullptr, "GetHostDeviceProperty"},
+ {2, nullptr, "AcquireDeviceConditionEvent"},
+ {3, nullptr, "GetDeviceCondition"},
+ {4, nullptr, "SetBurstMode"},
+ {5, nullptr, "SetSlotMode"},
+ {6, nullptr, "SetBluetoothMode"},
+ {7, nullptr, "SetWlanMode"},
+ {8, nullptr, "AcquireDeviceInfoEvent"},
+ {9, nullptr, "GetDeviceInfo"},
+ {10, nullptr, "AddDeviceInfo"},
+ {11, nullptr, "RemoveDeviceInfo"},
+ {12, nullptr, "IncreaseDeviceInfoOrder"},
+ {13, nullptr, "LlrNotify"},
+ {14, nullptr, "EnableRadio"},
+ {15, nullptr, "DisableRadio"},
+ {16, nullptr, "HidDisconnect"},
+ {17, nullptr, "HidSetRetransmissionMode"},
+ {18, nullptr, "AcquireAwakeReqEvent"},
+ {19, nullptr, "AcquireLlrStateEvent"},
+ {20, nullptr, "IsLlrStarted"},
+ {21, nullptr, "EnableSlotSaving"},
+ {22, nullptr, "ProtectDeviceInfo"},
+ {23, nullptr, "AcquireBleScanEvent"},
+ {24, nullptr, "GetBleScanParameterGeneral"},
+ {25, nullptr, "GetBleScanParameterSmartDevice"},
+ {26, nullptr, "StartBleScanForGeneral"},
+ {27, nullptr, "StopBleScanForGeneral"},
+ {28, nullptr, "GetBleScanResultsForGeneral"},
+ {29, nullptr, "StartBleScanForPairedDevice"},
+ {30, nullptr, "StopBleScanForPairedDevice"},
+ {31, nullptr, "StartBleScanForSmartDevice"},
+ {32, nullptr, "StopBleScanForSmartDevice"},
+ {33, nullptr, "GetBleScanResultsForSmartDevice"},
+ {34, nullptr, "AcquireBleConnectionEvent"},
+ {35, nullptr, "BleConnect"},
+ {36, nullptr, "BleOverrideConnection"},
+ {37, nullptr, "BleDisconnect"},
+ {38, nullptr, "BleGetConnectionState"},
+ {39, nullptr, "BleGetGattClientConditionList"},
+ {40, nullptr, "AcquireBlePairingEvent"},
+ {41, nullptr, "BlePairDevice"},
+ {42, nullptr, "BleUnpairDeviceOnBoth"},
+ {43, nullptr, "BleUnpairDevice"},
+ {44, nullptr, "BleGetPairedAddresses"},
+ {45, nullptr, "AcquireBleServiceDiscoveryEvent"},
+ {46, nullptr, "GetGattServices"},
+ {47, nullptr, "GetGattService"},
+ {48, nullptr, "GetGattIncludedServices"},
+ {49, nullptr, "GetBelongingService"},
+ {50, nullptr, "GetGattCharacteristics"},
+ {51, nullptr, "GetGattDescriptors"},
+ {52, nullptr, "AcquireBleMtuConfigEvent"},
+ {53, nullptr, "ConfigureBleMtu"},
+ {54, nullptr, "GetBleMtu"},
+ {55, nullptr, "RegisterBleGattDataPath"},
+ {56, nullptr, "UnregisterBleGattDataPath"},
+ {57, nullptr, "RegisterAppletResourceUserId"},
+ {58, nullptr, "UnregisterAppletResourceUserId"},
+ {59, nullptr, "SetAppletResourceUserId"},
+ {60, nullptr, "AcquireBleConnectionParameterUpdateEvent"}, //8.0.0+
+ {61, nullptr, "SetCeLength"}, //8.0.0+
+ {62, nullptr, "EnsureSlotExpansion"}, //9.0.0+
+ {63, nullptr, "IsSlotExpansionEnsured"}, //9.0.0+
+ {64, nullptr, "CancelConnectionTrigger"}, //10.0.0+
+ {65, nullptr, "GetConnectionCapacity"}, //13.0.0+
+ {66, nullptr, "GetWlanMode"}, //13.0.0+
+ {67, nullptr, "IsSlotSavingEnabled"}, //13.0.0+
+ {68, nullptr, "IsSlotSavingForPairingEnabled"}, //13.0.0+
+ {69, nullptr, "AcquireAudioDeviceConnectionEvent"}, //13.0.0+
+ {70, nullptr, "GetConnectedAudioDevices"}, //13.0.0+
+ {71, nullptr, "SetAudioSourceVolume"}, //13.0.0+
+ {72, nullptr, "GetAudioSourceVolume"}, //13.0.0+
+ {73, nullptr, "RequestAudioDeviceConnectionRejection"}, //13.0.0+
+ {74, nullptr, "CancelAudioDeviceConnectionRejection"}, //13.0.0+
+ {75, nullptr, "GetPairedAudioDevices"}, //13.0.0+
+ {76, nullptr, "SetWlanModeWithOption"}, //13.1.0+
+ {100, nullptr, "AcquireConnectionDisallowedEvent"}, //13.0.0+
+ {101, nullptr, "GetUsecaseViolationFactor"}, //13.0.0+
+ {110, nullptr, "GetShortenedDeviceInfo"}, //13.0.0+
+ {111, nullptr, "AcquirePairingCountUpdateEvent"},//13.0.0+
+ {112, nullptr, "Unknown112"}, //14.0.0-14.1.2
+ {113, nullptr, "Unknown113"}, //14.0.0-14.1.2
+ {114, nullptr, "IsFirstAudioControlConnection"}, //14.0.0+
+ {115, nullptr, "GetShortenedDeviceCondition"}, //14.0.0+
+ {116, nullptr, "SetAudioSinkVolume"}, //15.0.0+
+ {117, nullptr, "GetAudioSinkVolume"}, //15.0.0+
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
}
};