hades.models.special
Class MidiReceiver

java.lang.Object
  extended byhades.simulator.SimObject
      extended byhades.models.special.MidiReceiver
All Implemented Interfaces:
java.lang.Cloneable, ContextToolTip, java.io.Serializable, Simulatable, Wakeable

public class MidiReceiver
extends SimObject
implements Simulatable, Wakeable

MidiReceiver - a RS232 receiver set to 31.250 kbaud for MIDI protocol.

See Also:
Serialized Form

Field Summary
protected  int baud_rate
           
protected  double bit_time
           
 int EVEN_PARITY
           
protected  double lastSendTime
           
protected  int n_databits
           
protected  int n_rx_bits
           
protected  int n_stopbits
           
 int NO_PARITY
           
 int ODD_PARITY
           
protected  int parity_mode
           
protected  PortStdLogic1164 port_RX
           
protected  boolean[] rx_samples
           
protected  int rx_state
           
protected  boolean rx_waiting
           
protected  StdLogic1164 value_0
           
protected  StdLogic1164 value_1
           
protected  StdLogic1164 value_X
           
 
Fields inherited from class hades.simulator.SimObject
classloader, console, debug, editor, name, parent, ports, propertySheet, simulator, symbol, versionId, visible
 
Constructor Summary
MidiReceiver()
          MidiReceiver(): simple constructor
 
Method Summary
 void configure()
          create and display a 'ConfigDialog' to set the parameters for a SimObject.
 SimObject copy()
          copy(): create a clone of the current MidiReceiver, including its color
(package private)  void decode(boolean[] receivedBits)
           
 void elaborate(java.lang.Object arg)
          elaborate(): Set the TX line to '1' (idle)
 void evaluate(java.lang.Object arg)
          evaluate(): react to events on the RX input.
 boolean[] getDataBits(char c, int n_databits)
           
 StdLogic1164 getInputValue(Port p)
           
 boolean getParityBit(boolean[] databits, boolean even_parity)
           
 boolean initialize(java.lang.String s)
          nothing to initialize on a MidiReceiver
static void main(java.lang.String[] argv)
          main(): simple selftest of the MidiReceiver's GUI
 void mousePressed(java.awt.event.MouseEvent me)
          react to a MouseEvent.
(package private)  void schedule(Signal signal, Port port, double time, StdLogic1164 value)
           
 void setName(java.lang.String name)
          set the name of this SimObject.
 void setSymbol(Symbol s)
           
(package private)  void startReceive()
           
 java.lang.String toString()
          toString() - the usual info method
 void wakeup(java.lang.Object arg)
          Called in the middle of each bit period for sampling.
 void write(java.io.PrintWriter ps)
           
 
Methods inherited from class hades.simulator.SimObject
constructDynamicSymbol, getBindkey, getClassLoader, getDebug, getEditor, getExternalResources, getFullName, getName, getParent, getPort, getPorts, getPropertySheet, getResourceAsStream, getSimulator, getSymbol, getSymbolResourceName, getToolTip, getVersionId, isVisible, keyPressed, message, needsDynamicSymbol, needsExternalResources, setClassLoader, setConsole, setDebug, setEditor, setParent, setPorts, setSimulator, setVersionId, setVisible, tearDown
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface hades.simulator.Simulatable
message
 

Field Detail

port_RX

protected PortStdLogic1164 port_RX

value_0

protected StdLogic1164 value_0

value_1

protected StdLogic1164 value_1

value_X

protected StdLogic1164 value_X

NO_PARITY

public final int NO_PARITY
See Also:
Constant Field Values

ODD_PARITY

public final int ODD_PARITY
See Also:
Constant Field Values

EVEN_PARITY

public final int EVEN_PARITY
See Also:
Constant Field Values

baud_rate

protected int baud_rate

n_databits

protected int n_databits

n_stopbits

protected int n_stopbits

parity_mode

protected int parity_mode

bit_time

protected double bit_time

n_rx_bits

protected int n_rx_bits

rx_state

protected int rx_state

rx_waiting

protected boolean rx_waiting

rx_samples

protected boolean[] rx_samples

lastSendTime

protected double lastSendTime
Constructor Detail

MidiReceiver

public MidiReceiver()
MidiReceiver(): simple constructor

Method Detail

setSymbol

public void setSymbol(Symbol s)
Overrides:
setSymbol in class SimObject

setName

public void setName(java.lang.String name)
Description copied from class: SimObject
set the name of this SimObject. If there is a Symbol for this SimObject, we also try to set the InstanceLabel in the Symbol.

To avoid consistency problems, when the user changes a SimObject's name interactively, we also try to enforce a unique name.

Overrides:
setName in class SimObject

write

public void write(java.io.PrintWriter ps)
Overrides:
write in class SimObject

initialize

public boolean initialize(java.lang.String s)
nothing to initialize on a MidiReceiver

Overrides:
initialize in class SimObject

configure

public void configure()
Description copied from class: SimObject
create and display a 'ConfigDialog' to set the parameters for a SimObject. The default ConfigDialog for the base class (SimObject) itself is empty except for the 'instance name' of the SimObject.

Overrides:
configure in class SimObject

mousePressed

public void mousePressed(java.awt.event.MouseEvent me)
Description copied from class: SimObject
react to a MouseEvent. The base SimObject ignores MouseEvents.

Note that the HADES schematic editor will also deliver jfig.canvas.FigCanvasEvent object, which also include the world-coordinates of the Event.

Overrides:
mousePressed in class SimObject

elaborate

public void elaborate(java.lang.Object arg)
elaborate(): Set the TX line to '1' (idle)

Specified by:
elaborate in interface Simulatable
Overrides:
elaborate in class SimObject
Parameters:
arg - This parameter is ignored by MidiReceiver

getInputValue

public StdLogic1164 getInputValue(Port p)

evaluate

public void evaluate(java.lang.Object arg)
evaluate(): react to events on the RX input. The RS-232 receiver uses a simple state-machine to decode a RS-232 transmitted character. It remains in state "rx_waiting" until a first event on the RX line occurs at time t. The receiver will then sample the RX input at times "t + 1/2 bit_time", "t + 3/2 bit_time" ... "t + 2n+1/2 bit_time" for the start, data, parity, and stop bits.

Specified by:
evaluate in interface Simulatable
Overrides:
evaluate in class SimObject
Parameters:
arg - An arbitrary and unused object

wakeup

public void wakeup(java.lang.Object arg)
Called in the middle of each bit period for sampling. All wakeup calls are scheduled by the start bit detection.

Specified by:
wakeup in interface Wakeable
Parameters:
arg - unused argument

startReceive

void startReceive()

decode

void decode(boolean[] receivedBits)

schedule

void schedule(Signal signal,
              Port port,
              double time,
              StdLogic1164 value)

getDataBits

public boolean[] getDataBits(char c,
                             int n_databits)

getParityBit

public boolean getParityBit(boolean[] databits,
                            boolean even_parity)

copy

public SimObject copy()
copy(): create a clone of the current MidiReceiver, including its color

Overrides:
copy in class SimObject

toString

public java.lang.String toString()
toString() - the usual info method

Overrides:
toString in class SimObject

main

public static void main(java.lang.String[] argv)
main(): simple selftest of the MidiReceiver's GUI