• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.server.wifi.wificond;
18 
19 import android.os.Parcel;
20 import android.os.Parcelable;
21 
22 import java.util.BitSet;
23 
24 /**
25  * ScanResult from wificond
26  *
27  * @hide
28  */
29 public class NativeScanResult implements Parcelable {
30     private static final int CAPABILITY_SIZE = 16;
31 
32     public byte[] ssid;
33     public byte[] bssid;
34     public byte[] infoElement;
35     public int frequency;
36     public int signalMbm;
37     public long tsf;
38     public BitSet capability;
39     public boolean associated;
40 
41     /** public constructor */
NativeScanResult()42     public NativeScanResult() { }
43 
44     /** copy constructor */
NativeScanResult(NativeScanResult source)45     public NativeScanResult(NativeScanResult source) {
46         ssid = source.ssid.clone();
47         bssid = source.bssid.clone();
48         infoElement = source.infoElement.clone();
49         frequency = source.frequency;
50         signalMbm = source.signalMbm;
51         tsf = source.tsf;
52         capability = (BitSet) source.capability.clone();
53         associated = source.associated;
54     }
55 
56     /** implement Parcelable interface */
57     @Override
describeContents()58     public int describeContents() {
59         return 0;
60     }
61 
62     /** implement Parcelable interface */
63     @Override
writeToParcel(Parcel out, int flags)64     public void writeToParcel(Parcel out, int flags) {
65         out.writeByteArray(ssid);
66         out.writeByteArray(bssid);
67         out.writeByteArray(infoElement);
68         out.writeInt(frequency);
69         out.writeInt(signalMbm);
70         out.writeLong(tsf);
71         int capabilityInt = 0;
72         for (int i = 0; i < CAPABILITY_SIZE; i++) {
73             if (capability.get(i)) {
74                 capabilityInt |= 1 << i;
75             }
76         }
77         out.writeInt(capabilityInt);
78         out.writeInt(associated ? 1 : 0);
79     }
80 
81     /** implement Parcelable interface */
82     public static final Parcelable.Creator<NativeScanResult> CREATOR =
83             new Parcelable.Creator<NativeScanResult>() {
84         @Override
85         public NativeScanResult createFromParcel(Parcel in) {
86             NativeScanResult result = new NativeScanResult();
87             result.ssid = in.createByteArray();
88             result.bssid = in.createByteArray();
89             result.infoElement = in.createByteArray();
90             result.frequency = in.readInt();
91             result.signalMbm = in.readInt();
92             result.tsf = in.readLong();
93             int capabilityInt = in.readInt();
94             result.capability = new BitSet(CAPABILITY_SIZE);
95             for (int i = 0; i < CAPABILITY_SIZE; i++) {
96                 if ((capabilityInt & (1 << i)) != 0) {
97                     result.capability.set(i);
98                 }
99             }
100             result.associated = (in.readInt() != 0);
101             return result;
102         }
103 
104         @Override
105         public NativeScanResult[] newArray(int size) {
106             return new NativeScanResult[size];
107         }
108     };
109 }
110