1/* 2 * Copyright (c) 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 16import Logger from './Logger' 17import data from '@ohos.telephony.data' 18 19const TAG: string = '[NetworkMobile]' 20 21export class NetworkMobile { 22 async getDefaultCellularDataSlotId() { 23 let slotId: number = -1 24 try { 25 slotId = await data.getDefaultCellularDataSlotId() 26 Logger.info(TAG, `getDefaultCellularDataSlotId slotId = ${slotId}`) 27 } catch (err) { 28 Logger.info(TAG, `getDefaultCellularDataSlotId failed err is ${JSON.stringify(err)}`) 29 } 30 return slotId 31 } 32 33 async isCellularDataEnabled() { 34 let dataEnabled: boolean = false 35 try { 36 dataEnabled = await data.isCellularDataEnabled() 37 Logger.info(TAG, `isCellularDataEnabled dataEnabled = ${dataEnabled}`) 38 } catch (err) { 39 Logger.info(TAG, `isCellularDataEnabled failed err is ${JSON.stringify(err)}`) 40 } 41 return dataEnabled 42 } 43 44 async isCellularDataRoamingEnabled(slotId: number) { 45 let dataRoamingEnabled: boolean = false 46 try { 47 dataRoamingEnabled = await data.isCellularDataRoamingEnabled(slotId) 48 Logger.info(TAG, `isCellularDataRoamingEnabled dataRoamingEnabled = ${dataRoamingEnabled}`) 49 } catch (err) { 50 Logger.info(TAG, `isCellularDataRoamingEnabled failed err is ${JSON.stringify(err)}`) 51 } 52 return dataRoamingEnabled 53 } 54 55 async getCellularDataFlowType() { 56 let dataFlow: data.DataFlowType = data.DataFlowType.DATA_FLOW_TYPE_NONE 57 let result: Resource = $r('app.string.none') 58 try { 59 dataFlow = await data.getCellularDataFlowType() 60 Logger.info(TAG, `getCellularDataFlowType dataFlow = ${JSON.stringify(dataFlow)}`) 61 } catch (err) { 62 Logger.info(TAG, `getCellularDataFlowType failed err is ${JSON.stringify(err)}`) 63 } 64 switch (dataFlow) { 65 case data.DataFlowType.DATA_FLOW_TYPE_NONE: 66 result = $r('app.string.none') 67 break 68 case data.DataFlowType.DATA_FLOW_TYPE_DOWN: 69 result = $r('app.string.down') 70 break 71 case data.DataFlowType.DATA_FLOW_TYPE_UP: 72 result = $r('app.string.up') 73 break 74 case data.DataFlowType.DATA_FLOW_TYPE_UP_DOWN: 75 result = $r('app.string.upDown') 76 break 77 case data.DataFlowType.DATA_FLOW_TYPE_DORMANT: 78 result = $r('app.string.dormant') 79 break 80 default: 81 result = $r('app.string.none') 82 break 83 } 84 return result 85 } 86 87 async getCellularDataState() { 88 let dataConnectState: data.DataConnectState = data.DataConnectState.DATA_STATE_UNKNOWN 89 let result: Resource = $r('app.string.unknown') 90 try { 91 dataConnectState = await data.getCellularDataState() 92 Logger.info(TAG, `getCellularDataState dataConnectState = ${JSON.stringify(dataConnectState)}`) 93 } catch (err) { 94 Logger.info(TAG, `getCellularDataState failed err is ${JSON.stringify(err)}`) 95 } 96 switch (dataConnectState) { 97 case data.DataConnectState.DATA_STATE_UNKNOWN: 98 result = $r('app.string.unknown') 99 break 100 case data.DataConnectState.DATA_STATE_DISCONNECTED: 101 result = $r('app.string.disconnect') 102 break 103 case data.DataConnectState.DATA_STATE_CONNECTING: 104 result = $r('app.string.connecting') 105 break 106 case data.DataConnectState.DATA_STATE_CONNECTED: 107 result = $r('app.string.connect') 108 break 109 case data.DataConnectState.DATA_STATE_SUSPENDED: 110 result = $r('app.string.suspended') 111 break 112 default: 113 result = $r('app.string.unknown') 114 break 115 } 116 return result 117 } 118}