#pragma once #include #include "DSP28x_Project.h" namespace interface { 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 { public: DigitalIO(); void setup(uint16_t *memzone); void setMemoryOffset(uint16_t offset); void readDigitalIO(uint16_t& data); void writeDigitalIO(uint16_t& data) const; private: uint16_t *m_pointer; }; } // interface