Files
flippr-code/FlippR-Driver/src/PinController.cpp
Johannes Wendel a173064d1f forgot to push
2019-08-01 20:20:37 +02:00

68 lines
1.3 KiB
C++

/*
* PinController.cpp
*
* Created on: Jun 15, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#include "PinController.h"
#include "utility/config.h"
#define NOT_PI
#ifndef NOT_PI
#include "wiringPi/wiringPi.h"
#include "wiringPi/mcp23017.h"
#endif
#ifdef NOT_PI
#include "utility/wiringPiTesting.hpp"
#endif
#include "json/json.hpp"
namespace flippR_driver
{
std::once_flag PinController::GPIO_LIB_INITIALIZED;
PinController::PinController()
{
std::call_once(GPIO_LIB_INITIALIZED, wiringPiSetup);
}
void PinController::initialize_input_pin(uint8_t address)
{
pinMode(address, INPUT);
}
void PinController::initialize_output_pin(const uint8_t address)
{
pinMode(address, OUTPUT);
}
void PinController::write_pin(uint8_t address, bool value)
{
digitalWrite(address, value);
}
bool PinController::read_pin(uint8_t address)
{
return PULLDOWN == digitalRead(address);
}
void PinController::initialize_port_expander(const uint8_t i2c_address, const uint8_t pin_base)
{
mcp23017Setup(pin_base, i2c_address);
}
void PinController::initialize_pins_output(const uint8_t pin_base, std::map<std::string, uint8_t>::iterator begin, std::map<std::string, uint8_t>::iterator end)
{
for(;begin != end; begin++)
{
initialize_output_pin(pin_base + begin->second);
}
}
}