I am using the usb-serial-for-android library from GitHub with a dotnet Visual Studio project type Android Java library binding.
Just added this to my project file
<ItemGroup>
<AndroidMavenLibrary Include="com.github.mik3y:usb-serial-for-android" Version="3.9.0" Repository="https://jitpack.io" />
</ItemGroup>
and used Xamarin.AndroidX.Annotation nuget package for the dependency.
It worked up to version 3.7.3, but with more recent versions I got errors when building:
1>E:\GIT\terminal-usb-serial-partner-test\TerminalUsbSerialPartnerTest\UsbSerialForAndroid_3.9.0\obj\Release\net9.0-android\generated\src\Com.Hoho.Android.Usbserial.Driver.CommonUsbSerialPort.cs(20,80,20,136): error CS0535: 'CommonUsbSerialPort' does not implement interface member 'IUsbSerialPort.GetFlowControl()'
1>E:\GIT\terminal-usb-serial-partner-test\TerminalUsbSerialPartnerTest\UsbSerialForAndroid_3.9.0\obj\Release\net9.0-android\generated\src\Com.Hoho.Android.Usbserial.Driver.CommonUsbSerialPort.cs(20,80,20,136): error CS0535: 'CommonUsbSerialPort' does not implement interface member 'IUsbSerialPort.SetFlowControl(IUsbSerialPort.FlowControl?)'
I am not able to identify the exact problem, but it has something to do with the net methods for get/set the FlowRate enum field. This get/set methods were defined in interface UsbSerialPort. Get was implemented in abstract class CommonUsbSerialPort. Set is implemented in the classes for the drivers.
I tried to change return type of the get method to java.lang.object with metadata.xml and also tried to implement it in additions. For the set method I tried the same with the return type, but was not able to find a solution as the generated code was still missing the implementation in the driver classes.
Here are the lines from metadata.txt I was already trying with, but got no luck:
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/interface[@name='UsbSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" name="type">java.lang.Object[]</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/interface[@name='UsbSerialPort']/method[@name='getFlowControl']" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='getFlowControl']" name="managedReturn">Com.Hoho.Android.Usbserial.Driver.UsbSerialPort.FlowControl</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='getFlowControl']" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" name="type">java.lang.Object[]</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" name="type">java.lang.Object[]</attr>
<add-node path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CdcAcmSerialDriver.CdcAcmSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" />
How can I get this working?