Object Model code with hardware support

Dependencies:   mbed

anthem.hpp

Committer:
bgrissom
Date:
2014-09-05
Revision:
0:2b4bbe9ea495

File content as of revision 0:2b4bbe9ea495:

#ifndef __ANTHEM_H__
#define __ANTHEM_H__

#include <stdint.h>
#include "defines.hpp"
#include "ToshibaTC62D723.hpp"

// CODING STANDARDS:
//      Local     variable: var
//      Global    variable: g_var
//      Paramater variable: p_var
//      Member    variable: _var

class LED {
    public:
        // Constructor
        LED(void);

        // Default Destructor
        virtual ~LED();

        // Members
        ToshibaTC62D723 *_ledDriver;

        // Member Functions
        float    getCalibrationFactor (void);
        void     setCalibrationFactor (float p_val);
        uint8_t  getDriverChannelNum  (void);
        void     setDriverChannelNum  (uint8_t p_val);
        uint16_t getBrightness        (void);
        void     setBrightness        (uint16_t p_val);


    private:
        // Private Member Variables
        float    _calibrationFactor;
        uint8_t  _driverChannelNum;
        uint16_t _brightness;

        // Private Member Functions
};


class LEDPixel {
    public:
        // Constructor
        LEDPixel(void);

        // Default Destructor
        virtual ~LEDPixel();

        // Members
        LED _redLED;
        LED _greenLED;
        LED _blueLED;

        // Member Functions
        float getCalibrationFactor(void);
        void  setCalibrationFactor(float p_cal);


    private:
        // Private Member Variables
        float _calibrationFactor;

        // Private Member Functions
};


class ScanGroup {
    public:
        // Constructor
        ScanGroup(void);

        // Default Destructor
        virtual ~ScanGroup();

        // Members
        ScanGroup *_nextScanGroup;

        // Member Functions
        void mapLEDsToDrivers(void);
        void addLED(LED *p_led);
        int getTransistorMCUPinNum(void);


    private:
        // Private Member Variables
        uint16_t _transistorMCUPinNum;
        LED *_LEDs[LEDS_PER_SCANGROUP];
        uint16_t _index; // Index into the _LEDs array

        // Private Member Functions
};


class PixelColor {
    public:
        // Constructor
        PixelColor(void);

        // Default Destructor
        virtual ~PixelColor();

        // Members
        uint8_t _r;
        uint8_t _g;
        uint8_t _b;

        // Member Functions


    private:
        // Private Member Variables

        // Private Member Functions
};


class Image {
    public:
        // Constructor
        Image(void);

        // Default Destructor
        virtual ~Image();

        // Members

        // Member Functions
        PixelColor getPixel(uint16_t x, uint16_t y);
        void setPixel(uint16_t x, uint16_t y, PixelColor p_pix);


    private:
        // Private Member Variables
        PixelColor _imgPixel[MODULE_WIDTH][MODULE_HEIGHT];

        // Private Member Functions
};


class LEDModule {
    public:
        // Constructor
        LEDModule(void);

        // Default Destructor
        virtual ~LEDModule();

        // Members
        Image   _sourceImage;

        // Member Functions
        void displayImage(void);


    private:
        // Private Member Variables
        uint8_t _rowNum;
        uint8_t _colNum;
        float   _moduleBrightness;
        float   _displayBrightness;
        ScanGroup _scanGroupArray[NUM_SCANGROUPS];
        ScanGroup *_currentScanGroup;
        ToshibaTC62D723 _ledDriverArray[NUM_LED_DRIVERS];
        ToshibaTC62D723 *_dataOutDriver; // This is at the begginging of the chain.
                                         // Data is shifted into this driver.
        ToshibaTC62D723 *_dataInDriver;  // This is at the end of the chain.
                                         // Error messages are received from this driver.
        LEDPixel _pixel        [MODULE_WIDTH][MODULE_HEIGHT];

        // Private Member Functions
        void adjustImage(void);
        void shiftBrightnessDataIn(void);
        void enableNextScanGroup(void);
        void setPinToValue(int p_pin, int p_val);
};


#endif // __ANTHEM_H__