1897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang/*
2897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * Copyright (C) 2016 The Android Open Source Project
3897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang *
4897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * Licensed under the Apache License, Version 2.0 (the "License");
5897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * you may not use this file except in compliance with the License.
6897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * You may obtain a copy of the License at
7897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang *
8897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang *      http://www.apache.org/licenses/LICENSE-2.0
9897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang *
10897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * Unless required by applicable law or agreed to in writing, software
11897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * distributed under the License is distributed on an "AS IS" BASIS,
12897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * See the License for the specific language governing permissions and
14897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang * limitations under the License.
15897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang */
16897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang
17897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang#ifndef WIFICOND_SCANNING_SCAN_RESULT_H_
18897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang#define WIFICOND_SCANNING_SCAN_RESULT_H_
19897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang
20897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang#include <vector>
21897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang
224d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang#include <binder/Parcel.h>
234d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang#include <binder/Parcelable.h>
244d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang
254d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wangnamespace com {
26897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wangnamespace android {
274d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wangnamespace server {
284d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wangnamespace wifi {
29897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wangnamespace wificond {
30897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang
31897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang// This is the class to represent a scan result for wificond internal use.
324d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wangclass NativeScanResult : public ::android::Parcelable {
33897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang public:
344d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang  NativeScanResult() = default;
354d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang  NativeScanResult(std::vector<uint8_t>& ssid,
364d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang                   std::vector<uint8_t>& bssid,
374d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang                   std::vector<uint8_t>& info_element,
384d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang                   uint32_t frequency,
394d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang                   int32_t signal_mbm,
404d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang                   uint64_t tsf,
414d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang                   uint16_t capability,
424d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang                   bool associated);
434d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang  ::android::status_t writeToParcel(::android::Parcel* parcel) const override;
444d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang  ::android::status_t readFromParcel(const ::android::Parcel* parcel) override;
454d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang
46f67708e5cd726e0277240f034bbcb7d5f6fbb1bbNingyuan Wang  void DebugLog();
47897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang
48897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  // SSID of the BSS.
49897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  std::vector<uint8_t> ssid;
50897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  // BSSID of the BSS.
51897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  std::vector<uint8_t> bssid;
52897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  // Binary array containing the raw information elements from the probe
53897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  // response/beacon.
54897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  std::vector<uint8_t> info_element;
55897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  // Frequency in MHz.
56897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  uint32_t frequency;
57897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  // Signal strength of probe response/beacon in (100 * dBm).
58897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  int32_t signal_mbm;
59897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  // TSF of the received probe response/beacon.
60897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang  uint64_t tsf;
612ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // This is a bit mask describing the capabilities of a BSS.
622ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // See IEEE Std 802.11: 8.4.1.4
632ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 0 - ESS
642ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 1 - IBSS
652ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 2 - CF Pollable
662ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 3 - CF-Poll Request
672ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 4 - Privacy
682ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 5 - Short Preamble
692ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 6 - PBCC
702ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 7 - Channel Agility
712ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 8 - Spectrum Mgmt
722ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 9 - QoS
732ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 10 - Short Slot Time
742ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 11 - APSD
752ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 12 - Radio Measurement
762ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 13 - DSSS-OFDM
772ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 14 - Delayed Block Ack
782ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  // Bit 15 - Immediate Block Ack
792ad166afd1c3a4c52cc2575d2cc03ee01ee8e0f6Ningyuan Wang  uint16_t capability;
804d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang  bool associated;
81897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang};
82897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang
83897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang}  // namespace wificond
844d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang}  // namespace wifi
854d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang}  // namespace server
86897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang}  // namespace android
874d882abea2a9956689d32820a5c13e9f9625e0daNingyuan Wang}  // namespace com
88897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang
89897fa18fbbebceb3239f0bc18f771da1cae6772aNingyuan Wang#endif  // WIFICOND_SCANNING_SCAN_RESULT_H_
90