fromPackets static method

List<BleData> fromPackets(
  1. String raw
)

fromPackets creates a List<BleData> from a raw message following this structure: MAC_ADDRESS:MODEL

Implementation

static List<BleData> fromPackets(String raw) {
  final parts = raw.split(';');
  if (parts.isEmpty) return [];

  if (parts.length == 1) return [];
  // The parts should be divisible by 2, can be multiple groups

  // Separate each group
  final List<BleData> devices = [];

  for (int i = 0; i < parts.length; i++) {
    final part = parts[i].split(':');
    if (part.length != 2) {
      throw MalformedException('Invalid BLE data definition');
    }

    final rawMacAddress = part[0];
    String macAddress = '';
    for (int i = 0; i < rawMacAddress.length; i += 2) {
      macAddress += '${rawMacAddress[i]}${rawMacAddress[i + 1]}';
      if (i + 2 < rawMacAddress.length) {
        macAddress += ':';
      }
    }

    final model = part[1];

    devices.add(BleData(macAddress: macAddress, model: model));
  }

  return devices;
}