inc/FutabaVfd.h
author sl
Thu, 22 May 2014 09:31:23 +0200
changeset 18 14662967f913
parent 14 4a5538e0ccbf
child 19 0d9d062609eb
permissions -rw-r--r--
Implementing Futaba GP1212A01A brightness support.
Test application now using Futaba class to send some of our commands.
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