1.1 --- a/FutabaVfd.h Sat Jul 12 13:15:31 2014 +0200
1.2 +++ b/FutabaVfd.h Thu Aug 21 21:30:38 2014 +0200
1.3 @@ -73,145 +73,5 @@
1.4 int iMaxSize;
1.5 };
1.6
1.7 -/**
1.8 -*/
1.9 -class FutabaVfd : public HidDevice
1.10 - {
1.11 -public:
1.12 - virtual int MinBrightness() const=0;
1.13 - virtual int MaxBrightness() const=0;
1.14 - virtual void SetBrightness(int aBrightness)=0;
1.15 - virtual void Clear()=0;
1.16 - };
1.17 -
1.18 -
1.19 -/**
1.20 -*/
1.21 -class FutabaGraphicVfd : public FutabaVfd
1.22 - {
1.23 -public:
1.24 - virtual int WidthInPixels() const=0;
1.25 - virtual int HeightInPixels() const=0;
1.26 - virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn)=0;
1.27 - virtual void SetAllPixels(unsigned char aOn)=0;
1.28 - virtual int FrameBufferSizeInBytes() const=0;
1.29 - //virtual int BitBlit(unsigned char* aSrc, unsigned char aSrcWidth, unsigned char aSrcHeight, unsigned char aTargetX, unsigned char aTargetY) const=0;
1.30 -
1.31 - };
1.32 -
1.33 -/**
1.34 -Common functionality between GP1212A01A and GP1212A02A
1.35 -*/
1.36 -class GP1212XXXX : public FutabaGraphicVfd
1.37 - {
1.38 -public:
1.39 - //From FutabaVfd
1.40 - virtual int MinBrightness() const {return 0;}
1.41 - virtual int MaxBrightness() const {return 5;}
1.42 - };
1.43 -
1.44 -/**
1.45 -GP1212A01A is a graphic display module using a FUTABA 256x64dots VFD.
1.46 -The module do not include character ROM, the customer will compile the character
1.47 -by themselves (from main system).
1.48 -*/
1.49 -class GP1212A01A : public GP1212XXXX
1.50 - {
1.51 -public:
1.52 -
1.53 -
1.54 -public:
1.55 - GP1212A01A();
1.56 - ~GP1212A01A();
1.57 -
1.58 - //
1.59 - int Open();
1.60 - //From FutabaGraphicVfd
1.61 - virtual int WidthInPixels() const {return KGP12xWidthInPixels;}
1.62 - virtual int HeightInPixels() const {return KGP12xHeightInPixels;}
1.63 - virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn);
1.64 - virtual void SetAllPixels(unsigned char aPattern);
1.65 - virtual int FrameBufferSizeInBytes() const {return KGP12xFrameBufferSizeInBytes;}
1.66 - virtual void BitBlit(const BitArray& aBitmap, int aSrcWidth, int aSrcHeight, int aTargetX, int aTargetY) const;
1.67 - //From FutabaVfd
1.68 - virtual void SetBrightness(int aBrightness);
1.69 - virtual void Clear();
1.70 -
1.71 - //Specific to GP1212A01A
1.72 - void SetPixelBlock(unsigned char aX, unsigned char aY, int aHeight, int aSize, unsigned char aValue);
1.73 - void SetPixelBlock(unsigned char aX, unsigned char aY, int aHeight, int aSize, unsigned char* aPixels);
1.74 - //Define display position within our display RAM
1.75 - void SetDisplayPosition(unsigned char aX, unsigned char aY);
1.76 - unsigned char DisplayPositionX() const {return iDisplayPositionX;}
1.77 - unsigned char DisplayPositionY() const {return iDisplayPositionY;}
1.78 - //
1.79 - void SwapBuffers();
1.80 - //
1.81 - void RequestDeviceId();
1.82 - void RequestFirmwareRevision();
1.83 - void RequestPowerSupplyStatus();
1.84 - //
1.85 - void ToggleOffScreenMode();
1.86 - void SetOffScreenMode(bool aOn);
1.87 - bool OffScreenMode() const {return iOffScreenMode;}
1.88 - //
1.89 - void SetFrameDifferencing(bool aOn){iUseFrameDifferencing=aOn;}
1.90 - bool FrameDifferencing() const {return iUseFrameDifferencing;}
1.91 - //
1.92 - bool RequestPending(){return iRequest!=EMiniDisplayRequestNone;}
1.93 - TMiniDisplayRequest CurrentRequest(){return iRequest;}
1.94 - void CancelRequest(){iRequest=EMiniDisplayRequestNone;}
1.95 - TMiniDisplayRequest AttemptRequestCompletion();
1.96 - FutabaVfdReport& InputReport() {return iInputReport;}
1.97 - bool PowerOn();
1.98 - char* DeviceId();
1.99 - char* FirmwareRevision();
1.100 -
1.101 -private:
1.102 - enum DW
1.103 - {
1.104 - DW1=0xC0,
1.105 - DW2=0xD0
1.106 - };
1.107 -
1.108 - void SetDisplayPosition(DW aDw,unsigned char aX, unsigned char aY);
1.109 - unsigned char OffScreenY() const;
1.110 - void SendClearCommand();
1.111 - void OffScreenTranslation(unsigned char& aX, unsigned char& aY);
1.112 - void ResetBuffers();
1.113 - void SendModifiedPixelBlocks();
1.114 -
1.115 -private:
1.116 - unsigned char iDisplayPositionX;
1.117 - unsigned char iDisplayPositionY;
1.118 - ///Off screen mode is the recommended default settings to avoid tearing.
1.119 - ///Though turning it off can be useful for debugging
1.120 - bool iOffScreenMode;
1.121 - ///Frame differences algo is used to reduce USB bus traffic and improve frame rate in typical use case
1.122 - bool iUseFrameDifferencing;
1.123 - ///
1.124 - //FutabaVfdReport iReport;
1.125 - ///
1.126 - //unsigned char iFrameBuffer[256*64];
1.127 - BitArray* iFrameNext;
1.128 - BitArray* iFrameCurrent;
1.129 - BitArray* iFramePrevious;
1.130 - //
1.131 - BitArray* iFrameAlpha;
1.132 - BitArray* iFrameBeta;
1.133 - BitArray* iFrameGamma;
1.134 - //
1.135 - int iNeedFullFrameUpdate;
1.136 - //unsigned char iFrameBeta[256*64];
1.137 - //unsigned char *iFrontBuffer;
1.138 - //unsigned char *iBackBuffer;
1.139 - TMiniDisplayRequest iRequest;
1.140 - FutabaVfdReport iInputReport;
1.141 - //
1.142 - char iDeviceId[KFutabaMaxHidReportSize];
1.143 - char iFirmwareRevision[KFutabaMaxHidReportSize];
1.144 - bool iPowerOn;
1.145 - };
1.146 -
1.147
1.148 #endif