/* * SCIBase.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "F28335/DSP28x_Project.h" #include "DSP28335/GPIO.h" #include "RUDRIVEFRAMEWORK/DataType.h" #include "RUDRIVEFRAMEWORK/SystemDefinitions.h" #ifndef DSP28335_SCIBASE_H_ #define DSP28335_SCIBASE_H_ namespace DSP28335 { enum SCIBaudRate { BR2400, BR4800, BR9600, BR19200, BR38400}; enum SCIParity {NO, ODD, EVEN}; enum SCIStopBits {ONE, TWO}; enum SCICharLenght { LEN1, LEN2, LEN3, LEN4, LEN5, LEN6, LEN7, LEN8}; struct SCIConfiguration { DSP28335::SCIBaudRate baudrate; DSP28335::SCIParity parity; DSP28335::SCIStopBits stopbits; DSP28335::SCICharLenght lenght; SCIConfiguration(): baudrate(DSP28335::BR19200), parity(DSP28335::ODD), stopbits(DSP28335::ONE), lenght(DSP28335::LEN1) {} };// struct SCISetup { SCIConfiguration config; pGPIO_FUNCTION gpio_setup; // SCISetup(): // config(), // gpio_setup(0) // {} };// class SCIBase { public: volatile struct SCI_REGS& SciRegs; protected: SCISetup settings; public: SCIBase(volatile struct SCI_REGS& SciRegs); virtual void setup() = 0; //virtual void setup(DSP28335::SCISetup& setup) = 0; virtual void get_default_configuration(DSP28335::SCIConfiguration& config) = 0; virtual void get_configuration(DSP28335::SCIConfiguration& config) = 0; virtual void set_configuration(DSP28335::SCIConfiguration& config) = 0; virtual bool compare_configuration(DSP28335::SCIConfiguration& config) = 0; protected: virtual void _configure(DSP28335::SCIConfiguration& config) = 0; void (*_gpio_setup)(); }; } /* namespace DSP28335 */ #endif /* DSP28335_SCIBASE_H_ */