Android-cuttlefish cvd tool
nvram_config.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
18#include "json/json.h"
19
20namespace cuttlefish {
21
22// Holds the configuration of modem simulator.
24 public:
25 static void InitNvramConfigService(size_t num_instances, int sim_type);
26 static const NvramConfig* Get();
27 static void SaveToFile();
28
29 NvramConfig(size_t num_instances, int sim_type);
33
34 static std::string ConfigFileLocation();
35 // Saves the configuration object in a file
36 bool SaveToFile(const std::string& file) const;
37
38 class InstanceSpecific;
39
40 InstanceSpecific ForInstance(int instance_num) const;
41
42 std::vector<InstanceSpecific> Instances() const;
43
44 int sim_type() const;
45
46 // A view into an existing modem simulator object for a particular instance.
48 public:
49 int network_selection_mode() const;
50 void set_network_selection_mode(int mode);
51
52 std::string operator_numeric() const;
53 void set_operator_numeric(std::string& operator_numeric);
54
55 int modem_technoloy() const;
56 void set_modem_technoloy(int technoloy);
57
58 int preferred_network_mode() const;
59 void set_preferred_network_mode(int mode);
60
61 bool emergency_mode() const;
62 void set_emergency_mode(bool mode);
63
64 private:
66 friend std::vector<InstanceSpecific> NvramConfig::Instances() const;
67
68 InstanceSpecific(const NvramConfig* config, const std::string& id)
69 : config_(config), id_(id) {}
70
71 Json::Value* Dictionary();
72 const Json::Value* Dictionary() const;
73
75 std::string id_;
76 };
77
78 private:
79 static std::unique_ptr<NvramConfig> s_nvram_config;
82 std::unique_ptr<Json::Value> dictionary_;
83
84 bool LoadFromFile(const char* file);
85 static NvramConfig* BuildConfigImpl(size_t num_instances, int sim_type);
86
88
89 NvramConfig(const NvramConfig&) = delete;
91};
92
93} // namespace cuttlefish
Definition: nvram_config.h:47
std::string operator_numeric() const
Definition: nvram_config.cpp:166
InstanceSpecific(const NvramConfig *config, const std::string &id)
Definition: nvram_config.h:68
int preferred_network_mode() const
Definition: nvram_config.cpp:183
void set_preferred_network_mode(int mode)
Definition: nvram_config.cpp:187
void set_network_selection_mode(int mode)
Definition: nvram_config.cpp:162
bool emergency_mode() const
Definition: nvram_config.cpp:191
int modem_technoloy() const
Definition: nvram_config.cpp:175
Json::Value * Dictionary()
Definition: nvram_config.cpp:154
std::string id_
Definition: nvram_config.h:75
void set_modem_technoloy(int technoloy)
Definition: nvram_config.cpp:179
void set_operator_numeric(std::string &operator_numeric)
Definition: nvram_config.cpp:170
void set_emergency_mode(bool mode)
Definition: nvram_config.cpp:195
int network_selection_mode() const
Definition: nvram_config.cpp:158
const NvramConfig * config_
Definition: nvram_config.h:74
Definition: nvram_config.h:23
bool LoadFromFile(const char *file)
Definition: nvram_config.cpp:111
static NvramConfig * BuildConfigImpl(size_t num_instances, int sim_type)
Definition: nvram_config.cpp:51
std::vector< InstanceSpecific > Instances() const
int sim_type_
Definition: nvram_config.h:81
NvramConfig & operator=(NvramConfig &&)
static const NvramConfig * Get()
Definition: nvram_config.cpp:81
std::unique_ptr< Json::Value > dictionary_
Definition: nvram_config.h:82
static std::string ConfigFileLocation()
Definition: nvram_config.cpp:106
size_t total_instances_
Definition: nvram_config.h:80
int sim_type() const
Definition: nvram_config.cpp:199
static void SaveToFile()
Definition: nvram_config.cpp:85
NvramConfig(NvramConfig &&)
NvramConfig(const NvramConfig &)=delete
NvramConfig & operator=(const NvramConfig &)=delete
void InitDefaultNvramConfig()
Definition: nvram_config.cpp:140
NvramConfig(size_t num_instances, int sim_type)
Definition: nvram_config.cpp:91
static std::unique_ptr< NvramConfig > s_nvram_config
Definition: nvram_config.h:79
static void InitNvramConfigService(size_t num_instances, int sim_type)
Definition: nvram_config.cpp:73
InstanceSpecific ForInstance(int instance_num) const
Definition: nvram_config.cpp:102
uint32_t id
Definition: file_sync_protocol.h:0
Definition: alloc_driver.h:20