Skip to content
This repository has been archived by the owner on Jan 11, 2024. It is now read-only.

Commit

Permalink
Merge pull request #36 from jderda/master
Browse files Browse the repository at this point in the history
Fixed issue #8; added serial exceptions
  • Loading branch information
savageautomate committed Feb 16, 2013
2 parents 43381b7 + e5e260f commit 09ff7f2
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 8 deletions.
5 changes: 3 additions & 2 deletions pi4j-core/src/main/java/com/pi4j/io/serial/Serial.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,10 @@ public interface Serial {
* GPIO header.
* @param baudRate The baud rate to use with the serial port.
*
* @return The return value is the file descriptor or -1 for any error.
* @return The return value is the file descriptor.
* @throws SerialException Exception thrown on any error.
*/
int open(String device, int baudRate);
void open(String device, int baudRate) throws SerialException;

/**
* This method is called to close a currently open open serial port.
Expand Down
85 changes: 85 additions & 0 deletions pi4j-core/src/main/java/com/pi4j/io/serial/SerialException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.pi4j.io.serial;

/*
* #%L
* **********************************************************************
* ORGANIZATION : Pi4J
* PROJECT : Pi4J :: Java Library (Core)
* FILENAME : SerialException.java
*
* This file is part of the Pi4J project. More information about
* this project can be found here: http://www.pi4j.com/
* **********************************************************************
* %%
* Copyright (C) 2013 Pi4J
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/


/**
* <p> This class represents Exception that might occur in Serial interface.</p>
*
* <p>
* Before using the Pi4J library, you need to ensure that the Java VM in configured with access to
* the following system libraries:
* <ul>
* <li>pi4j</li>
* <li>wiringPi</li>
* </ul>
* <blockquote> This library depends on the wiringPi native system library.</br> (developed by
* Gordon Henderson @ <a href="https://projects.drogon.net/">https://projects.drogon.net/</a>)
* </blockquote>
* </p>
*
* @see #com.pi4j.io.serial.Serial
*
* @see <a href="http://www.pi4j.com/">http://www.pi4j.com/</a>
* @author Jakub Derda (<a
* href="http://www.ardeo.pl">http://www.ardeo.pl</a>)
*/
public class SerialException extends Exception {

/**
* Default serial version ID
*/
private static final long serialVersionUID = 1L;

/**
* Default no argument constructor.
*/
public SerialException() {
super();
}

/**
* Constructor with description.
*
* @param message Description of error that occured.
*/
public SerialException(String message) {
super(message);
}


/**
* Constructor with cause.
*
* @param cause Cause of SerialException.
*/
public SerialException(Throwable cause) {
super(cause);
}

}
20 changes: 14 additions & 6 deletions pi4j-core/src/main/java/com/pi4j/io/serial/impl/SerialImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@

import com.pi4j.io.serial.Serial;
import com.pi4j.io.serial.SerialDataListener;
import com.pi4j.io.serial.SerialException;

/**
* <p> This implementation class implements the 'Serial' interface using the WiringPi Serial library.</p>
Expand Down Expand Up @@ -65,19 +66,22 @@ public class SerialImpl implements Serial {
protected boolean isshutdown = false;

/**
* This method is call to open a serial port for communication.
* This method is call to open a serial port for communication. Throws SerialException on error.
*
* @see #DEFAULT_COM_PORT
*
* @param device The device address of the serial port to access. You can use constant
* 'DEFAULT_COM_PORT' if you wish to access the default serial port provided via the
* GPIO header.
* @param baudRate The baud rate to use with the serial port.
* @return The return value is the file descriptor or -1 for any error.
* @return The return value is the file descriptor.
* @throws SerialException Exception thrown on any error.
*/
public int open(String device, int baudRate) {
public void open(String device, int baudRate) throws SerialException {
fileDescriptor = com.pi4j.wiringpi.Serial.serialOpen(device, baudRate);
return fileDescriptor;
if (fileDescriptor == -1) {
throw new SerialException("Cannot open serial port");
}
}

/**
Expand All @@ -93,8 +97,12 @@ public boolean isOpen() {
/**
* This method is called to close a currently open open serial port.
*/
public void close() {
com.pi4j.wiringpi.Serial.serialClose(fileDescriptor);
public void close() throws IllegalStateException {
if (isOpen()) {
com.pi4j.wiringpi.Serial.serialClose(fileDescriptor);
} else {
throw new IllegalStateException("Serial connection is not open, cannot close");
}
}

/**
Expand Down

0 comments on commit 09ff7f2

Please sign in to comment.