Working on GP1212A02 support.
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();
30 virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn);
31 virtual void SetAllPixels(unsigned char aPattern);
32 virtual int FrameBufferSizeInBytes() const {return KGP12xFrameBufferSizeInBytes;}
33 virtual void BitBlit(const BitArray& aBitmap, int aSrcWidth, int aSrcHeight, int aTargetX, int aTargetY) const;
34 virtual void SetBrightness(int aBrightness);
38 //Specific to GP1212A01A
39 void SetPixelBlock(unsigned char aX, unsigned char aY, int aHeight, int aSize, unsigned char aValue);
40 void SetPixelBlock(unsigned char aX, unsigned char aY, int aHeight, int aSize, unsigned char* aPixels);
41 //Define display position within our display RAM
42 void SetDisplayPosition(unsigned char aX, unsigned char aY);
43 unsigned char DisplayPositionX() const {return iDisplayPositionX;}
44 unsigned char DisplayPositionY() const {return iDisplayPositionY;}
47 void RequestDeviceId();
48 void RequestFirmwareRevision();
49 void RequestPowerSupplyStatus();
51 void ToggleOffScreenMode();
52 void SetOffScreenMode(bool aOn);
53 bool OffScreenMode() const {return iOffScreenMode;}
55 void SetFrameDifferencing(bool aOn){iUseFrameDifferencing=aOn;}
56 bool FrameDifferencing() const {return iUseFrameDifferencing;}
58 bool RequestPending(){return iRequest!=EMiniDisplayRequestNone;}
59 TMiniDisplayRequest CurrentRequest(){return iRequest;}
60 void CancelRequest(){iRequest=EMiniDisplayRequestNone;}
61 TMiniDisplayRequest AttemptRequestCompletion();
62 FutabaVfdReport& InputReport() {return iInputReport;}
65 char* FirmwareRevision();
74 void SetDisplayPosition(DW aDw,unsigned char aX, unsigned char aY);
75 unsigned char OffScreenY() const;
76 void SendClearCommand();
77 void OffScreenTranslation(unsigned char& aX, unsigned char& aY);
79 void SendModifiedPixelBlocks();
82 unsigned char iDisplayPositionX;
83 unsigned char iDisplayPositionY;
84 ///Off screen mode is the recommended default settings to avoid tearing.
85 ///Though turning it off can be useful for debugging
87 ///Frame differences algo is used to reduce USB bus traffic and improve frame rate in typical use case
88 bool iUseFrameDifferencing;
90 //FutabaVfdReport iReport;
92 //unsigned char iFrameBuffer[256*64];
94 BitArray* iFrameCurrent;
95 BitArray* iFramePrevious;
97 BitArray* iFrameAlpha;
99 BitArray* iFrameGamma;
101 int iNeedFullFrameUpdate;
102 //unsigned char iFrameBeta[256*64];
103 //unsigned char *iFrontBuffer;
104 //unsigned char *iBackBuffer;
105 TMiniDisplayRequest iRequest;
106 FutabaVfdReport iInputReport;
108 char iDeviceId[KFutabaMaxHidReportSize];
109 char iFirmwareRevision[KFutabaMaxHidReportSize];