/*
    t1_block.h
    T=1 block abstract data type definitions

    This file is part of the Unix driver for Towitoko smartcard readers
    Copyright (C) 2000 Carlos Prados <cprados@yahoo.com>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#ifndef _T1_BLOCK_
#define _T1_BLOCK_

#include "defines.h"

/*
 * Exported constants definition
 */

/* Buffer sizes */
#define T1_BLOCK_MAX_SIZE                259
#define T1_BLOCK_INF_MAX_SIZE            254

/* Types of block */
#define T1_BLOCK_I                0x00
#define T1_BLOCK_R_OK             0x80
#define T1_BLOCK_R_EDC_ERR        0x81
#define T1_BLOCK_R_OTHER_ERR      0x82
#define T1_BLOCK_S_RESYNCH_REQ    0xC0
#define T1_BLOCK_S_RESYNCH_RES    0xE0
#define T1_BLOCK_S_IFS_REQ        0xC1
#define T1_BLOCK_S_IFS_RES        0xE1
#define T1_BLOCK_S_ABORT_REQ      0xC2
#define T1_BLOCK_S_ABORT_RES      0xE2
#define T1_BLOCK_S_WTX_REQ        0xC3
#define T1_BLOCK_S_WTX_RES        0xE3
#define T1_BLOCK_S_VPP_ERR        0xE4

/*
 * Exported data types definition
 */

typedef struct
{
  BYTE * data;
  unsigned length;
}
T1_Block;
 
/*
 * Exported functions declaration
 */

extern T1_Block *
T1_Block_New (BYTE * buffer, unsigned length);

extern T1_Block *
T1_Block_NewIBlock (BYTE len, BYTE * inf, BYTE ns, bool more);

extern T1_Block *
T1_Block_NewRBlock (BYTE type, BYTE nr);

extern T1_Block *
T1_Block_NewSBlock (BYTE type, BYTE len, BYTE * inf);

extern BYTE
T1_Block_GetType (T1_Block * block);

extern BYTE
T1_Block_GetNS (T1_Block * block);

extern bool
T1_Block_GetMore (T1_Block * block);

extern BYTE
T1_Block_GetNR (T1_Block * block);

extern BYTE
T1_Block_GetLen (T1_Block * block);

extern BYTE *
T1_Block_GetInf (T1_Block * block);

extern BYTE *
T1_Block_Raw (T1_Block * block);

extern unsigned
T1_Block_RawLen (T1_Block * block);

extern void
T1_Block_Delete (T1_Block * block);

#endif /* _T1_BLOCK_ */



syntax highlighted by Code2HTML, v. 0.9.1