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/probe.h

114 lines
2.7 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 PROBE_H
#define PROBE_H
#include <component.h>
class LogicProbeData;
class ProbeData;
class FloatingProbeData;
/**
@author David Saxton
*/
class Probe : public Component
{
public:
Probe( ICNDocument *icnDocument, bool newItem, const char *id = 0L );
~Probe();
protected:
virtual void dataChanged();
ProbeData * p_probeData; // As obtained via registering with the oscilloscope
TQColor m_color;
};
/**
@author David Saxton
*/
class FloatingProbe : public Probe
{
public:
FloatingProbe( ICNDocument *icnDocument, bool newItem, const char *id = 0L );
~FloatingProbe();
virtual bool doesStepNonLogic() const { return true; }
protected:
virtual void dataChanged();
virtual void drawShape( TQPainter &p );
FloatingProbeData * m_pFloatingProbeData;
};
/**
@author David Saxton
*/
class VoltageProbe : public FloatingProbe
{
public:
VoltageProbe( ICNDocument *icnDocument, bool newItem, const char *id = 0L );
~VoltageProbe();
static Item* construct( ItemDocument *itemDocument, bool newItem, const char *id );
static LibraryItem *libraryItem();
virtual void stepNonLogic();
protected:
Pin * m_pPin1;
Pin * m_pPin2;
};
/**
@author David Saxton
*/
class CurrentProbe : public FloatingProbe
{
public:
CurrentProbe( ICNDocument *icnDocument, bool newItem, const char *id = 0L );
~CurrentProbe();
static Item* construct( ItemDocument *itemDocument, bool newItem, const char *id );
static LibraryItem *libraryItem();
virtual void stepNonLogic();
protected:
VoltageSource *m_voltageSource;
};
/**
@author David Saxton
*/
class LogicProbe : public CallbackClass, public Probe
{
public:
LogicProbe( ICNDocument *icnDocument, bool newItem, const char *id = 0L );
~LogicProbe();
static Item* construct( ItemDocument *itemDocument, bool newItem, const char *id );
static LibraryItem *libraryItem();
void logicCallback( bool value );
protected:
virtual void drawShape( TQPainter &p );
LogicProbeData * p_logicProbeData;
LogicIn * m_pIn;
Simulator * m_pSimulator;
};
#endif