/*******************************************************************************
* Copyright (c) 2011, 2016 Eurotech and/or its affiliates
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eurotech
*******************************************************************************/
package org.eclipse.kura.core.test.hw;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import junit.framework.TestCase;
import org.eclipse.kura.test.annotation.TestTarget;
import org.junit.BeforeClass;
import org.junit.Test;
import org.osgi.service.io.ConnectionFactory;
public class CommTest extends TestCase {
private static CountDownLatch dependencyLatch = new CountDownLatch(1); // initialize with number of dependencies
private static ConnectionFactory connectionFactory;
//private static String SERIAL_PORT_NAME ="/dev/tty.PL2303-00001004";
private static String SERIAL_PORT_NAME ="/dev/ttyUSB0";
@BeforeClass
public void setUp() {
// Wait for OSGi dependencies
try {
dependencyLatch.await(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
fail("OSGi dependencies unfulfilled");
}
}
public void setConnectionFactory(ConnectionFactory connectionFactory) {
CommTest.connectionFactory = connectionFactory;
dependencyLatch.countDown();
}
@TestTarget(targetPlatforms={TestTarget.PLATFORM_ALL})
@Test
public void testServiceExists() {
assertNotNull(CommTest.connectionFactory);
}
//Dont run these hardware tests in CloudBees!!!
/*@Test
public void testCommConnection()
throws Exception
{
String uri = new CommURI.Builder(SERIAL_PORT_NAME)
.withBaudRate(19200)
.withDataBits(8)
.withStopBits(1)
.withParity(0)
.withTimeout(2000)
.build().toString();
CommConnection conn = (CommConnection) CommTest.connectionFactory.createConnection(uri, 1, false);
assertNotNull(conn);
OutputStream os = conn.openOutputStream();
os.write(10);
os.write("hello".getBytes(), 0, "hello".getBytes().length);
os.flush();
os.close();
os = null;
conn.close();
conn = null;
}
@Test
public void testOpenSerialPort() {
try {
String uri = new CommURI.Builder(SERIAL_PORT_NAME)
.withBaudRate(19200)
.withDataBits(8)
.withStopBits(1)
.withParity(0)
.withTimeout(2000)
.build().toString();
CommConnection conn = (CommConnection) CommTest.connectionFactory.createConnection(uri, 1, false);
assertNotNull(conn);
InputStream is = conn.openInputStream();
OutputStream os = conn.openOutputStream();
assertNotNull(is);
assertNotNull(os);
is.close();
os.close();
is = null;
os = null;
conn.close();
conn = null;
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testWriteToPort() {
try {
String uri = new CommURI.Builder(SERIAL_PORT_NAME)
.withBaudRate(19200)
.withDataBits(8)
.withStopBits(1)
.withParity(0)
.withTimeout(2000)
.build().toString();
CommConnection conn = (CommConnection) CommTest.connectionFactory.createConnection(uri, 1, false);
assertNotNull(conn);
OutputStream os = conn.openOutputStream();
assertNotNull(os);
os.write("this is a set of test data coming from a junit test in Kura\r\n".getBytes());
os.flush();
os.close();
os = null;
conn.close();
conn = null;
} catch (Exception e) {
e.printStackTrace();
}
}*/
// CAN'T READ IN AUTOMATED TEST
/*@Test
public void testReadFromPort() {
try {
String uri = new CommURI.Builder(SERIAL_PORT_NAME)
.withBaudRate(19200)
.withDataBits(8)
.withStopBits(1)
.withParity(0)
.withTimeout(2000)
.build().toString();
CommConnection conn = (CommConnection) CommTest.connectionFactory.createConnection(uri, 1, false);
assertNotNull(conn);
InputStream is = conn.openInputStream();
assertNotNull(is);
System.out.println("waiting for serial port input - make sure to end this with a <ENTER>...");
StringBuffer sb = new StringBuffer();
int c;
while((c = is.read()) != 0xd) {
System.out.println("read byte: 0x" + Integer.toHexString(c) + " -> " + (char)c);
sb.append((char)c);
}
System.out.println("Read from serial port: " + sb.toString());
is.close();
is = null;
conn.close();
conn = null;
} catch (Exception e) {
e.printStackTrace();
}
}*/
/*
@Test
public void testTwoPorts() {
try {
String uri = new CommURI.Builder(SERIAL_PORT_NAME)
.withBaudRate(19200)
.withDataBits(8)
.withStopBits(1)
.withParity(0)
.withTimeout(2000)
.build().toString();
CommConnection connOne = (CommConnection) CommTest.connectionFactory.createConnection(uri, 1, false);
assertNotNull(connOne);
uri = new CommURI.Builder(SERIAL_PORT_NAME)
.withBaudRate(19200)
.withDataBits(8)
.withStopBits(1)
.withParity(0)
.withTimeout(2000)
.build().toString();
CommConnection connTwo = (CommConnection) CommTest.connectionFactory.createConnection(uri, 1, false);
assertNotNull(connTwo);
InputStream isOne = connOne.openInputStream();
OutputStream osOne = connOne.openOutputStream();
InputStream isTwo = connTwo.openInputStream();
OutputStream osTwo = connTwo.openOutputStream();
assertNotNull(isOne);
assertNotNull(osOne);
assertNotNull(isTwo);
assertNotNull(osTwo);
//write from one to two
byte[] array = "this is a message from one to two\n".getBytes();
osOne.write(array);
StringBuffer sb = new StringBuffer();
int c;
while((c = isTwo.read()) != 0xa) {
System.out.println("port 2: read byte: 0x" + Integer.toHexString(c) + " -> " + (char)c);
sb.append((char)c);
}
System.out.println("Port 2: Read from serial port two: " + sb.toString());
array = "this is a message from two to one\n".getBytes();
osTwo.write(array);
sb = new StringBuffer();
while((c = isOne.read()) != 0xa) {
System.out.println("port 1: read byte: 0x" + Integer.toHexString(c) + " -> " + (char)c);
sb.append((char)c);
}
System.out.println("Port 1: Read from serial port: " + sb.toString());
isOne.close();
osOne.close();
isOne = null;
osOne = null;
isTwo.close();
osTwo.close();
isTwo = null;
osTwo = null;
connOne.close();
connOne = null;
connTwo.close();
connTwo = null;
} catch (Exception e) {
e.printStackTrace();
}
}*/
}