mirror of
				https://github.com/mik3y/usb-serial-for-android
				synced 2025-10-31 02:17:23 +00:00 
			
		
		
		
	slightly more coverage, local coverage report, dependency update
This commit is contained in:
		
							parent
							
								
									08a93ec530
								
							
						
					
					
						commit
						1e75f91467
					
				| @ -6,7 +6,7 @@ buildscript { | |||||||
|         google() |         google() | ||||||
|     } |     } | ||||||
|     dependencies { |     dependencies { | ||||||
|         classpath 'com.android.tools.build:gradle:4.0.1' |         classpath 'com.android.tools.build:gradle:4.0.2' | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ android { | |||||||
| 
 | 
 | ||||||
|     defaultConfig { |     defaultConfig { | ||||||
|         minSdkVersion 17 |         minSdkVersion 17 | ||||||
|         targetSdkVersion 28 |         targetSdkVersion 29 | ||||||
|         vectorDrawables.useSupportLibrary = true |         vectorDrawables.useSupportLibrary = true | ||||||
| 
 | 
 | ||||||
|         testInstrumentationRunner "android.test.InstrumentationTestRunner" |         testInstrumentationRunner "android.test.InstrumentationTestRunner" | ||||||
| @ -27,6 +27,6 @@ android { | |||||||
| 
 | 
 | ||||||
| dependencies { | dependencies { | ||||||
|     implementation project(':usbSerialForAndroid') |     implementation project(':usbSerialForAndroid') | ||||||
|     implementation 'androidx.appcompat:appcompat:1.1.0' |     implementation 'androidx.appcompat:appcompat:1.2.0' | ||||||
|     implementation 'com.google.android.material:material:1.1.0' |     implementation 'com.google.android.material:material:1.2.1' | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ android { | |||||||
| 
 | 
 | ||||||
|     defaultConfig { |     defaultConfig { | ||||||
|         minSdkVersion 17 |         minSdkVersion 17 | ||||||
|         targetSdkVersion 28 |         targetSdkVersion 29 | ||||||
|         consumerProguardFiles 'proguard-rules.pro' |         consumerProguardFiles 'proguard-rules.pro' | ||||||
|          |          | ||||||
|         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" |         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | ||||||
| @ -26,7 +26,7 @@ dependencies { | |||||||
|     androidTestImplementation 'com.android.support:support-annotations:28.0.0' |     androidTestImplementation 'com.android.support:support-annotations:28.0.0' | ||||||
|     androidTestImplementation 'com.android.support.test:runner:1.0.2' |     androidTestImplementation 'com.android.support.test:runner:1.0.2' | ||||||
|     androidTestImplementation 'commons-net:commons-net:3.6' |     androidTestImplementation 'commons-net:commons-net:3.6' | ||||||
|     androidTestImplementation 'org.apache.commons:commons-lang3:3.8.1' // starting with 3.9 requires min-api 26 |     androidTestImplementation 'org.apache.commons:commons-lang3:3.11' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //apply from: 'publishToMavenLocal.gradle' | //apply from: 'publishToMavenLocal.gradle' | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | // see https://github.com/mik3y/usb-serial-for-android/wiki/Device-Tests-&-Coverage-Report for instructions | ||||||
| apply plugin: 'jacoco' | apply plugin: 'jacoco' | ||||||
| 
 | 
 | ||||||
| android { | android { | ||||||
| @ -43,9 +44,27 @@ android { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| // create report even if tests fail | // create report even if tests fail | ||||||
| project.gradle.taskGraph.whenReady { | project.gradle.taskGraph.whenReady { | ||||||
|     -> project.tasks.findAll { it.name =~ /connected.+AndroidTest/ }.each { |     -> project.tasks.findAll { it.name =~ /connected.+AndroidTest/ }.each { | ||||||
|         it.ignoreFailures = true |         it.ignoreFailures = true | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | task jacocoTestReport(type: JacocoReport /*, dependsOn: ['testDebugUnitTest', 'createAnyDeviceDebugCoverageReport']*/) { | ||||||
|  |     reports { | ||||||
|  |         xml.enabled = false | ||||||
|  |         html.enabled = true | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*'] | ||||||
|  |     def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug", excludes: fileFilter) | ||||||
|  |     def mainSrc = "$project.projectDir/src/main/java" | ||||||
|  | 
 | ||||||
|  |     sourceDirectories.from files([mainSrc]) | ||||||
|  |     classDirectories.from files([debugTree]) | ||||||
|  |     executionData.from fileTree(dir: project.buildDir, includes: [ | ||||||
|  |             'jacoco/testDebugUnitTest.exec', 'outputs/code_coverage/*AndroidTest/connected/*.ec' | ||||||
|  |     ]) | ||||||
|  | } | ||||||
|  | |||||||
| @ -62,12 +62,12 @@ public class CrossoverTest { | |||||||
|         if (availableDrivers.size() == 0) { |         if (availableDrivers.size() == 0) { | ||||||
|             fail("no USB device found"); |             fail("no USB device found"); | ||||||
|         } else if (availableDrivers.size() == 1) { |         } else if (availableDrivers.size() == 1) { | ||||||
|             assertEquals(2, availableDrivers.get(0).getPorts().size()); |             assertEquals("expected device with 2 ports.", 2, availableDrivers.get(0).getPorts().size()); | ||||||
|             usb1 = new UsbWrapper(context, availableDrivers.get(0), 0); |             usb1 = new UsbWrapper(context, availableDrivers.get(0), 0); | ||||||
|             usb2 = new UsbWrapper(context, availableDrivers.get(0), 1); |             usb2 = new UsbWrapper(context, availableDrivers.get(0), 1); | ||||||
|         } else { |         } else { | ||||||
|             assertEquals(1, availableDrivers.get(0).getPorts().size()); |             assertEquals("expected 2 devices with 1 port.", 1, availableDrivers.get(0).getPorts().size()); | ||||||
|             assertEquals(1, availableDrivers.get(1).getPorts().size()); |             assertEquals("expected 2 devices with 1 port.", 1, availableDrivers.get(1).getPorts().size()); | ||||||
|             usb1 = new UsbWrapper(context, availableDrivers.get(0), 0); |             usb1 = new UsbWrapper(context, availableDrivers.get(0), 0); | ||||||
|             usb2 = new UsbWrapper(context, availableDrivers.get(1), 0); |             usb2 = new UsbWrapper(context, availableDrivers.get(1), 0); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -364,7 +364,7 @@ public class DeviceTest { | |||||||
|         try { |         try { | ||||||
|             usb.setParameters(183, 8, 1, UsbSerialPort.PARITY_NONE); |             usb.setParameters(183, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|             fail("baud rate to low expected"); |             fail("baud rate to low expected"); | ||||||
|         } catch (IOException ignored) { |         } catch (UnsupportedOperationException ignored) { | ||||||
|         } |         } | ||||||
|         usb.setParameters(184, 8, 1, UsbSerialPort.PARITY_NONE); |         usb.setParameters(184, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|         usb.setParameters( 960000, 8, 1, UsbSerialPort.PARITY_NONE); |         usb.setParameters( 960000, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
| @ -380,7 +380,7 @@ public class DeviceTest { | |||||||
|         try { |         try { | ||||||
|             usb.setParameters((int)(2000000/1.04), 8, 1, UsbSerialPort.PARITY_NONE); |             usb.setParameters((int)(2000000/1.04), 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|             fail("baud rate error expected"); |             fail("baud rate error expected"); | ||||||
|         } catch (IOException ignored) { |         } catch (UnsupportedOperationException ignored) { | ||||||
|         } |         } | ||||||
|         usb.setParameters((int)(2000000/1.03), 8, 1, UsbSerialPort.PARITY_NONE); |         usb.setParameters((int)(2000000/1.03), 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|         usb.setParameters(2000000, 8, 1, UsbSerialPort.PARITY_NONE); |         usb.setParameters(2000000, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
| @ -388,14 +388,14 @@ public class DeviceTest { | |||||||
|         try { |         try { | ||||||
|             usb.setParameters((int)(2000000*1.04), 8, 1, UsbSerialPort.PARITY_NONE); |             usb.setParameters((int)(2000000*1.04), 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|             fail("baud rate error expected"); |             fail("baud rate error expected"); | ||||||
|         } catch (IOException ignored) { |         } catch (UnsupportedOperationException ignored) { | ||||||
|         } |         } | ||||||
|         usb.setParameters(2000000, 8, 1, UsbSerialPort.PARITY_NONE); |         usb.setParameters(2000000, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|         usb.setParameters(3000000, 8, 1, UsbSerialPort.PARITY_NONE); |         usb.setParameters(3000000, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|         try { |         try { | ||||||
|             usb.setParameters(4000000, 8, 1, UsbSerialPort.PARITY_NONE); |             usb.setParameters(4000000, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|             fail("baud rate to high expected"); |             fail("baud rate to high expected"); | ||||||
|         } catch (IOException ignored) { |         } catch (UnsupportedOperationException ignored) { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -922,7 +922,7 @@ public class DeviceTest { | |||||||
|         if (usb.serialDriver instanceof Cp21xxSerialDriver && usb.serialDriver.getPorts().size() == 1) |         if (usb.serialDriver instanceof Cp21xxSerialDriver && usb.serialDriver.getPorts().size() == 1) | ||||||
|             Assert.assertNotEquals(0, data.length); // can be shorter or full length |             Assert.assertNotEquals(0, data.length); // can be shorter or full length | ||||||
|         else if (usb.serialDriver instanceof ProlificSerialDriver) |         else if (usb.serialDriver instanceof ProlificSerialDriver) | ||||||
|             Assert.assertTrue("expected > 0 and < 16 byte, got " + data.length, data.length > 0 && data.length < 16); |             Assert.assertTrue("sporadic issue! expected > 0 and < 16 byte, got " + data.length, data.length > 0 && data.length < 16); | ||||||
|         else // ftdi, ch340, cp2105 |         else // ftdi, ch340, cp2105 | ||||||
|             Assert.assertEquals(0, data.length); |             Assert.assertEquals(0, data.length); | ||||||
|         telnet.write("2ccc".getBytes()); |         telnet.write("2ccc".getBytes()); | ||||||
| @ -998,7 +998,7 @@ public class DeviceTest { | |||||||
|     public void readSpeed() throws Exception { |     public void readSpeed() throws Exception { | ||||||
|         // see logcat for performance results |         // see logcat for performance results | ||||||
|         // |         // | ||||||
|         // CDC arduino_leonardo_bridge.ini has transfer speed ~ 100 byte/sec |         // CDC arduino_leonardo_bridge.ino has transfer speed ~ 100 byte/sec | ||||||
|         // all other devices are near physical limit with ~ 10-12k/sec |         // all other devices are near physical limit with ~ 10-12k/sec | ||||||
|         // |         // | ||||||
|         // readBufferOverflow provokes read errors, but they can also happen here where the data is actually read fast enough. |         // readBufferOverflow provokes read errors, but they can also happen here where the data is actually read fast enough. | ||||||
| @ -1068,7 +1068,7 @@ public class DeviceTest { | |||||||
|     public void writeSpeed() throws Exception { |     public void writeSpeed() throws Exception { | ||||||
|         // see logcat for performance results |         // see logcat for performance results | ||||||
|         // |         // | ||||||
|         // CDC arduino_leonardo_bridge.ini has transfer speed ~ 100 byte/sec |         // CDC arduino_leonardo_bridge.ino has transfer speed ~ 100 byte/sec | ||||||
|         // all other devices can get near physical limit: |         // all other devices can get near physical limit: | ||||||
|         // longlines=true:, speed is near physical limit at 11.5k |         // longlines=true:, speed is near physical limit at 11.5k | ||||||
|         // longlines=false: speed is 3-4k for all devices, as more USB packets are required |         // longlines=false: speed is 3-4k for all devices, as more USB packets are required | ||||||
| @ -1194,8 +1194,6 @@ public class DeviceTest { | |||||||
|         usb.ioManager = new SerialInputOutputManager(usb.serialPort, usb); |         usb.ioManager = new SerialInputOutputManager(usb.serialPort, usb); | ||||||
|         assertEquals(usb, usb.ioManager.getListener()); |         assertEquals(usb, usb.ioManager.getListener()); | ||||||
| 
 | 
 | ||||||
|         usb.ioManager.setThreadPriority(Process.THREAD_PRIORITY_AUDIO); |  | ||||||
| 
 |  | ||||||
|         assertEquals(0, usb.ioManager.getReadTimeout()); |         assertEquals(0, usb.ioManager.getReadTimeout()); | ||||||
|         usb.ioManager.setReadTimeout(10); |         usb.ioManager.setReadTimeout(10); | ||||||
|         assertEquals(10, usb.ioManager.getReadTimeout()); |         assertEquals(10, usb.ioManager.getReadTimeout()); | ||||||
| @ -1210,10 +1208,22 @@ public class DeviceTest { | |||||||
|         usb.ioManager.setWriteBufferSize(13); |         usb.ioManager.setWriteBufferSize(13); | ||||||
|         assertEquals(13, usb.ioManager.getWriteBufferSize()); |         assertEquals(13, usb.ioManager.getWriteBufferSize()); | ||||||
| 
 | 
 | ||||||
|         usb.open(); // creates new IoManager |         usb.ioManager.setReadBufferSize(usb.ioManager.getReadBufferSize()); | ||||||
|  |         usb.ioManager.setWriteBufferSize(usb.ioManager.getWriteBufferSize()); | ||||||
|  |         usb.ioManager.setReadTimeout(usb.ioManager.getReadTimeout()); | ||||||
|  |         usb.ioManager.setWriteTimeout(usb.ioManager.getWriteTimeout()); | ||||||
|  | 
 | ||||||
|  |         usb.open(EnumSet.of(UsbWrapper.OpenCloseFlags.NO_IOMANAGER_START)); // creates new IoManager | ||||||
|         usb.setParameters(19200, 8, 1, UsbSerialPort.PARITY_NONE); |         usb.setParameters(19200, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|         telnet.setParameters(19200, 8, 1, UsbSerialPort.PARITY_NONE); |         telnet.setParameters(19200, 8, 1, UsbSerialPort.PARITY_NONE); | ||||||
|  |         usb.ioManager.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); | ||||||
|  |         usb.startIoManager(); | ||||||
|         usb.waitForIoManagerStarted(); |         usb.waitForIoManagerStarted(); | ||||||
|  |         try { | ||||||
|  |             usb.ioManager.run(); | ||||||
|  |             fail("already running error expected"); | ||||||
|  |         } catch (IllegalStateException ignored) { | ||||||
|  |         } | ||||||
|         try { |         try { | ||||||
|             usb.ioManager.setThreadPriority(Process.THREAD_PRIORITY_LOWEST); |             usb.ioManager.setThreadPriority(Process.THREAD_PRIORITY_LOWEST); | ||||||
|             fail("setThreadPriority IllegalStateException expected"); |             fail("setThreadPriority IllegalStateException expected"); | ||||||
| @ -1384,7 +1394,7 @@ public class DeviceTest { | |||||||
|             // date loss with high transfer rate and short read timeout !!! |             // date loss with high transfer rate and short read timeout !!! | ||||||
|             diffLen = readSpeedInt(5, -1, shortTimeout); |             diffLen = readSpeedInt(5, -1, shortTimeout); | ||||||
| 
 | 
 | ||||||
|             assertNotEquals(0, diffLen); |             assertNotEquals("sporadic issue!", 0, diffLen); | ||||||
| 
 | 
 | ||||||
|             // data loss observed with read timeout up to 200 msec, e.g. |             // data loss observed with read timeout up to 200 msec, e.g. | ||||||
|             //  difference at 181 len 64 |             //  difference at 181 len 64 | ||||||
| @ -1791,9 +1801,15 @@ public class DeviceTest { | |||||||
|         } catch (UnsupportedOperationException ignored) { |         } catch (UnsupportedOperationException ignored) { | ||||||
|         } |         } | ||||||
|         if(purged) { |         if(purged) { | ||||||
|  |             usb.serialPort.purgeHwBuffers(false, false); | ||||||
|             try { |             try { | ||||||
|                 usb.serialPort.purgeHwBuffers(true, true); |                 usb.serialPort.purgeHwBuffers(true, false); | ||||||
|                 fail("purgeHwBuffers error expected"); |                 fail("purgeHwBuffers(write) error expected"); | ||||||
|  |             } catch (IOException ignored) { | ||||||
|  |             } | ||||||
|  |             try { | ||||||
|  |                 usb.serialPort.purgeHwBuffers(false, true); | ||||||
|  |                 fail("purgeHwBuffers(read) error expected"); | ||||||
|             } catch (IOException ignored) { |             } catch (IOException ignored) { | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @ -1845,10 +1861,10 @@ public class DeviceTest { | |||||||
|         } catch (IOException ignored) { |         } catch (IOException ignored) { | ||||||
|         } |         } | ||||||
|         try { |         try { | ||||||
|             usb.ioManager.run(); |             byte[] buffer = new byte[0]; | ||||||
|             fail("already running error expected"); |             usb.serialPort.read(buffer, UsbWrapper.USB_READ_WAIT); | ||||||
|         } catch (IllegalStateException ignored) { |             fail("read buffer to small expected"); | ||||||
|         } |         } catch(IllegalArgumentException ignored) {} | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
| @ -1876,5 +1892,16 @@ public class DeviceTest { | |||||||
|         ftdiSerialPort.setLatencyTimer(lt); |         ftdiSerialPort.setLatencyTimer(lt); | ||||||
|         assertEquals("latency 1", 99, Math.max(t2-t1, 99)); // looks strange, but shows actual value |         assertEquals("latency 1", 99, Math.max(t2-t1, 99)); // looks strange, but shows actual value | ||||||
|         assertEquals("latency 100", 99, Math.min(t3-t2, 99)); |         assertEquals("latency 100", 99, Math.min(t3-t2, 99)); | ||||||
|  | 
 | ||||||
|  |         usb.deviceConnection.close(); | ||||||
|  |         try { | ||||||
|  |             ftdiSerialPort.getLatencyTimer(); | ||||||
|  |             fail("getLatencyTimer error expected"); | ||||||
|  |         } catch (IOException ignored) {} | ||||||
|  |         usb.deviceConnection.close(); | ||||||
|  |         try { | ||||||
|  |             ftdiSerialPort.setLatencyTimer(1); | ||||||
|  |             fail("setLatencyTimer error expected"); | ||||||
|  |         } catch (IOException ignored) {} | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ import java.io.IOException; | |||||||
| import java.io.InputStream; | import java.io.InputStream; | ||||||
| import java.io.OutputStream; | import java.io.OutputStream; | ||||||
| import java.nio.ByteBuffer; | import java.nio.ByteBuffer; | ||||||
|  | import java.util.ArrayList; | ||||||
| 
 | 
 | ||||||
| import static org.junit.Assert.assertEquals; | import static org.junit.Assert.assertEquals; | ||||||
| 
 | 
 | ||||||
| @ -31,7 +32,7 @@ public class TelnetWrapper { | |||||||
|     private TelnetClient telnetClient; |     private TelnetClient telnetClient; | ||||||
|     private InputStream readStream; |     private InputStream readStream; | ||||||
|     private OutputStream writeStream; |     private OutputStream writeStream; | ||||||
|     private Integer[] comPortOptionCounter = {0}; |     private ArrayList<int[]> commandResponse = new ArrayList<>(); | ||||||
|     public int writeDelay = 0; |     public int writeDelay = 0; | ||||||
| 
 | 
 | ||||||
|     public TelnetWrapper(String host, int port) { |     public TelnetWrapper(String host, int port) { | ||||||
| @ -47,7 +48,9 @@ public class TelnetWrapper { | |||||||
|         telnetClient.addOptionHandler(new TelnetOptionHandler(RFC2217_COM_PORT_OPTION, false, false, false, false) { |         telnetClient.addOptionHandler(new TelnetOptionHandler(RFC2217_COM_PORT_OPTION, false, false, false, false) { | ||||||
|             @Override |             @Override | ||||||
|             public int[] answerSubnegotiation(int[] suboptionData, int suboptionLength) { |             public int[] answerSubnegotiation(int[] suboptionData, int suboptionLength) { | ||||||
|                 comPortOptionCounter[0] += 1; |                 int[] data = new int[suboptionLength]; | ||||||
|  |                 System.arraycopy(suboptionData, 0, data, 0, suboptionLength); | ||||||
|  |                 commandResponse.add(data); | ||||||
|                 return super.answerSubnegotiation(suboptionData, suboptionLength); |                 return super.answerSubnegotiation(suboptionData, suboptionLength); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
| @ -59,18 +62,25 @@ public class TelnetWrapper { | |||||||
|         readStream = telnetClient.getInputStream(); |         readStream = telnetClient.getInputStream(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     private int[] doCommand(String name, byte[] command) throws IOException, InterruptedException { | ||||||
|  |         commandResponse.clear(); | ||||||
|  |         telnetClient.sendCommand((byte) TelnetCommand.SB); | ||||||
|  |         writeStream.write(command); | ||||||
|  |         telnetClient.sendCommand((byte)TelnetCommand.SE); | ||||||
|  | 
 | ||||||
|  |         for(int i=0; i<TELNET_COMMAND_WAIT; i++) { | ||||||
|  |             if(commandResponse.size() > 0) break; | ||||||
|  |             Thread.sleep(1); | ||||||
|  |         } | ||||||
|  |         assertEquals("RFC2217 " + name+ " w/o response.", 1, commandResponse.size()); | ||||||
|  |         //Log.d(TAG, name + " -> " + Arrays.toString(commandResponse.get(0))); | ||||||
|  |         return commandResponse.get(0); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public void setUp() throws Exception { |     public void setUp() throws Exception { | ||||||
|         setUpFixtureInt(); |         setUpFixtureInt(); | ||||||
|         telnetClient.sendAYT(1000); // not correctly handled by rfc2217_server.py, but WARNING output "ignoring Telnet command: '\xf6'" is a nice separator between tests |         telnetClient.sendAYT(1000); // not correctly handled by rfc2217_server.py, but WARNING output "ignoring Telnet command: '\xf6'" is a nice separator between tests | ||||||
|         comPortOptionCounter[0] = 0; |         doCommand("purge-data", new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_PURGE_DATA, 3}); | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SB); |  | ||||||
|         writeStream.write(new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_PURGE_DATA, 3}); |  | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SE); |  | ||||||
|         for(int i=0; i<TELNET_COMMAND_WAIT; i++) { |  | ||||||
|             if(comPortOptionCounter[0] == 1) break; |  | ||||||
|             Thread.sleep(1); |  | ||||||
|         } |  | ||||||
|         assertEquals("telnet connection lost", 1, comPortOptionCounter[0].intValue()); |  | ||||||
|         writeDelay = 0; |         writeDelay = 0; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -131,29 +141,10 @@ public class TelnetWrapper { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void setParameters(int baudRate, int dataBits, int stopBits, int parity) throws IOException, InterruptedException, InvalidTelnetOptionException { |     public void setParameters(int baudRate, int dataBits, int stopBits, int parity) throws IOException, InterruptedException, InvalidTelnetOptionException { | ||||||
|         comPortOptionCounter[0] = 0; |         doCommand("set-baudrate", new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_BAUDRATE, (byte)(baudRate>>24), (byte)(baudRate>>16), (byte)(baudRate>>8), (byte)baudRate}); | ||||||
| 
 |         doCommand("set-datasize", new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_DATASIZE, (byte)dataBits}); | ||||||
|         telnetClient.sendCommand((byte) TelnetCommand.SB); |         doCommand("set-stopsize", new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_STOPSIZE, (byte)stopBits}); | ||||||
|         writeStream.write(new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_BAUDRATE, (byte)(baudRate>>24), (byte)(baudRate>>16), (byte)(baudRate>>8), (byte)baudRate}); |         doCommand("set-parity", new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_PARITY, (byte)(parity+1)}); | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SE); |  | ||||||
| 
 |  | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SB); |  | ||||||
|         writeStream.write(new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_DATASIZE, (byte)dataBits}); |  | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SE); |  | ||||||
| 
 |  | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SB); |  | ||||||
|         writeStream.write(new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_STOPSIZE, (byte)stopBits}); |  | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SE); |  | ||||||
| 
 |  | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SB); |  | ||||||
|         writeStream.write(new byte[] {RFC2217_COM_PORT_OPTION, RFC2217_SET_PARITY, (byte)(parity+1)}); |  | ||||||
|         telnetClient.sendCommand((byte)TelnetCommand.SE); |  | ||||||
| 
 |  | ||||||
|         // windows does not like nonstandard baudrates. rfc2217_server.py terminates w/o response |  | ||||||
|         for(int i=0; i<TELNET_COMMAND_WAIT; i++) { |  | ||||||
|             if(comPortOptionCounter[0] == 4) break; |  | ||||||
|             Thread.sleep(1); |  | ||||||
|         } |  | ||||||
|         assertEquals("telnet connection lost", 4, comPortOptionCounter[0].intValue()); |  | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -33,8 +33,8 @@ import static org.junit.Assert.fail; | |||||||
| 
 | 
 | ||||||
| public class UsbWrapper implements SerialInputOutputManager.Listener { | public class UsbWrapper implements SerialInputOutputManager.Listener { | ||||||
| 
 | 
 | ||||||
|     private final static int     USB_READ_WAIT = 500; |     public final static int     USB_READ_WAIT = 500; | ||||||
|     private final static int     USB_WRITE_WAIT = 500; |     public final static int     USB_WRITE_WAIT = 500; | ||||||
|     private static final String TAG = UsbWrapper.class.getSimpleName(); |     private static final String TAG = UsbWrapper.class.getSimpleName(); | ||||||
| 
 | 
 | ||||||
|     public enum OpenCloseFlags { NO_IOMANAGER_THREAD, NO_IOMANAGER_START, NO_CONTROL_LINE_INIT, NO_DEVICE_CONNECTION }; |     public enum OpenCloseFlags { NO_IOMANAGER_THREAD, NO_IOMANAGER_START, NO_CONTROL_LINE_INIT, NO_DEVICE_CONNECTION }; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user