xref: /aosp_15_r20/tools/netsim/rust/daemon/src/wireless/mocked.rs (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker // Copyright 2023 Google LLC
2*cf78ab8cSAndroid Build Coastguard Worker //
3*cf78ab8cSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*cf78ab8cSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*cf78ab8cSAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*cf78ab8cSAndroid Build Coastguard Worker //
7*cf78ab8cSAndroid Build Coastguard Worker //     https://www.apache.org/licenses/LICENSE-2.0
8*cf78ab8cSAndroid Build Coastguard Worker //
9*cf78ab8cSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*cf78ab8cSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*cf78ab8cSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cf78ab8cSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*cf78ab8cSAndroid Build Coastguard Worker // limitations under the License.
14*cf78ab8cSAndroid Build Coastguard Worker 
15*cf78ab8cSAndroid Build Coastguard Worker use crate::devices::chip::ChipIdentifier;
16*cf78ab8cSAndroid Build Coastguard Worker use crate::wireless::{WirelessAdaptor, WirelessAdaptorImpl};
17*cf78ab8cSAndroid Build Coastguard Worker 
18*cf78ab8cSAndroid Build Coastguard Worker use bytes::Bytes;
19*cf78ab8cSAndroid Build Coastguard Worker use netsim_proto::common::ChipKind as ProtoChipKind;
20*cf78ab8cSAndroid Build Coastguard Worker use netsim_proto::model::Chip as ProtoChip;
21*cf78ab8cSAndroid Build Coastguard Worker use netsim_proto::stats::{netsim_radio_stats, NetsimRadioStats as ProtoRadioStats};
22*cf78ab8cSAndroid Build Coastguard Worker use protobuf::EnumOrUnknown;
23*cf78ab8cSAndroid Build Coastguard Worker 
24*cf78ab8cSAndroid Build Coastguard Worker /// Parameters for creating Mocked chips
25*cf78ab8cSAndroid Build Coastguard Worker pub struct CreateParams {
26*cf78ab8cSAndroid Build Coastguard Worker     pub chip_kind: ProtoChipKind,
27*cf78ab8cSAndroid Build Coastguard Worker }
28*cf78ab8cSAndroid Build Coastguard Worker 
29*cf78ab8cSAndroid Build Coastguard Worker /// Mock struct is remained empty.
30*cf78ab8cSAndroid Build Coastguard Worker pub struct Mock {
31*cf78ab8cSAndroid Build Coastguard Worker     chip_kind: ProtoChipKind,
32*cf78ab8cSAndroid Build Coastguard Worker }
33*cf78ab8cSAndroid Build Coastguard Worker 
34*cf78ab8cSAndroid Build Coastguard Worker impl WirelessAdaptor for Mock {
handle_request(&self, _packet: &Bytes)35*cf78ab8cSAndroid Build Coastguard Worker     fn handle_request(&self, _packet: &Bytes) {}
36*cf78ab8cSAndroid Build Coastguard Worker 
reset(&self)37*cf78ab8cSAndroid Build Coastguard Worker     fn reset(&self) {}
38*cf78ab8cSAndroid Build Coastguard Worker 
get(&self) -> ProtoChip39*cf78ab8cSAndroid Build Coastguard Worker     fn get(&self) -> ProtoChip {
40*cf78ab8cSAndroid Build Coastguard Worker         let mut proto_chip = ProtoChip::new();
41*cf78ab8cSAndroid Build Coastguard Worker         proto_chip.kind = EnumOrUnknown::new(self.chip_kind);
42*cf78ab8cSAndroid Build Coastguard Worker         proto_chip
43*cf78ab8cSAndroid Build Coastguard Worker     }
44*cf78ab8cSAndroid Build Coastguard Worker 
patch(&self, _chip: &ProtoChip)45*cf78ab8cSAndroid Build Coastguard Worker     fn patch(&self, _chip: &ProtoChip) {}
46*cf78ab8cSAndroid Build Coastguard Worker 
get_stats(&self, _duration_secs: u64) -> Vec<ProtoRadioStats>47*cf78ab8cSAndroid Build Coastguard Worker     fn get_stats(&self, _duration_secs: u64) -> Vec<ProtoRadioStats> {
48*cf78ab8cSAndroid Build Coastguard Worker         let mut stats = ProtoRadioStats::new();
49*cf78ab8cSAndroid Build Coastguard Worker         stats.kind = Some(EnumOrUnknown::new(match self.chip_kind {
50*cf78ab8cSAndroid Build Coastguard Worker             ProtoChipKind::UNSPECIFIED => netsim_radio_stats::Kind::UNSPECIFIED,
51*cf78ab8cSAndroid Build Coastguard Worker             ProtoChipKind::BLUETOOTH => netsim_radio_stats::Kind::BLUETOOTH_LOW_ENERGY,
52*cf78ab8cSAndroid Build Coastguard Worker             ProtoChipKind::WIFI => netsim_radio_stats::Kind::WIFI,
53*cf78ab8cSAndroid Build Coastguard Worker             ProtoChipKind::UWB => netsim_radio_stats::Kind::UWB,
54*cf78ab8cSAndroid Build Coastguard Worker             ProtoChipKind::BLUETOOTH_BEACON => netsim_radio_stats::Kind::BLE_BEACON,
55*cf78ab8cSAndroid Build Coastguard Worker         }));
56*cf78ab8cSAndroid Build Coastguard Worker         vec![stats]
57*cf78ab8cSAndroid Build Coastguard Worker     }
58*cf78ab8cSAndroid Build Coastguard Worker }
59*cf78ab8cSAndroid Build Coastguard Worker 
60*cf78ab8cSAndroid Build Coastguard Worker /// Create a new MockedChip
new(create_params: &CreateParams, _chip_id: ChipIdentifier) -> WirelessAdaptorImpl61*cf78ab8cSAndroid Build Coastguard Worker pub fn new(create_params: &CreateParams, _chip_id: ChipIdentifier) -> WirelessAdaptorImpl {
62*cf78ab8cSAndroid Build Coastguard Worker     Box::new(Mock { chip_kind: create_params.chip_kind })
63*cf78ab8cSAndroid Build Coastguard Worker }
64