inc/FutabaVfd.h
changeset 23 d4e164906a1b
parent 22 efa6ff02287c
child 25 233a997193b8
     1.1 --- a/inc/FutabaVfd.h	Thu May 22 16:46:50 2014 +0200
     1.2 +++ b/inc/FutabaVfd.h	Thu May 22 21:32:45 2014 +0200
     1.3 @@ -30,7 +30,6 @@
     1.4  const unsigned short KFutabaProductIdGP1212A01A = 0x100C;
     1.5  const unsigned short KFutabaProductIdGP1212A02A = 0x1013; //Or is it 0x1015
     1.6  
     1.7 -
     1.8  //typedef struct hid_device_info HidDeviceInfo;
     1.9  
    1.10  /**
    1.11 @@ -44,7 +43,6 @@
    1.12  	};
    1.13  
    1.14  
    1.15 -
    1.16  /**
    1.17  Define a generic Futaba VFD command.
    1.18  */
    1.19 @@ -73,8 +71,8 @@
    1.20  class FutabaVfd : public HidDevice
    1.21  	{
    1.22  public:
    1.23 -	virtual int MinBrightness()=0;
    1.24 -	virtual int MaxBrightness()=0;
    1.25 +	virtual int MinBrightness() const=0;
    1.26 +	virtual int MaxBrightness() const=0;
    1.27  	virtual void SetBrightness(int aBrightness)=0;
    1.28  	virtual void Clear()=0;
    1.29  	};
    1.30 @@ -85,10 +83,11 @@
    1.31  class FutabaGraphicVfd : public FutabaVfd
    1.32  	{
    1.33  public:
    1.34 -	virtual int WidthInPixels()=0;
    1.35 -	virtual int HeightInPixels()=0;
    1.36 -	virtual void SetPixel(int aX, int aY, bool aOn)=0;
    1.37 -	virtual void SetAllPixels(bool aOn)=0;
    1.38 +	virtual int WidthInPixels() const=0;
    1.39 +	virtual int HeightInPixels() const=0;
    1.40 +	virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn)=0;
    1.41 +	virtual void SetAllPixels(unsigned char aOn)=0;
    1.42 +	virtual int FrameBufferSizeInBytes() const=0;
    1.43  	};
    1.44  
    1.45  /**
    1.46 @@ -98,8 +97,8 @@
    1.47  	{
    1.48  public:
    1.49  	//From FutabaVfd
    1.50 -	virtual int MinBrightness(){return 0;};
    1.51 -	virtual int MaxBrightness(){return 5;};
    1.52 +	virtual int MinBrightness() const {return 0;};
    1.53 +	virtual int MaxBrightness() const {return 5;};
    1.54  	};
    1.55  
    1.56  /**
    1.57 @@ -110,26 +109,33 @@
    1.58  class GP1212A01A : public GP1212XXXX
    1.59  	{
    1.60  public:
    1.61 +	GP1212A01A();
    1.62 +	//
    1.63  	int Open();
    1.64  	//From FutabaGraphicVfd
    1.65 -	virtual int WidthInPixels(){return 256;};
    1.66 -	virtual int HeightInPixels(){return 64;};
    1.67 -	virtual void SetPixel(int aX, int aY, bool aOn);
    1.68 -	virtual void SetAllPixels(bool aOn);
    1.69 +	virtual int WidthInPixels() const {return 256;};
    1.70 +	virtual int HeightInPixels() const {return 64;};
    1.71 +	virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn);
    1.72 +	virtual void SetAllPixels(unsigned char aPattern);
    1.73 +	virtual int FrameBufferSizeInBytes() const {return 2048;}; //256*64/8
    1.74  	//From FutabaVfd
    1.75  	virtual void SetBrightness(int aBrightness);
    1.76  	virtual void Clear();
    1.77  
    1.78  	//Specific to GP1212A01A
    1.79 -	void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue);
    1.80 -    void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char* aPixels);
    1.81 +	void SetPixelBlock(unsigned char aX, unsigned char aY, int aHeight, int aSize, unsigned char aValue);
    1.82 +    void SetPixelBlock(unsigned char aX, unsigned char aY, int aHeight, int aSize, unsigned char* aPixels);
    1.83      //
    1.84 -	void SetDisplayPosition(int aX, int aY);
    1.85 +	void SetDisplayPosition(unsigned char aX, unsigned char aY);
    1.86 +	void SwapBuffers();
    1.87      //
    1.88      void RequestId();
    1.89      void RequestFirmwareRevision();
    1.90      void RequestPowerSupplyStatus();
    1.91 -
    1.92 +	//
    1.93 +	void ToggleOffScreenMode();
    1.94 +	bool OffScreenMode() const {return iOffScreenMode;};
    1.95 +	
    1.96  private:
    1.97  	enum DW
    1.98  		{
    1.99 @@ -137,13 +143,21 @@
   1.100          DW2=0xD0
   1.101  		};
   1.102  
   1.103 -	void SetDisplayPosition(DW aDw,int aX, int aY);
   1.104 +	void SetDisplayPosition(DW aDw,unsigned char aX, unsigned char aY);
   1.105 +	unsigned char OffScreenY() const;
   1.106 +	void SendClearCommand();
   1.107 +	void OffScreenTranslation(unsigned char& aX, unsigned char& aY);
   1.108  
   1.109  private:
   1.110 +	unsigned char iDisplayPositionX;
   1.111 +	unsigned char iDisplayPositionY;
   1.112 +	///Off screen mode is the recommended default settings to avoid tearing.
   1.113 +	///Though turning it off can be useful for debugging
   1.114 +	bool iOffScreenMode;
   1.115  	///
   1.116  	//FutabaVfdReport iReport;
   1.117  	///
   1.118 -	unsigned char iPixelBuffer[256][128];
   1.119 +	//unsigned char iPixelBuffer[256][128];
   1.120  	};
   1.121  
   1.122