add some serious parser logic. pretty impressive skillz have been applied.
This commit is contained in:
@@ -8,6 +8,11 @@
|
||||
#include <fstream>
|
||||
|
||||
#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!";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user