Index: yc_7816/yc_7816.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_7816/yc_7816.h	(revision 590)
+++ /YC3121_SDK/fw/sdk/yc_7816/yc_7816.h	(working copy)
@@ -188,7 +188,6 @@
     uint8_t aRecBuff[REC_SIZE_MAX];			//接收数据缓存区
 }st_7816_Para;
 
-
 //跟T1有关的参数
 extern st_T1_Parameters g_T1;
 //跟7816协议参数有关的参数
@@ -206,7 +205,7 @@
 extern unsigned int terminal_change_rec_bwt_num;
 
 void atr_time_start(void);
-uint16_t ISO7816_OperateSelect(uint8_t OperateMode);
+uint16_t ISO7816_OperateSelect(uint8_t OperateMode, uint8_t vcard_set);
 uint16_t ISO7816_GetAtr(uint8_t *pAtr, uint8_t *pLength);
 void iso7816_deactive(void);
 uint16_t ISO7816_DisposeATR(uint8_t *pATR, uint8_t ATRLen);
Index: yc_7816/yc_7816.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_7816/yc_7816.c	(revision 590)
+++ /YC3121_SDK/fw/sdk/yc_7816/yc_7816.c	(working copy)
@@ -350,6 +350,8 @@
 
 void ISO7816_config_mode_fun(void)
 {
+	uint8_t TmpCmd[5];
+	uint8_t Ret=0;
 	if(g_7816Para.bProlType == PROTOCOL_T0)
 	{
 		SCI7816_MODE |= (1 << SCICFG_RETRY_EN) | (4 << SCICFG_RETRY);
@@ -358,6 +360,21 @@
 	else
 	{
 		SCI7816_MODE |= 1 << SCICFG_TMODE;
+		if(g_7816Para.bProlType == 1)
+		{
+			
+			//设置IFSD
+			g_T1.bIFSD = 254;
+			TmpCmd[0] = 254;
+
+			Ret = ISO7816_TPDU_T1Send(TmpCmd, 1, T_S_IFS);
+			if(Ret != OK)
+			{
+				ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD,1);
+				delay_ms(10);
+				   
+			}
+		}
 	}
 }
 
@@ -856,7 +873,7 @@
     return OK;
 }
 
-uint16_t ISO7816_OperateSelect(uint8_t OperateMode)
+uint16_t ISO7816_OperateSelect(uint8_t OperateMode, uint8_t vcard_set)
 {
     uint16_t ret;
     switch (OperateMode)
@@ -868,7 +885,8 @@
                 return ISO7816_CARD_STUTES_ERROR;
             }
 			
-            ISO7816_cold_reset(1);
+            ISO7816_cold_reset(vcard_set);
+			
 
             //表示冷复位
             g_7816Para.bFlag &= (~BIT1);
@@ -1083,7 +1101,7 @@
 #endif
 
     //激活卡片
-    Ret = ISO7816_OperateSelect(ISO7816_ACTIVE_CARD);
+    Ret = ISO7816_OperateSelect(ISO7816_ACTIVE_CARD, 1);
     if(Ret == ISO7816_CARD_STUTES_ERROR)
     {
         goto TOResetCard;
@@ -1105,7 +1123,7 @@
 				{
 		            ISO7816_RecAtrBytes(&g_7816Para.aAtr[1], 1);
 		        } */
-                ISO7816_OperateSelect(ISO7816_WARM_RESET);
+                ISO7816_OperateSelect(ISO7816_WARM_RESET, 1);
                 goto TOWarmResetCard;
             }
 
@@ -1135,19 +1153,19 @@
         {
             if((g_7816Para.bFlag & BIT1) == 0)
             {
-                ISO7816_OperateSelect(ISO7816_WARM_RESET);
+                ISO7816_OperateSelect(ISO7816_WARM_RESET, 1);
                 goto TOWarmResetCard;               
             }
             else
             {
-                ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+                ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD, 1);
                 delay_ms(10);
                 goto TOResetCard;               
             }               
         }
         else
         {
-            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD, 1);
             delay_ms(10);
             goto TOResetCard;           
         } 
@@ -1167,7 +1185,7 @@
             Ret = ISO7816_DisposePPS(g_7816Para.bTA1);
             if(OK != Ret)
             {
-                ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+                ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD, 1);
                 delay_ms(10);
                 goto TOResetCard;
             }           
@@ -1188,7 +1206,7 @@
         Ret = ISO7816_TPDU_T1Send(TmpCmd, 1, T_S_IFS);
         if(Ret != OK)
         {
-            ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD);
+            ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD, 1);
             delay_ms(10);
             goto TOResetCard;       
         }
@@ -1205,12 +1223,12 @@
     {
         if((ISO7816_PARITY_ERROR == Ret))
         {
-            ISO7816_OperateSelect(ISO7816_WARM_RESET);
+            ISO7816_OperateSelect(ISO7816_WARM_RESET, 1);
             delay_ms(10);
             goto TOWarmResetCard;
         }
 
-        ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD);
+        ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD, 1);
         delay_ms(10);
         goto TOResetCard;
 
@@ -1224,7 +1242,7 @@
     {
         if(g_7816Para.aRecBuff[1] == 0x70)
         {
-            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD, 1);
             delay_ms(100);
             goto TOResetCard;
         }
@@ -1241,7 +1259,7 @@
     {
         if(g_7816Para.aRecBuff[0] == 0xff)
         {
-            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD, 1);
             delay_ms(10);
             goto TOResetCard;
         }       
