diff options
| author | cyan <cyjan@mrcyjanek.net> | 2025-05-19 12:09:32 +0200 |
|---|---|---|
| committer | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2025-05-19 12:16:22 +0200 |
| commit | 4868eb9220962a4176a7ed0fc7c809c6200e71a0 (patch) | |
| tree | 0407d44c8919072b8b464192ce3de9d2a3fa9bbe /impls/monero.dart/lib/src | |
| parent | a479a569bc25dd1e9701436404a46f0f509096a4 (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/lib/src')
| -rw-r--r-- | impls/monero.dart/lib/src/checksum_monero.dart | 4 | ||||
| -rw-r--r-- | impls/monero.dart/lib/src/generated_bindings_monero.g.dart | 146 | ||||
| -rw-r--r-- | impls/monero.dart/lib/src/monero.dart | 51 | ||||
| -rw-r--r-- | impls/monero.dart/lib/src/wallet2.dart | 9 |
4 files changed, 90 insertions, 120 deletions
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(); } |
