aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/btdrv/btdrv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/btdrv/btdrv.cpp')
-rw-r--r--src/core/hle/service/btdrv/btdrv.cpp312
1 files changed, 156 insertions, 156 deletions
diff --git a/src/core/hle/service/btdrv/btdrv.cpp b/src/core/hle/service/btdrv/btdrv.cpp
index 913c9475e9..256a722a84 100644
--- a/src/core/hle/service/btdrv/btdrv.cpp
+++ b/src/core/hle/service/btdrv/btdrv.cpp
@@ -20,13 +20,24 @@ namespace Service::BtDrv {
class IBluetoothUser final : public ServiceFramework<IBluetoothUser> {
public:
explicit IBluetoothUser(Core::System& system_)
- : ServiceFramework{system_, "bt"}
- , service_context{system_, "bt"} {
- register_event = service_context.CreateEvent("BT:RegisterEvent");
- }
+ : ServiceFramework{system_, "bt"}, service_context{system_, "bt"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "LeClientReadCharacteristic"},
+ {1, nullptr, "LeClientReadDescriptor"},
+ {2, nullptr, "LeClientWriteCharacteristic"},
+ {3, nullptr, "LeClientWriteDescriptor"},
+ {4, nullptr, "LeClientRegisterNotification"},
+ {5, nullptr, "LeClientDeregisterNotification"},
+ {6, nullptr, "SetLeResponse"},
+ {7, nullptr, "LeSendIndication"},
+ {8, nullptr, "GetLeEventInfo"},
+ {9, C<&IBluetoothUser::RegisterBleEvent>, "RegisterBleEvent"},
+ };
+ // clang-format on
+ RegisterHandlers(functions);
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
+ register_event = service_context.CreateEvent("BT:RegisterEvent");
}
~IBluetoothUser() override {
@@ -41,28 +52,151 @@ private:
R_SUCCEED();
}
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, nullptr, "LeClientReadCharacteristic"},
- FunctionInfo{1, nullptr, "LeClientReadDescriptor"},
- FunctionInfo{2, nullptr, "LeClientWriteCharacteristic"},
- FunctionInfo{3, nullptr, "LeClientWriteDescriptor"},
- FunctionInfo{4, nullptr, "LeClientRegisterNotification"},
- FunctionInfo{5, nullptr, "LeClientDeregisterNotification"},
- FunctionInfo{6, nullptr, "SetLeResponse"},
- FunctionInfo{7, nullptr, "LeSendIndication"},
- FunctionInfo{8, nullptr, "GetLeEventInfo"},
- FunctionInfo{9, C<&IBluetoothUser::RegisterBleEvent>, "RegisterBleEvent"}
- );
KernelHelpers::ServiceContext service_context;
+
Kernel::KEvent* register_event;
};
class IBluetoothDriver final : public ServiceFramework<IBluetoothDriver> {
public:
- explicit IBluetoothDriver(Core::System& system_) : ServiceFramework{system_, "btdrv"} {}
-
- std::optional<FunctionInfoBase> FindRequest(u32 key) override {
- return HandlerTableGenerateWithFind(key, functions);
+ explicit IBluetoothDriver(Core::System& system_) : ServiceFramework{system_, "btdrv"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "InitializeBluetoothDriver"},
+ {1, nullptr, "InitializeBluetooth"},
+ {2, nullptr, "EnableBluetooth"},
+ {3, nullptr, "DisableBluetooth"},
+ {4, nullptr, "FinalizeBluetooth"},
+ {5, nullptr, "GetAdapterProperties"},
+ {6, nullptr, "GetAdapterProperty"},
+ {7, nullptr, "SetAdapterProperty"},
+ {8, nullptr, "StartInquiry"},
+ {9, nullptr, "StopInquiry"},
+ {10, nullptr, "CreateBond"},
+ {11, nullptr, "RemoveBond"},
+ {12, nullptr, "CancelBond"},
+ {13, nullptr, "RespondToPinRequest"},
+ {14, nullptr, "RespondToSspRequest"},
+ {15, nullptr, "GetEventInfo"},
+ {16, nullptr, "InitializeHid"},
+ {17, nullptr, "OpenHidConnection"},
+ {18, nullptr, "CloseHidConnection"},
+ {19, nullptr, "WriteHidData"},
+ {20, nullptr, "WriteHidData2"},
+ {21, nullptr, "SetHidReport"},
+ {22, nullptr, "GetHidReport"},
+ {23, nullptr, "TriggerConnection"},
+ {24, nullptr, "AddPairedDeviceInfo"},
+ {25, nullptr, "GetPairedDeviceInfo"},
+ {26, nullptr, "FinalizeHid"},
+ {27, nullptr, "GetHidEventInfo"},
+ {28, nullptr, "SetTsi"},
+ {29, nullptr, "EnableBurstMode"},
+ {30, nullptr, "SetZeroRetransmission"},
+ {31, nullptr, "EnableMcMode"},
+ {32, nullptr, "EnableLlrScan"},
+ {33, nullptr, "DisableLlrScan"},
+ {34, C<&IBluetoothDriver::EnableRadio>, "EnableRadio"},
+ {35, nullptr, "SetVisibility"},
+ {36, nullptr, "EnableTbfcScan"},
+ {37, nullptr, "RegisterHidReportEvent"},
+ {38, nullptr, "GetHidReportEventInfo"},
+ {39, nullptr, "GetLatestPlr"},
+ {40, nullptr, "GetPendingConnections"},
+ {41, nullptr, "GetChannelMap"},
+ {42, nullptr, "EnableTxPowerBoostSetting"},
+ {43, nullptr, "IsTxPowerBoostSettingEnabled"},
+ {44, nullptr, "EnableAfhSetting"},
+ {45, nullptr, "IsAfhSettingEnabled"},
+ {46, nullptr, "InitializeBle"},
+ {47, nullptr, "EnableBle"},
+ {48, nullptr, "DisableBle"},
+ {49, nullptr, "FinalizeBle"},
+ {50, nullptr, "SetBleVisibility"},
+ {51, nullptr, "SetBleConnectionParameter"},
+ {52, nullptr, "SetBleDefaultConnectionParameter"},
+ {53, nullptr, "SetBleAdvertiseData"},
+ {54, nullptr, "SetBleAdvertiseParameter"},
+ {55, nullptr, "StartBleScan"},
+ {56, nullptr, "StopBleScan"},
+ {57, nullptr, "AddBleScanFilterCondition"},
+ {58, nullptr, "DeleteBleScanFilterCondition"},
+ {59, nullptr, "DeleteBleScanFilter"},
+ {60, nullptr, "ClearBleScanFilters"},
+ {61, nullptr, "EnableBleScanFilter"},
+ {62, nullptr, "RegisterGattClient"},
+ {63, nullptr, "UnregisterGattClient"},
+ {64, nullptr, "UnregisterAllGattClients"},
+ {65, nullptr, "ConnectGattServer"},
+ {66, nullptr, "CancelConnectGattServer"},
+ {67, nullptr, "DisconnectGattServer"},
+ {68, nullptr, "GetGattAttribute"},
+ {69, nullptr, "GetGattService"},
+ {70, nullptr, "ConfigureAttMtu"},
+ {71, nullptr, "RegisterGattServer"},
+ {72, nullptr, "UnregisterGattServer"},
+ {73, nullptr, "ConnectGattClient"},
+ {74, nullptr, "DisconnectGattClient"},
+ {75, nullptr, "AddGattService"},
+ {76, nullptr, "EnableGattService"},
+ {77, nullptr, "AddGattCharacteristic"},
+ {78, nullptr, "AddGattDescriptor"},
+ {79, nullptr, "GetBleManagedEventInfo"},
+ {80, nullptr, "GetGattFirstCharacteristic"},
+ {81, nullptr, "GetGattNextCharacteristic"},
+ {82, nullptr, "GetGattFirstDescriptor"},
+ {83, nullptr, "GetGattNextDescriptor"},
+ {84, nullptr, "RegisterGattManagedDataPath"},
+ {85, nullptr, "UnregisterGattManagedDataPath"},
+ {86, nullptr, "RegisterGattHidDataPath"},
+ {87, nullptr, "UnregisterGattHidDataPath"},
+ {88, nullptr, "RegisterGattDataPath"},
+ {89, nullptr, "UnregisterGattDataPath"},
+ {90, nullptr, "ReadGattCharacteristic"},
+ {91, nullptr, "ReadGattDescriptor"},
+ {92, nullptr, "WriteGattCharacteristic"},
+ {93, nullptr, "WriteGattDescriptor"},
+ {94, nullptr, "RegisterGattNotification"},
+ {95, nullptr, "UnregisterGattNotification"},
+ {96, nullptr, "GetLeHidEventInfo"},
+ {97, nullptr, "RegisterBleHidEvent"},
+ {98, nullptr, "SetBleScanParameter"},
+ {99, nullptr, "MoveToSecondaryPiconet"},
+ {100, nullptr, "IsBluetoothEnabled"},
+ {128, nullptr, "AcquireAudioEvent"},
+ {129, nullptr, "GetAudioEventInfo"},
+ {130, nullptr, "OpenAudioConnection"},
+ {131, nullptr, "CloseAudioConnection"},
+ {132, nullptr, "OpenAudioOut"},
+ {133, nullptr, "CloseAudioOut"},
+ {134, nullptr, "AcquireAudioOutStateChangedEvent"},
+ {135, nullptr, "StartAudioOut"},
+ {136, nullptr, "StopAudioOut"},
+ {137, nullptr, "GetAudioOutState"},
+ {138, nullptr, "GetAudioOutFeedingCodec"},
+ {139, nullptr, "GetAudioOutFeedingParameter"},
+ {140, nullptr, "AcquireAudioOutBufferAvailableEvent"},
+ {141, nullptr, "SendAudioData"},
+ {142, nullptr, "AcquireAudioControlInputStateChangedEvent"},
+ {143, nullptr, "GetAudioControlInputState"},
+ {144, nullptr, "AcquireAudioConnectionStateChangedEvent"},
+ {145, nullptr, "GetConnectedAudioDevice"},
+ {146, nullptr, "CloseAudioControlInput"},
+ {147, nullptr, "RegisterAudioControlNotification"},
+ {148, nullptr, "SendAudioControlPassthroughCommand"},
+ {149, nullptr, "SendAudioControlSetAbsoluteVolumeCommand"},
+ {150, nullptr, "AcquireAudioSinkVolumeLocallyChangedEvent"},
+ {151, nullptr, "AcquireAudioSinkVolumeUpdateRequestCompletedEvent"},
+ {152, nullptr, "GetAudioSinkVolume"},
+ {153, nullptr, "RequestUpdateAudioSinkVolume"},
+ {154, nullptr, "IsAudioSinkVolumeSupported"},
+ {256, nullptr, "IsManufacturingMode"},
+ {257, nullptr, "EmulateBluetoothCrash"},
+ {258, nullptr, "GetBleChannelMap"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
}
private:
@@ -70,140 +204,6 @@ private:
LOG_WARNING(Service_BTDRV, "(STUBBED) called");
R_SUCCEED();
}
-
- static constexpr auto functions = CreateStaticMap(
- FunctionInfo{0, nullptr, "InitializeBluetoothDriver"},
- FunctionInfo{1, nullptr, "InitializeBluetooth"},
- FunctionInfo{2, nullptr, "EnableBluetooth"},
- FunctionInfo{3, nullptr, "DisableBluetooth"},
- FunctionInfo{4, nullptr, "FinalizeBluetooth"},
- FunctionInfo{5, nullptr, "GetAdapterProperties"},
- FunctionInfo{6, nullptr, "GetAdapterProperty"},
- FunctionInfo{7, nullptr, "SetAdapterProperty"},
- FunctionInfo{8, nullptr, "StartInquiry"},
- FunctionInfo{9, nullptr, "StopInquiry"},
- FunctionInfo{10, nullptr, "CreateBond"},
- FunctionInfo{11, nullptr, "RemoveBond"},
- FunctionInfo{12, nullptr, "CancelBond"},
- FunctionInfo{13, nullptr, "RespondToPinRequest"},
- FunctionInfo{14, nullptr, "RespondToSspRequest"},
- FunctionInfo{15, nullptr, "GetEventInfo"},
- FunctionInfo{16, nullptr, "InitializeHid"},
- FunctionInfo{17, nullptr, "OpenHidConnection"},
- FunctionInfo{18, nullptr, "CloseHidConnection"},
- FunctionInfo{19, nullptr, "WriteHidData"},
- FunctionInfo{20, nullptr, "WriteHidData2"},
- FunctionInfo{21, nullptr, "SetHidReport"},
- FunctionInfo{22, nullptr, "GetHidReport"},
- FunctionInfo{23, nullptr, "TriggerConnection"},
- FunctionInfo{24, nullptr, "AddPairedDeviceInfo"},
- FunctionInfo{25, nullptr, "GetPairedDeviceInfo"},
- FunctionInfo{26, nullptr, "FinalizeHid"},
- FunctionInfo{27, nullptr, "GetHidEventInfo"},
- FunctionInfo{28, nullptr, "SetTsi"},
- FunctionInfo{29, nullptr, "EnableBurstMode"},
- FunctionInfo{30, nullptr, "SetZeroRetransmission"},
- FunctionInfo{31, nullptr, "EnableMcMode"},
- FunctionInfo{32, nullptr, "EnableLlrScan"},
- FunctionInfo{33, nullptr, "DisableLlrScan"},
- FunctionInfo{34, C<&IBluetoothDriver::EnableRadio>, "EnableRadio"},
- FunctionInfo{35, nullptr, "SetVisibility"},
- FunctionInfo{36, nullptr, "EnableTbfcScan"},
- FunctionInfo{37, nullptr, "RegisterHidReportEvent"},
- FunctionInfo{38, nullptr, "GetHidReportEventInfo"},
- FunctionInfo{39, nullptr, "GetLatestPlr"},
- FunctionInfo{40, nullptr, "GetPendingConnections"},
- FunctionInfo{41, nullptr, "GetChannelMap"},
- FunctionInfo{42, nullptr, "EnableTxPowerBoostSetting"},
- FunctionInfo{43, nullptr, "IsTxPowerBoostSettingEnabled"},
- FunctionInfo{44, nullptr, "EnableAfhSetting"},
- FunctionInfo{45, nullptr, "IsAfhSettingEnabled"},
- FunctionInfo{46, nullptr, "InitializeBle"},
- FunctionInfo{47, nullptr, "EnableBle"},
- FunctionInfo{48, nullptr, "DisableBle"},
- FunctionInfo{49, nullptr, "FinalizeBle"},
- FunctionInfo{50, nullptr, "SetBleVisibility"},
- FunctionInfo{51, nullptr, "SetBleConnectionParameter"},
- FunctionInfo{52, nullptr, "SetBleDefaultConnectionParameter"},
- FunctionInfo{53, nullptr, "SetBleAdvertiseData"},
- FunctionInfo{54, nullptr, "SetBleAdvertiseParameter"},
- FunctionInfo{55, nullptr, "StartBleScan"},
- FunctionInfo{56, nullptr, "StopBleScan"},
- FunctionInfo{57, nullptr, "AddBleScanFilterCondition"},
- FunctionInfo{58, nullptr, "DeleteBleScanFilterCondition"},
- FunctionInfo{59, nullptr, "DeleteBleScanFilter"},
- FunctionInfo{60, nullptr, "ClearBleScanFilters"},
- FunctionInfo{61, nullptr, "EnableBleScanFilter"},
- FunctionInfo{62, nullptr, "RegisterGattClient"},
- FunctionInfo{63, nullptr, "UnregisterGattClient"},
- FunctionInfo{64, nullptr, "UnregisterAllGattClients"},
- FunctionInfo{65, nullptr, "ConnectGattServer"},
- FunctionInfo{66, nullptr, "CancelConnectGattServer"},
- FunctionInfo{67, nullptr, "DisconnectGattServer"},
- FunctionInfo{68, nullptr, "GetGattAttribute"},
- FunctionInfo{69, nullptr, "GetGattService"},
- FunctionInfo{70, nullptr, "ConfigureAttMtu"},
- FunctionInfo{71, nullptr, "RegisterGattServer"},
- FunctionInfo{72, nullptr, "UnregisterGattServer"},
- FunctionInfo{73, nullptr, "ConnectGattClient"},
- FunctionInfo{74, nullptr, "DisconnectGattClient"},
- FunctionInfo{75, nullptr, "AddGattService"},
- FunctionInfo{76, nullptr, "EnableGattService"},
- FunctionInfo{77, nullptr, "AddGattCharacteristic"},
- FunctionInfo{78, nullptr, "AddGattDescriptor"},
- FunctionInfo{79, nullptr, "GetBleManagedEventInfo"},
- FunctionInfo{80, nullptr, "GetGattFirstCharacteristic"},
- FunctionInfo{81, nullptr, "GetGattNextCharacteristic"},
- FunctionInfo{82, nullptr, "GetGattFirstDescriptor"},
- FunctionInfo{83, nullptr, "GetGattNextDescriptor"},
- FunctionInfo{84, nullptr, "RegisterGattManagedDataPath"},
- FunctionInfo{85, nullptr, "UnregisterGattManagedDataPath"},
- FunctionInfo{86, nullptr, "RegisterGattHidDataPath"},
- FunctionInfo{87, nullptr, "UnregisterGattHidDataPath"},
- FunctionInfo{88, nullptr, "RegisterGattDataPath"},
- FunctionInfo{89, nullptr, "UnregisterGattDataPath"},
- FunctionInfo{90, nullptr, "ReadGattCharacteristic"},
- FunctionInfo{91, nullptr, "ReadGattDescriptor"},
- FunctionInfo{92, nullptr, "WriteGattCharacteristic"},
- FunctionInfo{93, nullptr, "WriteGattDescriptor"},
- FunctionInfo{94, nullptr, "RegisterGattNotification"},
- FunctionInfo{95, nullptr, "UnregisterGattNotification"},
- FunctionInfo{96, nullptr, "GetLeHidEventInfo"},
- FunctionInfo{97, nullptr, "RegisterBleHidEvent"},
- FunctionInfo{98, nullptr, "SetBleScanParameter"},
- FunctionInfo{99, nullptr, "MoveToSecondaryPiconet"},
- FunctionInfo{100, nullptr, "IsBluetoothEnabled"},
- FunctionInfo{128, nullptr, "AcquireAudioEvent"},
- FunctionInfo{129, nullptr, "GetAudioEventInfo"},
- FunctionInfo{130, nullptr, "OpenAudioConnection"},
- FunctionInfo{131, nullptr, "CloseAudioConnection"},
- FunctionInfo{132, nullptr, "OpenAudioOut"},
- FunctionInfo{133, nullptr, "CloseAudioOut"},
- FunctionInfo{134, nullptr, "AcquireAudioOutStateChangedEvent"},
- FunctionInfo{135, nullptr, "StartAudioOut"},
- FunctionInfo{136, nullptr, "StopAudioOut"},
- FunctionInfo{137, nullptr, "GetAudioOutState"},
- FunctionInfo{138, nullptr, "GetAudioOutFeedingCodec"},
- FunctionInfo{139, nullptr, "GetAudioOutFeedingParameter"},
- FunctionInfo{140, nullptr, "AcquireAudioOutBufferAvailableEvent"},
- FunctionInfo{141, nullptr, "SendAudioData"},
- FunctionInfo{142, nullptr, "AcquireAudioControlInputStateChangedEvent"},
- FunctionInfo{143, nullptr, "GetAudioControlInputState"},
- FunctionInfo{144, nullptr, "AcquireAudioConnectionStateChangedEvent"},
- FunctionInfo{145, nullptr, "GetConnectedAudioDevice"},
- FunctionInfo{146, nullptr, "CloseAudioControlInput"},
- FunctionInfo{147, nullptr, "RegisterAudioControlNotification"},
- FunctionInfo{148, nullptr, "SendAudioControlPassthroughCommand"},
- FunctionInfo{149, nullptr, "SendAudioControlSetAbsoluteVolumeCommand"},
- FunctionInfo{150, nullptr, "AcquireAudioSinkVolumeLocallyChangedEvent"},
- FunctionInfo{151, nullptr, "AcquireAudioSinkVolumeUpdateRequestCompletedEvent"},
- FunctionInfo{152, nullptr, "GetAudioSinkVolume"},
- FunctionInfo{153, nullptr, "RequestUpdateAudioSinkVolume"},
- FunctionInfo{154, nullptr, "IsAudioSinkVolumeSupported"},
- FunctionInfo{256, nullptr, "IsManufacturingMode"},
- FunctionInfo{257, nullptr, "EmulateBluetoothCrash"},
- FunctionInfo{258, nullptr, "GetBleChannelMap"}
- );
};
void LoopProcess(Core::System& system) {