#ifndef _SHIFT_REGISTERS_INTERNAL #define _SHIFT_REGISTERS_INTERNAL #include "seduce.h" void set_value_to(volatile byte* reg, byte position, byte value); void set_value(volatile byte* reg, byte position); void reset_value(volatile byte* reg, byte position); bool get_value(volatile byte* reg, byte position); typedef enum { SR_PISO, SR_SIPO } ShiftRegisterTypeHeader; typedef struct { ShiftRegisterTypeHeader type; } ShiftRegisterHeader; typedef struct { ShiftRegisterHeader header; const DataPosition* clockEnable; const DataPosition* clockPulse; int waitTime; bool clockEnabled; } ShiftRegister; typedef struct { ShiftRegister shiftRegister; const DataPosition* output; const DataPosition* parallelLoad; } PisoShiftRegister; typedef struct { ShiftRegister shiftRegister; const DataPosition* input; const DataPosition* outputEnable; const DataPosition* pushOutput; } SipoShiftRegister; #endif