13f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh/* 23f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Copyright (C) 2017 The Android Open Source Project 33f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 43f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Licensed under the Apache License, Version 2.0 (the "License"); 53f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * you may not use this file except in compliance with the License. 63f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * You may obtain a copy of the License at 73f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 83f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * http://www.apache.org/licenses/LICENSE-2.0 93f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 103f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Unless required by applicable law or agreed to in writing, software 113f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * distributed under the License is distributed on an "AS IS" BASIS, 123f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * See the License for the specific language governing permissions and 143f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * limitations under the License. 153f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh */ 163f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 173f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#ifndef CHRE_WIFI_OFFLOAD_SCAN_STATS_H_ 183f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#define CHRE_WIFI_OFFLOAD_SCAN_STATS_H_ 193f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 203f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "chre/apps/wifi_offload/wifi_offload.h" 213f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 223f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "chre/apps/wifi_offload/channel_histogram.h" 233f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "chre/apps/wifi_offload/flatbuffers_types_generated.h" 243f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "chre/apps/wifi_offload/rpc_log_record.h" 253f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "chre/apps/wifi_offload/scan_record.h" 263f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 273f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehnamespace wifi_offload { 283f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 293f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh/** 303f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Defines the scan statistics to be returned to the framework 313f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh */ 323f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehclass ScanStats { 333f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh public: 343f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh /* Corresponding flatbuffers-generated data-type used to serialize and 353f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * deserialize instances of this class */ 363f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh using FbsType = fbs::ScanStats; 373f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 383f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ScanStats(); 393f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ~ScanStats() = default; 403f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 413f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh bool operator==(const ScanStats &other) const; 423f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 433f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh flatbuffers::Offset<ScanStats::FbsType> Serialize( 443f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh flatbuffers::FlatBufferBuilder *builder) const; 453f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 463f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh bool Deserialize(const ScanStats::FbsType &fbs_stats); 473f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 483f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh uint32_t num_scans_requested_by_nanoapp_; 493f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh uint32_t num_scans_serviced_by_hardware_; 503f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh uint32_t num_scans_serviced_by_cache_; 513f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh uint32_t updated_at_chre_ms_; 523f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh uint32_t sent_at_chre_ms_; 533f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh /* The duration between when the framework subscribed for scan results to min 543f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * of time when the framework unsubscribed vs. current time */ 553f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh uint32_t last_subscription_duration_ms_; 563f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 573f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ChannelHistogram channel_histogram_; 583f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 593f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh Vector<ScanRecord> scan_records_; 603f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh Vector<RpcLogRecord> rpc_log_records_; 613f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh}; 623f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 633f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} // namespace wifi_offload 643f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 653f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#endif // CHRE_WIFI_OFFLOAD_SCAN_STATS_H_ 66