1*cf78ab8cSAndroid Build Coastguard Worker /* 2*cf78ab8cSAndroid Build Coastguard Worker * Copyright 2022 The Android Open Source Project 3*cf78ab8cSAndroid Build Coastguard Worker * 4*cf78ab8cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*cf78ab8cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*cf78ab8cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*cf78ab8cSAndroid Build Coastguard Worker * 8*cf78ab8cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*cf78ab8cSAndroid Build Coastguard Worker * 10*cf78ab8cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*cf78ab8cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*cf78ab8cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*cf78ab8cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*cf78ab8cSAndroid Build Coastguard Worker * limitations under the License. 15*cf78ab8cSAndroid Build Coastguard Worker */ 16*cf78ab8cSAndroid Build Coastguard Worker 17*cf78ab8cSAndroid Build Coastguard Worker #pragma once 18*cf78ab8cSAndroid Build Coastguard Worker 19*cf78ab8cSAndroid Build Coastguard Worker #include "grpcpp/channel.h" 20*cf78ab8cSAndroid Build Coastguard Worker #include "netsim/packet_streamer.pb.h" 21*cf78ab8cSAndroid Build Coastguard Worker 22*cf78ab8cSAndroid Build Coastguard Worker namespace netsim::packet { 23*cf78ab8cSAndroid Build Coastguard Worker /* 24*cf78ab8cSAndroid Build Coastguard Worker 25*cf78ab8cSAndroid Build Coastguard Worker // Example: 26*cf78ab8cSAndroid Build Coastguard Worker 27*cf78ab8cSAndroid Build Coastguard Worker auto channel = CreateChannel({.no_cli_ui = false, 28*cf78ab8cSAndroid Build Coastguard Worker .no_web_ui = true, 29*cf78ab8cSAndroid Build Coastguard Worker .netsim_args = "--dev --hci-port 12345"}); 30*cf78ab8cSAndroid Build Coastguard Worker std::unique_ptr<PacketStreamer::Stub> stub = PacketStreamer::NewStub(channel); 31*cf78ab8cSAndroid Build Coastguard Worker 32*cf78ab8cSAndroid Build Coastguard Worker ::grpc::ClientContext context; 33*cf78ab8cSAndroid Build Coastguard Worker // set deadline, add metadata to context 34*cf78ab8cSAndroid Build Coastguard Worker 35*cf78ab8cSAndroid Build Coastguard Worker PacketsRequest initial_request; 36*cf78ab8cSAndroid Build Coastguard Worker Stream bt_stream = stub.StreamPackets(&context); 37*cf78ab8cSAndroid Build Coastguard Worker initial_request.mutable_initial_info().set_name("Pixel_XL_3"); 38*cf78ab8cSAndroid Build Coastguard Worker initial_request.mutable_initial_info().mutable_chip().set_kind(ChipKind::BLUETOOTH); 39*cf78ab8cSAndroid Build Coastguard Worker bt_stream.write(initial_request); 40*cf78ab8cSAndroid Build Coastguard Worker 41*cf78ab8cSAndroid Build Coastguard Worker Stream wifi_stream = stub.StreamPackets(&context); 42*cf78ab8cSAndroid Build Coastguard Worker initial_request.mutable_initial_info().set_name("Pixel_XL_3"); 43*cf78ab8cSAndroid Build Coastguard Worker initial_request.mutable_initial_info().mutable_chip().set_kind(ChipKind::WIFI); 44*cf78ab8cSAndroid Build Coastguard Worker wifi_stream.write(initial_request); 45*cf78ab8cSAndroid Build Coastguard Worker */ 46*cf78ab8cSAndroid Build Coastguard Worker using Stream = std::unique_ptr< 47*cf78ab8cSAndroid Build Coastguard Worker ::grpc::ClientReaderWriter<packet::PacketRequest, packet::PacketResponse>>; 48*cf78ab8cSAndroid Build Coastguard Worker 49*cf78ab8cSAndroid Build Coastguard Worker struct NetsimdOptions { 50*cf78ab8cSAndroid Build Coastguard Worker bool no_cli_ui; 51*cf78ab8cSAndroid Build Coastguard Worker bool no_web_ui; 52*cf78ab8cSAndroid Build Coastguard Worker std::string host_dns = ""; 53*cf78ab8cSAndroid Build Coastguard Worker std::string http_proxy = ""; 54*cf78ab8cSAndroid Build Coastguard Worker std::string netsim_args; 55*cf78ab8cSAndroid Build Coastguard Worker }; 56*cf78ab8cSAndroid Build Coastguard Worker 57*cf78ab8cSAndroid Build Coastguard Worker // Configure the endpoint for a server other than the local netsimd server. 58*cf78ab8cSAndroid Build Coastguard Worker void SetPacketStreamEndpoint(const std::string &endpoint); 59*cf78ab8cSAndroid Build Coastguard Worker 60*cf78ab8cSAndroid Build Coastguard Worker std::shared_ptr<grpc::Channel> CreateChannel(NetsimdOptions); 61*cf78ab8cSAndroid Build Coastguard Worker 62*cf78ab8cSAndroid Build Coastguard Worker // Deprecated. 63*cf78ab8cSAndroid Build Coastguard Worker std::shared_ptr<grpc::Channel> CreateChannel( 64*cf78ab8cSAndroid Build Coastguard Worker std::string rootcanal_controller_properties_file = ""); 65*cf78ab8cSAndroid Build Coastguard Worker 66*cf78ab8cSAndroid Build Coastguard Worker } // namespace netsim::packet 67