diff -r 11a0e8a2346e -r 7268128148b8 FutabaVfd.h --- a/FutabaVfd.h Wed May 21 22:55:14 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ - - -#ifndef FUTABA_VFD_H -#define FUTABA_VFD_H - -#include "hidapi.h" - -//This was computed from our number of pixels as follow 256x64/8/64 = 32 + 1 = 33 -//+1 was added for our header -const int KFutabaMaxCommandOutputReport = 33; -//TODO: Get ride of that constant once we figure out a way to get it from hidapi -const int KFutabaMaxHidReportSize = 65; - -const int KHidReportIdIndex=0; -const int KFutabaHidReportSizeIndex=1; -//Define Futaba vendor ID to filter our list of device -const unsigned short KFutabaVendorId = 0x1008; -const unsigned short KFutabaProductIdGP1212A01A = 0x100C; -const unsigned short KFutabaProductIdGP1212A02A = 0x1013; //Or is it 0x1015 - - -//typedef struct hid_device_info HidDeviceInfo; - -/** -TODO: move to another header -*/ -template -class HidReport - { -public: - HidReport(){Reset();}; - void Reset(); - inline unsigned char& operator[](int aIndex){return iBuffer[aIndex];} - const unsigned char* Buffer() const {return iBuffer;}; - unsigned char* Buffer() {return iBuffer;}; -protected: - unsigned char iBuffer[S]; - }; - -template -void HidReport::Reset() - { - memset(iBuffer,0,sizeof(iBuffer)); - } - -/** -TODO: move to another header -*/ -class HidDevice - { -public: - int Open(const char* aPath); - int Open(unsigned short aVendorId, unsigned short aProductId, const wchar_t* aSerialNumber); - void Close(); - // - int SetNonBlocking(int aNonBlocking); - // - template - int Write(const HidReport& aOutputReport); - // - const wchar_t* Error(); - - - -private: - ///Our USB HID device - hid_device* iHidDevice; - }; - - -/** -*/ -template -int HidDevice::Write(const HidReport& aOutputReport) - { - return hid_write(iHidDevice,aOutputReport.Buffer(),S); - } - - -/** -*/ -class FutabaVfdReport: public HidReport - { - -private: - - }; - - - -/** -Define a generic Futaba VFD command. -*/ -class FutabaVfdCommand - { -public: - FutabaVfdCommand(); - ~FutabaVfdCommand(); - // - //void Create(int aMaxSize); - //void Delete(); - - //inline unsigned char& operator[](int aIndex){return iBuffer[aIndex];} - - void Reset(); - -private: - //unsigned char* iBuffer; - FutabaVfdReport iReports[KFutabaMaxCommandOutputReport]; - int iSize; - int iMaxSize; - }; - -/** -*/ -class FutabaVfd : public HidDevice - { -public: - virtual int MinBrightness()=0; - virtual int MaxBrightness()=0; - virtual void SetBrightness(int aBrightness)=0; - virtual void Clear()=0; - }; - - -/** -*/ -class FutabaGraphicVfd : public FutabaVfd - { -public: - virtual int WidthInPixels()=0; - virtual int HeightInPixels()=0; - virtual void SetPixel(int aX, int aY, bool aOn)=0; - virtual void SetAllPixels(bool aOn)=0; - - }; - -/** -Common functionality between GP1212A01A and GP1212A02A -*/ -class GP1212XXXX : public FutabaGraphicVfd - { -public: - //From FutabaVfd - virtual int MinBrightness(){return 0;}; - virtual int MaxBrightness(){return 5;}; - }; - -/** -GP1212A01A is a graphic display module using a FUTABA 256x64dots VFD. -The module do not include character ROM, the customer will compile the character -by themselves (from main system). -*/ -class GP1212A01A : public GP1212XXXX - { -public: - int Open(); - //From FutabaGraphicVfd - virtual int WidthInPixels(){return 256;}; - virtual int HeightInPixels(){return 64;}; - virtual void SetPixel(int aX, int aY, bool aOn); - virtual void SetAllPixels(bool aOn); - //From FutabaVfd - virtual void SetBrightness(int aBrightness); - virtual void Clear(); - // - void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue); - -private: - /// - //FutabaVfdReport iReport; - /// - unsigned char iPixelBuffer[256][128]; - }; - - -#endif \ No newline at end of file