Fixing crash on stratup if no Futaba VFD connected.
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);
57 int SetNonBlocking(int aNonBlocking);
60 int Write(const HidReport<S>& aOutputReport);
62 const wchar_t* Error();
68 hid_device* iHidDevice;
75 int HidDevice::Write(const HidReport<S>& aOutputReport)
77 return hid_write(iHidDevice,aOutputReport.Buffer(),S);
83 class FutabaVfdReport: public HidReport<KFutabaMaxHidReportSize>
93 Define a generic Futaba VFD command.
95 class FutabaVfdCommand
101 //void Create(int aMaxSize);
104 //inline unsigned char& operator[](int aIndex){return iBuffer[aIndex];}
109 //unsigned char* iBuffer;
110 FutabaVfdReport iReports[KFutabaMaxCommandOutputReport];
117 class FutabaVfd : public HidDevice
120 virtual int MinBrightness()=0;
121 virtual int MaxBrightness()=0;
122 virtual void SetBrightness(int aBrightness)=0;
123 virtual void Clear()=0;
129 class FutabaGraphicVfd : public FutabaVfd
132 virtual int WidthInPixels()=0;
133 virtual int HeightInPixels()=0;
134 virtual void SetPixel(int aX, int aY, bool aOn)=0;
135 virtual void SetAllPixels(bool aOn)=0;
140 Common functionality between GP1212A01A and GP1212A02A
142 class GP1212XXXX : public FutabaGraphicVfd
146 virtual int MinBrightness(){return 0;};
147 virtual int MaxBrightness(){return 5;};
151 GP1212A01A is a graphic display module using a FUTABA 256x64dots VFD.
152 The module do not include character ROM, the customer will compile the character
153 by themselves (from main system).
155 class GP1212A01A : public GP1212XXXX
159 //From FutabaGraphicVfd
160 virtual int WidthInPixels(){return 256;};
161 virtual int HeightInPixels(){return 64;};
162 virtual void SetPixel(int aX, int aY, bool aOn);
163 virtual void SetAllPixels(bool aOn);
165 virtual void SetBrightness(int aBrightness);
166 virtual void Clear();
168 void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue);
172 //FutabaVfdReport iReport;
174 unsigned char iPixelBuffer[256][128];