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 private:
54 int32_t modem_id_;
55 std::unique_ptr<ChannelMonitor> channel_monitor_;
56 std::unique_ptr<ThreadLooper> thread_looper_;
57
62
63 std::map<ModemServiceType, std::unique_ptr<ModemService>> modem_services_;
64
65 static void LoadNvramConfig();
66
68};
69
70} // namespace cuttlefish
Definition: client.h:47
Definition: misc_service.h:24
Definition: modem_simulator.h:31
void RegisterModemService()
Definition: modem_simulator.cpp:58
MiscService * misc_service_
Definition: modem_simulator.h:60
std::unique_ptr< ThreadLooper > thread_looper_
Definition: modem_simulator.h:56
std::map< ModemServiceType, std::unique_ptr< ModemService > > modem_services_
Definition: modem_simulator.h:63
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:147
bool SetPhoneNumber(std::string_view number)
Definition: modem_simulator.cpp:161
ModemSimulator(const ModemSimulator &)=delete
void OnFirstClientConnected() override
Definition: modem_simulator.cpp:122
static void LoadNvramConfig()
Definition: modem_simulator.cpp:43
void SaveModemState()
Definition: modem_simulator.cpp:133
std::unique_ptr< ChannelMonitor > channel_monitor_
Definition: modem_simulator.h:55
~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:58
NetworkService * network_service_
Definition: modem_simulator.h:61
bool IsRadioOn() const
Definition: modem_simulator.cpp:140
void DispatchCommand(const Client &client, std::string &command) override
Definition: modem_simulator.cpp:97
void SetTimeZone(std::string timezone)
Definition: modem_simulator.cpp:155
ModemSimulator & operator=(const ModemSimulator &)=delete
int32_t modem_id_
Definition: modem_simulator.h:54
SimService * sim_service_
Definition: modem_simulator.h:59
Definition: network_service.h:30
Definition: shared_fd.h:129
Definition: sim_service.h:28
Definition: sms_service.h:24
Definition: virtual_modem_simulator.h:22
Definition: alloc_utils.cpp:23