btm.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include <memory>
  4. #include "core/hle/service/btm/btm.h"
  5. #include "core/hle/service/btm/btm_debug.h"
  6. #include "core/hle/service/btm/btm_system.h"
  7. #include "core/hle/service/btm/btm_user.h"
  8. #include "core/hle/service/server_manager.h"
  9. #include "core/hle/service/service.h"
  10. namespace Service::BTM {
  11. class IBtm final : public ServiceFramework<IBtm> {
  12. public:
  13. explicit IBtm(Core::System& system_) : ServiceFramework{system_, "btm"} {
  14. // clang-format off
  15. static const FunctionInfo functions[] = {
  16. {0, nullptr, "GetState"},
  17. {1, nullptr, "GetHostDeviceProperty"},
  18. {2, nullptr, "AcquireDeviceConditionEvent"},
  19. {3, nullptr, "GetDeviceCondition"},
  20. {4, nullptr, "SetBurstMode"},
  21. {5, nullptr, "SetSlotMode"},
  22. {6, nullptr, "SetBluetoothMode"},
  23. {7, nullptr, "SetWlanMode"},
  24. {8, nullptr, "AcquireDeviceInfoEvent"},
  25. {9, nullptr, "GetDeviceInfo"},
  26. {10, nullptr, "AddDeviceInfo"},
  27. {11, nullptr, "RemoveDeviceInfo"},
  28. {12, nullptr, "IncreaseDeviceInfoOrder"},
  29. {13, nullptr, "LlrNotify"},
  30. {14, nullptr, "EnableRadio"},
  31. {15, nullptr, "DisableRadio"},
  32. {16, nullptr, "HidDisconnect"},
  33. {17, nullptr, "HidSetRetransmissionMode"},
  34. {18, nullptr, "AcquireAwakeReqEvent"},
  35. {19, nullptr, "AcquireLlrStateEvent"},
  36. {20, nullptr, "IsLlrStarted"},
  37. {21, nullptr, "EnableSlotSaving"},
  38. {22, nullptr, "ProtectDeviceInfo"},
  39. {23, nullptr, "AcquireBleScanEvent"},
  40. {24, nullptr, "GetBleScanParameterGeneral"},
  41. {25, nullptr, "GetBleScanParameterSmartDevice"},
  42. {26, nullptr, "StartBleScanForGeneral"},
  43. {27, nullptr, "StopBleScanForGeneral"},
  44. {28, nullptr, "GetBleScanResultsForGeneral"},
  45. {29, nullptr, "StartBleScanForPairedDevice"},
  46. {30, nullptr, "StopBleScanForPairedDevice"},
  47. {31, nullptr, "StartBleScanForSmartDevice"},
  48. {32, nullptr, "StopBleScanForSmartDevice"},
  49. {33, nullptr, "GetBleScanResultsForSmartDevice"},
  50. {34, nullptr, "AcquireBleConnectionEvent"},
  51. {35, nullptr, "BleConnect"},
  52. {36, nullptr, "BleOverrideConnection"},
  53. {37, nullptr, "BleDisconnect"},
  54. {38, nullptr, "BleGetConnectionState"},
  55. {39, nullptr, "BleGetGattClientConditionList"},
  56. {40, nullptr, "AcquireBlePairingEvent"},
  57. {41, nullptr, "BlePairDevice"},
  58. {42, nullptr, "BleUnpairDeviceOnBoth"},
  59. {43, nullptr, "BleUnpairDevice"},
  60. {44, nullptr, "BleGetPairedAddresses"},
  61. {45, nullptr, "AcquireBleServiceDiscoveryEvent"},
  62. {46, nullptr, "GetGattServices"},
  63. {47, nullptr, "GetGattService"},
  64. {48, nullptr, "GetGattIncludedServices"},
  65. {49, nullptr, "GetBelongingService"},
  66. {50, nullptr, "GetGattCharacteristics"},
  67. {51, nullptr, "GetGattDescriptors"},
  68. {52, nullptr, "AcquireBleMtuConfigEvent"},
  69. {53, nullptr, "ConfigureBleMtu"},
  70. {54, nullptr, "GetBleMtu"},
  71. {55, nullptr, "RegisterBleGattDataPath"},
  72. {56, nullptr, "UnregisterBleGattDataPath"},
  73. {57, nullptr, "RegisterAppletResourceUserId"},
  74. {58, nullptr, "UnregisterAppletResourceUserId"},
  75. {59, nullptr, "SetAppletResourceUserId"},
  76. {60, nullptr, "Unknown60"},
  77. {61, nullptr, "Unknown61"},
  78. {62, nullptr, "Unknown62"},
  79. {63, nullptr, "Unknown63"},
  80. {64, nullptr, "Unknown64"},
  81. {65, nullptr, "Unknown65"},
  82. {66, nullptr, "Unknown66"},
  83. {67, nullptr, "Unknown67"},
  84. {68, nullptr, "Unknown68"},
  85. {69, nullptr, "Unknown69"},
  86. {70, nullptr, "Unknown70"},
  87. {71, nullptr, "Unknown71"},
  88. {72, nullptr, "Unknown72"},
  89. {73, nullptr, "Unknown73"},
  90. {74, nullptr, "Unknown74"},
  91. {75, nullptr, "Unknown75"},
  92. {76, nullptr, "Unknown76"},
  93. {100, nullptr, "Unknown100"},
  94. {101, nullptr, "Unknown101"},
  95. {110, nullptr, "Unknown110"},
  96. {111, nullptr, "Unknown111"},
  97. {112, nullptr, "Unknown112"},
  98. {113, nullptr, "Unknown113"},
  99. {114, nullptr, "Unknown114"},
  100. {115, nullptr, "Unknown115"},
  101. };
  102. // clang-format on
  103. RegisterHandlers(functions);
  104. }
  105. };
  106. void LoopProcess(Core::System& system) {
  107. auto server_manager = std::make_unique<ServerManager>(system);
  108. server_manager->RegisterNamedService("btm", std::make_shared<IBtm>(system));
  109. server_manager->RegisterNamedService("btm:dbg", std::make_shared<IBtmDebug>(system));
  110. server_manager->RegisterNamedService("btm:sys", std::make_shared<IBtmSystem>(system));
  111. server_manager->RegisterNamedService("btm:u", std::make_shared<IBtmUser>(system));
  112. ServerManager::RunServer(std::move(server_manager));
  113. }
  114. } // namespace Service::BTM