Android-cuttlefish cvd tool
modem_simulator.h
Go to the documentation of this file.
1//
2// Copyright (C) 2020 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
23
24namespace cuttlefish {
25
26class SimService;
27class MiscService;
28class NetworkService;
29class SmsService;
30
32 public:
33 ModemSimulator(int32_t modem_id);
35
38
39 void Initialize(std::unique_ptr<ChannelMonitor>&& channel_monitor);
40
41 void DispatchCommand(const Client& client, std::string& command) override;
42
43 void OnFirstClientConnected() override;
44 void SaveModemState();
45 bool IsWaitingSmsPdu() override;
46 bool IsRadioOn() const;
47 void SetRemoteClient(cuttlefish::SharedFD client, bool is_accepted) {
48 channel_monitor_->SetRemoteClient(client, is_accepted);
49 }
50
51 void SetTimeZone(std::string timezone);
52 bool SetPhoneNumber(std::string_view number);
53
54 private:
55 int32_t modem_id_;
56 std::unique_ptr<ChannelMonitor> channel_monitor_;
57 std::unique_ptr<ThreadLooper> thread_looper_;
58
63
64 std::map<ModemServiceType, std::unique_ptr<ModemService>> modem_services_;
65
66 static void LoadNvramConfig();
67
69};
70
71} // namespace cuttlefish
Definition: client.h:48
Definition: misc_service.h:25
Definition: modem_simulator.h:31
void RegisterModemService()
Definition: modem_simulator.cpp:58
MiscService * misc_service_
Definition: modem_simulator.h:61
std::unique_ptr< ThreadLooper > thread_looper_
Definition: modem_simulator.h:57
std::map< ModemServiceType, std::unique_ptr< ModemService > > modem_services_
Definition: modem_simulator.h:64
ModemSimulator(int32_t modem_id)
Definition: modem_simulator.cpp:33
void Initialize(std::unique_ptr< ChannelMonitor > &&channel_monitor)
Definition: modem_simulator.cpp:51
bool IsWaitingSmsPdu() override
Definition: modem_simulator.cpp:144
bool SetPhoneNumber(std::string_view number)
Definition: modem_simulator.cpp:158
ModemSimulator(const ModemSimulator &)=delete
void OnFirstClientConnected() override
Definition: modem_simulator.cpp:123
static void LoadNvramConfig()
Definition: modem_simulator.cpp:43
void SaveModemState()
Definition: modem_simulator.cpp:130
std::unique_ptr< ChannelMonitor > channel_monitor_
Definition: modem_simulator.h:56
~ModemSimulator()
Definition: modem_simulator.cpp:36
void SetRemoteClient(cuttlefish::SharedFD client, bool is_accepted)
Definition: modem_simulator.h:47
SmsService * sms_service_
Definition: modem_simulator.h:59
NetworkService * network_service_
Definition: modem_simulator.h:62
bool IsRadioOn() const
Definition: modem_simulator.cpp:137
void DispatchCommand(const Client &client, std::string &command) override
Definition: modem_simulator.cpp:97
void SetTimeZone(std::string timezone)
Definition: modem_simulator.cpp:152
ModemSimulator & operator=(const ModemSimulator &)=delete
int32_t modem_id_
Definition: modem_simulator.h:55
SimService * sim_service_
Definition: modem_simulator.h:60
Definition: network_service.h:30
Definition: shared_fd.h:124
Definition: sim_service.h:28
Definition: sms_service.h:24
Definition: virtual_modem_simulator.h:22
Definition: alloc_driver.h:20