Grabador de tarjetas BUE

 

SO:     Android 4

PERMISOS:

   * leer/escribir archivos en sdcard o ext;

   * leer/escribir via NFC;

ABSTRACT:

   Se trata de un prog sencillo de uso interno que no requiere interfaz prolija ni avanzada.

   Debe leer y escribir datos via NFC en un chip RFID del tipo NXP SL2ICS20 (ISO15693).

   Debe permitir el ingreso de datos al usuario, limitando la cantidad a un nro predefinido y paddeando con 0 si no alcanza dicho nro.

   Debe armar con esos datos una estructura predefinida y luego escribirla en el chip.

 

ESTRUCTURA DE DATOS EN EL CHIP:

   BLOQUES: 28

   BYTES X BLOQUES: 4

   MODELO:

     BLOQUE#    BYTES      

      [00]...KK TT TT LL

      [01]...CC CC CC CC

      [02]...DD DD DD DD

      [03]...DD DD DD DD

      [04]...DD DD DD DD

      [05]...DD DD DD DD

      [06]...DD DD DD DD

      [07]...DD DD DD DD

      [08]...DD DD DD DD

      [09]...DD DD DD DD

      [0A]...DD DD DD DD

      [0B]...DD DD DD DD

      [0C]...DD DD DD DD

      [0D]...DD DD DD DD

      [0E]...DD DD DD DD

      [0F]...DD DD DD DD

      [10]...DD DD DD DD

      [11]...DD DD DD DD

      [12]...DD DD DD DD

      [13]...DD DD DD DD

      [14]...DD DD DD DD

      [15]...DD DD DD DD

      [16]...DD DD DD DD

      [17]...DD DD DD DD

      [18]...DD DD DD DD

      [19]...DD DD DD DD

      [1A]...DD DD DD DD

      [1B]...WW WW WW WW

 

Esa es la disposición en memoria del chip de los datos.

   REFERENCIAS:

      KK:    Token (1 Byte): Debe elegirse de una tabla.  Valores: 1C; (no encontre otro valor posible)

      TT:    Tipo Tarjeta (2 Bytes en Big Endian): Debe elegirse de una tabla. Valores:

 COD_TAG_VACIO = '\x00\x00'

 COD_TAG_VOTO = '\x00\x01'

 COD_TAG_USUARIO_MSA = '\x00\x02'

 COD_TAG_PRESIDENTE_MESA = '\x00\x03'

 COD_TAG_RECUENTO = '\x00\x04'

 COD_TAG_APERTURA = '\x00\x05'

 COD_TAG_DEMO = '\x00\x06'

 COD_TAG_VIRGEN = '\x00\x07'

 COD_TAG_INICIO = '\x00\x7F'

 COD_TAG_ADDENDUM = '\x00\x80'

 COD_TAG_DESCONOCIDO = '\xff\xff'

      LL:    Longitud de datos (1 Byte): Es la cant de bytes del tipo DD.

      CC:    CRC32 (4Bytes ordenados en Big Endian): CRC32(DD).

      DD:    Datos (MAX 100 Bytes): Datos.

      WW:     Verif (4 Bytes): Debe elegirse de una tabla. Valores: 57 5F 4F 4B (W_OK); (no encontre otro valor posible)



MAS DETALLES

 

El funcionamiento requerido es que permita leer el chip, grabar lo leido en un archivo (dump), levantar un archivo dumpeado y escribir el chip.

Asimismo que permita crear una nueva estructura con los datos: simplemente un textbox y meter el string en los datos, realizando las operaciones pertinentes para completar la estructura (paddear con 0, crc32, etc) y grabar en archivo (dump) y/o chip.

Finalmente, seria preferible que posea un boton para colocar al chip en modo readonly.  Se trata de un comando especial que debe enviarsele al chip: http://www.nxp.com/documents/data_sheet/SL058030.pdf

 

 


Ejemplo con boleta de prueba:

token = 1C

 

tipo boleta = 0x01 (boleta de voto)

en big endian a 2Bytes resulta 0x10 0x00

 

strlen(data) = strlen(04CABA   COM 49JEF 73LEG 83) = 27 = 0x1B

 

CRC32(data) = CRC32(04CABA   COM 49JEF 73LEG 83) = 0x123AAF78

Que en big endian resulta 78 AF 3A 12

 

Luego los datos

 

finalmente, W_OK