Skip to content

Commit

Permalink
refactor(linux_serial): remove duplicate code
Browse files Browse the repository at this point in the history
Use `toNativeUtf8` from `package:ffi`.
  • Loading branch information
ardera committed Oct 11, 2023
1 parent 9d13004 commit ab7b09d
Showing 1 changed file with 1 addition and 13 deletions.
14 changes: 1 addition & 13 deletions packages/linux_serial/lib/src/linux_serial.dart
Expand Up @@ -9,25 +9,13 @@ import 'dart:typed_data';
import 'package:computer/computer.dart';
import 'package:meta/meta.dart';
import 'package:collection/collection.dart';
import 'package:ffi/ffi.dart' as ffi show Utf8, malloc, calloc;
import 'package:ffi/ffi.dart' as ffi show StringUtf8Pointer, malloc, calloc;
import 'package:path/path.dart';
import 'package:tuple/tuple.dart';
import 'package:async/async.dart';
import 'package:synchronized/synchronized.dart';
import 'package:_ardera_common_libc_bindings/_ardera_common_libc_bindings.dart';

/// for whatever reason, importing ffi's StringUtf8Pointer does not work.
extension StringUtf8Pointer on String {
ffi.Pointer<ffi.Utf8> toNativeUtf8({ffi.Allocator allocator = ffi.malloc}) {
final units = utf8.encode(this);
final ffi.Pointer<ffi.Uint8> result = allocator<ffi.Uint8>(units.length + 1);
final Uint8List nativeString = result.asTypedList(units.length + 1);
nativeString.setAll(0, units);
nativeString[units.length] = 0;
return result.cast();
}
}

@immutable
class Baudrate {
const Baudrate._private(this.asLinuxValue, this.inBaudsPerSecond);
Expand Down

0 comments on commit ab7b09d

Please sign in to comment.