Object Model code with hardware support

Dependencies:   mbed

Committer:
bgrissom
Date:
Fri Sep 05 00:07:44 2014 +0000
Revision:
0:2b4bbe9ea495
Object Model code with Toshiba S0 and S1 routines compiles with ST F401RE board support.  If you try to compile this for the F030 or F072, it will run out of SRAM space.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bgrissom 0:2b4bbe9ea495 1 #ifndef __ANTHEM_H__
bgrissom 0:2b4bbe9ea495 2 #define __ANTHEM_H__
bgrissom 0:2b4bbe9ea495 3
bgrissom 0:2b4bbe9ea495 4 #include <stdint.h>
bgrissom 0:2b4bbe9ea495 5 #include "defines.hpp"
bgrissom 0:2b4bbe9ea495 6 #include "ToshibaTC62D723.hpp"
bgrissom 0:2b4bbe9ea495 7
bgrissom 0:2b4bbe9ea495 8 // CODING STANDARDS:
bgrissom 0:2b4bbe9ea495 9 // Local variable: var
bgrissom 0:2b4bbe9ea495 10 // Global variable: g_var
bgrissom 0:2b4bbe9ea495 11 // Paramater variable: p_var
bgrissom 0:2b4bbe9ea495 12 // Member variable: _var
bgrissom 0:2b4bbe9ea495 13
bgrissom 0:2b4bbe9ea495 14 class LED {
bgrissom 0:2b4bbe9ea495 15 public:
bgrissom 0:2b4bbe9ea495 16 // Constructor
bgrissom 0:2b4bbe9ea495 17 LED(void);
bgrissom 0:2b4bbe9ea495 18
bgrissom 0:2b4bbe9ea495 19 // Default Destructor
bgrissom 0:2b4bbe9ea495 20 virtual ~LED();
bgrissom 0:2b4bbe9ea495 21
bgrissom 0:2b4bbe9ea495 22 // Members
bgrissom 0:2b4bbe9ea495 23 ToshibaTC62D723 *_ledDriver;
bgrissom 0:2b4bbe9ea495 24
bgrissom 0:2b4bbe9ea495 25 // Member Functions
bgrissom 0:2b4bbe9ea495 26 float getCalibrationFactor (void);
bgrissom 0:2b4bbe9ea495 27 void setCalibrationFactor (float p_val);
bgrissom 0:2b4bbe9ea495 28 uint8_t getDriverChannelNum (void);
bgrissom 0:2b4bbe9ea495 29 void setDriverChannelNum (uint8_t p_val);
bgrissom 0:2b4bbe9ea495 30 uint16_t getBrightness (void);
bgrissom 0:2b4bbe9ea495 31 void setBrightness (uint16_t p_val);
bgrissom 0:2b4bbe9ea495 32
bgrissom 0:2b4bbe9ea495 33
bgrissom 0:2b4bbe9ea495 34 private:
bgrissom 0:2b4bbe9ea495 35 // Private Member Variables
bgrissom 0:2b4bbe9ea495 36 float _calibrationFactor;
bgrissom 0:2b4bbe9ea495 37 uint8_t _driverChannelNum;
bgrissom 0:2b4bbe9ea495 38 uint16_t _brightness;
bgrissom 0:2b4bbe9ea495 39
bgrissom 0:2b4bbe9ea495 40 // Private Member Functions
bgrissom 0:2b4bbe9ea495 41 };
bgrissom 0:2b4bbe9ea495 42
bgrissom 0:2b4bbe9ea495 43
bgrissom 0:2b4bbe9ea495 44 class LEDPixel {
bgrissom 0:2b4bbe9ea495 45 public:
bgrissom 0:2b4bbe9ea495 46 // Constructor
bgrissom 0:2b4bbe9ea495 47 LEDPixel(void);
bgrissom 0:2b4bbe9ea495 48
bgrissom 0:2b4bbe9ea495 49 // Default Destructor
bgrissom 0:2b4bbe9ea495 50 virtual ~LEDPixel();
bgrissom 0:2b4bbe9ea495 51
bgrissom 0:2b4bbe9ea495 52 // Members
bgrissom 0:2b4bbe9ea495 53 LED _redLED;
bgrissom 0:2b4bbe9ea495 54 LED _greenLED;
bgrissom 0:2b4bbe9ea495 55 LED _blueLED;
bgrissom 0:2b4bbe9ea495 56
bgrissom 0:2b4bbe9ea495 57 // Member Functions
bgrissom 0:2b4bbe9ea495 58 float getCalibrationFactor(void);
bgrissom 0:2b4bbe9ea495 59 void setCalibrationFactor(float p_cal);
bgrissom 0:2b4bbe9ea495 60
bgrissom 0:2b4bbe9ea495 61
bgrissom 0:2b4bbe9ea495 62 private:
bgrissom 0:2b4bbe9ea495 63 // Private Member Variables
bgrissom 0:2b4bbe9ea495 64 float _calibrationFactor;
bgrissom 0:2b4bbe9ea495 65
bgrissom 0:2b4bbe9ea495 66 // Private Member Functions
bgrissom 0:2b4bbe9ea495 67 };
bgrissom 0:2b4bbe9ea495 68
bgrissom 0:2b4bbe9ea495 69
bgrissom 0:2b4bbe9ea495 70 class ScanGroup {
bgrissom 0:2b4bbe9ea495 71 public:
bgrissom 0:2b4bbe9ea495 72 // Constructor
bgrissom 0:2b4bbe9ea495 73 ScanGroup(void);
bgrissom 0:2b4bbe9ea495 74
bgrissom 0:2b4bbe9ea495 75 // Default Destructor
bgrissom 0:2b4bbe9ea495 76 virtual ~ScanGroup();
bgrissom 0:2b4bbe9ea495 77
bgrissom 0:2b4bbe9ea495 78 // Members
bgrissom 0:2b4bbe9ea495 79 ScanGroup *_nextScanGroup;
bgrissom 0:2b4bbe9ea495 80
bgrissom 0:2b4bbe9ea495 81 // Member Functions
bgrissom 0:2b4bbe9ea495 82 void mapLEDsToDrivers(void);
bgrissom 0:2b4bbe9ea495 83 void addLED(LED *p_led);
bgrissom 0:2b4bbe9ea495 84 int getTransistorMCUPinNum(void);
bgrissom 0:2b4bbe9ea495 85
bgrissom 0:2b4bbe9ea495 86
bgrissom 0:2b4bbe9ea495 87 private:
bgrissom 0:2b4bbe9ea495 88 // Private Member Variables
bgrissom 0:2b4bbe9ea495 89 uint16_t _transistorMCUPinNum;
bgrissom 0:2b4bbe9ea495 90 LED *_LEDs[LEDS_PER_SCANGROUP];
bgrissom 0:2b4bbe9ea495 91 uint16_t _index; // Index into the _LEDs array
bgrissom 0:2b4bbe9ea495 92
bgrissom 0:2b4bbe9ea495 93 // Private Member Functions
bgrissom 0:2b4bbe9ea495 94 };
bgrissom 0:2b4bbe9ea495 95
bgrissom 0:2b4bbe9ea495 96
bgrissom 0:2b4bbe9ea495 97 class PixelColor {
bgrissom 0:2b4bbe9ea495 98 public:
bgrissom 0:2b4bbe9ea495 99 // Constructor
bgrissom 0:2b4bbe9ea495 100 PixelColor(void);
bgrissom 0:2b4bbe9ea495 101
bgrissom 0:2b4bbe9ea495 102 // Default Destructor
bgrissom 0:2b4bbe9ea495 103 virtual ~PixelColor();
bgrissom 0:2b4bbe9ea495 104
bgrissom 0:2b4bbe9ea495 105 // Members
bgrissom 0:2b4bbe9ea495 106 uint8_t _r;
bgrissom 0:2b4bbe9ea495 107 uint8_t _g;
bgrissom 0:2b4bbe9ea495 108 uint8_t _b;
bgrissom 0:2b4bbe9ea495 109
bgrissom 0:2b4bbe9ea495 110 // Member Functions
bgrissom 0:2b4bbe9ea495 111
bgrissom 0:2b4bbe9ea495 112
bgrissom 0:2b4bbe9ea495 113 private:
bgrissom 0:2b4bbe9ea495 114 // Private Member Variables
bgrissom 0:2b4bbe9ea495 115
bgrissom 0:2b4bbe9ea495 116 // Private Member Functions
bgrissom 0:2b4bbe9ea495 117 };
bgrissom 0:2b4bbe9ea495 118
bgrissom 0:2b4bbe9ea495 119
bgrissom 0:2b4bbe9ea495 120 class Image {
bgrissom 0:2b4bbe9ea495 121 public:
bgrissom 0:2b4bbe9ea495 122 // Constructor
bgrissom 0:2b4bbe9ea495 123 Image(void);
bgrissom 0:2b4bbe9ea495 124
bgrissom 0:2b4bbe9ea495 125 // Default Destructor
bgrissom 0:2b4bbe9ea495 126 virtual ~Image();
bgrissom 0:2b4bbe9ea495 127
bgrissom 0:2b4bbe9ea495 128 // Members
bgrissom 0:2b4bbe9ea495 129
bgrissom 0:2b4bbe9ea495 130 // Member Functions
bgrissom 0:2b4bbe9ea495 131 PixelColor getPixel(uint16_t x, uint16_t y);
bgrissom 0:2b4bbe9ea495 132 void setPixel(uint16_t x, uint16_t y, PixelColor p_pix);
bgrissom 0:2b4bbe9ea495 133
bgrissom 0:2b4bbe9ea495 134
bgrissom 0:2b4bbe9ea495 135 private:
bgrissom 0:2b4bbe9ea495 136 // Private Member Variables
bgrissom 0:2b4bbe9ea495 137 PixelColor _imgPixel[MODULE_WIDTH][MODULE_HEIGHT];
bgrissom 0:2b4bbe9ea495 138
bgrissom 0:2b4bbe9ea495 139 // Private Member Functions
bgrissom 0:2b4bbe9ea495 140 };
bgrissom 0:2b4bbe9ea495 141
bgrissom 0:2b4bbe9ea495 142
bgrissom 0:2b4bbe9ea495 143 class LEDModule {
bgrissom 0:2b4bbe9ea495 144 public:
bgrissom 0:2b4bbe9ea495 145 // Constructor
bgrissom 0:2b4bbe9ea495 146 LEDModule(void);
bgrissom 0:2b4bbe9ea495 147
bgrissom 0:2b4bbe9ea495 148 // Default Destructor
bgrissom 0:2b4bbe9ea495 149 virtual ~LEDModule();
bgrissom 0:2b4bbe9ea495 150
bgrissom 0:2b4bbe9ea495 151 // Members
bgrissom 0:2b4bbe9ea495 152 Image _sourceImage;
bgrissom 0:2b4bbe9ea495 153
bgrissom 0:2b4bbe9ea495 154 // Member Functions
bgrissom 0:2b4bbe9ea495 155 void displayImage(void);
bgrissom 0:2b4bbe9ea495 156
bgrissom 0:2b4bbe9ea495 157
bgrissom 0:2b4bbe9ea495 158 private:
bgrissom 0:2b4bbe9ea495 159 // Private Member Variables
bgrissom 0:2b4bbe9ea495 160 uint8_t _rowNum;
bgrissom 0:2b4bbe9ea495 161 uint8_t _colNum;
bgrissom 0:2b4bbe9ea495 162 float _moduleBrightness;
bgrissom 0:2b4bbe9ea495 163 float _displayBrightness;
bgrissom 0:2b4bbe9ea495 164 ScanGroup _scanGroupArray[NUM_SCANGROUPS];
bgrissom 0:2b4bbe9ea495 165 ScanGroup *_currentScanGroup;
bgrissom 0:2b4bbe9ea495 166 ToshibaTC62D723 _ledDriverArray[NUM_LED_DRIVERS];
bgrissom 0:2b4bbe9ea495 167 ToshibaTC62D723 *_dataOutDriver; // This is at the begginging of the chain.
bgrissom 0:2b4bbe9ea495 168 // Data is shifted into this driver.
bgrissom 0:2b4bbe9ea495 169 ToshibaTC62D723 *_dataInDriver; // This is at the end of the chain.
bgrissom 0:2b4bbe9ea495 170 // Error messages are received from this driver.
bgrissom 0:2b4bbe9ea495 171 LEDPixel _pixel [MODULE_WIDTH][MODULE_HEIGHT];
bgrissom 0:2b4bbe9ea495 172
bgrissom 0:2b4bbe9ea495 173 // Private Member Functions
bgrissom 0:2b4bbe9ea495 174 void adjustImage(void);
bgrissom 0:2b4bbe9ea495 175 void shiftBrightnessDataIn(void);
bgrissom 0:2b4bbe9ea495 176 void enableNextScanGroup(void);
bgrissom 0:2b4bbe9ea495 177 void setPinToValue(int p_pin, int p_val);
bgrissom 0:2b4bbe9ea495 178 };
bgrissom 0:2b4bbe9ea495 179
bgrissom 0:2b4bbe9ea495 180
bgrissom 0:2b4bbe9ea495 181 #endif // __ANTHEM_H__