/***************************************************************************
 *   Copyright (C) 2016 by Santiago González                               *
 *                                                                         *
 ***( see copyright.txt file at root folder )*******************************/

#pragma once

#include "hd44780_base.h"
#include "e-element.h"

class IoPin;
class LibraryItem;

class Hd44780 : public Hd44780_Base, public eElement
{
    public:
        Hd44780( QString type, QString id );
        ~Hd44780();
        
        static Component* construct( QString type, QString id );
        static LibraryItem* libraryItem();

        virtual void initialize() override;
        virtual void stamp() override;
        virtual void updateStep() override;
        virtual void voltChanged() override;

        void showPins( bool show );

    private:
        void readData();
        void readBusy();

        void initPuPin( int n, QString l, IoPin* pin );
        IoPin* m_pinRS;
        IoPin* m_pinRW;
        IoPin* m_pinEn;
        std::vector<IoPin*> m_dataPin;
};
