FreeCalypso > hg > freecalypso-sw
diff nuc-fw/bsp/sim.h @ 112:4179acab05f7
nuc-fw/bsp: niq32.c and sim.h replaced with new versions
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 20 Oct 2013 08:43:41 +0000 |
parents | 45911ad957fd |
children |
line wrap: on
line diff
--- a/nuc-fw/bsp/sim.h Sun Oct 20 07:58:00 2013 +0000 +++ b/nuc-fw/bsp/sim.h Sun Oct 20 08:43:41 2013 +0000 @@ -19,9 +19,12 @@ #include "../nucleus/nucleus.h" /* Flags activation section */ -/* #define SIM_RETRY by default : NOT ACTIVE */ -/* #define SIM_DEBUG_TRACE by default : NOT ACTIVE */ - +// #define SIM_RETRY /* by default : NOT ACTIVE */ +//#define SIM_DEBUG_TRACE /* by default : NOT ACTIVE */ +//#define SIM_UWORD16_MASK 0x00ff //when using SIM entity not maped to length on 16 bits +#define SIM_UWORD16_MASK 0xffff //when using SIM entity maped to length on 16 bits +//#define SIM_APDU_TEST +//#define SIM_SAT_REFRESH_TEST #define SIM_CMD (MEM_SIM + 0x00) #define SIM_STAT (MEM_SIM + 0x02) @@ -176,7 +179,7 @@ // so SIM drv is configured in 3V only with IOTA.and SYREN // When 1.8V Sim Card will be delivered and tested on IOTA and SYREN, then Sim driver will pass // to : #define SIM_TYPE SIM_TYPE_1_8_3V -#define SIM_TYPE SIM_TYPE_3V +#define SIM_TYPE SIM_TYPE_1_8_3V // MODIFY BY JENNIFER SIM_TYPE_3V #else #define SIM_TYPE SIM_TYPE_3_5V #endif @@ -268,9 +271,12 @@ // Buffer sizes -#define RSIMBUFSIZE 256 +#define RSIMBUFSIZE 270 #define RSIZESW1SW2 2 -#define XSIMBUFSIZE 256 +#define XSIMBUFSIZE 270 + + + // Structures typedef struct @@ -291,6 +297,14 @@ typedef struct { + SYS_UWORD8 Inverse; + SYS_UWORD8 AtrSize; + SYS_UWORD8 AtrData[MAX_ATR_SIZE]; +} SIM_CARD; + + +typedef struct +{ SIM_CONTROLLER *c; SYS_UWORD8 *xIn; // xmit input pointer SYS_UWORD8 *xOut; // xmit output pointer @@ -324,86 +338,106 @@ SYS_UWORD8 xbuf[XSIMBUFSIZE]; SYS_UWORD8 rSW12[RSIZESW1SW2]; //buffer to store SW1 and SW2 SYS_UWORD8 SWcount; //static counter - - void (*InsertFunc)(void); + void (*InsertFunc)(SIM_CARD *); void (*RemoveFunc)(void); + SYS_UWORD16 apdu_ans_length; } SIM_PORT; -typedef struct -{ - SYS_UWORD8 Inverse; - SYS_UWORD8 AtrSize; - SYS_UWORD8 AtrData[MAX_ATR_SIZE]; -} SIM_CARD; + + +void SIM_IntHandler(void); +#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)) + void SIM_CD_IntHandler(void); +#endif + + + /* * Prototypes */ -void SIM_IntHandler(void); -#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)) - void SIM_CD_IntHandler(void); -#endif +// obsolete function +void SIM_Init(void (Insert(SIM_CARD *cP)), void (Remove(void))); + +// initialization +void SIM_Initialize(void); +SYS_UWORD16 SIM_Register(void (Insert(SIM_CARD *cP)), void (Remove(void))); +SYS_UWORD16 SIM_Reset(SIM_CARD *cP); +SYS_UWORD16 SIM_Restart(SIM_CARD *cP); + +// file commands +SYS_UWORD16 SIM_Select(SYS_UWORD16 id, SYS_UWORD8 *dat, SYS_UWORD16 *size); +SYS_UWORD16 SIM_Status(SYS_UWORD8 *dat, SYS_UWORD16 *size); +SYS_UWORD16 SIM_ReadBinary(SYS_UWORD8 *dat, SYS_UWORD16 offset, SYS_UWORD16 len, SYS_UWORD16 *size); +SYS_UWORD16 SIM_UpdateBinary(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 offset, SYS_UWORD16 len, SYS_UWORD16 *size); +SYS_UWORD16 SIM_ReadRecord(SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD16 len, SYS_UWORD16 *size); +SYS_UWORD16 SIM_UpdateRecord(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD16 len, SYS_UWORD16 *size); +SYS_UWORD16 SIM_Seek(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD16 len, SYS_UWORD16 *size); +SYS_UWORD16 SIM_Increase(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 *size); + +// Authentication +SYS_UWORD16 SIM_VerifyCHV(SYS_UWORD8 *result, SYS_UWORD8 *chv, SYS_UWORD8 chvType, SYS_UWORD16 *size); +SYS_UWORD16 SIM_ChangeCHV(SYS_UWORD8 *result,SYS_UWORD8 *oldChv, SYS_UWORD8 *newChv, SYS_UWORD8 chvType, SYS_UWORD16 *size); +SYS_UWORD16 SIM_DisableCHV(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 *size); +SYS_UWORD16 SIM_EnableCHV(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 *size); +SYS_UWORD16 SIM_UnblockCHV(SYS_UWORD8 *result, SYS_UWORD8 *unblockChv, SYS_UWORD8 *newChv, SYS_UWORD8 chvType, SYS_UWORD16 *size); + +// managing +SYS_UWORD16 SIM_Invalidate(SYS_UWORD8 *rP, SYS_UWORD16 *size); +SYS_UWORD16 SIM_Rehabilitate(SYS_UWORD8 *rP, SYS_UWORD16 *size); +SYS_UWORD16 SIM_RunGSMAlgo(SYS_UWORD8 *result, SYS_UWORD8 *rand, SYS_UWORD16 *size); +SYS_UWORD16 SIM_GetResponse(SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *size); + +// STK +SYS_UWORD16 SIM_TerminalProfile(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); +SYS_UWORD16 SIM_Fetch(SYS_UWORD8 *result, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); +SYS_UWORD16 SIM_TerminalResponse(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); +SYS_UWORD16 SIM_Envelope(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); + +// power off +void SIM_PowerOff(void); + +// WIM +SYS_UWORD16 SIM_XchTPDU(SYS_UWORD8 *dat, SYS_UWORD16 trxLen, SYS_UWORD8 *result, + SYS_UWORD16 rcvLen, SYS_UWORD16 *rcvSize); + +void SIM_lock_cr17689(void); + + + +/* + * Internal Prototypes + */ void SIM_WriteBuffer(SIM_PORT *p, SYS_UWORD16 offset, SYS_UWORD16 n); -SYS_UWORD16 SIM_Command(SIM_PORT *p, SYS_UWORD16 n, SYS_UWORD8 *rP, SYS_UWORD8 *lP); +SYS_UWORD16 SIM_Result(SIM_PORT *p, SYS_UWORD8 *rP, SYS_UWORD16 *lenP, SYS_UWORD8 offset); +SYS_UWORD16 SIM_Command(SIM_PORT *p, SYS_UWORD16 n, SYS_UWORD8 *rP, SYS_UWORD16 *lP); +SYS_UWORD16 SIM_Command_Base(SIM_PORT *p, SYS_UWORD16 n, SYS_UWORD8 *dP, SYS_UWORD16 *lP); SYS_UWORD16 SIM_Dummy(void); void SIM_InitLog(void); -void SIM_Init(void (Insert(void)), void (Remove(void))); -void SIM_Initialize(void); -SYS_UWORD16 SIM_Register(void (Insert(void)), void (Remove(void))); -SYS_UWORD16 SIM_Reset(SIM_CARD *c); - -SYS_UWORD16 SIM_Select(SYS_UWORD16 id, SYS_UWORD8 *dat, SYS_UWORD8 *size); -SYS_UWORD16 SIM_Status(SYS_UWORD8 *dat, SYS_UWORD8 *size); -SYS_UWORD16 SIM_ReadBinary(SYS_UWORD8 *dat, SYS_UWORD16 offset, SYS_UWORD8 len, SYS_UWORD8 *size); -SYS_UWORD16 SIM_UpdateBinary(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 offset, SYS_UWORD8 len, SYS_UWORD8 *size); -SYS_UWORD16 SIM_ReadRecord(SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD8 len, SYS_UWORD8 *size); -SYS_UWORD16 SIM_UpdateRecord(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD8 len, SYS_UWORD8 *size); -SYS_UWORD16 SIM_Seek(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 len, SYS_UWORD8 *size); -SYS_UWORD16 SIM_Increase(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 *size); - -// Authentication -SYS_UWORD16 SIM_VerifyCHV(SYS_UWORD8 *result, SYS_UWORD8 *chv, SYS_UWORD8 chvType, SYS_UWORD8 *size); -SYS_UWORD16 SIM_ChangeCHV(SYS_UWORD8 *result,SYS_UWORD8 *oldChv, SYS_UWORD8 *newChv, SYS_UWORD8 chvType, SYS_UWORD8 *size); -SYS_UWORD16 SIM_DisableCHV(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 *size); -SYS_UWORD16 SIM_EnableCHV(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 *size); -SYS_UWORD16 SIM_UnblockCHV(SYS_UWORD8 *result, SYS_UWORD8 *unblockChv, SYS_UWORD8 *newChv, SYS_UWORD8 chvType, SYS_UWORD8 *size); - -SYS_UWORD16 SIM_Invalidate(SYS_UWORD8 *rP, SYS_UWORD8 *size); -SYS_UWORD16 SIM_Rehabilitate(SYS_UWORD8 *rP, SYS_UWORD8 *size); -SYS_UWORD16 SIM_RunGSMAlgo(SYS_UWORD8 *result, SYS_UWORD8 *rand, SYS_UWORD8 *size); -SYS_UWORD16 SIM_GetResponse(SYS_UWORD8 *dat, SYS_UWORD8 len, SYS_UWORD8 *size); - SYS_UWORD16 SIM_TxParityErrors(); - -SYS_UWORD16 SIM_TerminalProfile(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 len, SYS_UWORD8 *rcvSize); -SYS_UWORD16 SIM_Fetch(SYS_UWORD8 *result, SYS_UWORD8 len, SYS_UWORD8 *rcvSize); -SYS_UWORD16 SIM_TerminalResponse(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 len, SYS_UWORD8 *rcvSize); -SYS_UWORD16 SIM_Envelope(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 len, SYS_UWORD8 *rcvSize); - - SYS_UWORD16 SIM_WaitReception(SIM_PORT *p); -void SIM_PowerOff(void); void SIM_Interpret_FileCharacteristics(SIM_PORT *p); SYS_UWORD16 SIM_PTSprocedure(SIM_CARD *cP, SIM_PORT *p); void SIM_WARMReset (SIM_PORT *p); void SIM_SleepMode_In(SYS_UWORD32 param); void SIM_SleepMode_Out(SIM_PORT *p); SYS_UWORD8 SIM_GetFileCharacteristics(SIM_PORT *p); -SYS_UWORD16 SIM_ATRdynamictreatement (SIM_PORT *p, SIM_CARD *c); +SYS_UWORD16 SIM_ATRdynamictreatement (SIM_PORT *p, SIM_CARD *cP); SYS_UWORD16 SIM_Waitforchars (SIM_PORT *p, SYS_UWORD16 max_wait); void SIM_Calcetu (SIM_PORT *p); SYS_UWORD8 SIM_Translate_atr_char (SYS_UWORD8 input, SIM_CARD *cP); -SYS_UWORD8 SIM_StartVolt (void); -SYS_UWORD8 SIM_SwitchVolt (void); +SYS_UWORD8 SIM_StartVolt (SYS_UWORD8 ResetFlag); +SYS_UWORD8 SIM_SwitchVolt (SYS_UWORD8 ResetFlag); SYS_UWORD16 SIM_ManualStart (SIM_PORT *p); -SYS_UWORD8 SIM_Memcpy(SYS_UWORD8 *Buff_target, SYS_UWORD8 Buff_source[], SYS_UWORD8 len); +SYS_UWORD8 SIM_Memcpy(SYS_UWORD8 *Buff_target, SYS_UWORD8 Buff_source[], SYS_UWORD16 len); SYS_BOOL SIM_SleepStatus(void); +SYS_UWORD16 SIM_Reset_Restart_Internal(SIM_CARD *cP, SYS_UWORD8 ResetFlag); /* * Global variables @@ -419,4 +453,3 @@ SI_GLOBAL NU_TIMER SIM_timer; SI_GLOBAL STATUS status_os_sim; SI_GLOBAL SYS_UWORD8 SIM_sleep_status; -