MDM166AA: Improved icon APIs.
5 #ifndef FUTABA_MDM166AA_H
6 #define FUTABA_MDM166AA_H
11 const int KMDM166AAWidthInPixels = 96;
12 const int KMDM166AAHeightInPixels = 16;
13 const int KMDM166AAPixelsPerByte = 8;
14 const int KMDM166AAFrameBufferSizeInBytes = KMDM166AAWidthInPixels*KMDM166AAHeightInPixels/KMDM166AAPixelsPerByte; //96*16/8=192
15 const int KMDM166AAFrameBufferPixelCount = KMDM166AAWidthInPixels*KMDM166AAHeightInPixels;
19 MDM166AA is a graphic display module using a FUTABA 96x16dots VFD.
21 class MDM166AA : public FutabaGraphicDisplay
29 virtual void SwapBuffers();
31 virtual int MinBrightness() const {return 0;}
32 virtual int MaxBrightness() const {return 2;}
33 virtual void SetBrightness(int aBrightness);
35 virtual void ShowClock();
36 virtual void HideClock();
37 virtual bool SupportClock(){return true;}
39 virtual int IconCount(TMiniDisplayIconType aIcon);
40 virtual int IconStatusCount(TMiniDisplayIconType aIcon);
41 virtual void SetIconStatus(TMiniDisplayIconType aIcon, int aIndex, int aStatus);
44 virtual int WidthInPixels() const {return KMDM166AAWidthInPixels;}
45 virtual int HeightInPixels() const {return KMDM166AAHeightInPixels;}
47 virtual void SetPixel(unsigned char aX, unsigned char aY, unsigned int aPixel);
48 virtual void SetAllPixels(unsigned char aPattern);
49 virtual int FrameBufferSizeInBytes() const {return KMDM166AAFrameBufferSizeInBytes;}
52 virtual void Request(TMiniDisplayRequest aRequest);
55 void ToggleOffScreenMode();
56 void SetOffScreenMode(bool aOn);
57 bool OffScreenMode() const {return iOffScreenMode;}
60 void SetIconNetwork(int aIndex, int aStatus);
61 void SetIconEmail(int aIndex, int aStatus);
62 void SetIconMute(int aIndex, int aStatus);
63 void SetIconVolumeLabel(int aIndex, int aStatus);
64 void SetIconVolume(int aIndex, int aStatus);
65 void SetIconPlay(int aIndex, int aStatus);
66 void SetIconPause(int aIndex, int aStatus);
67 void SetIconRecording(int aIndex, int aStatus);
88 EIconRecording = 0x02,
92 EIconNetworkMast = 0x06,
93 EIconNetworkSignalLow = 0x07,
94 EIconNetworkSignalMid = 0x08,
95 EIconNetworkSignalHigh = 0x09,
96 EIconVolumeLabel = 0x0A,
97 EIconVolumeLevel01 = 0x0B,
98 EIconVolumeLevel02 = 0x0C,
99 EIconVolumeLevel03 = 0x0D,
100 EIconVolumeLevel04 = 0x0E,
101 EIconVolumeLevel05 = 0x0F,
102 EIconVolumeLevel06 = 0x10,
103 EIconVolumeLevel07 = 0x11,
104 EIconVolumeLevel08 = 0x12,
105 EIconVolumeLevel09 = 0x13,
106 EIconVolumeLevel10 = 0x14,
107 EIconVolumeLevel11 = 0x15,
108 EIconVolumeLevel12 = 0x16,
109 EIconVolumeLevel13 = 0x17,
110 EIconVolumeLevel14 = 0x18,
111 EIconFirst = EIconPlay,
112 EIconLast = EIconVolumeLevel14,
125 void SetAllIcons(TIconStatus aStatus);
127 //Specific to MDM166AA
128 //General setting command
129 void SendCommandClear();
130 void SendCommandReset();
133 void SendCommandSetClockData(unsigned char aHour, unsigned char aMinute);
134 void SendCommandClockDisplay(TClockSize aClockSize, TClockFormat aClockFormat);
135 void AttemptClockSynchronization();
138 void SendCommandSetAddressCounter(unsigned char aAddressCounter);
139 void SendCommandWriteGraphicData(int aSize, unsigned char* aPixels);
141 //Icon/Symbol command
142 void SendCommandSymbolControl(TIconId aIconId, TIconStatus aStatus);
144 void RequestDeviceId();
145 void RequestFirmwareRevision();
146 void RequestPowerSupplyStatus();
153 ///Off screen mode is the recommended default settings to avoid tearing.
154 ///Though turning it off can be useful for debugging
156 ///We use this flag to align display clock seconds with system time
157 bool iNeedAccurateClockData;
159 BitArrayLow* iFrameNext;
160 BitArrayLow* iFrameCurrent;
161 BitArrayLow* iFramePrevious;
163 BitArrayLow* iFrameAlpha; //owned
164 BitArrayLow* iFrameBeta; //owned
165 BitArrayLow* iFrameGamma; //owned