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 OnRemoveDevice(uint32_t code, MessageParcel &data, MessageParcel &reply); 51 void OnRemoveAllDevice(uint32_t code, MessageParcel &data, MessageParcel &reply); 52 void OnGetDeviceConfigs(uint32_t code, MessageParcel &data, MessageParcel &reply); 53 void OnGetChangeDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 54 void OnEnableDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 55 void OnDisableDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 56 void OnConnectTo(uint32_t code, MessageParcel &data, MessageParcel &reply); 57 void OnConnect2To(uint32_t code, MessageParcel &data, MessageParcel &reply); 58 void OnStartRoamToNetwork(uint32_t code, MessageParcel &data, MessageParcel &reply); 59 void OnStartConnectToUserSelectNetwork(uint32_t code, MessageParcel &data, MessageParcel &reply); 60 void OnReConnect(uint32_t code, MessageParcel &data, MessageParcel &reply); 61 void OnReAssociate(uint32_t code, MessageParcel &data, MessageParcel &reply); 62 void OnDisconnect(uint32_t code, MessageParcel &data, MessageParcel &reply); 63 void OnStartWps(uint32_t code, MessageParcel &data, MessageParcel &reply); 64 void OnCancelWps(uint32_t code, MessageParcel &data, MessageParcel &reply); 65 void OnIsWifiActive(uint32_t code, MessageParcel &data, MessageParcel &reply); 66 void OnIsMeteredHotspot(uint32_t code, MessageParcel &data, MessageParcel &reply); 67 void OnGetWifiState(uint32_t code, MessageParcel &data, MessageParcel &reply); 68 void OnGetLinkedInfo(uint32_t code, MessageParcel &data, MessageParcel &reply); 69 void OnGetIpInfo(uint32_t code, MessageParcel &data, MessageParcel &reply); 70 void OnGetIpV6Info(uint32_t code, MessageParcel &data, MessageParcel &reply); 71 void OnSetCountryCode(uint32_t code, MessageParcel &data, MessageParcel &reply); 72 void OnGetCountryCode(uint32_t code, MessageParcel &data, MessageParcel &reply); 73 void OnRegisterCallBack(uint32_t code, MessageParcel &data, MessageParcel &reply); 74 void OnGetSignalLevel(uint32_t code, MessageParcel &data, MessageParcel &reply); 75 void OnGetSupportedFeatures(uint32_t code, MessageParcel &data, MessageParcel &reply); 76 void OnGetDeviceMacAdd(uint32_t code, MessageParcel &data, MessageParcel &reply); 77 void OnIsWifiConnected(uint32_t code, MessageParcel &data, MessageParcel &reply); 78 void OnSetLowLatencyMode(uint32_t code, MessageParcel &data, MessageParcel &reply); 79 void OnRemoveCandidateConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 80 void OnIsBandTypeSupported(uint32_t code, MessageParcel &data, MessageParcel &reply); 81 void OnGet5GHzChannelList(uint32_t code, MessageParcel &data, MessageParcel &reply); 82 void OnStartPortalCertification(uint32_t code, MessageParcel &data, MessageParcel &reply); 83 void OnGetDisconnectedReason(uint32_t code, MessageParcel &data, MessageParcel &reply); 84 void OnSetFrozenApp(uint32_t code, MessageParcel& data, MessageParcel& reply); 85 void OnResetAllFrozenApp(uint32_t code, MessageParcel& data, MessageParcel& reply); 86 void OnDisableAutoJoin(uint32_t code, MessageParcel& data, MessageParcel& reply); 87 void OnEnableAutoJoin(uint32_t code, MessageParcel& data, MessageParcel& reply); 88 void OnFactoryReset(uint32_t code, MessageParcel &data, MessageParcel &reply); 89 void OnLimitSpeed(uint32_t code, MessageParcel &data, MessageParcel &reply); 90 void OnEnableHiLinkHandshake(uint32_t code, MessageParcel &data, MessageParcel &reply); 91 void OnEnableSemiWifi(uint32_t code, MessageParcel &data, MessageParcel &reply); 92 void OnGetWifiDetailState(uint32_t code, MessageParcel &data, MessageParcel &reply); 93 void OnSetSatelliteState(uint32_t code, MessageParcel &data, MessageParcel &reply); 94 void OnSetLowTxPower(uint32_t code, MessageParcel &data, MessageParcel &reply); 95 void OnSetTxPower(uint32_t code, MessageParcel &data, MessageParcel &reply); 96 void OnGetDeviceConfig(uint32_t code, MessageParcel &data, MessageParcel &reply); 97 void OnSetDpiMarkRule(uint32_t code, MessageParcel &data, MessageParcel &reply); 98 99 private: 100 void ReadEapConfig(MessageParcel &data, WifiEapConfig &wifiEapConfig); 101 void ReadWifiDeviceConfig(MessageParcel &data, WifiDeviceConfig &config); 102 void ReadIpAddress(MessageParcel &data, WifiIpAddress &address); 103 void WriteEapConfig(MessageParcel &reply, const WifiEapConfig &wifiEapConfig); 104 void BigDataWriteEapConfig(const WifiEapConfig &wifiEapConfig, std::stringstream &bigDataStream); 105 void WriteWifiDeviceConfig(MessageParcel &reply, const WifiDeviceConfig &config); 106 void WriteIpAddress(MessageParcel &reply, const WifiIpAddress &address); 107 void BigDataWriteIpAddress(const WifiIpAddress &address, std::stringstream &bigDataStream); 108 void SendBigConfig(int32_t ashmemSize, std::vector<WifiDeviceConfig> &result, MessageParcel &reply); 109 void SendBigConfigEx(int contentSize, std::vector<WifiDeviceConfig> &result, std::stringstream &bigDataStream); 110 void SendSmallConfig(int32_t size, std::vector<WifiDeviceConfig> &result, MessageParcel &reply); 111 112 private: 113 HandleFuncMap handleFuncMap; 114 std::mutex deathRecipientMutex; 115 sptr<IRemoteObject::DeathRecipient> deathRecipient_; 116 bool mSingleCallback; 117 118 protected: 119 int m_instId{0}; 120 }; 121 } // namespace Wifi 122 } // namespace OHOS 123 #endif 124