summaryrefslogtreecommitdiff
path: root/impls/monero.dart
diff options
context:
space:
mode:
authorcyan <cyjan@mrcyjanek.net>2025-05-19 12:09:32 +0200
committerCzarek Nakamoto <cyjan@mrcyjanek.net>2025-05-19 12:16:22 +0200
commit4868eb9220962a4176a7ed0fc7c809c6200e71a0 (patch)
tree0407d44c8919072b8b464192ce3de9d2a3fa9bbe /impls/monero.dart
parenta479a569bc25dd1e9701436404a46f0f509096a4 (diff)
feat: callback-based ledger connection (#137)
* feat: callback-based ledger connection * int -> void use sendToLedgerDeviceCallback only when needed * fix(ledger): fix binds, make functions static * update ledger patch * monero.dart: add ledger callback api
Diffstat (limited to 'impls/monero.dart')
-rw-r--r--impls/monero.dart/lib/monero.dart48
-rw-r--r--impls/monero.dart/lib/src/checksum_monero.dart4
-rw-r--r--impls/monero.dart/lib/src/generated_bindings_monero.g.dart146
-rw-r--r--impls/monero.dart/lib/src/monero.dart51
-rw-r--r--impls/monero.dart/lib/src/wallet2.dart9
5 files changed, 118 insertions, 140 deletions
diff --git a/impls/monero.dart/lib/monero.dart b/impls/monero.dart/lib/monero.dart
index 17f0a13..a80924e 100644
--- a/impls/monero.dart/lib/monero.dart
+++ b/impls/monero.dart/lib/monero.dart
@@ -3515,87 +3515,95 @@ int MONERO_Wallet_getBytesSent(wallet ptr) {
}
@Deprecated("TODO")
-bool Wallet_getStateIsConnected(wallet ptr) {
+bool Wallet_getStateIsConnected() {
debugStart?.call('MONERO_Wallet_getStateIsConnected');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_getStateIsConnected(ptr);
+ final ret = lib!.MONERO_Wallet_getStateIsConnected();
debugEnd?.call('MONERO_Wallet_getStateIsConnected');
return ret;
}
@Deprecated("TODO")
-Pointer<UnsignedChar> Wallet_getSendToDevice(wallet ptr) {
+Pointer<UnsignedChar> Wallet_getSendToDevice() {
debugStart?.call('MONERO_Wallet_getSendToDevice');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_getSendToDevice(ptr);
+ final ret = lib!.MONERO_Wallet_getSendToDevice();
debugEnd?.call('MONERO_Wallet_getSendToDevice');
return ret;
}
@Deprecated("TODO")
-int Wallet_getSendToDeviceLength(wallet ptr) {
+int Wallet_getSendToDeviceLength() {
debugStart?.call('MONERO_Wallet_getSendToDeviceLength');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_getSendToDeviceLength(ptr);
+ final ret = lib!.MONERO_Wallet_getSendToDeviceLength();
debugEnd?.call('MONERO_Wallet_getSendToDeviceLength');
return ret;
}
@Deprecated("TODO")
-Pointer<UnsignedChar> Wallet_getReceivedFromDevice(wallet ptr) {
+Pointer<UnsignedChar> Wallet_getReceivedFromDevice() {
debugStart?.call('MONERO_Wallet_getReceivedFromDevice');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_getReceivedFromDevice(ptr);
+ final ret = lib!.MONERO_Wallet_getReceivedFromDevice();
debugEnd?.call('MONERO_Wallet_getReceivedFromDevice');
return ret;
}
@Deprecated("TODO")
-int Wallet_getReceivedFromDeviceLength(wallet ptr) {
+int Wallet_getReceivedFromDeviceLength() {
debugStart?.call('MONERO_Wallet_getReceivedFromDeviceLength');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_getReceivedFromDeviceLength(ptr);
+ final ret = lib!.MONERO_Wallet_getReceivedFromDeviceLength();
debugEnd?.call('MONERO_Wallet_getReceivedFromDeviceLength');
return ret;
}
@Deprecated("TODO")
-bool Wallet_getWaitsForDeviceSend(wallet ptr) {
+bool Wallet_getWaitsForDeviceSend() {
debugStart?.call('MONERO_Wallet_getWaitsForDeviceSend');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_getWaitsForDeviceSend(ptr);
+ final ret = lib!.MONERO_Wallet_getWaitsForDeviceSend();
debugEnd?.call('MONERO_Wallet_getWaitsForDeviceSend');
return ret;
}
@Deprecated("TODO")
-bool Wallet_getWaitsForDeviceReceive(wallet ptr) {
+bool Wallet_getWaitsForDeviceReceive() {
debugStart?.call('MONERO_Wallet_getWaitsForDeviceReceive');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_getWaitsForDeviceReceive(ptr);
+ final ret = lib!.MONERO_Wallet_getWaitsForDeviceReceive();
debugEnd?.call('MONERO_Wallet_getWaitsForDeviceReceive');
return ret;
}
@Deprecated("TODO")
-void Wallet_setDeviceReceivedData(
- wallet ptr, Pointer<UnsignedChar> data, int len) {
+void Wallet_setDeviceReceivedData(Pointer<UnsignedChar> data, int len) {
debugStart?.call('MONERO_Wallet_setDeviceReceivedData');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_setDeviceReceivedData(ptr, data, len);
+ final ret = lib!.MONERO_Wallet_setDeviceReceivedData(data, len);
debugEnd?.call('MONERO_Wallet_setDeviceReceivedData');
return ret;
}
@Deprecated("TODO")
-void Wallet_setDeviceSendData(wallet ptr, Pointer<UnsignedChar> data, int len) {
+void Wallet_setDeviceSendData(Pointer<UnsignedChar> data, int len) {
debugStart?.call('MONERO_Wallet_setDeviceSendData');
lib ??= MoneroC(DynamicLibrary.open(libPath));
- final ret = lib!.MONERO_Wallet_setDeviceSendData(ptr, data, len);
+ final ret = lib!.MONERO_Wallet_setDeviceSendData(data, len);
debugEnd?.call('MONERO_Wallet_setDeviceSendData');
return ret;
}
-
+
+@Deprecated("TODO")
+void Wallet_setLedgerCallback(Pointer<NativeFunction<Void Function(Pointer<UnsignedChar>, UnsignedInt)>> callback) {
+ debugStart?.call('MONERO_Wallet_setDeviceSendData');
+ lib ??= MoneroC(DynamicLibrary.open(libPath));
+ final ret = lib!.MONERO_Wallet_setLedgerCallback(callback);
+ debugEnd?.call('MONERO_Wallet_setDeviceSendData');
+ return ret;
+}
+
// WalletManager
@Deprecated("TODO")
typedef WalletManager = Pointer<Void>;
diff --git a/impls/monero.dart/lib/src/checksum_monero.dart b/impls/monero.dart/lib/src/checksum_monero.dart
index b907f7c..fdbfbaa 100644
--- a/impls/monero.dart/lib/src/checksum_monero.dart
+++ b/impls/monero.dart/lib/src/checksum_monero.dart
@@ -1,4 +1,4 @@
// ignore_for_file: constant_identifier_names
-const String wallet2_api_c_h_sha256 = "9e80c4b59a0509aa02fbf01e8df2881b89f82225d1765bfa7856cbdbaf7af116";
-const String wallet2_api_c_cpp_sha256 = "d229507db508e574bd2badf4819a38dbead8c16a84311ad32c22c887a6003439-0232839913b13cf0ab0bb7ad25fff0c05f37d2fe";
+const String wallet2_api_c_h_sha256 = "91218f60e937753a606b1db899ee2ed66a1b02144eb2d79b950ce59804397f84";
+const String wallet2_api_c_cpp_sha256 = "282128494f3419c128dff7ed67daadd9c2ad0600d10557e829df03d9bc1ad891-0232839913b13cf0ab0bb7ad25fff0c05f37d2fe";
const String wallet2_api_c_exp_sha256 = "d0f95f1f3bc49f1f59fe4eb0b61826128d7d3bb75405d5a01a252d02db03097d";
diff --git a/impls/monero.dart/lib/src/generated_bindings_monero.g.dart b/impls/monero.dart/lib/src/generated_bindings_monero.g.dart
index 77e2899..81649b1 100644
--- a/impls/monero.dart/lib/src/generated_bindings_monero.g.dart
+++ b/impls/monero.dart/lib/src/generated_bindings_monero.g.dart
@@ -4351,120 +4351,83 @@ class MoneroC {
late final _MONERO_Wallet_getBytesSent = _MONERO_Wallet_getBytesSentPtr
.asFunction<int Function(ffi.Pointer<ffi.Void>)>();
- bool MONERO_Wallet_getStateIsConnected(
- ffi.Pointer<ffi.Void> wallet_ptr,
- ) {
- return _MONERO_Wallet_getStateIsConnected(
- wallet_ptr,
- );
+ bool MONERO_Wallet_getStateIsConnected() {
+ return _MONERO_Wallet_getStateIsConnected();
}
late final _MONERO_Wallet_getStateIsConnectedPtr =
- _lookup<ffi.NativeFunction<ffi.Bool Function(ffi.Pointer<ffi.Void>)>>(
+ _lookup<ffi.NativeFunction<ffi.Bool Function()>>(
'MONERO_Wallet_getStateIsConnected');
late final _MONERO_Wallet_getStateIsConnected =
- _MONERO_Wallet_getStateIsConnectedPtr.asFunction<
- bool Function(ffi.Pointer<ffi.Void>)>();
+ _MONERO_Wallet_getStateIsConnectedPtr.asFunction<bool Function()>();
- ffi.Pointer<ffi.UnsignedChar> MONERO_Wallet_getSendToDevice(
- ffi.Pointer<ffi.Void> wallet_ptr,
- ) {
- return _MONERO_Wallet_getSendToDevice(
- wallet_ptr,
- );
+ ffi.Pointer<ffi.UnsignedChar> MONERO_Wallet_getSendToDevice() {
+ return _MONERO_Wallet_getSendToDevice();
}
- late final _MONERO_Wallet_getSendToDevicePtr = _lookup<
- ffi.NativeFunction<
- ffi.Pointer<ffi.UnsignedChar> Function(
- ffi.Pointer<ffi.Void>)>>('MONERO_Wallet_getSendToDevice');
- late final _MONERO_Wallet_getSendToDevice =
- _MONERO_Wallet_getSendToDevicePtr.asFunction<
- ffi.Pointer<ffi.UnsignedChar> Function(ffi.Pointer<ffi.Void>)>();
+ late final _MONERO_Wallet_getSendToDevicePtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.UnsignedChar> Function()>>(
+ 'MONERO_Wallet_getSendToDevice');
+ late final _MONERO_Wallet_getSendToDevice = _MONERO_Wallet_getSendToDevicePtr
+ .asFunction<ffi.Pointer<ffi.UnsignedChar> Function()>();
- int MONERO_Wallet_getSendToDeviceLength(
- ffi.Pointer<ffi.Void> wallet_ptr,
- ) {
- return _MONERO_Wallet_getSendToDeviceLength(
- wallet_ptr,
- );
+ int MONERO_Wallet_getSendToDeviceLength() {
+ return _MONERO_Wallet_getSendToDeviceLength();
}
late final _MONERO_Wallet_getSendToDeviceLengthPtr =
- _lookup<ffi.NativeFunction<ffi.Size Function(ffi.Pointer<ffi.Void>)>>(
+ _lookup<ffi.NativeFunction<ffi.Size Function()>>(
'MONERO_Wallet_getSendToDeviceLength');
late final _MONERO_Wallet_getSendToDeviceLength =
- _MONERO_Wallet_getSendToDeviceLengthPtr.asFunction<
- int Function(ffi.Pointer<ffi.Void>)>();
+ _MONERO_Wallet_getSendToDeviceLengthPtr.asFunction<int Function()>();
- ffi.Pointer<ffi.UnsignedChar> MONERO_Wallet_getReceivedFromDevice(
- ffi.Pointer<ffi.Void> wallet_ptr,
- ) {
- return _MONERO_Wallet_getReceivedFromDevice(
- wallet_ptr,
- );
+ ffi.Pointer<ffi.UnsignedChar> MONERO_Wallet_getReceivedFromDevice() {
+ return _MONERO_Wallet_getReceivedFromDevice();
}
- late final _MONERO_Wallet_getReceivedFromDevicePtr = _lookup<
- ffi.NativeFunction<
- ffi.Pointer<ffi.UnsignedChar> Function(
- ffi.Pointer<ffi.Void>)>>('MONERO_Wallet_getReceivedFromDevice');
+ late final _MONERO_Wallet_getReceivedFromDevicePtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.UnsignedChar> Function()>>(
+ 'MONERO_Wallet_getReceivedFromDevice');
late final _MONERO_Wallet_getReceivedFromDevice =
_MONERO_Wallet_getReceivedFromDevicePtr.asFunction<
- ffi.Pointer<ffi.UnsignedChar> Function(ffi.Pointer<ffi.Void>)>();
+ ffi.Pointer<ffi.UnsignedChar> Function()>();
- int MONERO_Wallet_getReceivedFromDeviceLength(
- ffi.Pointer<ffi.Void> wallet_ptr,
- ) {
- return _MONERO_Wallet_getReceivedFromDeviceLength(
- wallet_ptr,
- );
+ int MONERO_Wallet_getReceivedFromDeviceLength() {
+ return _MONERO_Wallet_getReceivedFromDeviceLength();
}
late final _MONERO_Wallet_getReceivedFromDeviceLengthPtr =
- _lookup<ffi.NativeFunction<ffi.Size Function(ffi.Pointer<ffi.Void>)>>(
+ _lookup<ffi.NativeFunction<ffi.Size Function()>>(
'MONERO_Wallet_getReceivedFromDeviceLength');
late final _MONERO_Wallet_getReceivedFromDeviceLength =
_MONERO_Wallet_getReceivedFromDeviceLengthPtr.asFunction<
- int Function(ffi.Pointer<ffi.Void>)>();
+ int Function()>();
- bool MONERO_Wallet_getWaitsForDeviceSend(
- ffi.Pointer<ffi.Void> wallet_ptr,
- ) {
- return _MONERO_Wallet_getWaitsForDeviceSend(
- wallet_ptr,
- );
+ bool MONERO_Wallet_getWaitsForDeviceSend() {
+ return _MONERO_Wallet_getWaitsForDeviceSend();
}
late final _MONERO_Wallet_getWaitsForDeviceSendPtr =
- _lookup<ffi.NativeFunction<ffi.Bool Function(ffi.Pointer<ffi.Void>)>>(
+ _lookup<ffi.NativeFunction<ffi.Bool Function()>>(
'MONERO_Wallet_getWaitsForDeviceSend');
late final _MONERO_Wallet_getWaitsForDeviceSend =
- _MONERO_Wallet_getWaitsForDeviceSendPtr.asFunction<
- bool Function(ffi.Pointer<ffi.Void>)>();
+ _MONERO_Wallet_getWaitsForDeviceSendPtr.asFunction<bool Function()>();
- bool MONERO_Wallet_getWaitsForDeviceReceive(
- ffi.Pointer<ffi.Void> wallet_ptr,
- ) {
- return _MONERO_Wallet_getWaitsForDeviceReceive(
- wallet_ptr,
- );
+ bool MONERO_Wallet_getWaitsForDeviceReceive() {
+ return _MONERO_Wallet_getWaitsForDeviceReceive();
}
late final _MONERO_Wallet_getWaitsForDeviceReceivePtr =
- _lookup<ffi.NativeFunction<ffi.Bool Function(ffi.Pointer<ffi.Void>)>>(
+ _lookup<ffi.NativeFunction<ffi.Bool Function()>>(
'MONERO_Wallet_getWaitsForDeviceReceive');
late final _MONERO_Wallet_getWaitsForDeviceReceive =
- _MONERO_Wallet_getWaitsForDeviceReceivePtr.asFunction<
- bool Function(ffi.Pointer<ffi.Void>)>();
+ _MONERO_Wallet_getWaitsForDeviceReceivePtr.asFunction<bool Function()>();
void MONERO_Wallet_setDeviceReceivedData(
- ffi.Pointer<ffi.Void> wallet_ptr,
ffi.Pointer<ffi.UnsignedChar> data,
int len,
) {
return _MONERO_Wallet_setDeviceReceivedData(
- wallet_ptr,
data,
len,
);
@@ -4472,22 +4435,17 @@ class MoneroC {
late final _MONERO_Wallet_setDeviceReceivedDataPtr = _lookup<
ffi.NativeFunction<
- ffi.Void Function(
- ffi.Pointer<ffi.Void>,
- ffi.Pointer<ffi.UnsignedChar>,
+ ffi.Void Function(ffi.Pointer<ffi.UnsignedChar>,
ffi.Size)>>('MONERO_Wallet_setDeviceReceivedData');
late final _MONERO_Wallet_setDeviceReceivedData =
_MONERO_Wallet_setDeviceReceivedDataPtr.asFunction<
- void Function(
- ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.UnsignedChar>, int)>();
+ void Function(ffi.Pointer<ffi.UnsignedChar>, int)>();
void MONERO_Wallet_setDeviceSendData(
- ffi.Pointer<ffi.Void> wallet_ptr,
ffi.Pointer<ffi.UnsignedChar> data,
int len,
) {
return _MONERO_Wallet_setDeviceSendData(
- wallet_ptr,
data,
len,
);
@@ -4495,14 +4453,40 @@ class MoneroC {
late final _MONERO_Wallet_setDeviceSendDataPtr = _lookup<
ffi.NativeFunction<
- ffi.Void Function(
- ffi.Pointer<ffi.Void>,
- ffi.Pointer<ffi.UnsignedChar>,
+ ffi.Void Function(ffi.Pointer<ffi.UnsignedChar>,
ffi.Size)>>('MONERO_Wallet_setDeviceSendData');
late final _MONERO_Wallet_setDeviceSendData =
_MONERO_Wallet_setDeviceSendDataPtr.asFunction<
+ void Function(ffi.Pointer<ffi.UnsignedChar>, int)>();
+
+ void MONERO_Wallet_setLedgerCallback(
+ ffi.Pointer<
+ ffi.NativeFunction<
+ ffi.Void Function(ffi.Pointer<ffi.UnsignedChar> command,
+ ffi.UnsignedInt cmd_len)>>
+ sendToLedgerDevice,
+ ) {
+ return _MONERO_Wallet_setLedgerCallback(
+ sendToLedgerDevice,
+ );
+ }
+
+ late final _MONERO_Wallet_setLedgerCallbackPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Void Function(
+ ffi.Pointer<
+ ffi.NativeFunction<
+ ffi.Void Function(
+ ffi.Pointer<ffi.UnsignedChar> command,
+ ffi.UnsignedInt cmd_len)>>)>>(
+ 'MONERO_Wallet_setLedgerCallback');
+ late final _MONERO_Wallet_setLedgerCallback =
+ _MONERO_Wallet_setLedgerCallbackPtr.asFunction<
void Function(
- ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.UnsignedChar>, int)>();
+ ffi.Pointer<
+ ffi.NativeFunction<
+ ffi.Void Function(ffi.Pointer<ffi.UnsignedChar> command,
+ ffi.UnsignedInt cmd_len)>>)>();
ffi.Pointer<ffi.Void> MONERO_WalletManager_createWallet(
ffi.Pointer<ffi.Void> wm_ptr,
diff --git a/impls/monero.dart/lib/src/monero.dart b/impls/monero.dart/lib/src/monero.dart
index b2eb8c7..e142d6b 100644
--- a/impls/monero.dart/lib/src/monero.dart
+++ b/impls/monero.dart/lib/src/monero.dart
@@ -1033,14 +1033,12 @@ class MoneroWallet implements Wallet2Wallet {
return monero.Wallet_getPolyseed(walletPtr, passphrase: passphrase);
}
- @override
- Pointer<UnsignedChar> getReceivedFromDevice() {
- return monero.Wallet_getReceivedFromDevice(walletPtr);
+ static Pointer<UnsignedChar> getReceivedFromDevice() {
+ return monero.Wallet_getReceivedFromDevice();
}
- @override
- int getReceivedFromDeviceLength() {
- return monero.Wallet_getReceivedFromDeviceLength(walletPtr);
+ static int getReceivedFromDeviceLength() {
+ return monero.Wallet_getReceivedFromDeviceLength();
}
@override
@@ -1052,20 +1050,17 @@ class MoneroWallet implements Wallet2Wallet {
String getSeedLanguage() {
return monero.Wallet_getSeedLanguage(walletPtr);
}
-
- @override
- Pointer<UnsignedChar> getSendToDevice() {
- return monero.Wallet_getSendToDevice(walletPtr);
+
+ static Pointer<UnsignedChar> getSendToDevice() {
+ return monero.Wallet_getSendToDevice();
}
- @override
- int getSendToDeviceLength() {
- return monero.Wallet_getSendToDeviceLength(walletPtr);
+ static int getSendToDeviceLength() {
+ return monero.Wallet_getSendToDeviceLength();
}
- @override
- bool getStateIsConnected() {
- return monero.Wallet_getStateIsConnected(walletPtr);
+ static bool getStateIsConnected() {
+ return monero.Wallet_getStateIsConnected();
}
@override
@@ -1083,14 +1078,12 @@ class MoneroWallet implements Wallet2Wallet {
return monero.Wallet_getUserNote(walletPtr, txid: txid);
}
- @override
- bool getWaitsForDeviceReceive() {
- return monero.Wallet_getWaitsForDeviceReceive(walletPtr);
+ static bool getWaitsForDeviceReceive() {
+ return monero.Wallet_getWaitsForDeviceReceive();
}
- @override
- bool getWaitsForDeviceSend() {
- return monero.Wallet_getWaitsForDeviceSend(walletPtr);
+ static bool getWaitsForDeviceSend() {
+ return monero.Wallet_getWaitsForDeviceSend();
}
@override
@@ -1357,14 +1350,16 @@ class MoneroWallet implements Wallet2Wallet {
return monero.Wallet_setDevicePin(walletPtr, passphrase: passphrase);
}
- @override
- void setDeviceReceivedData(Pointer<UnsignedChar> data, int len) {
- monero.Wallet_setDeviceReceivedData(walletPtr, data, len);
+ static void setDeviceReceivedData(Pointer<UnsignedChar> data, int len) {
+ monero.Wallet_setDeviceReceivedData(data, len);
}
- @override
- void setDeviceSendData(Pointer<UnsignedChar> data, int len) {
- monero.Wallet_setDeviceSendData(walletPtr, data, len);
+ static void setDeviceSendData(Pointer<UnsignedChar> data, int len) {
+ monero.Wallet_setDeviceSendData(data, len);
+ }
+
+ static void setLedgerCallback(Pointer<NativeFunction<Void Function(Pointer<UnsignedChar>, UnsignedInt)>> callback) {
+ monero.Wallet_setLedgerCallback(callback);
}
@override
diff --git a/impls/monero.dart/lib/src/wallet2.dart b/impls/monero.dart/lib/src/wallet2.dart
index 2c07548..8c41ffa 100644
--- a/impls/monero.dart/lib/src/wallet2.dart
+++ b/impls/monero.dart/lib/src/wallet2.dart
@@ -364,15 +364,6 @@ abstract class Wallet2Wallet {
String deviceShowAddress({required int accountIndex, required int addressIndex});
bool reconnectDevice();
int getBytesReceived();
- bool getStateIsConnected();
- Pointer<UnsignedChar> getSendToDevice();
- int getSendToDeviceLength();
- Pointer<UnsignedChar> getReceivedFromDevice();
- int getReceivedFromDeviceLength();
- bool getWaitsForDeviceSend();
- bool getWaitsForDeviceReceive();
- void setDeviceReceivedData(Pointer<UnsignedChar> data, int len);
- void setDeviceSendData(Pointer<UnsignedChar> data, int len);
int getBytesSent();
Wallet2WalletListener getWalletListener();
}