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
25 public:
26 static void InitNvramConfigService(size_t num_instances, int sim_type);
27 static const NvramConfig* Get();
28 static void SaveToFile();
29
30 NvramConfig(size_t num_instances, int sim_type);
34
35 static std::string ConfigFileLocation();
36 // Saves the configuration object in a file
37 bool SaveToFile(const std::string& file) const;
38
39 class InstanceSpecific;
40
41 InstanceSpecific ForInstance(int instance_num) const;
42
43 std::vector<InstanceSpecific> Instances() const;
44
45 int sim_type() const;
46
47 // A view into an existing modem simulator object for a particular instance.
49 public:
50 int network_selection_mode() const;
51 void set_network_selection_mode(int mode);
52
53 std::string operator_numeric() const;
54 void set_operator_numeric(std::string& operator_numeric);
55
56 int modem_technoloy() const;
57 void set_modem_technoloy(int technoloy);
58
59 int preferred_network_mode() const;
60 void set_preferred_network_mode(int mode);
61
62 bool emergency_mode() const;
63 void set_emergency_mode(bool mode);
64
65 private:
67 friend std::vector<InstanceSpecific> NvramConfig::Instances() const;
68
69 InstanceSpecific(const NvramConfig* config, const std::string& id)
70 : config_(config), id_(id) {}
71
72 Json::Value* Dictionary();
73 const Json::Value* Dictionary() const;
74
76 std::string id_;
77 };
78
79 private:
80 static std::unique_ptr<NvramConfig> s_nvram_config;
83 std::unique_ptr<Json::Value> dictionary_;
84
85 bool LoadFromFile(const char* file);
86 static NvramConfig* BuildConfigImpl(size_t num_instances, int sim_type);
87
89
90 NvramConfig(const NvramConfig&) = delete;
92};
93
94} // namespace cuttlefish
Definition: nvram_config.h:48
std::string operator_numeric() const
Definition: nvram_config.cpp:164
InstanceSpecific(const NvramConfig *config, const std::string &id)
Definition: nvram_config.h:69
int preferred_network_mode() const
Definition: nvram_config.cpp:180
void set_preferred_network_mode(int mode)
Definition: nvram_config.cpp:184
void set_network_selection_mode(int mode)
Definition: nvram_config.cpp:160
bool emergency_mode() const
Definition: nvram_config.cpp:188
int modem_technoloy() const
Definition: nvram_config.cpp:172
Json::Value * Dictionary()
Definition: nvram_config.cpp:152
std::string id_
Definition: nvram_config.h:76
void set_modem_technoloy(int technoloy)
Definition: nvram_config.cpp:176
void set_operator_numeric(std::string &operator_numeric)
Definition: nvram_config.cpp:168
void set_emergency_mode(bool mode)
Definition: nvram_config.cpp:192
int network_selection_mode() const
Definition: nvram_config.cpp:156
const NvramConfig * config_
Definition: nvram_config.h:75
Definition: nvram_config.h:23
bool LoadFromFile(const char *file)
Definition: nvram_config.cpp:110
static NvramConfig * BuildConfigImpl(size_t num_instances, int sim_type)
Definition: nvram_config.cpp:50
std::vector< InstanceSpecific > Instances() const
int sim_type_
Definition: nvram_config.h:82
NvramConfig & operator=(NvramConfig &&)
static const NvramConfig * Get()
Definition: nvram_config.cpp:80
std::unique_ptr< Json::Value > dictionary_
Definition: nvram_config.h:83
static std::string ConfigFileLocation()
Definition: nvram_config.cpp:105
size_t total_instances_
Definition: nvram_config.h:81
int sim_type() const
Definition: nvram_config.cpp:196
static void SaveToFile()
Definition: nvram_config.cpp:84
NvramConfig(NvramConfig &&)
NvramConfig(const NvramConfig &)=delete
NvramConfig & operator=(const NvramConfig &)=delete
void InitDefaultNvramConfig()
Definition: nvram_config.cpp:138
NvramConfig(size_t num_instances, int sim_type)
Definition: nvram_config.cpp:90
static std::unique_ptr< NvramConfig > s_nvram_config
Definition: nvram_config.h:80
static void InitNvramConfigService(size_t num_instances, int sim_type)
Definition: nvram_config.cpp:72
InstanceSpecific ForInstance(int instance_num) const
Definition: nvram_config.cpp:101
uint32_t id
Definition: file_sync_protocol.h:0
Definition: alloc_utils.cpp:23