@@ -1425,19 +1425,16 @@ public void IoManager() throws Exception {
1425
1425
usb .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1426
1426
telnet .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1427
1427
usb .ioManager .setThreadPriority (Process .THREAD_PRIORITY_DEFAULT );
1428
+ assertEquals (SerialInputOutputManager .State .STOPPED , usb .ioManager .getState ());
1428
1429
usb .ioManager .start ();
1429
1430
usb .waitForIoManagerStarted ();
1430
- assertTrue ("iomanager thread" , usb .hasIoManagerThread ());
1431
+ assertEquals (SerialInputOutputManager .State .RUNNING , usb .ioManager .getState ());
1432
+ assertTrue ("iomanager thread" , usb .hasIoManagerThreads ());
1431
1433
try {
1432
1434
usb .ioManager .start ();
1433
1435
fail ("already running error expected" );
1434
1436
} catch (IllegalStateException ignored ) {
1435
1437
}
1436
- try {
1437
- usb .ioManager .run ();
1438
- fail ("already running error expected" );
1439
- } catch (IllegalStateException ignored ) {
1440
- }
1441
1438
try {
1442
1439
usb .ioManager .setThreadPriority (Process .THREAD_PRIORITY_LOWEST );
1443
1440
fail ("setThreadPriority IllegalStateException expected" );
@@ -1462,23 +1459,12 @@ public void IoManager() throws Exception {
1462
1459
telnet .write (new byte [1 ]); // now uses 8 byte buffer
1463
1460
usb .read (3 );
1464
1461
1465
- // writebuffer resize
1462
+ // small writebuffer
1466
1463
try {
1467
1464
usb .ioManager .writeAsync (new byte [8192 ]);
1468
1465
fail ("expected BufferOverflowException" );
1469
1466
} catch (BufferOverflowException ignored ) {}
1470
1467
1471
- usb .ioManager .setWriteBufferSize (16 );
1472
- usb .ioManager .writeAsync ("1234567890AB" .getBytes ());
1473
- try {
1474
- usb .ioManager .setWriteBufferSize (8 );
1475
- fail ("expected BufferOverflowException" );
1476
- } catch (BufferOverflowException ignored ) {}
1477
- usb .ioManager .setWriteBufferSize (24 ); // pending date copied to new buffer
1478
- telnet .write ("a" .getBytes ());
1479
- assertThat (usb .read (1 ), equalTo ("a" .getBytes ()));
1480
- assertThat (telnet .read (12 ), equalTo ("1234567890AB" .getBytes ()));
1481
-
1482
1468
// small readbuffer
1483
1469
usb .ioManager .setReadBufferSize (8 );
1484
1470
Log .d (TAG , "setReadBufferSize(8)" );
@@ -1490,74 +1476,31 @@ public void IoManager() throws Exception {
1490
1476
telnet .write ("d" .getBytes ());
1491
1477
assertThat (usb .read (1 ), equalTo ("d" .getBytes ()));
1492
1478
1479
+ SerialInputOutputManager ioManager = usb .ioManager ;
1480
+ assertEquals (SerialInputOutputManager .State .RUNNING , usb .ioManager .getState ());
1493
1481
usb .close ();
1494
- for (int i = 0 ; i < 100 && usb .hasIoManagerThread (); i ++) {
1482
+ for (int i = 0 ; i < 100 && usb .hasIoManagerThreads (); i ++) {
1495
1483
Thread .sleep (1 );
1496
1484
}
1497
- assertFalse ("iomanager thread" , usb .hasIoManagerThread ());
1485
+ assertFalse ("iomanager threads" , usb .hasIoManagerThreads ());
1486
+ assertNull (usb .ioManager );
1487
+ assertEquals (SerialInputOutputManager .State .STOPPED , ioManager .getState ());
1498
1488
SerialInputOutputManager .DEBUG = false ;
1499
-
1500
- // legacy start
1501
- usb .open (EnumSet .of (UsbWrapper .OpenCloseFlags .NO_IOMANAGER_START )); // creates new IoManager
1502
- usb .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1503
- telnet .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1504
- usb .ioManager .setThreadPriority (Process .THREAD_PRIORITY_DEFAULT );
1505
- Executors .newSingleThreadExecutor ().submit (usb .ioManager );
1506
- usb .waitForIoManagerStarted ();
1507
- try {
1508
- usb .ioManager .start ();
1509
- fail ("already running error expected" );
1510
- } catch (IllegalStateException ignored ) {
1511
- }
1512
1489
}
1513
1490
1514
1491
@ Test
1515
1492
public void writeAsync () throws Exception {
1516
1493
byte [] data , buf = new byte []{1 };
1517
1494
1518
- // w/o timeout: write delayed until something is read
1495
+ // write immediately, without waiting for read
1519
1496
usb .open ();
1520
1497
usb .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1521
1498
telnet .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1522
1499
usb .ioManager .writeAsync (buf );
1523
1500
usb .ioManager .writeAsync (buf );
1524
- data = telnet .read (1 );
1525
- assertEquals (0 , data .length );
1526
- telnet .write (buf );
1527
- data = usb .read (1 );
1528
- assertEquals (1 , data .length );
1529
1501
data = telnet .read (2 );
1530
1502
assertEquals (2 , data .length );
1531
1503
usb .close ();
1532
-
1533
- // with timeout: write after timeout
1534
- usb .open (EnumSet .of (UsbWrapper .OpenCloseFlags .NO_IOMANAGER_START ));
1535
- usb .ioManager .setReadTimeout (100 );
1536
- usb .ioManager .start ();
1537
- usb .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1538
- telnet .setParameters (19200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1539
- usb .ioManager .writeAsync (buf );
1540
- usb .ioManager .writeAsync (buf );
1541
- data = telnet .read (2 );
1542
- assertEquals (2 , data .length );
1543
- usb .ioManager .setReadTimeout (200 );
1544
-
1545
- // with internal SerialTimeoutException
1546
- TestBuffer tbuf = new TestBuffer (usb .writeBufferSize + 2 *usb .writePacketSize );
1547
- byte [] pbuf1 = new byte [tbuf .buf .length - 4 ];
1548
- byte [] pbuf2 = new byte [1 ];
1549
- System .arraycopy (tbuf .buf , 0 ,pbuf1 , 0 , pbuf1 .length );
1550
- usb .ioManager .setWriteTimeout (20 ); // tbuf len >= 128, needs 133msec @ 9600 baud
1551
- usb .setParameters (9600 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1552
- telnet .setParameters (9600 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1553
- usb .ioManager .writeAsync (pbuf1 );
1554
- for (int i = pbuf1 .length ; i < tbuf .buf .length ; i ++) {
1555
- Thread .sleep (20 );
1556
- pbuf2 [0 ] = tbuf .buf [i ];
1557
- usb .ioManager .writeAsync (pbuf2 );
1558
- }
1559
- while (!tbuf .testRead (telnet .read (-1 )))
1560
- ;
1561
1504
}
1562
1505
1563
1506
@ Test
0 commit comments