wlan.cpp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include <memory>
  5. #include "core/hle/service/service.h"
  6. #include "core/hle/service/sm/sm.h"
  7. #include "core/hle/service/wlan/wlan.h"
  8. namespace Service::WLAN {
  9. class WLANInfra final : public ServiceFramework<WLANInfra> {
  10. public:
  11. explicit WLANInfra() : ServiceFramework{"wlan:inf"} {
  12. // clang-format off
  13. static const FunctionInfo functions[] = {
  14. {0, nullptr, "OpenMode"},
  15. {1, nullptr, "CloseMode"},
  16. {2, nullptr, "GetMacAddress"},
  17. {3, nullptr, "StartScan"},
  18. {4, nullptr, "StopScan"},
  19. {5, nullptr, "Connect"},
  20. {6, nullptr, "CancelConnect"},
  21. {7, nullptr, "Disconnect"},
  22. {8, nullptr, "GetConnectionEvent"},
  23. {9, nullptr, "GetConnectionStatus"},
  24. {10, nullptr, "GetState"},
  25. {11, nullptr, "GetScanResult"},
  26. {12, nullptr, "GetRssi"},
  27. {13, nullptr, "ChangeRxAntenna"},
  28. {14, nullptr, "GetFwVersion"},
  29. {15, nullptr, "RequestSleep"},
  30. {16, nullptr, "RequestWakeUp"},
  31. {17, nullptr, "RequestIfUpDown"},
  32. {18, nullptr, "Unknown18"},
  33. {19, nullptr, "Unknown19"},
  34. {20, nullptr, "Unknown20"},
  35. {21, nullptr, "Unknown21"},
  36. {22, nullptr, "Unknown22"},
  37. {23, nullptr, "Unknown23"},
  38. {24, nullptr, "Unknown24"},
  39. {25, nullptr, "Unknown25"},
  40. {26, nullptr, "Unknown26"},
  41. {27, nullptr, "Unknown27"},
  42. {28, nullptr, "Unknown28"},
  43. {29, nullptr, "Unknown29"},
  44. {30, nullptr, "Unknown30"},
  45. };
  46. // clang-format on
  47. RegisterHandlers(functions);
  48. }
  49. };
  50. class WLANLocal final : public ServiceFramework<WLANLocal> {
  51. public:
  52. explicit WLANLocal() : ServiceFramework{"wlan:lcl"} {
  53. // clang-format off
  54. static const FunctionInfo functions[] = {
  55. {0, nullptr, "Unknown0"},
  56. {1, nullptr, "Unknown1"},
  57. {2, nullptr, "Unknown2"},
  58. {3, nullptr, "Unknown3"},
  59. {4, nullptr, "Unknown4"},
  60. {5, nullptr, "Unknown5"},
  61. {6, nullptr, "GetMacAddress"},
  62. {7, nullptr, "CreateBss"},
  63. {8, nullptr, "DestroyBss"},
  64. {9, nullptr, "StartScan"},
  65. {10, nullptr, "StopScan"},
  66. {11, nullptr, "Connect"},
  67. {12, nullptr, "CancelConnect"},
  68. {13, nullptr, "Join"},
  69. {14, nullptr, "CancelJoin"},
  70. {15, nullptr, "Disconnect"},
  71. {16, nullptr, "SetBeaconLostCount"},
  72. {17, nullptr, "Unknown17"},
  73. {18, nullptr, "Unknown18"},
  74. {19, nullptr, "Unknown19"},
  75. {20, nullptr, "GetBssIndicationEvent"},
  76. {21, nullptr, "GetBssIndicationInfo"},
  77. {22, nullptr, "GetState"},
  78. {23, nullptr, "GetAllowedChannels"},
  79. {24, nullptr, "AddIe"},
  80. {25, nullptr, "DeleteIe"},
  81. {26, nullptr, "Unknown26"},
  82. {27, nullptr, "Unknown27"},
  83. {28, nullptr, "CreateRxEntry"},
  84. {29, nullptr, "DeleteRxEntry"},
  85. {30, nullptr, "Unknown30"},
  86. {31, nullptr, "Unknown31"},
  87. {32, nullptr, "AddMatchingDataToRxEntry"},
  88. {33, nullptr, "RemoveMatchingDataFromRxEntry"},
  89. {34, nullptr, "GetScanResult"},
  90. {35, nullptr, "Unknown35"},
  91. {36, nullptr, "SetActionFrameWithBeacon"},
  92. {37, nullptr, "CancelActionFrameWithBeacon"},
  93. {38, nullptr, "CreateRxEntryForActionFrame"},
  94. {39, nullptr, "DeleteRxEntryForActionFrame"},
  95. {40, nullptr, "Unknown40"},
  96. {41, nullptr, "Unknown41"},
  97. {42, nullptr, "CancelGetActionFrame"},
  98. {43, nullptr, "GetRssi"},
  99. {44, nullptr, "Unknown44"},
  100. {45, nullptr, "Unknown45"},
  101. {46, nullptr, "Unknown46"},
  102. {47, nullptr, "Unknown47"},
  103. {48, nullptr, "Unknown48"},
  104. {49, nullptr, "Unknown49"},
  105. {50, nullptr, "Unknown50"},
  106. {51, nullptr, "Unknown51"},
  107. {52, nullptr, "Unknown52"},
  108. };
  109. // clang-format on
  110. RegisterHandlers(functions);
  111. }
  112. };
  113. class WLANLocalGetFrame final : public ServiceFramework<WLANLocalGetFrame> {
  114. public:
  115. explicit WLANLocalGetFrame() : ServiceFramework{"wlan:lg"} {
  116. // clang-format off
  117. static const FunctionInfo functions[] = {
  118. {0, nullptr, "Unknown"},
  119. };
  120. // clang-format on
  121. RegisterHandlers(functions);
  122. }
  123. };
  124. class WLANSocketGetFrame final : public ServiceFramework<WLANSocketGetFrame> {
  125. public:
  126. explicit WLANSocketGetFrame() : ServiceFramework{"wlan:sg"} {
  127. // clang-format off
  128. static const FunctionInfo functions[] = {
  129. {0, nullptr, "Unknown"},
  130. };
  131. // clang-format on
  132. RegisterHandlers(functions);
  133. }
  134. };
  135. class WLANSocketManager final : public ServiceFramework<WLANSocketManager> {
  136. public:
  137. explicit WLANSocketManager() : ServiceFramework{"wlan:soc"} {
  138. // clang-format off
  139. static const FunctionInfo functions[] = {
  140. {0, nullptr, "Unknown0"},
  141. {1, nullptr, "Unknown1"},
  142. {2, nullptr, "Unknown2"},
  143. {3, nullptr, "Unknown3"},
  144. {4, nullptr, "Unknown4"},
  145. {5, nullptr, "Unknown5"},
  146. {6, nullptr, "GetMacAddress"},
  147. {7, nullptr, "SwitchTsfTimerFunction"},
  148. {8, nullptr, "Unknown8"},
  149. {9, nullptr, "Unknown9"},
  150. {10, nullptr, "Unknown10"},
  151. {11, nullptr, "Unknown11"},
  152. {12, nullptr, "Unknown12"},
  153. };
  154. // clang-format on
  155. RegisterHandlers(functions);
  156. }
  157. };
  158. void InstallInterfaces(SM::ServiceManager& sm) {
  159. std::make_shared<WLANInfra>()->InstallAsService(sm);
  160. std::make_shared<WLANLocal>()->InstallAsService(sm);
  161. std::make_shared<WLANLocalGetFrame>()->InstallAsService(sm);
  162. std::make_shared<WLANSocketGetFrame>()->InstallAsService(sm);
  163. std::make_shared<WLANSocketManager>()->InstallAsService(sm);
  164. }
  165. } // namespace Service::WLAN