1*84e33947SAndroid Build Coastguard Worker /*
2*84e33947SAndroid Build Coastguard Worker * Copyright (C) 2017 The Android Open Source Project
3*84e33947SAndroid Build Coastguard Worker *
4*84e33947SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*84e33947SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*84e33947SAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*84e33947SAndroid Build Coastguard Worker *
8*84e33947SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*84e33947SAndroid Build Coastguard Worker *
10*84e33947SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*84e33947SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*84e33947SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*84e33947SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*84e33947SAndroid Build Coastguard Worker * limitations under the License.
15*84e33947SAndroid Build Coastguard Worker */
16*84e33947SAndroid Build Coastguard Worker
17*84e33947SAndroid Build Coastguard Worker #include "include/utility.h"
18*84e33947SAndroid Build Coastguard Worker
19*84e33947SAndroid Build Coastguard Worker using RpcLog = wifi_offload::RpcLogRecord::RpcLogRecordType;
20*84e33947SAndroid Build Coastguard Worker
21*84e33947SAndroid Build Coastguard Worker namespace wifi_offload_test {
22*84e33947SAndroid Build Coastguard Worker
init(uint8_t & val,RandomGenerator & rand_gen)23*84e33947SAndroid Build Coastguard Worker void init(uint8_t &val, RandomGenerator &rand_gen) {
24*84e33947SAndroid Build Coastguard Worker val = rand_gen.get<uint8_t>();
25*84e33947SAndroid Build Coastguard Worker }
26*84e33947SAndroid Build Coastguard Worker
init(uint16_t & val,RandomGenerator & rand_gen)27*84e33947SAndroid Build Coastguard Worker void init(uint16_t &val, RandomGenerator &rand_gen) {
28*84e33947SAndroid Build Coastguard Worker val = rand_gen.get<uint16_t>();
29*84e33947SAndroid Build Coastguard Worker }
30*84e33947SAndroid Build Coastguard Worker
init(uint32_t & val,RandomGenerator & rand_gen)31*84e33947SAndroid Build Coastguard Worker void init(uint32_t &val, RandomGenerator &rand_gen) {
32*84e33947SAndroid Build Coastguard Worker val = rand_gen.get<uint32_t>();
33*84e33947SAndroid Build Coastguard Worker }
34*84e33947SAndroid Build Coastguard Worker
init(uint64_t & val,RandomGenerator & rand_gen)35*84e33947SAndroid Build Coastguard Worker void init(uint64_t &val, RandomGenerator &rand_gen) {
36*84e33947SAndroid Build Coastguard Worker val = rand_gen.get<uint64_t>();
37*84e33947SAndroid Build Coastguard Worker }
38*84e33947SAndroid Build Coastguard Worker
init(uint8_t * arr,size_t len,RandomGenerator & rand_gen)39*84e33947SAndroid Build Coastguard Worker void init(uint8_t *arr, size_t len, RandomGenerator &rand_gen) {
40*84e33947SAndroid Build Coastguard Worker for (size_t i = 0; i < len; i++) {
41*84e33947SAndroid Build Coastguard Worker arr[i] = rand_gen.get<uint8_t>();
42*84e33947SAndroid Build Coastguard Worker }
43*84e33947SAndroid Build Coastguard Worker }
44*84e33947SAndroid Build Coastguard Worker
init_security_mode(uint8_t & sec_mode,RandomGenerator & rand_gen)45*84e33947SAndroid Build Coastguard Worker void init_security_mode(uint8_t &sec_mode, RandomGenerator &rand_gen) {
46*84e33947SAndroid Build Coastguard Worker init(sec_mode, rand_gen);
47*84e33947SAndroid Build Coastguard Worker sec_mode &= 0x0f;
48*84e33947SAndroid Build Coastguard Worker }
49*84e33947SAndroid Build Coastguard Worker
init_rssi(int8_t & rssi,RandomGenerator & rand_gen)50*84e33947SAndroid Build Coastguard Worker void init_rssi(int8_t &rssi, RandomGenerator &rand_gen) {
51*84e33947SAndroid Build Coastguard Worker rssi = rand_gen.get<int8_t>();
52*84e33947SAndroid Build Coastguard Worker if (rssi > 0) {
53*84e33947SAndroid Build Coastguard Worker rssi = -rssi;
54*84e33947SAndroid Build Coastguard Worker }
55*84e33947SAndroid Build Coastguard Worker }
56*84e33947SAndroid Build Coastguard Worker
init_rpc_log_record(RpcLog & log_record,RandomGenerator & rand_gen)57*84e33947SAndroid Build Coastguard Worker void init_rpc_log_record(RpcLog &log_record, RandomGenerator &rand_gen) {
58*84e33947SAndroid Build Coastguard Worker log_record = static_cast<RpcLog>((rand_gen.get<uint32_t>() % 6u) +
59*84e33947SAndroid Build Coastguard Worker static_cast<uint32_t>(RpcLog::CMD_BASE) + 1);
60*84e33947SAndroid Build Coastguard Worker }
61*84e33947SAndroid Build Coastguard Worker
init_frequency(uint32_t & freq,RandomGenerator & rand_gen)62*84e33947SAndroid Build Coastguard Worker void init_frequency(uint32_t &freq, RandomGenerator &rand_gen) {
63*84e33947SAndroid Build Coastguard Worker freq = kAllFrequencies_Test[rand_gen.get<uint8_t>() % kNumFrequencies_Test];
64*84e33947SAndroid Build Coastguard Worker }
65*84e33947SAndroid Build Coastguard Worker
init_capability(uint16_t & capa,RandomGenerator & rand_gen)66*84e33947SAndroid Build Coastguard Worker void init_capability(uint16_t &capa, RandomGenerator &rand_gen) {
67*84e33947SAndroid Build Coastguard Worker capa = (rand_gen.get<uint16_t>() % 0xffff) + 1;
68*84e33947SAndroid Build Coastguard Worker }
69*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::Ssid & ssid,RandomGenerator & rand_gen)70*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::Ssid &ssid, RandomGenerator &rand_gen) {
71*84e33947SAndroid Build Coastguard Worker uint8_t rand_ssid[wifi_offload::Ssid::kMaxSsidLen];
72*84e33947SAndroid Build Coastguard Worker size_t len = (rand_gen.get<uint8_t>() % wifi_offload::Ssid::kMaxSsidLen) + 1;
73*84e33947SAndroid Build Coastguard Worker init(rand_ssid, len, rand_gen);
74*84e33947SAndroid Build Coastguard Worker ssid.SetData(rand_ssid, len);
75*84e33947SAndroid Build Coastguard Worker }
76*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::PreferredNetwork & net_info,RandomGenerator & rand_gen)77*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::PreferredNetwork &net_info, RandomGenerator &rand_gen) {
78*84e33947SAndroid Build Coastguard Worker init(net_info.ssid_, rand_gen);
79*84e33947SAndroid Build Coastguard Worker init_security_mode(net_info.security_modes_, rand_gen);
80*84e33947SAndroid Build Coastguard Worker }
81*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::ScanRecord & record,RandomGenerator & rand_gen)82*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::ScanRecord &record, RandomGenerator &rand_gen) {
83*84e33947SAndroid Build Coastguard Worker init(record.time_spent_scanning_ms_, rand_gen);
84*84e33947SAndroid Build Coastguard Worker init(record.num_channels_scanned_, rand_gen);
85*84e33947SAndroid Build Coastguard Worker init(record.num_entries_aggregated_, rand_gen);
86*84e33947SAndroid Build Coastguard Worker }
87*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::RpcLogRecord & record,RandomGenerator & rand_gen)88*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::RpcLogRecord &record, RandomGenerator &rand_gen) {
89*84e33947SAndroid Build Coastguard Worker init_rpc_log_record(record.record_type_, rand_gen);
90*84e33947SAndroid Build Coastguard Worker init(record.timestamp_chre_ms_, rand_gen);
91*84e33947SAndroid Build Coastguard Worker }
92*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::ChannelHistogram & histo,RandomGenerator & rand_gen)93*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::ChannelHistogram &histo, RandomGenerator &rand_gen) {
94*84e33947SAndroid Build Coastguard Worker for (size_t i = 0; i < kNumFrequencies_Test; i++) {
95*84e33947SAndroid Build Coastguard Worker histo.IncrementScanCountForFrequencyForTest(kAllFrequencies_Test[i],
96*84e33947SAndroid Build Coastguard Worker rand_gen.get<uint16_t>());
97*84e33947SAndroid Build Coastguard Worker }
98*84e33947SAndroid Build Coastguard Worker }
99*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::ScanStats & stats,RandomGenerator & rand_gen)100*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::ScanStats &stats, RandomGenerator &rand_gen) {
101*84e33947SAndroid Build Coastguard Worker init(stats.num_scans_requested_by_nanoapp_, rand_gen);
102*84e33947SAndroid Build Coastguard Worker init(stats.num_scans_serviced_by_hardware_, rand_gen);
103*84e33947SAndroid Build Coastguard Worker init(stats.num_scans_serviced_by_cache_, rand_gen);
104*84e33947SAndroid Build Coastguard Worker init(stats.updated_at_chre_ms_, rand_gen);
105*84e33947SAndroid Build Coastguard Worker init(stats.sent_at_chre_ms_, rand_gen);
106*84e33947SAndroid Build Coastguard Worker init(stats.last_subscription_duration_ms_, rand_gen);
107*84e33947SAndroid Build Coastguard Worker init(stats.channel_histogram_, rand_gen);
108*84e33947SAndroid Build Coastguard Worker init<wifi_offload::ScanRecord>(stats.scan_records_, rand_gen);
109*84e33947SAndroid Build Coastguard Worker init<wifi_offload::RpcLogRecord>(stats.rpc_log_records_, rand_gen);
110*84e33947SAndroid Build Coastguard Worker }
111*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::ScanParams & params,RandomGenerator & rand_gen)112*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::ScanParams ¶ms, RandomGenerator &rand_gen) {
113*84e33947SAndroid Build Coastguard Worker init<wifi_offload::Ssid>(params.ssids_to_scan_, rand_gen);
114*84e33947SAndroid Build Coastguard Worker // Need to init frequency vector with valid frequency values
115*84e33947SAndroid Build Coastguard Worker // init<uint32_t>(params.frequencies_to_scan_mhz_, rand_gen);
116*84e33947SAndroid Build Coastguard Worker params.frequencies_to_scan_mhz_.clear();
117*84e33947SAndroid Build Coastguard Worker size_t vec_len = (rand_gen.get<uint8_t>() % 10) + 1;
118*84e33947SAndroid Build Coastguard Worker for (size_t i = 0; i < vec_len; i++) {
119*84e33947SAndroid Build Coastguard Worker uint32_t new_freq;
120*84e33947SAndroid Build Coastguard Worker init_frequency(new_freq, rand_gen);
121*84e33947SAndroid Build Coastguard Worker params.frequencies_to_scan_mhz_.push_back(new_freq);
122*84e33947SAndroid Build Coastguard Worker }
123*84e33947SAndroid Build Coastguard Worker init(params.disconnected_mode_scan_interval_ms_, rand_gen);
124*84e33947SAndroid Build Coastguard Worker }
125*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::ScanFilter & filter,RandomGenerator & rand_gen)126*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::ScanFilter &filter, RandomGenerator &rand_gen) {
127*84e33947SAndroid Build Coastguard Worker init<wifi_offload::PreferredNetwork>(filter.networks_to_match_, rand_gen);
128*84e33947SAndroid Build Coastguard Worker init_rssi(filter.min_rssi_threshold_dbm_, rand_gen);
129*84e33947SAndroid Build Coastguard Worker }
130*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::ScanConfig & config,RandomGenerator & rand_gen)131*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::ScanConfig &config, RandomGenerator &rand_gen) {
132*84e33947SAndroid Build Coastguard Worker init(config.scan_params_, rand_gen);
133*84e33947SAndroid Build Coastguard Worker init(config.scan_filter_, rand_gen);
134*84e33947SAndroid Build Coastguard Worker }
135*84e33947SAndroid Build Coastguard Worker
init(wifi_offload::ScanResult & result,RandomGenerator & rand_gen)136*84e33947SAndroid Build Coastguard Worker void init(wifi_offload::ScanResult &result, RandomGenerator &rand_gen) {
137*84e33947SAndroid Build Coastguard Worker init(result.ssid_, rand_gen);
138*84e33947SAndroid Build Coastguard Worker init_security_mode(result.security_modes_, rand_gen);
139*84e33947SAndroid Build Coastguard Worker init(result.bssid_, wifi_offload::ScanResult::kBssidSize, rand_gen);
140*84e33947SAndroid Build Coastguard Worker init_capability(result.capability_, rand_gen);
141*84e33947SAndroid Build Coastguard Worker init_frequency(result.frequency_scanned_mhz_, rand_gen);
142*84e33947SAndroid Build Coastguard Worker init_rssi(result.rssi_dbm_, rand_gen);
143*84e33947SAndroid Build Coastguard Worker init(result.tsf_, rand_gen);
144*84e33947SAndroid Build Coastguard Worker }
145*84e33947SAndroid Build Coastguard Worker
init(chreWifiScanResult & result,RandomGenerator & rand_gen)146*84e33947SAndroid Build Coastguard Worker void init(chreWifiScanResult &result, RandomGenerator &rand_gen) {
147*84e33947SAndroid Build Coastguard Worker init(result.ageMs, rand_gen);
148*84e33947SAndroid Build Coastguard Worker init_capability(result.capabilityInfo, rand_gen);
149*84e33947SAndroid Build Coastguard Worker result.ssidLen =
150*84e33947SAndroid Build Coastguard Worker (rand_gen.get<uint8_t>() % wifi_offload::Ssid::kMaxSsidLen) + 1;
151*84e33947SAndroid Build Coastguard Worker init(result.ssid, result.ssidLen, rand_gen);
152*84e33947SAndroid Build Coastguard Worker init(result.bssid, CHRE_WIFI_BSSID_LEN, rand_gen);
153*84e33947SAndroid Build Coastguard Worker init(result.flags, rand_gen);
154*84e33947SAndroid Build Coastguard Worker init_rssi(result.rssi, rand_gen);
155*84e33947SAndroid Build Coastguard Worker init(result.band, rand_gen);
156*84e33947SAndroid Build Coastguard Worker init_frequency(result.primaryChannel, rand_gen);
157*84e33947SAndroid Build Coastguard Worker init(result.centerFreqPrimary, rand_gen);
158*84e33947SAndroid Build Coastguard Worker init(result.centerFreqSecondary, rand_gen);
159*84e33947SAndroid Build Coastguard Worker result.channelWidth = CHRE_WIFI_CHANNEL_WIDTH_20_MHZ;
160*84e33947SAndroid Build Coastguard Worker init_security_mode(result.securityMode, rand_gen);
161*84e33947SAndroid Build Coastguard Worker }
162*84e33947SAndroid Build Coastguard Worker
163*84e33947SAndroid Build Coastguard Worker } // namespace wifi_offload_test
164