Skip to content

Commit ae14ce8

Browse files
committed
Kotlin-friendly API
1 parent 8cb47de commit ae14ce8

File tree

85 files changed

+1588
-1080
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+1588
-1080
lines changed

examples/bulk_transfer/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<dependency>
2222
<groupId>net.codecrete.usb</groupId>
2323
<artifactId>java-does-usb</artifactId>
24-
<version>0.6.1</version>
24+
<version>0.7.0-SNAPSHOT</version>
2525
</dependency>
2626
</dependencies>
2727

examples/bulk_transfer/src/main/java/net/codecrete/usb/examples/BulkTransfer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class BulkTransfer {
2727
private static final int ENDPOINT_IN = 2;
2828

2929
public static void main(String[] args) {
30-
var optionalDevice = USB.getDevice(VID, PID);
30+
var optionalDevice = Usb.findDevice(VID, PID);
3131
if (optionalDevice.isEmpty()) {
3232
System.out.printf("No USB device with VID=0x%04x and PID=0x%04x found.%n", VID, PID);
3333
return;

examples/enumerate/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<dependency>
2222
<groupId>net.codecrete.usb</groupId>
2323
<artifactId>java-does-usb</artifactId>
24-
<version>0.6.1</version>
24+
<version>0.7.0-SNAPSHOT</version>
2525
</dependency>
2626
<dependency>
2727
<groupId>org.tinylog</groupId>

examples/enumerate/src/main/java/net/codecrete/usb/examples/Enumerate.java

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,32 @@ public class Enumerate {
1919

2020
public static void main(String[] args) {
2121
// display the already present USB devices
22-
for (var device : USB.getAllDevices())
22+
for (var device : Usb.getDevices())
2323
printDevice(device);
2424
}
2525

26-
private static void printDevice(USBDevice device) {
26+
private static void printDevice(UsbDevice device) {
2727
System.out.println("Device:");
28-
System.out.printf(" VID: 0x%04x%n", device.vendorId());
29-
System.out.printf(" PID: 0x%04x%n", device.productId());
30-
if (device.manufacturer() != null)
31-
System.out.printf(" Manufacturer: %s%n", device.manufacturer());
32-
if (device.product() != null)
33-
System.out.printf(" Product name: %s%n", device.product());
34-
if (device.serialNumber() != null)
35-
System.out.printf(" Serial number: %s%n", device.serialNumber());
36-
System.out.printf(" Device class: 0x%02x", device.classCode());
37-
printInParens(USBClassInfo.lookupClass(device.classCode()));
38-
System.out.printf(" Device subclass: 0x%02x", device.subclassCode());
39-
printInParens(USBClassInfo.lookupSubclass(device.classCode(), device.subclassCode()));
40-
System.out.printf(" Device protocol: 0x%02x", device.protocolCode());
41-
printInParens(USBClassInfo.lookupProtocol(device.classCode(), device.subclassCode(), device.protocolCode()));
42-
43-
for (var intf: device.interfaces())
28+
System.out.printf(" VID: 0x%04x%n", device.getVendorId());
29+
System.out.printf(" PID: 0x%04x%n", device.getProductId());
30+
if (device.getManufacturer() != null)
31+
System.out.printf(" Manufacturer: %s%n", device.getManufacturer());
32+
if (device.getProduct() != null)
33+
System.out.printf(" Product name: %s%n", device.getProduct());
34+
if (device.getSerialNumber() != null)
35+
System.out.printf(" Serial number: %s%n", device.getSerialNumber());
36+
System.out.printf(" Device class: 0x%02x", device.getClassCode());
37+
printInParens(USBClassInfo.lookupClass(device.getClassCode()));
38+
System.out.printf(" Device subclass: 0x%02x", device.getSubclassCode());
39+
printInParens(USBClassInfo.lookupSubclass(device.getClassCode(), device.getSubclassCode()));
40+
System.out.printf(" Device protocol: 0x%02x", device.getProtocolCode());
41+
printInParens(USBClassInfo.lookupProtocol(device.getClassCode(), device.getSubclassCode(), device.getProtocolCode()));
42+
43+
for (var intf: device.getInterfaces())
4444
printInterface(intf);
4545

46-
printRawDescriptor("Device descriptor", device.deviceDescriptor());
47-
printRawDescriptor("Configuration descriptor", device.configurationDescriptor());
46+
printRawDescriptor("Device descriptor", device.getDeviceDescriptor());
47+
printRawDescriptor("Configuration descriptor", device.getConfigurationDescriptor());
4848

4949
System.out.println();
5050
System.out.println();
@@ -59,36 +59,36 @@ private static void printInParens(Optional<String> text) {
5959
}
6060
}
6161

62-
private static void printInterface(USBInterface intf) {
63-
for (var alt : intf.alternates())
64-
printAlternate(alt, intf.number(), alt == intf.alternate());
62+
private static void printInterface(UsbInterface intf) {
63+
for (var alt : intf.getAlternates())
64+
printAlternate(alt, intf.getNumber(), alt == intf.getCurrentAlternate());
6565
}
6666

67-
private static void printAlternate(USBAlternateInterface alt, int intferaceNumber, boolean isDefault) {
67+
private static void printAlternate(UsbAlternateInterface alt, int intferaceNumber, boolean isDefault) {
6868
System.out.println();
6969
if (isDefault) {
7070
System.out.printf(" Interface %d%n", intferaceNumber);
7171
} else {
72-
System.out.printf(" Interface %d (alternate %d)%n", intferaceNumber, alt.number());
72+
System.out.printf(" Interface %d (alternate %d)%n", intferaceNumber, alt.getNumber());
7373
}
7474

75-
System.out.printf(" Interface class: 0x%02x", alt.classCode());
76-
printInParens(USBClassInfo.lookupClass(alt.classCode()));
77-
System.out.printf(" Interface subclass: 0x%02x", alt.subclassCode());
78-
printInParens(USBClassInfo.lookupProtocol(alt.classCode(), alt.subclassCode(), alt.protocolCode()));
79-
System.out.printf(" Interface protocol: 0x%02x", alt.protocolCode());
80-
printInParens(USBClassInfo.lookupProtocol(alt.classCode(), alt.subclassCode(), alt.protocolCode()));
75+
System.out.printf(" Interface class: 0x%02x", alt.getClassCode());
76+
printInParens(USBClassInfo.lookupClass(alt.getClassCode()));
77+
System.out.printf(" Interface subclass: 0x%02x", alt.getSubclassCode());
78+
printInParens(USBClassInfo.lookupProtocol(alt.getClassCode(), alt.getSubclassCode(), alt.getProtocolCode()));
79+
System.out.printf(" Interface protocol: 0x%02x", alt.getProtocolCode());
80+
printInParens(USBClassInfo.lookupProtocol(alt.getClassCode(), alt.getSubclassCode(), alt.getProtocolCode()));
8181

82-
for (var endpoint : alt.endpoints())
82+
for (var endpoint : alt.getEndpoints())
8383
printEndpoint(endpoint);
8484
}
8585

86-
private static void printEndpoint(USBEndpoint endpoint) {
86+
private static void printEndpoint(UsbEndpoint endpoint) {
8787
System.out.println();
88-
System.out.printf(" Endpoint %d%n", endpoint.number());
89-
System.out.printf(" Direction: %s%n", endpoint.direction().name());
90-
System.out.printf(" Transfer type: %s%n", endpoint.transferType().name());
91-
System.out.printf(" Packet size: %d bytes%n", endpoint.packetSize());
88+
System.out.printf(" Endpoint %d%n", endpoint.getNumber());
89+
System.out.printf(" Direction: %s%n", endpoint.getDirection().name());
90+
System.out.printf(" Transfer type: %s%n", endpoint.getTransferType().name());
91+
System.out.printf(" Packet size: %d bytes%n", endpoint.getPacketSize());
9292
}
9393

9494
private static void printRawDescriptor(String title, byte[] descriptor) {
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
target/
2+
!.mvn/wrapper/maven-wrapper.jar
3+
!**/src/main/**/target/
4+
!**/src/test/**/target/
5+
6+
### IntelliJ IDEA ###
7+
.idea/modules.xml
8+
.idea/jarRepositories.xml
9+
.idea/compiler.xml
10+
.idea/libraries/
11+
*.iws
12+
*.iml
13+
*.ipr
14+
15+
### Eclipse ###
16+
.apt_generated
17+
.classpath
18+
.factorypath
19+
.project
20+
.settings
21+
.springBeans
22+
.sts4-cache
23+
24+
### NetBeans ###
25+
/nbproject/private/
26+
/nbbuild/
27+
/dist/
28+
/nbdist/
29+
/.nb-gradle/
30+
build/
31+
!**/src/main/**/build/
32+
!**/src/test/**/build/
33+
34+
### VS Code ###
35+
.vscode/
36+
37+
### Mac OS ###
38+
.DS_Store

examples/enumerate_kotlin/pom.xml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<groupId>net.codecrete.usb.examples</groupId>
6+
<artifactId>kotlin</artifactId>
7+
<version>0.6.1-SNAPSHOT</version>
8+
<packaging>jar</packaging>
9+
10+
<name>kotlin</name>
11+
<url>https://github.com/manuelbl/JavaDoesUSB/examples/kotlin</url>
12+
13+
<properties>
14+
<kotlin.version>1.9.10</kotlin.version>
15+
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
16+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17+
</properties>
18+
19+
<build>
20+
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
21+
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
22+
23+
<plugins>
24+
<plugin>
25+
<groupId>org.jetbrains.kotlin</groupId>
26+
<artifactId>kotlin-maven-plugin</artifactId>
27+
<version>${kotlin.version}</version>
28+
<extensions>true</extensions>
29+
</plugin>
30+
</plugins>
31+
</build>
32+
33+
<dependencies>
34+
<dependency>
35+
<groupId>org.jetbrains.kotlin</groupId>
36+
<artifactId>kotlin-stdlib</artifactId>
37+
<version>${kotlin.version}</version>
38+
</dependency>
39+
<dependency>
40+
<groupId>net.codecrete.usb</groupId>
41+
<artifactId>java-does-usb</artifactId>
42+
<version>0.7.0-SNAPSHOT</version>
43+
</dependency>
44+
<dependency>
45+
<groupId>org.tinylog</groupId>
46+
<artifactId>tinylog-api</artifactId>
47+
<version>2.6.2</version>
48+
</dependency>
49+
<dependency>
50+
<groupId>org.tinylog</groupId>
51+
<artifactId>tinylog-impl</artifactId>
52+
<version>2.6.2</version>
53+
</dependency>
54+
<dependency>
55+
<groupId>org.tinylog</groupId>
56+
<artifactId>jsl-tinylog</artifactId>
57+
<version>2.6.2</version>
58+
</dependency>
59+
<dependency>
60+
<groupId>junit</groupId>
61+
<artifactId>junit</artifactId>
62+
<version>4.13.2</version>
63+
<scope>test</scope>
64+
</dependency>
65+
</dependencies>
66+
</project>
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package net.codecrete.usb.examples
2+
3+
import net.codecrete.usb.*
4+
import kotlin.math.min
5+
6+
7+
fun main() {
8+
Enumerate().enumerate()
9+
}
10+
11+
class Enumerate {
12+
13+
private var classInfo = UsbClassInfo()
14+
15+
fun enumerate() {
16+
for (device in Usb.getDevices()) {
17+
printDevice(device)
18+
}
19+
}
20+
21+
private fun printDevice(device: UsbDevice) {
22+
println("Device:")
23+
System.out.printf(" VID: 0x%04x%n", device.vendorId)
24+
System.out.printf(" PID: 0x%04x%n", device.productId)
25+
if (device.manufacturer != null) System.out.printf(" Manufacturer: %s%n", device.manufacturer)
26+
if (device.product != null) System.out.printf(" Product name: %s%n", device.product)
27+
if (device.serialNumber != null) System.out.printf(" Serial number: %s%n", device.serialNumber)
28+
System.out.printf(" Device class: 0x%02x", device.classCode)
29+
printInParens(classInfo.lookupClass(device.classCode))
30+
System.out.printf(" Device subclass: 0x%02x", device.subclassCode)
31+
printInParens(classInfo.lookupSubclass(device.classCode, device.subclassCode))
32+
System.out.printf(" Device protocol: 0x%02x", device.protocolCode)
33+
printInParens(classInfo.lookupProtocol(device.classCode, device.subclassCode, device.protocolCode))
34+
for (intf in device.interfaces) printInterface(intf)
35+
printRawDescriptor("Device descriptor", device.deviceDescriptor)
36+
printRawDescriptor("Configuration descriptor", device.configurationDescriptor)
37+
println()
38+
println()
39+
}
40+
41+
private fun printInParens(text: String?) {
42+
if (text != null) {
43+
System.out.printf(" (%s)%n", text)
44+
} else {
45+
println()
46+
}
47+
}
48+
49+
private fun printInterface(intf: UsbInterface) {
50+
for (alt in intf.alternates) printAlternate(alt, intf.number, alt === intf.currentAlternate)
51+
}
52+
53+
private fun printAlternate(alt: UsbAlternateInterface, intferfaceNumber: Int, isDefault: Boolean) {
54+
println()
55+
if (isDefault) {
56+
System.out.printf(" Interface %d%n", intferfaceNumber)
57+
} else {
58+
System.out.printf(" Interface %d (alternate %d)%n", intferfaceNumber, alt.number)
59+
}
60+
System.out.printf(" Interface class: 0x%02x", alt.classCode)
61+
printInParens(classInfo.lookupClass(alt.classCode))
62+
System.out.printf(" Interface subclass: 0x%02x", alt.subclassCode)
63+
printInParens(classInfo.lookupProtocol(alt.classCode, alt.subclassCode, alt.protocolCode))
64+
System.out.printf(" Interface protocol: 0x%02x", alt.protocolCode)
65+
printInParens(classInfo.lookupProtocol(alt.classCode, alt.subclassCode, alt.protocolCode))
66+
for (endpoint in alt.endpoints)
67+
printEndpoint(endpoint)
68+
}
69+
70+
private fun printEndpoint(endpoint: UsbEndpoint) {
71+
println()
72+
System.out.printf(" Endpoint %d%n", endpoint.number)
73+
System.out.printf(" Direction: %s%n", endpoint.direction.name)
74+
System.out.printf(" Transfer type: %s%n", endpoint.transferType.name)
75+
System.out.printf(" Packet size: %d bytes%n", endpoint.packetSize)
76+
}
77+
78+
private fun printRawDescriptor(title: String, descriptor: ByteArray) {
79+
println()
80+
println(title)
81+
val len = descriptor.size
82+
var i = 0
83+
while (i < len) {
84+
System.out.printf("%04x ", i)
85+
var j = i
86+
while (j < min(i + 16, len)) {
87+
System.out.printf(" %02x", descriptor[j].toInt() and 255)
88+
j += 1
89+
}
90+
println()
91+
i += 16
92+
}
93+
}
94+
95+
}

0 commit comments

Comments
 (0)