Browse Source
Merge pull request #13031 from german77/btm-interfcae
Merge pull request #13031 from german77/btm-interfcae
service: btm: Migrate service to new IPCnce_cpp
committed by
GitHub
13 changed files with 521 additions and 267 deletions
-
10src/core/CMakeLists.txt
-
272src/core/hle/service/btm/btm.cpp
-
4src/core/hle/service/btm/btm.h
-
33src/core/hle/service/btm/btm_debug.cpp
-
21src/core/hle/service/btm/btm_debug.h
-
31src/core/hle/service/btm/btm_system.cpp
-
25src/core/hle/service/btm/btm_system.h
-
127src/core/hle/service/btm/btm_system_core.cpp
-
60src/core/hle/service/btm/btm_system_core.h
-
30src/core/hle/service/btm/btm_user.cpp
-
25src/core/hle/service/btm/btm_user.h
-
103src/core/hle/service/btm/btm_user_core.cpp
-
47src/core/hle/service/btm/btm_user_core.h
@ -0,0 +1,33 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
|
||||
|
#include "core/hle/service/btm/btm_debug.h"
|
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
|
||||
|
IBtmDebug::IBtmDebug(Core::System& system_) : ServiceFramework{system_, "btm:dbg"} { |
||||
|
// clang-format off
|
||||
|
static const FunctionInfo functions[] = { |
||||
|
{0, nullptr, "AcquireDiscoveryEvent"}, |
||||
|
{1, nullptr, "StartDiscovery"}, |
||||
|
{2, nullptr, "CancelDiscovery"}, |
||||
|
{3, nullptr, "GetDeviceProperty"}, |
||||
|
{4, nullptr, "CreateBond"}, |
||||
|
{5, nullptr, "CancelBond"}, |
||||
|
{6, nullptr, "SetTsiMode"}, |
||||
|
{7, nullptr, "GeneralTest"}, |
||||
|
{8, nullptr, "HidConnect"}, |
||||
|
{9, nullptr, "GeneralGet"}, |
||||
|
{10, nullptr, "GetGattClientDisconnectionReason"}, |
||||
|
{11, nullptr, "GetBleConnectionParameter"}, |
||||
|
{12, nullptr, "GetBleConnectionParameterRequest"}, |
||||
|
{13, nullptr, "Unknown13"}, |
||||
|
}; |
||||
|
// clang-format on
|
||||
|
|
||||
|
RegisterHandlers(functions); |
||||
|
} |
||||
|
|
||||
|
IBtmDebug::~IBtmDebug() = default; |
||||
|
|
||||
|
} // namespace Service::BTM
|
||||
@ -0,0 +1,21 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include "core/hle/service/cmif_types.h" |
||||
|
#include "core/hle/service/service.h" |
||||
|
|
||||
|
namespace Core { |
||||
|
class System; |
||||
|
} |
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
|
||||
|
class IBtmDebug final : public ServiceFramework<IBtmDebug> { |
||||
|
public: |
||||
|
explicit IBtmDebug(Core::System& system_); |
||||
|
~IBtmDebug() override; |
||||
|
}; |
||||
|
|
||||
|
} // namespace Service::BTM |
||||
@ -0,0 +1,31 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
|
||||
|
#include "common/logging/log.h"
|
||||
|
#include "core/hle/service/btm/btm_system.h"
|
||||
|
#include "core/hle/service/btm/btm_system_core.h"
|
||||
|
#include "core/hle/service/cmif_serialization.h"
|
||||
|
#include "core/hle/service/service.h"
|
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
|
||||
|
IBtmSystem::IBtmSystem(Core::System& system_) : ServiceFramework{system_, "btm:sys"} { |
||||
|
// clang-format off
|
||||
|
static const FunctionInfo functions[] = { |
||||
|
{0, C<&IBtmSystem::GetCore>, "GetCore"}, |
||||
|
}; |
||||
|
// clang-format on
|
||||
|
|
||||
|
RegisterHandlers(functions); |
||||
|
} |
||||
|
|
||||
|
IBtmSystem::~IBtmSystem() = default; |
||||
|
|
||||
|
Result IBtmSystem::GetCore(OutInterface<IBtmSystemCore> out_interface) { |
||||
|
LOG_WARNING(Service_BTM, "called"); |
||||
|
|
||||
|
*out_interface = std::make_shared<IBtmSystemCore>(system); |
||||
|
R_SUCCEED(); |
||||
|
} |
||||
|
|
||||
|
} // namespace Service::BTM
|
||||
@ -0,0 +1,25 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include "core/hle/service/cmif_types.h" |
||||
|
#include "core/hle/service/service.h" |
||||
|
|
||||
|
namespace Core { |
||||
|
class System; |
||||
|
} |
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
class IBtmSystemCore; |
||||
|
|
||||
|
class IBtmSystem final : public ServiceFramework<IBtmSystem> { |
||||
|
public: |
||||
|
explicit IBtmSystem(Core::System& system_); |
||||
|
~IBtmSystem() override; |
||||
|
|
||||
|
private: |
||||
|
Result GetCore(OutInterface<IBtmSystemCore> out_interface); |
||||
|
}; |
||||
|
|
||||
|
} // namespace Service::BTM |
||||
@ -0,0 +1,127 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
|
||||
|
#include "common/logging/log.h"
|
||||
|
#include "core/hle/service/btm/btm_system_core.h"
|
||||
|
#include "core/hle/service/cmif_serialization.h"
|
||||
|
#include "core/hle/service/set/system_settings_server.h"
|
||||
|
#include "core/hle/service/sm/sm.h"
|
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
|
||||
|
IBtmSystemCore::IBtmSystemCore(Core::System& system_) |
||||
|
: ServiceFramework{system_, "IBtmSystemCore"}, service_context{system_, "IBtmSystemCore"} { |
||||
|
// clang-format off
|
||||
|
static const FunctionInfo functions[] = { |
||||
|
{0, C<&IBtmSystemCore::StartGamepadPairing>, "StartGamepadPairing"}, |
||||
|
{1, C<&IBtmSystemCore::CancelGamepadPairing>, "CancelGamepadPairing"}, |
||||
|
{2, nullptr, "ClearGamepadPairingDatabase"}, |
||||
|
{3, nullptr, "GetPairedGamepadCount"}, |
||||
|
{4, C<&IBtmSystemCore::EnableRadio>, "EnableRadio"}, |
||||
|
{5, C<&IBtmSystemCore::DisableRadio>, "DisableRadio"}, |
||||
|
{6, C<&IBtmSystemCore::IsRadioEnabled>, "IsRadioEnabled"}, |
||||
|
{7, C<&IBtmSystemCore::AcquireRadioEvent>, "AcquireRadioEvent"}, |
||||
|
{8, nullptr, "AcquireGamepadPairingEvent"}, |
||||
|
{9, nullptr, "IsGamepadPairingStarted"}, |
||||
|
{10, nullptr, "StartAudioDeviceDiscovery"}, |
||||
|
{11, nullptr, "StopAudioDeviceDiscovery"}, |
||||
|
{12, nullptr, "IsDiscoveryingAudioDevice"}, |
||||
|
{13, nullptr, "GetDiscoveredAudioDevice"}, |
||||
|
{14, C<&IBtmSystemCore::AcquireAudioDeviceConnectionEvent>, "AcquireAudioDeviceConnectionEvent"}, |
||||
|
{15, nullptr, "ConnectAudioDevice"}, |
||||
|
{16, nullptr, "IsConnectingAudioDevice"}, |
||||
|
{17, C<&IBtmSystemCore::GetConnectedAudioDevices>, "GetConnectedAudioDevices"}, |
||||
|
{18, nullptr, "DisconnectAudioDevice"}, |
||||
|
{19, nullptr, "AcquirePairedAudioDeviceInfoChangedEvent"}, |
||||
|
{20, C<&IBtmSystemCore::GetPairedAudioDevices>, "GetPairedAudioDevices"}, |
||||
|
{21, nullptr, "RemoveAudioDevicePairing"}, |
||||
|
{22, C<&IBtmSystemCore::RequestAudioDeviceConnectionRejection>, "RequestAudioDeviceConnectionRejection"}, |
||||
|
{23, C<&IBtmSystemCore::CancelAudioDeviceConnectionRejection>, "CancelAudioDeviceConnectionRejection"} |
||||
|
}; |
||||
|
// clang-format on
|
||||
|
|
||||
|
RegisterHandlers(functions); |
||||
|
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::~IBtmSystemCore() { |
||||
|
service_context.CloseEvent(radio_event); |
||||
|
service_context.CloseEvent(audio_device_connection_event); |
||||
|
} |
||||
|
|
||||
|
Result IBtmSystemCore::StartGamepadPairing() { |
||||
|
LOG_WARNING(Service_BTM, "(STUBBED) called"); |
||||
|
R_SUCCEED(); |
||||
|
} |
||||
|
|
||||
|
Result IBtmSystemCore::CancelGamepadPairing() { |
||||
|
LOG_WARNING(Service_BTM, "(STUBBED) called"); |
||||
|
R_SUCCEED(); |
||||
|
} |
||||
|
|
||||
|
Result IBtmSystemCore::EnableRadio() { |
||||
|
LOG_DEBUG(Service_BTM, "called"); |
||||
|
|
||||
|
R_RETURN(m_set_sys->SetBluetoothEnableFlag(true)); |
||||
|
} |
||||
|
Result IBtmSystemCore::DisableRadio() { |
||||
|
LOG_DEBUG(Service_BTM, "called"); |
||||
|
|
||||
|
R_RETURN(m_set_sys->SetBluetoothEnableFlag(false)); |
||||
|
} |
||||
|
|
||||
|
Result IBtmSystemCore::IsRadioEnabled(Out<bool> out_is_enabled) { |
||||
|
LOG_DEBUG(Service_BTM, "called"); |
||||
|
|
||||
|
R_RETURN(m_set_sys->GetBluetoothEnableFlag(out_is_enabled)); |
||||
|
} |
||||
|
|
||||
|
Result IBtmSystemCore::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 IBtmSystemCore::AcquireAudioDeviceConnectionEvent( |
||||
|
OutCopyHandle<Kernel::KReadableEvent> out_event) { |
||||
|
LOG_WARNING(Service_BTM, "(STUBBED) called"); |
||||
|
|
||||
|
*out_event = &audio_device_connection_event->GetReadableEvent(); |
||||
|
R_SUCCEED(); |
||||
|
} |
||||
|
|
||||
|
Result IBtmSystemCore::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 IBtmSystemCore::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 IBtmSystemCore::RequestAudioDeviceConnectionRejection(ClientAppletResourceUserId aruid) { |
||||
|
LOG_WARNING(Service_BTM, "(STUBBED) called, applet_resource_user_id={}", aruid.pid); |
||||
|
R_SUCCEED(); |
||||
|
} |
||||
|
|
||||
|
Result IBtmSystemCore::CancelAudioDeviceConnectionRejection(ClientAppletResourceUserId aruid) { |
||||
|
LOG_WARNING(Service_BTM, "(STUBBED) called, applet_resource_user_id={}", aruid.pid); |
||||
|
R_SUCCEED(); |
||||
|
} |
||||
|
|
||||
|
} // namespace Service::BTM
|
||||
@ -0,0 +1,60 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include "core/hle/service/cmif_types.h" |
||||
|
#include "core/hle/service/kernel_helpers.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_); |
||||
|
~IBtmSystemCore() override; |
||||
|
|
||||
|
private: |
||||
|
Result StartGamepadPairing(); |
||||
|
Result CancelGamepadPairing(); |
||||
|
Result EnableRadio(); |
||||
|
Result DisableRadio(); |
||||
|
Result IsRadioEnabled(Out<bool> out_is_enabled); |
||||
|
|
||||
|
Result AcquireRadioEvent(Out<bool> out_is_valid, |
||||
|
OutCopyHandle<Kernel::KReadableEvent> out_event); |
||||
|
|
||||
|
Result AcquireAudioDeviceConnectionEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); |
||||
|
|
||||
|
Result GetConnectedAudioDevices( |
||||
|
Out<s32> out_count, |
||||
|
OutArray<std::array<u8, 0xFF>, BufferAttr_HipcPointer> out_audio_devices); |
||||
|
|
||||
|
Result GetPairedAudioDevices( |
||||
|
Out<s32> out_count, |
||||
|
OutArray<std::array<u8, 0xFF>, BufferAttr_HipcPointer> out_audio_devices); |
||||
|
|
||||
|
Result RequestAudioDeviceConnectionRejection(ClientAppletResourceUserId aruid); |
||||
|
Result CancelAudioDeviceConnectionRejection(ClientAppletResourceUserId aruid); |
||||
|
|
||||
|
KernelHelpers::ServiceContext service_context; |
||||
|
|
||||
|
Kernel::KEvent* radio_event; |
||||
|
Kernel::KEvent* audio_device_connection_event; |
||||
|
std::shared_ptr<Service::Set::ISystemSettingsServer> m_set_sys; |
||||
|
}; |
||||
|
|
||||
|
} // namespace Service::BTM |
||||
@ -0,0 +1,30 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
|
||||
|
#include "common/logging/log.h"
|
||||
|
#include "core/hle/service/btm/btm_user.h"
|
||||
|
#include "core/hle/service/btm/btm_user_core.h"
|
||||
|
#include "core/hle/service/cmif_serialization.h"
|
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
|
||||
|
IBtmUser::IBtmUser(Core::System& system_) : ServiceFramework{system_, "btm:u"} { |
||||
|
// clang-format off
|
||||
|
static const FunctionInfo functions[] = { |
||||
|
{0, C<&IBtmUser::GetCore>, "GetCore"}, |
||||
|
}; |
||||
|
// clang-format on
|
||||
|
|
||||
|
RegisterHandlers(functions); |
||||
|
} |
||||
|
|
||||
|
IBtmUser::~IBtmUser() = default; |
||||
|
|
||||
|
Result IBtmUser::GetCore(OutInterface<IBtmUserCore> out_interface) { |
||||
|
LOG_WARNING(Service_BTM, "called"); |
||||
|
|
||||
|
*out_interface = std::make_shared<IBtmUserCore>(system); |
||||
|
R_SUCCEED(); |
||||
|
} |
||||
|
|
||||
|
} // namespace Service::BTM
|
||||
@ -0,0 +1,25 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include "core/hle/service/cmif_types.h" |
||||
|
#include "core/hle/service/service.h" |
||||
|
|
||||
|
namespace Core { |
||||
|
class System; |
||||
|
} |
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
class IBtmUserCore; |
||||
|
|
||||
|
class IBtmUser final : public ServiceFramework<IBtmUser> { |
||||
|
public: |
||||
|
explicit IBtmUser(Core::System& system_); |
||||
|
~IBtmUser() override; |
||||
|
|
||||
|
private: |
||||
|
Result GetCore(OutInterface<IBtmUserCore> out_interface); |
||||
|
}; |
||||
|
|
||||
|
} // namespace Service::BTM |
||||
@ -0,0 +1,103 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
|
||||
|
#include <memory>
|
||||
|
|
||||
|
#include "common/logging/log.h"
|
||||
|
#include "core/core.h"
|
||||
|
#include "core/hle/kernel/k_event.h"
|
||||
|
#include "core/hle/service/btm/btm_user_core.h"
|
||||
|
#include "core/hle/service/cmif_serialization.h"
|
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
|
||||
|
IBtmUserCore::IBtmUserCore(Core::System& system_) |
||||
|
: ServiceFramework{system_, "IBtmUserCore"}, service_context{system_, "IBtmUserCore"} { |
||||
|
// clang-format off
|
||||
|
static const FunctionInfo functions[] = { |
||||
|
{0, C<&IBtmUserCore::AcquireBleScanEvent>, "AcquireBleScanEvent"}, |
||||
|
{1, nullptr, "GetBleScanFilterParameter"}, |
||||
|
{2, nullptr, "GetBleScanFilterParameter2"}, |
||||
|
{3, nullptr, "StartBleScanForGeneral"}, |
||||
|
{4, nullptr, "StopBleScanForGeneral"}, |
||||
|
{5, nullptr, "GetBleScanResultsForGeneral"}, |
||||
|
{6, nullptr, "StartBleScanForPaired"}, |
||||
|
{7, nullptr, "StopBleScanForPaired"}, |
||||
|
{8, nullptr, "StartBleScanForSmartDevice"}, |
||||
|
{9, nullptr, "StopBleScanForSmartDevice"}, |
||||
|
{10, nullptr, "GetBleScanResultsForSmartDevice"}, |
||||
|
{17, C<&IBtmUserCore::AcquireBleConnectionEvent>, "AcquireBleConnectionEvent"}, |
||||
|
{18, nullptr, "BleConnect"}, |
||||
|
{19, nullptr, "BleDisconnect"}, |
||||
|
{20, nullptr, "BleGetConnectionState"}, |
||||
|
{21, nullptr, "AcquireBlePairingEvent"}, |
||||
|
{22, nullptr, "BlePairDevice"}, |
||||
|
{23, nullptr, "BleUnPairDevice"}, |
||||
|
{24, nullptr, "BleUnPairDevice2"}, |
||||
|
{25, nullptr, "BleGetPairedDevices"}, |
||||
|
{26, C<&IBtmUserCore::AcquireBleServiceDiscoveryEvent>, "AcquireBleServiceDiscoveryEvent"}, |
||||
|
{27, nullptr, "GetGattServices"}, |
||||
|
{28, nullptr, "GetGattService"}, |
||||
|
{29, nullptr, "GetGattIncludedServices"}, |
||||
|
{30, nullptr, "GetBelongingGattService"}, |
||||
|
{31, nullptr, "GetGattCharacteristics"}, |
||||
|
{32, nullptr, "GetGattDescriptors"}, |
||||
|
{33, C<&IBtmUserCore::AcquireBleMtuConfigEvent>, "AcquireBleMtuConfigEvent"}, |
||||
|
{34, nullptr, "ConfigureBleMtu"}, |
||||
|
{35, nullptr, "GetBleMtu"}, |
||||
|
{36, nullptr, "RegisterBleGattDataPath"}, |
||||
|
{37, nullptr, "UnregisterBleGattDataPath"}, |
||||
|
}; |
||||
|
// clang-format on
|
||||
|
RegisterHandlers(functions); |
||||
|
|
||||
|
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::~IBtmUserCore() { |
||||
|
service_context.CloseEvent(scan_event); |
||||
|
service_context.CloseEvent(connection_event); |
||||
|
service_context.CloseEvent(service_discovery_event); |
||||
|
service_context.CloseEvent(config_event); |
||||
|
} |
||||
|
|
||||
|
Result IBtmUserCore::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 IBtmUserCore::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 IBtmUserCore::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 IBtmUserCore::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(); |
||||
|
} |
||||
|
|
||||
|
} // namespace Service::BTM
|
||||
@ -0,0 +1,47 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include "core/hle/service/cmif_types.h" |
||||
|
#include "core/hle/service/kernel_helpers.h" |
||||
|
#include "core/hle/service/service.h" |
||||
|
|
||||
|
namespace Kernel { |
||||
|
class KEvent; |
||||
|
class KReadableEvent; |
||||
|
} // namespace Kernel |
||||
|
|
||||
|
namespace Core { |
||||
|
class System; |
||||
|
} |
||||
|
|
||||
|
namespace Service::BTM { |
||||
|
|
||||
|
class IBtmUserCore final : public ServiceFramework<IBtmUserCore> { |
||||
|
public: |
||||
|
explicit IBtmUserCore(Core::System& system_); |
||||
|
~IBtmUserCore() override; |
||||
|
|
||||
|
private: |
||||
|
Result AcquireBleScanEvent(Out<bool> out_is_valid, |
||||
|
OutCopyHandle<Kernel::KReadableEvent> out_event); |
||||
|
|
||||
|
Result AcquireBleConnectionEvent(Out<bool> out_is_valid, |
||||
|
OutCopyHandle<Kernel::KReadableEvent> out_event); |
||||
|
|
||||
|
Result AcquireBleServiceDiscoveryEvent(Out<bool> out_is_valid, |
||||
|
OutCopyHandle<Kernel::KReadableEvent> out_event); |
||||
|
|
||||
|
Result AcquireBleMtuConfigEvent(Out<bool> out_is_valid, |
||||
|
OutCopyHandle<Kernel::KReadableEvent> out_event); |
||||
|
|
||||
|
KernelHelpers::ServiceContext service_context; |
||||
|
|
||||
|
Kernel::KEvent* scan_event; |
||||
|
Kernel::KEvent* connection_event; |
||||
|
Kernel::KEvent* service_discovery_event; |
||||
|
Kernel::KEvent* config_event; |
||||
|
}; |
||||
|
|
||||
|
} // namespace Service::BTM |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue