author | sl |
Thu, 22 May 2014 09:12:31 +0200 | |
changeset 17 | 63972dc16350 |
parent 14 | 4a5538e0ccbf |
child 19 | 0d9d062609eb |
permissions | -rw-r--r-- |
sl@9 | 1 |
|
sl@9 | 2 |
|
sl@9 | 3 |
#ifndef FUTABA_VFD_H |
sl@9 | 4 |
#define FUTABA_VFD_H |
sl@9 | 5 |
|
sl@9 | 6 |
#include "hidapi.h" |
sl@14 | 7 |
#include "HidDevice.h" |
sl@9 | 8 |
|
sl@9 | 9 |
//This was computed from our number of pixels as follow 256x64/8/64 = 32 + 1 = 33 |
sl@9 | 10 |
//+1 was added for our header |
sl@9 | 11 |
const int KFutabaMaxCommandOutputReport = 33; |
sl@9 | 12 |
//TODO: Get ride of that constant once we figure out a way to get it from hidapi |
sl@10 | 13 |
const int KFutabaMaxHidReportSize = 65; |
sl@10 | 14 |
|
sl@10 | 15 |
const int KHidReportIdIndex=0; |
sl@10 | 16 |
const int KFutabaHidReportSizeIndex=1; |
sl@10 | 17 |
//Define Futaba vendor ID to filter our list of device |
sl@10 | 18 |
const unsigned short KFutabaVendorId = 0x1008; |
sl@10 | 19 |
const unsigned short KFutabaProductIdGP1212A01A = 0x100C; |
sl@10 | 20 |
const unsigned short KFutabaProductIdGP1212A02A = 0x1013; //Or is it 0x1015 |
sl@10 | 21 |
|
sl@10 | 22 |
|
sl@10 | 23 |
//typedef struct hid_device_info HidDeviceInfo; |
sl@10 | 24 |
|
sl@10 | 25 |
|
sl@10 | 26 |
|
sl@10 | 27 |
/** |
sl@10 | 28 |
*/ |
sl@10 | 29 |
class FutabaVfdReport: public HidReport<KFutabaMaxHidReportSize> |
sl@10 | 30 |
{ |
sl@13 | 31 |
|
sl@10 | 32 |
private: |
sl@13 | 33 |
|
sl@10 | 34 |
}; |
sl@10 | 35 |
|
sl@9 | 36 |
|
sl@9 | 37 |
|
sl@9 | 38 |
/** |
sl@9 | 39 |
Define a generic Futaba VFD command. |
sl@9 | 40 |
*/ |
sl@9 | 41 |
class FutabaVfdCommand |
sl@9 | 42 |
{ |
sl@9 | 43 |
public: |
sl@9 | 44 |
FutabaVfdCommand(); |
sl@9 | 45 |
~FutabaVfdCommand(); |
sl@9 | 46 |
// |
sl@9 | 47 |
//void Create(int aMaxSize); |
sl@9 | 48 |
//void Delete(); |
sl@9 | 49 |
|
sl@9 | 50 |
//inline unsigned char& operator[](int aIndex){return iBuffer[aIndex];} |
sl@9 | 51 |
|
sl@9 | 52 |
void Reset(); |
sl@9 | 53 |
|
sl@9 | 54 |
private: |
sl@9 | 55 |
//unsigned char* iBuffer; |
sl@10 | 56 |
FutabaVfdReport iReports[KFutabaMaxCommandOutputReport]; |
sl@9 | 57 |
int iSize; |
sl@9 | 58 |
int iMaxSize; |
sl@9 | 59 |
}; |
sl@9 | 60 |
|
sl@10 | 61 |
/** |
sl@10 | 62 |
*/ |
sl@11 | 63 |
class FutabaVfd : public HidDevice |
sl@10 | 64 |
{ |
sl@10 | 65 |
public: |
sl@10 | 66 |
virtual int MinBrightness()=0; |
sl@10 | 67 |
virtual int MaxBrightness()=0; |
sl@10 | 68 |
virtual void SetBrightness(int aBrightness)=0; |
sl@10 | 69 |
virtual void Clear()=0; |
sl@10 | 70 |
}; |
sl@10 | 71 |
|
sl@10 | 72 |
|
sl@10 | 73 |
/** |
sl@10 | 74 |
*/ |
sl@10 | 75 |
class FutabaGraphicVfd : public FutabaVfd |
sl@10 | 76 |
{ |
sl@10 | 77 |
public: |
sl@10 | 78 |
virtual int WidthInPixels()=0; |
sl@10 | 79 |
virtual int HeightInPixels()=0; |
sl@10 | 80 |
virtual void SetPixel(int aX, int aY, bool aOn)=0; |
sl@10 | 81 |
virtual void SetAllPixels(bool aOn)=0; |
sl@10 | 82 |
}; |
sl@10 | 83 |
|
sl@10 | 84 |
/** |
sl@10 | 85 |
Common functionality between GP1212A01A and GP1212A02A |
sl@10 | 86 |
*/ |
sl@10 | 87 |
class GP1212XXXX : public FutabaGraphicVfd |
sl@10 | 88 |
{ |
sl@10 | 89 |
public: |
sl@10 | 90 |
//From FutabaVfd |
sl@10 | 91 |
virtual int MinBrightness(){return 0;}; |
sl@10 | 92 |
virtual int MaxBrightness(){return 5;}; |
sl@10 | 93 |
}; |
sl@10 | 94 |
|
sl@10 | 95 |
/** |
sl@10 | 96 |
GP1212A01A is a graphic display module using a FUTABA 256x64dots VFD. |
sl@10 | 97 |
The module do not include character ROM, the customer will compile the character |
sl@10 | 98 |
by themselves (from main system). |
sl@10 | 99 |
*/ |
sl@10 | 100 |
class GP1212A01A : public GP1212XXXX |
sl@10 | 101 |
{ |
sl@10 | 102 |
public: |
sl@10 | 103 |
int Open(); |
sl@10 | 104 |
//From FutabaGraphicVfd |
sl@10 | 105 |
virtual int WidthInPixels(){return 256;}; |
sl@10 | 106 |
virtual int HeightInPixels(){return 64;}; |
sl@10 | 107 |
virtual void SetPixel(int aX, int aY, bool aOn); |
sl@10 | 108 |
virtual void SetAllPixels(bool aOn); |
sl@10 | 109 |
//From FutabaVfd |
sl@10 | 110 |
virtual void SetBrightness(int aBrightness); |
sl@10 | 111 |
virtual void Clear(); |
sl@10 | 112 |
// |
sl@10 | 113 |
void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue); |
sl@10 | 114 |
|
sl@10 | 115 |
private: |
sl@10 | 116 |
/// |
sl@10 | 117 |
//FutabaVfdReport iReport; |
sl@10 | 118 |
/// |
sl@10 | 119 |
unsigned char iPixelBuffer[256][128]; |
sl@10 | 120 |
}; |
sl@10 | 121 |
|
sl@9 | 122 |
|
sl@9 | 123 |
#endif |