You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ktechlab/src/electronics/components/piccomponentpin.h

71 lines
1.9 KiB

/***************************************************************************
* Copyright (C) 2005 by David Saxton *
* david@bluehaze.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#ifndef PICCOMPONENTPIN_H
#define PICCOMPONENTPIN_H
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifndef NO_GPSIM
#include "logic.h"
#include "gpsim/stimuli.h"
#include <tqstring.h>
/**
@short Controls a pin on the PIC component
@author David Saxton
*/
class PICComponentPin : public CallbackClass, public stimulus
{
public:
PICComponentPin( PICComponent * picComponent, PicPin picPin );
~PICComponentPin();
/**
* Attach this to gpsim
*/
void attach( IOPIN * iopin );
/**
* Called when the IOPIN this class is associated with changes state.
* Updates the associated LogicOut / LogicIn / etc according to what
* type of pin this is.
*/
virtual void set_nodeVoltage( double v );
/**
* Called from our logic pin when the logic changes state.
*/
void logicCallback( bool state );
/**
* Sets the output (if has one) to low. Called when the user stops the
* PIC.
*/
void resetOutput();
virtual double get_Vth();
protected:
// Conductance of pin in different configurations
double m_gOutHigh;
double m_gOutLow;
PicPin m_picPin;
IOPIN * m_pIOPIN;
LogicOut * m_pLogicOut;
LogicIn * m_pLogicIn;
PICComponent * m_pPICComponent;
Stimulus_Node * m_pStimulusNode;
const TQString m_id;
};
#endif
#endif