diff --git a/FlippR-Driver/contrib/json_example/output/Lamp_Config.json b/FlippR-Driver/contrib/json_example/output/Lamp_Config.json index 6e60bbd..a8a8191 100644 --- a/FlippR-Driver/contrib/json_example/output/Lamp_Config.json +++ b/FlippR-Driver/contrib/json_example/output/Lamp_Config.json @@ -303,7 +303,7 @@ }, { "address" : 50, - "name" : "Bonux Multiplier x50" + "name" : "Bonus Multiplier x50" }, { "address" : 51, diff --git a/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json b/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json index cc174de..a024e3e 100644 --- a/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json +++ b/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json @@ -11,7 +11,7 @@ "flippers" : [ { - "address" : 59, + "address" : 60, "name" : "Flipper Relay" }, { diff --git a/FlippR-Driver/networking/output/OutputRequestHandler.cpp b/FlippR-Driver/networking/output/OutputRequestHandler.cpp index eb17bc3..5bf5cc0 100644 --- a/FlippR-Driver/networking/output/OutputRequestHandler.cpp +++ b/FlippR-Driver/networking/output/OutputRequestHandler.cpp @@ -84,7 +84,7 @@ void OutputRequestHandler::handleRequest(HTTPServerRequest &request, json_response->stringify(ostr); } } - catch(const NotFoundException &e) + catch(const Poco::NotFoundException &e) { response.setStatusAndReason(HTTPServerResponse::HTTP_NOT_FOUND, e.displayText()); } @@ -92,6 +92,10 @@ void OutputRequestHandler::handleRequest(HTTPServerRequest &request, { response.setStatusAndReason(HTTPServerResponse::HTTP_BAD_REQUEST, e.displayText()); } + catch(const std::exception &e) + { + response.setStatusAndReason(HTTPServerResponse::HTTP_BAD_REQUEST, e.what()); + } } boost::optional OutputRequestHandler::parseRequest(const std::string& item_type, const std::string& item_name, const std::string& action, const std::string& score) diff --git a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp index 0cf951d..d7a5767 100644 --- a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp +++ b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp @@ -9,6 +9,8 @@ #include "utility/config.h" +#include + namespace flippR_driver { namespace output @@ -56,6 +58,7 @@ void DriverBoardPinController::deactivate(items::DriverBoardItem &driver_board_i void DriverBoardPinController::select_address(uint8_t address) { + CLOG(DEBUG, OUTPUT_LOGGER) << "Select address " << std::to_string(address); address = address % 8; write_pin(this->address_pins[0], address & 0b001); write_pin(this->address_pins[1], address & 0b010); @@ -64,6 +67,7 @@ void DriverBoardPinController::select_address(uint8_t address) void DriverBoardPinController::select_mux(uint8_t mux) { + CLOG(DEBUG, OUTPUT_LOGGER) << "Select mux " << std::to_string(mux); write_pin(this->mux_enable_pins[mux], 0); } diff --git a/FlippR-Driver/src/output/detail/OutputDriver.cpp b/FlippR-Driver/src/output/detail/OutputDriver.cpp index 4842be1..ba7240d 100644 --- a/FlippR-Driver/src/output/detail/OutputDriver.cpp +++ b/FlippR-Driver/src/output/detail/OutputDriver.cpp @@ -129,27 +129,47 @@ std::vector> OutputDriver::get_solenoids() const boost::optional> OutputDriver::get_lamp(const std::string &name) const { - return this->lamps.find(name)->second; + auto lamp = this->lamps.find(name); + if(lamp == this->lamps.end()) { + return boost::optional>(); + } + return lamp->second; } boost::optional> OutputDriver::get_solenoid(const std::string &name) const { - return this->solenoids.find(name)->second; + auto solenoid = this->solenoids.find(name); + if(solenoid == this->solenoids.end()) { + return boost::optional>(); + } + return solenoid->second; } boost::optional> OutputDriver::get_sound(const std::string &name) const { - return this->sounds.find(name)->second; + auto sound = this->sounds.find(name); + if(sound == this->sounds.end()) { + return boost::optional>(); + } + return sound->second; } boost::optional> OutputDriver::get_flipper(const std::string &name) const { - return this->flippers.find(name)->second; + auto flipper = this->flippers.find(name); + if(flipper == this->flippers.end()) { + return boost::optional>(); + } + return flipper->second; } boost::optional> OutputDriver::get_display(const std::string &name) const { - return this->displays.find(name)->second; + auto display = this->displays.find(name); + if(display == this->displays.end()) { + return boost::optional>(); + } + return display->second; } void OutputDriver::shut_down_driver() const