GP1212A02: Implement commands for: font char update, font action and hard reset.
5 #ifndef FUTABA_GP1212A02_H
6 #define FUTABA_GP1212A02_H
8 #include "FutabaGP1212.h"
10 #include "FutabaGP1212.h"
11 #include "FutabaVfd.h"
14 GP1212A01A is a graphic display module using a FUTABA 256x64dots VFD.
15 The module do not include character ROM, the customer will compile the character
16 by themselves (from main system).
18 class GP1212A02A : public GP1212XXXX
27 virtual void SwapBuffers();
28 virtual void TurnPowerOn();
29 virtual void TurnPowerOff();
30 virtual bool SupportPowerOnOff(){return true;}
31 virtual void ShowClock();
32 virtual void HideClock();
33 virtual bool SupportClock(){return true;}
38 virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn);
39 virtual void SetAllPixels(unsigned char aPattern);
40 virtual int FrameBufferSizeInBytes() const {return KGP12xFrameBufferSizeInBytes;}
41 virtual void SetBrightness(int aBrightness);
44 virtual void Request(TMiniDisplayRequest aRequest);
49 void ToggleOffScreenMode();
50 void SetOffScreenMode(bool aOn);
51 bool OffScreenMode() const {return iOffScreenMode;}
53 void SetFrameDifferencing(bool aOn){iUseFrameDifferencing=aOn;}
54 bool FrameDifferencing() const {return iUseFrameDifferencing;}
56 TMiniDisplayRequest AttemptRequestCompletion();
57 FutabaVfdReport& InputReport() {return iInputReport;}
60 char* FirmwareRevision();
74 ETargetDisplayWindow=0x30,
75 ETargetDataMemory=0x31
131 EFontTransfer = 0x31,
137 //Specific to GP1212A02A
138 //General setting command
139 void SendCommandClear();
140 void SendCommandReset();
142 void BmpDataInput(TTarget aTarget, unsigned short aAddress, TDirection aDirection, unsigned short aSize, unsigned char* aPixels);
144 void SendCommandPower(TPowerStatus aPowerStatus);
146 void SendCommandClockSetting(TWeekDay aWeekDay, unsigned char aHour, unsigned char aMinute);
147 void SendCommandClockDisplay(TClockFormat aClockFormat, unsigned short aAddress, TClockSize aSize);
148 void SendCommandClockCancel();
150 void SendCommandDefineCharacter(TFontSize aFontSize, unsigned short aCharacterCode, unsigned char* aPixelData);
151 void SendCommandFontAction(TFontAction aFontAction);
155 void BmpBoxSetting(TBmpBoxId aBoxId, unsigned short aAddress, int aWidth, int aHeight);
156 void BmpBoxSelect(TBmpBoxId aBoxId);
157 void BmpBoxDataMemoryTransfer(unsigned short aAddress);
158 void BmpBoxDataInput(unsigned short aSize, unsigned char* aPixels);
161 int ClockCharCount(TClockFormat aFormat);
162 int ClockCharWidthInPixels(TClockSize aSize);
163 int ClockCharHeightInPixels(TClockSize aSize);
164 unsigned short ClockCenterAddress(TClockFormat aFormat, TClockSize aSize);
166 int CharacterSizeInBytes(TFontSize aFontSize);
169 void RequestDeviceId();
170 void RequestFirmwareRevision();
171 void RequestPowerSupplyStatus();
173 void SetClockSetting();
177 unsigned char OffScreenY() const;
178 void OffScreenTranslation(unsigned char& aX, unsigned char& aY);
182 unsigned char iDisplayPositionX;
183 unsigned char iDisplayPositionY;
184 ///Off screen mode is the recommended default settings to avoid tearing.
185 ///Though turning it off can be useful for debugging
187 ///Frame differences algo is used to reduce USB bus traffic and improve frame rate in typical use case
188 bool iUseFrameDifferencing;
190 //FutabaVfdReport iReport;
192 //unsigned char iFrameBuffer[256*64];
193 BitArrayLow* iFrameNext;
194 BitArrayLow* iFrameCurrent;
195 BitArrayLow* iFramePrevious;
197 BitArrayLow* iFrameAlpha;
198 BitArrayLow* iFrameBeta;
199 BitArrayLow* iFrameGamma;
201 int iNeedFullFrameUpdate;
202 //unsigned char iFrameBeta[256*64];
203 //unsigned char *iFrontBuffer;
204 //unsigned char *iBackBuffer;
205 FutabaVfdReport iInputReport;
207 char iDeviceId[KFutabaMaxHidReportSize];
208 char iFirmwareRevision[KFutabaMaxHidReportSize];
211 unsigned short iNextFrameAddress;