1c36cf2e9Sopenharmony_ci/*
2c36cf2e9Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd.
3c36cf2e9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c36cf2e9Sopenharmony_ci * you may not use this file except in compliance with the License.
5c36cf2e9Sopenharmony_ci * You may obtain a copy of the License at
6c36cf2e9Sopenharmony_ci *
7c36cf2e9Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8c36cf2e9Sopenharmony_ci *
9c36cf2e9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c36cf2e9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c36cf2e9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c36cf2e9Sopenharmony_ci * See the License for the specific language governing permissions and
13c36cf2e9Sopenharmony_ci * limitations under the License.
14c36cf2e9Sopenharmony_ci */
15c36cf2e9Sopenharmony_ci
16c36cf2e9Sopenharmony_ciimport  wifi from '@ohos.wifiManager'
17c36cf2e9Sopenharmony_ciimport { Log } from '@ohos/common';
18c36cf2e9Sopenharmony_ci
19c36cf2e9Sopenharmony_ciconst TAG = 'WifiP2pHelper';
20c36cf2e9Sopenharmony_ci
21c36cf2e9Sopenharmony_ciexport default class WifiP2pHelper {
22c36cf2e9Sopenharmony_ci  async checkConnectState(printerId: string) {
23c36cf2e9Sopenharmony_ci    Log.info(TAG, `checkConnectState enter...`);
24c36cf2e9Sopenharmony_ci    let printerDevices = this.parsePrinterId(printerId);
25c36cf2e9Sopenharmony_ci    Log.info(TAG, `printerDevices is ${printerDevices}`);
26c36cf2e9Sopenharmony_ci    let connectInfo = await wifi.getP2pLinkedInfo();
27c36cf2e9Sopenharmony_ci    Log.info(TAG, `connectInfo is ${connectInfo.connectState}`);
28c36cf2e9Sopenharmony_ci    if (connectInfo.connectState === P2pConnectState.CONNECTED) {
29c36cf2e9Sopenharmony_ci      let groupInfo = await wifi.getCurrentGroup();
30c36cf2e9Sopenharmony_ci      if (groupInfo.ownerInfo.deviceAddress === printerDevices) {
31c36cf2e9Sopenharmony_ci        return true;
32c36cf2e9Sopenharmony_ci      }
33c36cf2e9Sopenharmony_ci    }
34c36cf2e9Sopenharmony_ci    return false;
35c36cf2e9Sopenharmony_ci  }
36c36cf2e9Sopenharmony_ci
37c36cf2e9Sopenharmony_ci  public static checkWifiActive(): boolean {
38c36cf2e9Sopenharmony_ci    let wifiState: boolean = wifi.isWifiActive();
39c36cf2e9Sopenharmony_ci    return wifiState;
40c36cf2e9Sopenharmony_ci  }
41c36cf2e9Sopenharmony_ci
42c36cf2e9Sopenharmony_ci  private parsePrinterId(printerId: string) {
43c36cf2e9Sopenharmony_ci    let split = printerId.split('//');
44c36cf2e9Sopenharmony_ci    return split[split.length - 1].replace(/-/g, ':');
45c36cf2e9Sopenharmony_ci  }
46c36cf2e9Sopenharmony_ci}
47c36cf2e9Sopenharmony_ci
48c36cf2e9Sopenharmony_cienum P2pConnectState {
49c36cf2e9Sopenharmony_ci  DISCONNECTED = 0,
50c36cf2e9Sopenharmony_ci  CONNECTED = 1,
51c36cf2e9Sopenharmony_ci  UNKNOWN_ERROR = -1
52c36cf2e9Sopenharmony_ci}