001package jmri.jmrix.roco.z21;
002
003import jmri.jmrix.AbstractMRReply;
004import jmri.jmrix.lenz.XNetInitializationManager;
005
006import java.io.DataInputStream;
007import java.io.DataOutputStream;
008
009/**
010 * Override default XpressNet classes to use z21 specific versions.
011 *
012 * @author Paul Bender Copyright (C) 2004, 2010, 2014
013 */
014public class Z21XNetStreamPortController extends jmri.jmrix.lenz.XNetStreamPortController {
015
016    public Z21XNetStreamPortController(DataInputStream in, DataOutputStream out, String pname) {
017        super(in, out, pname);
018    }
019
020    @Override
021    public void configure() {
022        // connect to a packetizing traffic controller
023        jmri.jmrix.lenz.XNetTrafficController packets = new Z21XNetPacketizer(new jmri.jmrix.lenz.LenzCommandStation()){
024            @Override
025            protected AbstractMRReply newReply() {
026               return new Z21XNetReply();
027            }
028        };
029        packets.connectPort(this);
030
031        this.getSystemConnectionMemo().setXNetTrafficController(packets);
032        this.getSystemConnectionMemo().setThrottleManager(new Z21XNetThrottleManager(this.getSystemConnectionMemo()));
033
034        new XNetInitializationManager()
035                .memo(this.getSystemConnectionMemo())
036                .setDefaults()
037                .throttleManager(Z21XNetThrottleManager.class)
038                .programmer(Z21XNetProgrammer.class)
039                .programmerManager(Z21XNetProgrammerManager.class)
040                .turnoutManager(Z21XNetTurnoutManager.class)
041                .consistManager(null)
042                .noCommandStation()
043                .init();
044        jmri.jmrix.ConnectionStatus.instance().setConnectionState(getUserName(), getCurrentPortName(),jmri.jmrix.ConnectionStatus.CONNECTION_UP);
045    }
046
047    @Override
048    public void dispose() {
049        jmri.jmrix.lenz.XNetTrafficController packets = this.getSystemConnectionMemo().getXNetTrafficController();
050        this.getSystemConnectionMemo().dispose();
051        packets.terminateThreads();
052        super.dispose();
053    }
054
055}