95 lines
2.7 KiB
C++
95 lines
2.7 KiB
C++
//
|
|
// Copyright (C) 2020 The Android Open Source Project
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#pragma once
|
|
|
|
#include <json/json.h>
|
|
|
|
namespace cuttlefish {
|
|
|
|
// Holds the configuration of modem simulator.
|
|
class NvramConfig {
|
|
|
|
public:
|
|
static void InitNvramConfigService(size_t num_instances, int sim_type);
|
|
static const NvramConfig* Get();
|
|
static void SaveToFile();
|
|
|
|
NvramConfig(size_t num_instances, int sim_type);
|
|
NvramConfig(NvramConfig&&);
|
|
~NvramConfig();
|
|
NvramConfig& operator=(NvramConfig&&);
|
|
|
|
std::string ConfigFileLocation() const;
|
|
// Saves the configuration object in a file
|
|
bool SaveToFile(const std::string& file) const;
|
|
|
|
class InstanceSpecific;
|
|
|
|
InstanceSpecific ForInstance(int instance_num) const;
|
|
|
|
std::vector<InstanceSpecific> Instances() const;
|
|
|
|
int sim_type() const;
|
|
|
|
// A view into an existing modem simulator object for a particular instance.
|
|
class InstanceSpecific {
|
|
public:
|
|
int network_selection_mode() const;
|
|
void set_network_selection_mode(int mode);
|
|
|
|
std::string operator_numeric() const;
|
|
void set_operator_numeric(std::string& operator_numeric);
|
|
|
|
int modem_technoloy() const;
|
|
void set_modem_technoloy(int technoloy);
|
|
|
|
int preferred_network_mode() const;
|
|
void set_preferred_network_mode(int mode);
|
|
|
|
bool emergency_mode() const;
|
|
void set_emergency_mode(bool mode);
|
|
|
|
private:
|
|
friend InstanceSpecific NvramConfig::ForInstance(int num) const;
|
|
friend std::vector<InstanceSpecific> NvramConfig::Instances() const;
|
|
|
|
InstanceSpecific(const NvramConfig* config, const std::string& id)
|
|
: config_(config), id_(id) {}
|
|
|
|
Json::Value* Dictionary();
|
|
const Json::Value* Dictionary() const;
|
|
|
|
const NvramConfig* config_;
|
|
std::string id_;
|
|
};
|
|
|
|
private:
|
|
static std::unique_ptr<NvramConfig> s_nvram_config;
|
|
size_t total_instances_;
|
|
int sim_type_;
|
|
std::unique_ptr<Json::Value> dictionary_;
|
|
|
|
bool LoadFromFile(const char* file);
|
|
static NvramConfig* BuildConfigImpl(size_t num_instances, int sim_type);
|
|
|
|
void InitDefaultNvramConfig();
|
|
|
|
NvramConfig(const NvramConfig&) = delete;
|
|
NvramConfig& operator=(const NvramConfig&) = delete;
|
|
};
|
|
|
|
} // namespace cuttlefish
|