1 /* 2 * Copyright (C) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef OHOS_WIFI_DEVICE_STUB_H 17 #define OHOS_WIFI_DEVICE_STUB_H 18 19 #include <map> 20 #include "iremote_stub.h" 21 #include "i_wifi_device.h" 22 #include "i_wifi_device_callback.h" 23 24 namespace OHOS { 25 namespace Wifi { 26 class WifiDeviceStub : public IRemoteStub<IWifiDevice> { 27 public: 28 WifiDeviceStub(); 29 explicit WifiDeviceStub(int instId); 30 virtual ~WifiDeviceStub(); 31 32 using handleFunc = std::function<void(uint32_t, MessageParcel &, MessageParcel &)>; 33 using HandleFuncMap = std::map<int, handleFunc>; 34 35 virtual int OnRemoteRequest( 36 uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override; 37 38 private: 39 void InitHandleMap(); 40 void InitHandleMapEx(void); 41 void InitHandleMapEx2(); 42 void OnEnableWifi(uint32_t code, MessageParcel &data, MessageParcel &reply); 43 void OnDisableWifi(uint32_t code, MessageParcel &data, MessageParcel &reply); 44 void OnInitWifiProtect(uint32_t code, MessageParcel &data, MessageParcel &reply); 45 void OnGetWifiProtectRef(uint32_t code, MessageParcel &data, MessageParcel &reply); 46 void OnPutWifiProtectRef(uint32_t code, MessageParcel &data, MessageParcel &reply); 47 void OnIsHeldWifiProtectRef(uint32_t code, MessageParcel &data, MessageParcel &reply); 48 void OnAddDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 49 void OnUpdateDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 50 void OnSetWifiRestrictedList(uint32_t code, MessageParcel &data, MessageParcel &reply); 51 void OnRemoveDevice(uint32_t code, MessageParcel &data, MessageParcel &reply); 52 void OnRemoveAllDevice(uint32_t code, MessageParcel &data, MessageParcel &reply); 53 void OnGetDeviceConfigs(uint32_t code, MessageParcel &data, MessageParcel &reply); 54 void OnGetChangeDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 55 void OnEnableDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 56 void OnDisableDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 57 void OnAllowAutoConnect(uint32_t code, MessageParcel &data, MessageParcel &reply); 58 void OnConnectTo(uint32_t code, MessageParcel &data, MessageParcel &reply); 59 void OnConnect2To(uint32_t code, MessageParcel &data, MessageParcel &reply); 60 void OnStartRoamToNetwork(uint32_t code, MessageParcel &data, MessageParcel &reply); 61 void OnStartConnectToUserSelectNetwork(uint32_t code, MessageParcel &data, MessageParcel &reply); 62 void OnReConnect(uint32_t code, MessageParcel &data, MessageParcel &reply); 63 void OnReAssociate(uint32_t code, MessageParcel &data, MessageParcel &reply); 64 void OnDisconnect(uint32_t code, MessageParcel &data, MessageParcel &reply); 65 void OnStartWps(uint32_t code, MessageParcel &data, MessageParcel &reply); 66 void OnCancelWps(uint32_t code, MessageParcel &data, MessageParcel &reply); 67 void OnIsWifiActive(uint32_t code, MessageParcel &data, MessageParcel &reply); 68 void OnIsMeteredHotspot(uint32_t code, MessageParcel &data, MessageParcel &reply); 69 void OnGetWifiState(uint32_t code, MessageParcel &data, MessageParcel &reply); 70 void OnGetLinkedInfo(uint32_t code, MessageParcel &data, MessageParcel &reply); 71 void OnGetSignalPollInfoArray(uint32_t code, MessageParcel &data, MessageParcel &reply); 72 void OnGetMultiLinkedInfo(uint32_t code, MessageParcel &data, MessageParcel &reply); 73 void OnGetIpInfo(uint32_t code, MessageParcel &data, MessageParcel &reply); 74 void OnGetIpV6Info(uint32_t code, MessageParcel &data, MessageParcel &reply); 75 void OnSetCountryCode(uint32_t code, MessageParcel &data, MessageParcel &reply); 76 void OnGetCountryCode(uint32_t code, MessageParcel &data, MessageParcel &reply); 77 void OnRegisterCallBack(uint32_t code, MessageParcel &data, MessageParcel &reply); 78 void OnGetSignalLevel(uint32_t code, MessageParcel &data, MessageParcel &reply); 79 void OnGetSupportedFeatures(uint32_t code, MessageParcel &data, MessageParcel &reply); 80 void OnGetDeviceMacAdd(uint32_t code, MessageParcel &data, MessageParcel &reply); 81 void OnIsWifiConnected(uint32_t code, MessageParcel &data, MessageParcel &reply); 82 void OnSetLowLatencyMode(uint32_t code, MessageParcel &data, MessageParcel &reply); 83 void OnRemoveCandidateConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 84 void OnIsBandTypeSupported(uint32_t code, MessageParcel &data, MessageParcel &reply); 85 void OnGet5GHzChannelList(uint32_t code, MessageParcel &data, MessageParcel &reply); 86 void OnStartPortalCertification(uint32_t code, MessageParcel &data, MessageParcel &reply); 87 void OnGetDisconnectedReason(uint32_t code, MessageParcel &data, MessageParcel &reply); 88 void OnSetFrozenApp(uint32_t code, MessageParcel& data, MessageParcel& reply); 89 void OnResetAllFrozenApp(uint32_t code, MessageParcel& data, MessageParcel& reply); 90 void OnDisableAutoJoin(uint32_t code, MessageParcel& data, MessageParcel& reply); 91 void OnEnableAutoJoin(uint32_t code, MessageParcel& data, MessageParcel& reply); 92 void OnFactoryReset(uint32_t code, MessageParcel &data, MessageParcel &reply); 93 void OnReceiveNetworkControlInfo(uint32_t code, MessageParcel &data, MessageParcel &reply); 94 void OnLimitSpeed(uint32_t code, MessageParcel &data, MessageParcel &reply); 95 void OnEnableHiLinkHandshake(uint32_t code, MessageParcel &data, MessageParcel &reply); 96 void OnEnableSemiWifi(uint32_t code, MessageParcel &data, MessageParcel &reply); 97 void OnGetWifiDetailState(uint32_t code, MessageParcel &data, MessageParcel &reply); 98 void OnSetSatelliteState(uint32_t code, MessageParcel &data, MessageParcel &reply); 99 void OnSetLowTxPower(uint32_t code, MessageParcel &data, MessageParcel &reply); 100 void OnSetTxPower(uint32_t code, MessageParcel &data, MessageParcel &reply); 101 void OnGetDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 102 void OnSetDpiMarkRule(uint32_t code, MessageParcel &data, MessageParcel &reply); 103 void OnIsFeatureSupported(uint32_t code, MessageParcel &data, MessageParcel &reply); 104 void OnUpdateNetworkLagInfo(uint32_t code, MessageParcel &data, MessageParcel &reply); 105 void OnFetchWifiSignalInfoForVoWiFi(uint32_t code, MessageParcel &data, MessageParcel &reply); 106 void OnIsSupportVoWifiDetect(uint32_t code, MessageParcel &data, MessageParcel &reply); 107 void OnSetVoWifiDetectMode(uint32_t code, MessageParcel &data, MessageParcel &reply); 108 void OnGetVoWifiDetectMode(uint32_t code, MessageParcel &data, MessageParcel &reply); 109 void OnSetVoWifiDetectPeriod(uint32_t code, MessageParcel &data, MessageParcel &reply); 110 void OnGetVoWifiDetectPeriod(uint32_t code, MessageParcel &data, MessageParcel &reply); 111 112 private: 113 void ReadEapConfig(MessageParcel &data, WifiEapConfig &wifiEapConfig); 114 void ReadWifiDeviceConfig(MessageParcel &data, WifiDeviceConfig &config); 115 void ReadIpAddress(MessageParcel &data, WifiIpAddress &address); 116 void WriteEapConfig(MessageParcel &reply, const WifiEapConfig &wifiEapConfig); 117 void BigDataWriteEapConfig(const WifiEapConfig &wifiEapConfig, std::stringstream &bigDataStream); 118 void WriteWifiDeviceConfig(MessageParcel &reply, const WifiDeviceConfig &config); 119 void WriteWifiDeviceConfigProxyExtral(MessageParcel &reply, const WifiDeviceConfig &config); 120 void WriteIpAddress(MessageParcel &reply, const WifiIpAddress &address); 121 void BigDataWriteIpAddress(const WifiIpAddress &address, std::stringstream &bigDataStream); 122 void SendDeviceConfig(int32_t ashmemSize, std::vector<WifiDeviceConfig> &result, MessageParcel &reply); 123 void WriteWifiLinkedInfo(MessageParcel &reply, const WifiLinkedInfo &wifiInfo); 124 void SendMultiLinkedInfo(uint32_t contentSize, std::vector<WifiLinkedInfo> &result, MessageParcel &reply); 125 #ifdef DYNAMIC_UNLOAD_SA 126 virtual void StopUnloadStaTimer(void) = 0; 127 #endif 128 129 private: 130 HandleFuncMap handleFuncMap; 131 std::mutex deathRecipientMutex; 132 sptr<IRemoteObject::DeathRecipient> deathRecipient_; 133 bool mSingleCallback; 134 135 protected: 136 int m_instId{0}; 137 }; 138 } // namespace Wifi 139 } // namespace OHOS 140 #endif 141