/* * DigitalIO.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include #include #include "PERIPHERY/PeripheryMap.h" #include "RUDRIVEFRAMEWORK/DataType.h" #include "RUDRIVEFRAMEWORK/SystemDefinitions.h" #ifndef PERIPHERY_DIGITALIO_H_ #define PERIPHERY_DIGITALIO_H_ namespace PERIPHERY { struct DigitalIODataBitField { uint16_t b00: 1; uint16_t b01: 1; uint16_t b02: 1; uint16_t b03: 1; uint16_t b04: 1; uint16_t b05: 1; uint16_t b06: 1; uint16_t b07: 1; uint16_t b08: 1; uint16_t b09: 1; uint16_t b10: 1; uint16_t b11: 1; uint16_t b12: 1; uint16_t b13: 1; uint16_t b14: 1; uint16_t b15: 1; };// union DigitalIODataRegister { uint16_t all; DigitalIODataBitField bit; DigitalIODataRegister(): all(0) {} };// struct DigitalIOData { DigitalIODataRegister input; DigitalIODataRegister output; DigitalIOData(): input(), output() {} };// class DigitalIO { private: uint16_t *m_pointer; public: DigitalIO(); void setup(uint16_t *memzone); public: void readDigitalIO(uint16_t& data); void writeDigitalIO(uint16_t data); }; } /* namespace PERIPHERY */ #endif /* PERIPHERY_DIGITALIO_H_ */