#include "shift_register_internal.h" void set_value_to(volatile byte* reg, byte position, byte value) { if (value == 1) { (*reg) |= (1 << position); } else if (value == 0) { (*reg) &= ~(1 << position); // TODO: check this one } } void set_value(volatile byte* reg, byte position) { set_value_to(reg, position, 1); } void reset_value(volatile byte* reg, byte position) { set_value_to(reg, position, 0); } bool get_value(volatile byte* reg, byte position) { return (*reg & (1 << position)) >> position; }