From b4dfcd3026f477c8d5db9d1069f783045c038043 Mon Sep 17 00:00:00 2001 From: andi Date: Thu, 31 May 2018 19:02:55 +0200 Subject: [PATCH] add some serious parser logic. pretty impressive skillz have been applied. --- .../src/utilities/InputGPIOInterface.cpp | 32 +++++++++++++++---- .../src/utilities/InputGPIOInterface.h | 8 +++-- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/FlippR-Driver/src/utilities/InputGPIOInterface.cpp b/FlippR-Driver/src/utilities/InputGPIOInterface.cpp index c40a087..774a902 100644 --- a/FlippR-Driver/src/utilities/InputGPIOInterface.cpp +++ b/FlippR-Driver/src/utilities/InputGPIOInterface.cpp @@ -8,6 +8,11 @@ #include #include "InputGPIOInterface.h" +#include "../lib/json/json.hpp" +#include "../lib/easylogging/easylogging++.h" +#include "config.h" + +using namespace nlohmann; bool InputGPIOInterface::read_input_data(char pin) { @@ -20,16 +25,16 @@ bool InputGPIOInterface::read_input_data(char pin) void InputGPIOInterface::write_input_row(char data) { - write_pin(this->input_row_address, data & 0b001); - write_pin(this->input_row_address, data & 0b010); - write_pin(this->input_row_address, data & 0b100); + write_pin(this->input_row_address_A, data & 0b001); + write_pin(this->input_row_address_B, data & 0b010); + write_pin(this->input_row_address_C, data & 0b100); } void InputGPIOInterface::write_input_col(char data) { - write_pin(this->input_col_address, data & 0b001); - write_pin(this->input_col_address, data & 0b010); - write_pin(this->input_col_address, data & 0b100); + write_pin(this->input_col_address_A, data & 0b001); + write_pin(this->input_col_address_B, data & 0b010); + write_pin(this->input_col_address_C, data & 0b100); } @@ -38,4 +43,19 @@ InputGPIOInterface::InputGPIOInterface() std::ifstream matrix_config_stream(matrix_config_path); json matrix_config; matrix_config << matrix_config_stream; + try { + json matrix_config_input = matrix_config.at("input"); + input_row_address_A = matrix_config.at("row").at("A"); + input_row_address_B = matrix_config.at("row").at("B"); + input_row_address_C = matrix_config.at("row").at("C"); + input_col_address_A = matrix_config.at("col").at("A"); + input_col_address_B = matrix_config.at("col").at("B"); + input_col_address_C = matrix_config.at("col").at("C"); + input_data_address = matrix_config.at("data"); + } catch (json::type_error& e) { + CLOG(ERROR, INPUT_LOGGER) << "ERROR"; + } catch (json::out_of_range& e) { + CLOG(ERROR, INPUT_LOGGER) << "ANOTHER ERROR!"; + } + } diff --git a/FlippR-Driver/src/utilities/InputGPIOInterface.h b/FlippR-Driver/src/utilities/InputGPIOInterface.h index 1650d3e..b331583 100644 --- a/FlippR-Driver/src/utilities/InputGPIOInterface.h +++ b/FlippR-Driver/src/utilities/InputGPIOInterface.h @@ -25,8 +25,12 @@ private: void write_input_col(char data); private: - char input_row_address; - char input_col_address; + char input_row_address_A; + char input_row_address_B; + char input_row_address_C; + char input_col_address_A; + char input_col_address_B; + char input_col_address_C; char input_data_address; };