feed method

List<Uint8List> feed(
  1. Uint8List chunk
)

Implementation

List<Uint8List> feed(Uint8List chunk) {
  final out = <Uint8List>[];
  for (var i = 0; i < chunk.length; i++) {
    final b = chunk[i];
    if (!_in) {
      if (b == stx) {
        _in = true;
        _esc = false;
        _payload.clear();
      }
      continue;
    }
    if (_esc) {
      _payload.add(b);
      _esc = false;
      continue;
    }
    if (b == dle) {
      _esc = true;
      continue;
    }
    if (b == etx) {
      if (includeTrailingControl && i + 1 < chunk.length) {
        final n = chunk[i + 1];
        if (n < 0x20) {
          _payload.add(n);
          i++;
        }
      }
      out.add(Uint8List.fromList(_payload));
      _payload.clear();
      _in = false;
      _esc = false;
      continue;
    }
    _payload.add(b);
  }
  return out;
}