add some serious parser logic. pretty impressive skillz have been applied.

This commit is contained in:
andi
2018-05-31 19:02:55 +02:00
parent 2321f2997f
commit b4dfcd3026
2 changed files with 32 additions and 8 deletions

View File

@@ -8,6 +8,11 @@
#include <fstream> #include <fstream>
#include "InputGPIOInterface.h" #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) 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) void InputGPIOInterface::write_input_row(char data)
{ {
write_pin(this->input_row_address, data & 0b001); write_pin(this->input_row_address_A, data & 0b001);
write_pin(this->input_row_address, data & 0b010); write_pin(this->input_row_address_B, data & 0b010);
write_pin(this->input_row_address, data & 0b100); write_pin(this->input_row_address_C, data & 0b100);
} }
void InputGPIOInterface::write_input_col(char data) void InputGPIOInterface::write_input_col(char data)
{ {
write_pin(this->input_col_address, data & 0b001); write_pin(this->input_col_address_A, data & 0b001);
write_pin(this->input_col_address, data & 0b010); write_pin(this->input_col_address_B, data & 0b010);
write_pin(this->input_col_address, data & 0b100); write_pin(this->input_col_address_C, data & 0b100);
} }
@@ -38,4 +43,19 @@ InputGPIOInterface::InputGPIOInterface()
std::ifstream matrix_config_stream(matrix_config_path); std::ifstream matrix_config_stream(matrix_config_path);
json matrix_config; json matrix_config;
matrix_config << matrix_config_stream; 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!";
}
} }

View File

@@ -25,8 +25,12 @@ private:
void write_input_col(char data); void write_input_col(char data);
private: private:
char input_row_address; char input_row_address_A;
char input_col_address; 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; char input_data_address;
}; };