diff --git a/src/AppConfig.cpp b/src/AppConfig.cpp index 446aaac..d49b8c9 100644 --- a/src/AppConfig.cpp +++ b/src/AppConfig.cpp @@ -114,7 +114,10 @@ void DeviceConfig::load(DataNode *node) { DeviceConfig *AppConfig::getDevice(std::string deviceId) { - DeviceConfig *conf = &deviceConfig[deviceId]; + if (deviceConfig.find(deviceId) == deviceConfig.end()) { + deviceConfig[deviceId] = new DeviceConfig(); + } + DeviceConfig *conf = deviceConfig[deviceId]; conf->setDeviceId(deviceId); return conf; } @@ -143,10 +146,10 @@ bool AppConfig::save() { cfg.rootNode()->setName("cubicsdr_config"); DataNode *devices_node = cfg.rootNode()->newChild("devices"); - std::map::iterator device_config_i; + std::map::iterator device_config_i; for (device_config_i = deviceConfig.begin(); device_config_i != deviceConfig.end(); device_config_i++) { DataNode *device_node = devices_node->newChild("device"); - device_config_i->second.save(device_node); + device_config_i->second->save(device_node); } std::string cfgFileDir = getConfigDir(); diff --git a/src/AppConfig.h b/src/AppConfig.h index baebdff..f1bff72 100644 --- a/src/AppConfig.h +++ b/src/AppConfig.h @@ -35,9 +35,9 @@ private: std::string deviceId; std::mutex busy_lock; - std::atomic ppm, directSampling; - std::atomic iqSwap; - std::atomic offset; + std::atomic_int ppm, directSampling; + std::atomic_bool iqSwap; + std::atomic_llong offset; }; class AppConfig { @@ -50,5 +50,5 @@ public: bool reset(); private: - std::map deviceConfig; + std::map deviceConfig; };