001package jmri.jmrix.can.adapters.gridconnect.canrs.serialdriver;
002
003import jmri.jmrix.can.TrafficController;
004import jmri.jmrix.can.adapters.gridconnect.GcSerialDriverAdapter;
005import jmri.jmrix.can.adapters.gridconnect.canrs.MergTrafficController;
006
007/**
008 * Implements SerialPortAdapter for the MERG CAN-RS or CAN-USB.
009 * <p>
010 * This connects to the MERG adapter via a serial com port (real or virtual).
011 * Normally controlled by the SerialDriverFrame class.
012 *
013 * @author Andrew Crosland Copyright (C) 2008
014 * @author Bob Jacobsen Copyright (C) 2009
015 */
016public class SerialDriverAdapter extends GcSerialDriverAdapter {
017
018    public SerialDriverAdapter() {
019        super();
020        option2Name = "CANID";
021        options.put(option2Name, new Option(Bundle.getMessage("JMRICANID"),
022            jmri.jmrix.can.cbus.CbusConstants.getValidFixedCanIds(),
023            jmri.jmrix.can.cbus.CbusConstants.DEFAULT_JMRI_CAN_ID_STRING ));
024    }
025
026    /**
027     * Set up all of the other objects to operate with a CAN RS adapter
028     * connected to this port.
029     */
030    @Override
031    public void configure() {
032
033        // Register the CAN traffic controller being used for this connection
034        TrafficController tc = new MergTrafficController();
035        tc.setCanId(getOptionState(option2Name));
036
037        this.getSystemConnectionMemo().setTrafficController(tc);
038
039        // Now connect to the traffic controller
040        log.debug("Connecting port");
041        tc.connectPort(this);
042
043        this.getSystemConnectionMemo().setProtocol(getOptionState(option1Name));
044
045        // do central protocol-specific configuration
046        //jmri.jmrix.can.ConfigurationManager.configure(getOptionState(option1Name));
047        this.getSystemConnectionMemo().configureManagers();
048    }
049
050    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(SerialDriverAdapter.class);
051
052}