implementing displays and refactor fail

This commit is contained in:
Jonas Zeunert
2018-12-14 14:20:11 +01:00
parent f9edf2f8cc
commit 49cd625808
20 changed files with 100 additions and 48 deletions

View File

@@ -135,11 +135,12 @@ std::map<std::string, std::shared_ptr<items::Solenoid>> create_solenoids(std::is
{
std::map<std::string, std::shared_ptr<items::Solenoid>> solenoids;
json solenoids_json;
solenoid_config >> solenoids_json;
json solenoid_config_json;
solenoid_config >> solenoid_config_json;
auto deactivation_time = get_deactivation_time(solenoids_json);
auto deactivation_time = get_deactivation_time(solenoid_config_json);
json solenoids_json = solenoid_config_json.at("solenoids");
for(auto &solenoid_json : solenoids_json)
{
auto solenoid = create_solenoid(solenoid_json, output_gpio_interface, deactivation_time);
@@ -153,9 +154,10 @@ std::map<std::string, std::shared_ptr<items::Lamp>> create_lamps(std::istream &l
{
std::map<std::string, std::shared_ptr<items::Lamp>> lamps;
json lamps_json;
lamp_config >> lamps_json;
json lamp_config_json;
lamp_config >> lamp_config_json;
json lamps_json = lamp_config_json.at("lamps");
for(auto &lamp_json : lamps_json)
{
auto lamp = create_lamp(lamp_json, output_gpio_interface);
@@ -169,11 +171,12 @@ std::map<std::string, std::shared_ptr<items::Sound>> create_sounds(std::istream
{
std::map<std::string, std::shared_ptr<items::Sound>> sounds;
json sounds_json;
sound_config >> sounds_json;
json sounds_config_json;
sound_config >> sounds_config_json;
auto deactivation_time = get_deactivation_time(sounds_json);
auto deactivation_time = get_deactivation_time(sounds_config_json);
json sounds_json = sounds_config_json.at("sounds"); // todo catch
for(auto &sound_json : sounds_json)
{
auto sound = create_sound(sound_json, output_gpio_interface, deactivation_time);
@@ -190,7 +193,7 @@ std::chrono::milliseconds get_deactivation_time(nlohmann::json &json)
auto deactivation_time = json.at("deactivation_time_milliseconds").get<uint>();
return std::chrono::milliseconds(deactivation_time);
}
catch(json::type_error &e)
catch(json::exception &e)
{
// todo log and exit
exit(EXIT_FAILURE);
@@ -211,7 +214,7 @@ std::shared_ptr<items::impl::Solenoid> create_solenoid(nlohmann::json &solenoid_
return std::make_shared<items::impl::Solenoid>(pin_controller, address, name, deactivation_time);
}
catch(json::type_error &e)
catch(json::exception &e)
{
// todo log and exit
exit(EXIT_FAILURE);
@@ -226,7 +229,7 @@ std::shared_ptr<items::impl::Lamp> create_lamp(nlohmann::json &lamp_json, std::s
auto address = lamp_json.at("address").get<uint8_t>();
return std::make_shared<items::impl::Lamp>(pin_controller, address, name);
}
catch(json::type_error &e)
catch(json::exception &e)
{
// todo log and exit
exit(EXIT_FAILURE);
@@ -242,7 +245,7 @@ std::shared_ptr<items::impl::Sound> create_sound(nlohmann::json &sound_json, std
auto address = sound_json.at("address").get<uint8_t>();
return std::make_shared<items::impl::Sound>(pin_controller, address, description, deactivation_time, id);
}
catch(json::type_error &e)
catch(json::exception &e)
{
// todo log and exit
exit(EXIT_FAILURE);
@@ -253,9 +256,39 @@ std::map<uint8_t, std::shared_ptr<items::Display>> create_displays(std::istream
{
std::map<uint8_t, std::shared_ptr<items::Display>> displays;
json display_config_json;
display_config >> display_config_json;
json displays_json = display_config_json.at('displays');
for(json &display_json : displays_json)
{
auto display = create_display(display_json);
}
return displays;
}
std::shared_ptr<items::Display> create_display(nlohmann::json &display_json)
{
try
{
auto id = display_json.at("id").get<uint8_t>();
auto address = display_json.at("address").get<uint8_t>();
auto digits = display_json.at("digits").get<uint8_t>();
if(digits == 8)
{
return std::make_shared<items::impl::EightDigitDisplay>(address, id);
}
}
catch(json::exception &e)
{
exit(EXIT_FAILURE);
}
return std::shared_ptr<items::Display>();
}
}
}
}