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#ifndef WIFICOND_SCANNING_SCAN_RESULT_H_
18#define WIFICOND_SCANNING_SCAN_RESULT_H_
19
20#include <vector>
21
22#include <binder/Parcel.h>
23#include <binder/Parcelable.h>
24
25#include "wificond/scanning/radio_chain_info.h"
26
27namespace com {
28namespace android {
29namespace server {
30namespace wifi {
31namespace wificond {
32
33// This is the class to represent a scan result for wificond internal use.
34class NativeScanResult : public ::android::Parcelable {
35 public:
36  NativeScanResult() = default;
37  NativeScanResult(std::vector<uint8_t>& ssid,
38                   std::vector<uint8_t>& bssid,
39                   std::vector<uint8_t>& info_element,
40                   uint32_t frequency,
41                   int32_t signal_mbm,
42                   uint64_t tsf,
43                   uint16_t capability,
44                   bool associated,
45                   std::vector<RadioChainInfo>& radio_chain_infos);
46  ::android::status_t writeToParcel(::android::Parcel* parcel) const override;
47  ::android::status_t readFromParcel(const ::android::Parcel* parcel) override;
48
49  void DebugLog();
50
51  // SSID of the BSS.
52  std::vector<uint8_t> ssid;
53  // BSSID of the BSS.
54  std::vector<uint8_t> bssid;
55  // Binary array containing the raw information elements from the probe
56  // response/beacon.
57  std::vector<uint8_t> info_element;
58  // Frequency in MHz.
59  uint32_t frequency;
60  // Signal strength of probe response/beacon in (100 * dBm).
61  int32_t signal_mbm;
62  // TSF of the received probe response/beacon.
63  uint64_t tsf;
64  // This is a bit mask describing the capabilities of a BSS.
65  // See IEEE Std 802.11: 8.4.1.4
66  // Bit 0 - ESS
67  // Bit 1 - IBSS
68  // Bit 2 - CF Pollable
69  // Bit 3 - CF-Poll Request
70  // Bit 4 - Privacy
71  // Bit 5 - Short Preamble
72  // Bit 6 - PBCC
73  // Bit 7 - Channel Agility
74  // Bit 8 - Spectrum Mgmt
75  // Bit 9 - QoS
76  // Bit 10 - Short Slot Time
77  // Bit 11 - APSD
78  // Bit 12 - Radio Measurement
79  // Bit 13 - DSSS-OFDM
80  // Bit 14 - Delayed Block Ack
81  // Bit 15 - Immediate Block Ack
82  uint16_t capability;
83  bool associated;
84  std::vector<RadioChainInfo> radio_chain_infos;
85};
86
87}  // namespace wificond
88}  // namespace wifi
89}  // namespace server
90}  // namespace android
91}  // namespace com
92
93#endif  // WIFICOND_SCANNING_SCAN_RESULT_H_
94