readMF1 static method

Future<List> readMF1(
  1. int sectorIndex,
  2. int blockIndex,
  3. Uint8List key
)

Implementation

static Future<List> readMF1(
    int sectorIndex, int blockIndex, Uint8List key) async {
  var llaves = await channel.invokeMethod('readMF1', [3, 0, key]);
  if (llaves == null) {
    key = Uint8List.fromList([255, 255, 255, 255, 255, 255]);
    print('Tarjeta Nueva');
    return [1];
  } else {
    var tipo = await channel.invokeMethod('readMF1', [39, 0, key]);
    print("TIPO TARJETA");
    print(tipo);
    if (tipo == null) {
      var _resultado = new List.filled(
          64, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
      var _lectura;
      var cont = 0;
      for (var i = 0; i < 16; i++) {
        for (var j = 0; j < 4; j++) {
          /*if (i == 1 || i == 0) {
          _lectura = await channel.invokeMethod('readMF1', [
            i,
            j,
            Uint8List.fromList([255, 255, 255, 255, 255, 255])
          ]);
        } else {
          _lectura = await channel.invokeMethod('readMF1', [i, j, key]);
        }*/
          _lectura = await channel.invokeMethod('readMF1', [i, j, key]);
          print('Sector' +
              i.toString() +
              'Bloque' +
              j.toString() +
              '-' +
              _lectura.toString());
          if (_lectura == null) {
            _lectura = 'Login Fail';
          }
          try {
            _resultado[cont] = _lectura;
            cont = cont + 1;
          } catch (e) {
            print(e.toString() + '-' + i.toString() + '-' + j.toString());
            return [0];
          }
          if (cont == 64) {
            print('Lectura Completa');
            return await procesar(_resultado);
          }
        }
      }
    } else {
      var serial = await channel.invokeMethod('readMF1', [9, 1, key]);
      print(serial);
      if (serial[3] != 5) {
        print("Tarjeta No Asignada");
        return [2];
      } else if (serial == null) {
        print('Tarjeta Nueva');
        return [1];
      } else {
        var _resultado = new List.filled(
            256, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
        var _lectura;
        var cont = 0;
        for (var i = 0; i < 32; i++) {
          for (var j = 0; j < 4; j++) {
            if (i == 1 || i == 0) {
              _lectura = await channel.invokeMethod('readMF1', [
                i,
                j,
                Uint8List.fromList([255, 255, 255, 255, 255, 255])
              ]);
            } else {
              _lectura = await channel.invokeMethod('readMF1', [i, j, key]);
            }
            print(_lectura);
            if (_lectura == null) {
              _lectura = 'Login Fail';
            }
            try {
              _resultado[cont] = _lectura;
              cont = cont + 1;
            } catch (e) {
              print(e.toString() + '-' + i.toString() + '-' + j.toString());
              return [0];
            }
            if (cont == 128) {
              for (var k = 32; k < 40; k++) {
                for (var h = 0; h < 16; h++) {
                  _lectura =
                      await channel.invokeMethod('readMF1', [k, h, key]);
                  print(_lectura);
                  if (_lectura == null) {
                    _lectura = 'Login Fail';
                  }
                  try {
                    _resultado[cont] = _lectura;
                    cont = cont + 1;
                  } catch (e) {
                    print(e.toString() +
                        '-' +
                        i.toString() +
                        '-' +
                        j.toString());
                    return [0];
                  }
                  if (cont == 256) {
                    print('Lectura Terminada');
                    return await procesar4k(_resultado);
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return [];
}