implementing displays and refactor fail
This commit is contained in:
@@ -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>();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user