graphlcd-base/glcddrivers/noritake800.h
author root@rika
Wed, 06 Feb 2008 17:32:55 +0000
changeset 4 df6a40031aa5
permissions -rw-r--r--
added graphlcd-base
root@4
     1
/*
root@4
     2
 * GraphLCD driver library
root@4
     3
 *
root@4
     4
 * noritake800.h  -  Noritake 800(A) series VFD graphlcd driver,
root@4
     5
 *                   different "Medium 0.6 dot" sizes should work,
root@4
     6
 *                   see http://www.noritake-itron.com:
root@4
     7
 *                    - GU128X64-800A,
root@4
     8
 *                    - GU256X32-800A,
root@4
     9
 *                    - GU128X32-800A,
root@4
    10
 *                    - GU160X16-800A,
root@4
    11
 *                    - GU160X32-800A,
root@4
    12
 *                    - GU192X16-800A.
root@4
    13
 *
root@4
    14
 * based on:
root@4
    15
 *   ideas and HW-command related stuff from the open source project
root@4
    16
 *   "lcdplugin for Winamp":
root@4
    17
 *     (c) 1999 - 2003 Markus Zehnder <lcdplugin AT markuszehnder.ch>
root@4
    18
 *   GU256x64-372 driver module for graphlcd
root@4
    19
 *     (c) 20040410 Andreas 'Randy' Weinberger <randy AT smue.org>
root@4
    20
 *   gu140x32f driver module for graphlcd
root@4
    21
 *     (c) 2003 Andreas Brachold <vdr04 AT deltab de>
root@4
    22
 *   HD61830 device
root@4
    23
 *     (c) 2001-2003 by Carsten Siebholz <c.siebholz AT t-online.de>
root@4
    24
 *   lcdproc 0.4 driver hd44780-ext8bit
root@4
    25
 *     (c) 1999, 1995 Benjamin Tse <blt AT Comports.com>
root@4
    26
 *
root@4
    27
 * This file is released under the GNU General Public License. Refer
root@4
    28
 * to the COPYING file distributed with this package.
root@4
    29
 *
root@4
    30
 * (c) 2004 Lucian Muresan <lucianm AT users.sourceforge.net>
root@4
    31
 */
root@4
    32
root@4
    33
#ifndef _GLCDDRIVERS_NORITAKE800_H_
root@4
    34
#define _GLCDDRIVERS_NORITAKE800_H_
root@4
    35
root@4
    36
#include "driver.h"
root@4
    37
root@4
    38
namespace GLCD
root@4
    39
{
root@4
    40
root@4
    41
class cDriverConfig;
root@4
    42
class cParallelPort;
root@4
    43
root@4
    44
class cDriverNoritake800 : public cDriver
root@4
    45
{
root@4
    46
    cParallelPort * m_pport;
root@4
    47
root@4
    48
    cDriverConfig * m_Config;
root@4
    49
    cDriverConfig * m_oldConfig;
root@4
    50
root@4
    51
    int m_iSizeYb;
root@4
    52
    int m_nRefreshCounter;
root@4
    53
    int m_nWiring;
root@4
    54
root@4
    55
    unsigned char ** m_pDrawMem;             /* the draw "memory" */
root@4
    56
    unsigned char ** m_pVFDMem;              /* the double buffed display "memory" */
root@4
    57
root@4
    58
    long m_nTimingAdjustCmd;
root@4
    59
    bool m_bSleepIsInit;
root@4
    60
root@4
    61
    // internal graphics layers
root@4
    62
    bool m_bGraphScreen0_On;
root@4
    63
    bool m_bGraphScreen1_On;
root@4
    64
root@4
    65
    unsigned char * m_pWiringMaskCache;
root@4
    66
root@4
    67
protected:
root@4
    68
    void ClearVFDMem();
root@4
    69
    void N800Cmd(unsigned char data);
root@4
    70
    void N800Data(unsigned char data);
root@4
    71
    int CheckSetup();
root@4
    72
    unsigned char N800LptWiringMask(unsigned char ctrl_bits);
root@4
    73
    void N800WriteByte(unsigned char data, int nCol, int nRow, int layer);
root@4
    74
root@4
    75
public:
root@4
    76
    cDriverNoritake800(cDriverConfig * config);
root@4
    77
    virtual ~cDriverNoritake800();
root@4
    78
root@4
    79
    virtual int Init();
root@4
    80
    virtual int DeInit();
root@4
    81
root@4
    82
    virtual void Clear();
root@4
    83
    virtual void SetPixel(int x, int y);
root@4
    84
    virtual void Set8Pixels(int x, int y, unsigned char data);
root@4
    85
    virtual void Refresh(bool refreshAll = false);
root@4
    86
root@4
    87
    virtual void SetBrightness(unsigned int percent);
root@4
    88
};
root@4
    89
root@4
    90
} // end of namespace
root@4
    91
root@4
    92
#endif