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