1 /*
2  * Copyright (c) 2021 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 #include "softbus_network_utils.h"
17 
18 #define FREQUENCY_2G_FIRST 2412
19 #define FREQUENCY_2G_LAST  2472
20 #define FREQUENCY_5G_FIRST 5170
21 #define FREQUENCY_5G_LAST  5825
22 
23 #define CHANNEL_2G_FIRST   1
24 #define CHANNEL_2G_LAST    13
25 #define CHANNEL_5G_FIRST   34
26 #define CHANNEL_5G_LAST    165
27 
28 #define FREQUENCY_STEP     5
29 #define FREQUENCY_INVALID  (-1)
30 #define CHANNEL_INVALID    (-1)
31 
SoftBusChannelToFrequency(int channel)32 int SoftBusChannelToFrequency(int channel)
33 {
34     if (channel >= CHANNEL_2G_FIRST && channel <= CHANNEL_2G_LAST) {
35         return (channel - CHANNEL_2G_FIRST) * FREQUENCY_STEP + FREQUENCY_2G_FIRST;
36     } else if (channel >= CHANNEL_5G_FIRST && channel <= CHANNEL_5G_LAST) {
37         return (channel - CHANNEL_5G_FIRST) * FREQUENCY_STEP + FREQUENCY_5G_FIRST;
38     } else {
39         return FREQUENCY_INVALID;
40     }
41 }
42 
SoftBusFrequencyToChannel(int frequency)43 int SoftBusFrequencyToChannel(int frequency)
44 {
45     if (frequency >= FREQUENCY_2G_FIRST && frequency <= FREQUENCY_2G_LAST) {
46         return (frequency - FREQUENCY_2G_FIRST) / FREQUENCY_STEP + CHANNEL_2G_FIRST;
47     } else if (frequency >= FREQUENCY_5G_FIRST && frequency <= FREQUENCY_5G_LAST) {
48         return (frequency - FREQUENCY_5G_FIRST) / FREQUENCY_STEP + CHANNEL_5G_FIRST;
49     } else {
50         return CHANNEL_INVALID;
51     }
52 }
53 
SoftBusIs5GBand(int frequency)54 bool SoftBusIs5GBand(int frequency)
55 {
56     if (frequency >= FREQUENCY_5G_FIRST && frequency <= FREQUENCY_5G_LAST) {
57         return true;
58     }
59     return false;
60 }
61 
SoftBusIs2GBand(int frequency)62 bool SoftBusIs2GBand(int frequency)
63 {
64     if (frequency >= FREQUENCY_2G_FIRST && frequency <= FREQUENCY_2G_LAST) {
65         return true;
66     }
67     return false;
68 }
69