All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pi4j.io.serial.SerialConfig Maven / Gradle / Ivy

package com.pi4j.io.serial;

/*
 * #%L
 * **********************************************************************
ORGANIZATION  :  Pi4J
PROJECT       :  Pi4J :: Java Library (Core)
FILENAME      :  SerialConfig.java

This file is part of the Pi4J project. More information about
this project can be found here:  http://www.pi4j.com/
**********************************************************************
 * %%
 * Copyright (C) 2012 - 2018 Pi4J
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Lesser Public License for more details.
 *
 * You should have received a copy of the GNU General Lesser Public
 * License along with this program.  If not, see
 * .
 * #L%
 */

public class SerialConfig {

    private String device = Serial.DEFAULT_COM_PORT;
    private Baud baud = Baud._9600;
    private DataBits dataBits = DataBits._8;
    private Parity parity = Parity.NONE;
    private StopBits stopBits = StopBits._1;
    private FlowControl flowControl = FlowControl.NONE;

    public SerialConfig(){}

    /*
     *  The device address of the serial port to access. You can use constant 'Serial.DEFAULT_COM_PORT'
     *   if you wish to access the default serial port provided via the GPIO header.
     */
    public String device() { return device; }

    /*
     *  The device address of the serial port to access. You can use constant 'Serial.DEFAULT_COM_PORT'
     *   if you wish to access the default serial port provided via the GPIO header.
     */
    public SerialConfig device(String device) { this.device = device; return this; }

    /*
     * The baud rate to use with the serial port.
     */
    public Baud baud() { return baud; }

    /*
     * The baud rate to use with the serial port.
     */
    public SerialConfig baud(Baud baud) { this.baud = baud; return this; }

    /*
     * The data bits to use for serial communication. (5,6,7,8)
     */
    public DataBits dataBits() { return dataBits; }

    /*
     * The data bits to use for serial communication. (5,6,7,8)
     */
    public SerialConfig dataBits(DataBits dataBits) { this.dataBits = dataBits; return this; }

    /*
     * The parity setting to use for serial communication. (None, Event, Odd, Mark, Space)
     */
    public Parity parity() { return parity; }

    /*
     * The parity setting to use for serial communication. (None, Event, Odd, Mark, Space)
     */
    public SerialConfig parity(Parity parity) { this.parity = parity; return this; }

    /*
     * The stop bits to use for serial communication. (1,2)
     */
    public StopBits stopBits() { return stopBits; }

    /*
     * The stop bits to use for serial communication. (1,2)
     */
    public SerialConfig stopBits(StopBits stopBits) { this.stopBits = stopBits; return this; }

    /*
     * The flow control option to use for serial communication. (none, hardware, software)
     */
    public FlowControl flowControl() { return flowControl; }

    /*
     * The flow control option to use for serial communication. (none, hardware, software)
     */
    public SerialConfig flowControl(FlowControl flowControl) { this.flowControl = flowControl; return this; }

    @Override
    public String toString(){
        // /dev/ttyAMA0 (38400, 8N1) [FC=NONE]
        return device() + " (" +
                baud().getValue() + "," +
                dataBits().getValue() +
                parity().toString().substring(0, 1) +
                stopBits().getValue() + ") {" +
                "FC:" + flowControl().toString() + "}";
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy