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