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;
-