8 //This was computed from our number of pixels as follow 256x64/8/64 = 32 + 1 = 33
9 //+1 was added for our header
10 const int KFutabaMaxCommandOutputReport = 33;
11 //TODO: Get ride of that constant once we figure out a way to get it from hidapi
12 const int KFutabaMaxHidReportSize = 65;
14 const int KHidReportIdIndex=0;
15 const int KFutabaHidReportSizeIndex=1;
16 //Define Futaba vendor ID to filter our list of device
17 const unsigned short KFutabaVendorId = 0x1008;
18 const unsigned short KFutabaProductIdGP1212A01A = 0x100C;
19 const unsigned short KFutabaProductIdGP1212A02A = 0x1013; //Or is it 0x1015
22 //typedef struct hid_device_info HidDeviceInfo;
25 TODO: move to another header
31 HidReport(){Reset();};
33 inline unsigned char& operator[](int aIndex){return iBuffer[aIndex];}
34 const unsigned char* Buffer() const {return iBuffer;};
35 unsigned char* Buffer() {return iBuffer;};
37 unsigned char iBuffer[S];
41 void HidReport<S>::Reset()
43 memset(iBuffer,0,sizeof(iBuffer));
47 TODO: move to another header
52 int Open(const char* aPath);
53 int Open(unsigned short aVendorId, unsigned short aProductId, const wchar_t* aSerialNumber);
56 int SetNonBlocking(int aNonBlocking);
59 int Write(const HidReport<S>& aOutputReport);
61 const wchar_t* Error();
67 hid_device* iHidDevice;
74 int HidDevice::Write(const HidReport<S>& aOutputReport)
76 return hid_write(iHidDevice,aOutputReport.Buffer(),S);
82 class FutabaVfdReport: public HidReport<KFutabaMaxHidReportSize>
92 Define a generic Futaba VFD command.
94 class FutabaVfdCommand
100 //void Create(int aMaxSize);
103 //inline unsigned char& operator[](int aIndex){return iBuffer[aIndex];}
108 //unsigned char* iBuffer;
109 FutabaVfdReport iReports[KFutabaMaxCommandOutputReport];
116 class FutabaVfd : public HidDevice
119 virtual int MinBrightness()=0;
120 virtual int MaxBrightness()=0;
121 virtual void SetBrightness(int aBrightness)=0;
122 virtual void Clear()=0;
128 class FutabaGraphicVfd : public FutabaVfd
131 virtual int WidthInPixels()=0;
132 virtual int HeightInPixels()=0;
133 virtual void SetPixel(int aX, int aY, bool aOn)=0;
134 virtual void SetAllPixels(bool aOn)=0;
139 Common functionality between GP1212A01A and GP1212A02A
141 class GP1212XXXX : public FutabaGraphicVfd
145 virtual int MinBrightness(){return 0;};
146 virtual int MaxBrightness(){return 5;};
150 GP1212A01A is a graphic display module using a FUTABA 256x64dots VFD.
151 The module do not include character ROM, the customer will compile the character
152 by themselves (from main system).
154 class GP1212A01A : public GP1212XXXX
158 //From FutabaGraphicVfd
159 virtual int WidthInPixels(){return 256;};
160 virtual int HeightInPixels(){return 64;};
161 virtual void SetPixel(int aX, int aY, bool aOn);
162 virtual void SetAllPixels(bool aOn);
164 virtual void SetBrightness(int aBrightness);
165 virtual void Clear();
167 void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue);
171 //FutabaVfdReport iReport;
173 unsigned char iPixelBuffer[256][128];