Index: fw/sdk/yc_msr/libyc_msr.a
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: fw/sdk/yc_msr/libyc_msr_single.a
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: fw/sdk/yc_msr/yc_msr.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_msr/yc_msr.h	(revision 703)
+++ /YC3121_SDK/fw/sdk/yc_msr/yc_msr.h	(working copy)
@@ -19,15 +19,15 @@
 #define	TRACK_SELECT_ALL 0x10		//Return read data that all specific track hava data.
 
 
-#define	MAX_TRACK_DATA_SIZE	128
+#define	MAX_TRACK_DATA_SIZE		128
 #define MAX_TRACK_RAW_DATA_SZIE 512
-#define MAX_TRACK_NUM	3
+#define MAX_TRACK_NUM			3
 
 
 //Detect swiping card,detect_swiping_card() return value.
 #define	DETECT_SWIPING_CARD			0x01
-#define	DETECT_NO_SWIPING_CARD	0x02
-#define	DETECT_TIMEOUT					0x03
+#define	DETECT_NO_SWIPING_CARD		0x02
+#define	DETECT_TIMEOUT				0x03
 #define	DETECT_HARD_WAKEUP			0x04
 
 //Read card data result
@@ -39,7 +39,6 @@
 #define	HAVE_NO_ZERO		5
 
 
-#define WAITTIME 0x2ffff //wait time after decode one track write down
 
 typedef struct track_data_s
 {
@@ -60,24 +59,25 @@
 //Card type, detect card type when swipe card.
 typedef enum card_type_e
 {
-	CARD_TYPE_ISO_ABA = 0,
-	CARD_TYPE_AAMVA = 1,
-	CARD_TYPE_IBM = 2,
-	CARD_TYPE_IBM_755 = 3,	
-	CARD_TYPE_JIS = 4,
-	CARD_TYPE_777 = 5,		
-	CARD_TYPE_CADMV = 6,
-	CARD_TYPE_OTHER = 7,
-	CARD_TYPE_UNKNOW = 0xFF
+	CARD_TYPE_ISO_ABA	= 0,
+	CARD_TYPE_AAMVA		= 1,
+	CARD_TYPE_IBM		= 2,
+	CARD_TYPE_IBM_755	= 3,	
+	CARD_TYPE_JIS		= 4,
+	CARD_TYPE_777		= 5,		
+	CARD_TYPE_CADMV		= 6,
+	CARD_TYPE_OTHER		= 7,
+	CARD_TYPE_UNKNOW	= 0xFF
 }card_type;
 
 
-//track signal select 
-typedef enum signal_fortrack{
-	signal_t3 = 0,
-	signal_t1 = 1,
-	signal_t2 = 2
-}select_signal;
+//track signal select
+typedef enum signal_fortrack
+{
+        signal_t3 = 0,
+        signal_t1 = 1,
+        signal_t2 = 2
+} select_signal;
 
 /**
  * @brief Initialize MSR
@@ -196,12 +196,12 @@
 
 
 /**
-  * @brief  get MSR lib version
-  * @param  none
-  * @return lib version:
-	*											bit0~bit15:low version number
-	*											bit0~bit15:high version number
-  */
+ * @brief  get MSR lib version
+ * @param  none
+ * @return lib version:
+ *					bit0~bit15:low version number
+ *					bit0~bit15:high version number
+ */
 uint32_t MSR_GetVersion(void);
 #endif /*__YC_MSR_H__*/
 
Index: fw/sdk/yc_msr/yc_msr.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_msr/yc_msr.c	(revision 703)
+++ /YC3121_SDK/fw/sdk/yc_msr/yc_msr.c	(working copy)
@@ -5,6 +5,18 @@
 //#define	MSR_PRINT_RAW_DATA
 #define MAX_TRACK_NUM	3
 
+#define DA_MCR_ADC_EN_BIT 2
+#define DA_MCR_ADC_EN_BIASGEN_BIT 3
+#define DA_MCR_ADC_EN_CONSTGM_BIT 4
+#define DA_MCR_ADC_EN_REG_BIT 5
+
+#define DA_MCR_PGA0_EN_BIT 7
+#define DA_MCR_PGA1_EN_BIT 3
+#define DA_MCR_PGA2_EN_BIT 7
+#define DA_MCR_PGA_VCM_GEN_EN_BIT 3 
+
+#define DA_MCR_PGA_LDO_EN_BIT 3
+
 void ISO7811_Init(void);
 Boolean ISO7811_Check_RXDone(uint8_t TrackSel);
 Boolean MSR_CheckTrackWRDone(uint8_t TrackSel);
@@ -144,7 +156,10 @@
 	uint8_t TempHead = 0;
 	uint8_t tempchar = 0;
 	int count = 0;
-	if (CodingBits == 7) { end = 0x7c; }
+	if(CodingBits == 7)
+	{
+		end = 0x7c;
+	}
 
 	if(*direction == SD_FORWARD_DIRECTION)
 	{
@@ -154,21 +169,30 @@
 			HeadIndex = (((bufindex << 8) & 0xffffff00) | (bitindex & 0xff));
 			if (TempHead == head) 
 			{
-        #if 0			
+				#if 0			
 				count = 0;
-				while (count < CodingBits) { indexadd(bufindex, bitindex);   count++; }
+				while(count < CodingBits)
+				{
+					indexadd(bufindex, bitindex);
+					count++;
+				}
 				count = 0;
 				tempchar = get_one_char(InputBuf, bufindex, bitindex, CodingBits, SD_FORWARD_DIRECTION);
 				if (tempchar != end)
-					 { return HeadIndex; }
-				      else { break; }
+				{
+					return HeadIndex;
+				}
+				else
+				{
+					break;
+				}
 				#else  
 				return HeadIndex;
 				#endif
 			}
 			else 
 			{ 
-					indexadd(bufindex, bitindex); 
+				indexadd(bufindex, bitindex); 
 			}
 			if (TempHead == end)break;
 		}
@@ -181,10 +205,15 @@
 	{
 		TempHead = get_one_char(InputBuf, bufindex, bitindex, CodingBits, SD_REVERSE_DIRECTION);
 		HeadIndex = (((bufindex << 8) & 0xffffff00) | (bitindex & 0xff));
-		if (TempHead == head) { return HeadIndex; }
-		else { indexdec(bufindex, bitindex); }
+		if(TempHead == head)
+		{
+			return HeadIndex;
+		}
+		else
+		{
+			indexdec(bufindex, bitindex);
+		}
 	}
-	
 	return -1;
 }
 
@@ -193,15 +222,33 @@
 	uint8_t LRCData=0x00;
 	for (int i = 0; i < len-1; i++)
   	{
-  		if(CodingBits==5)	data[i]&=0x0F;//奇偶校验位不参与LRC校验
-		else	data[i]&=0x3F;
+		if(CodingBits==5)
+		{
+			data[i]&=0x0F;        //奇偶校验位不参与LRC校验
+		}
+		else
+		{
+			data[i]&=0x3F;
+		}
 
   		LRCData ^=  data[i];
-  		if(CodingBits==5)	data[i]+=0x30;//编码转换
-		else	data[i]+=0x20;
- 	 }
- 	 if(CodingBits==5)	data[len-1]&=0x0F;
-	else	data[len-1]&=0x3F;
+		if(CodingBits==5)
+		{
+			data[i]+=0x30;        //编码转换
+		}
+		else
+		{
+			data[i]+=0x20;
+		}
+	}
+	if(CodingBits==5)
+	{
+		data[len-1]&=0x0F;
+	}
+	else
+	{
+		data[len-1]&=0x3F;
+	}
   	if(LRCData==data[len-1])
   	{
   		return TRUE;
@@ -319,22 +366,22 @@
 			getbinarynum = 0;
 			while(getbinarynum <CodingBits)//get a char
 			{	
-					if(get_data_bit( InputBuf[bufindex], bitindex))
-					{
-						tempdata|= 1<<getbinarynum;    //最终获得5个bit的数字值，用于奇偶校验
-					}
-					getbinarynum++;
-					indexadd(bufindex,bitindex);	//#define indexadd(a,b) ((b)<4)?((b)++):((a)++, (b)=0)bufindex是当前检索的字节数，bitindex是在当前字节的有效位
-					if(bufindex>=InPutLen)
-					{
-						#ifdef MSR_DEBUG
-						MyPrintf("Forward direction len error; bufindex:%d  bitindex %d data count:%d\n",bufindex,bitindex,(*OutLen));
-						#endif
-						MSR_ClearBuf(OutputBuf,MAX_TRACK_DATA_SIZE);
-						*OutLen=0;
-						rtnvalue =  LENGTH_ERR;
-						break;
-					}
+				if(get_data_bit( InputBuf[bufindex], bitindex))
+				{
+					tempdata|= 1<<getbinarynum;    //最终获得5个bit的数字值，用于奇偶校验
+				}
+				getbinarynum++;
+				indexadd(bufindex,bitindex);	//#define indexadd(a,b) ((b)<4)?((b)++):((a)++, (b)=0)bufindex是当前检索的字节数，bitindex是在当前字节的有效位
+				if(bufindex>=InPutLen)
+				{
+					#ifdef MSR_DEBUG
+					MyPrintf("Forward direction len error; bufindex:%d  bitindex %d data count:%d\n",bufindex,bitindex,(*OutLen));
+					#endif
+					MSR_ClearBuf(OutputBuf,MAX_TRACK_DATA_SIZE);
+					*OutLen=0;
+					rtnvalue =  LENGTH_ERR;
+					break;
+				}
 			}
 
 			if(!MSR_OddEvenCheck(tempdata,CodingBits))     //奇校验，如果错误则进入执行
@@ -394,10 +441,10 @@
 						}
 						else
 						{
-								MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
-								*OutLen=0;
-								rtnvalue = PARITY_ERR;
-								break;
+							MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
+							*OutLen=0;
+							rtnvalue = PARITY_ERR;
+							break;
 						}
 					}
 					else
@@ -422,7 +469,7 @@
 	HeadIndex=MSR_GetHeadIndex(InputBuf,InPutLen, head, end, CodingBits,&TempDirection);
 		
 	#ifdef MSR_DEBUG
-		MyPrintf("\nStart back forward direction decode \n");
+	MyPrintf("\nStart back forward direction decode \n");
 	#endif
 	
 	if(HeadIndex == -1)
@@ -516,9 +563,9 @@
 					}
 					else
 					{
-							MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
-							*OutLen=0;
-							return PARITY_ERR;
+						MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
+						*OutLen=0;
+						return PARITY_ERR;
 					}
 				}
 				else
@@ -589,7 +636,9 @@
 		}
  	}
 	if((*tflag&0x07)!=0)
-			return MSR_SUCCESS;
+	{
+		return MSR_SUCCESS;
+	}
  	for(i=0;i<MAX_TRACK_NUM;i++)
  	{
  		if(result[i]==INVALID_ADDR)	return INVALID_ADDR;
@@ -605,10 +654,20 @@
  	return TRACK_NO_DATA;
  }
 
-void	MSR_DeInit()
+void MSR_DeInit()
 {
 	MSR_ENABLE(DISABLE);
-	ISO7811_CTRL = 0;
+
+	ISO7811_T1_AGC_CFG &= ~(1<<ISO7811_AGC_CFG_DISAB_MASK);
+	ISO7811_T2_AGC_CFG &= ~(1<<ISO7811_AGC_CFG_DISAB_MASK);
+	ISO7811_T3_AGC_CFG &= ~(1<<ISO7811_AGC_CFG_DISAB_MASK);
+
+	SYSCTRL_HWCTRL(1) &= ~((1<<DA_MCR_ADC_EN_BIT)|(1<<DA_MCR_ADC_EN_BIASGEN_BIT)|(1<<DA_MCR_ADC_EN_CONSTGM_BIT)|(1<<DA_MCR_ADC_EN_REG_BIT));
+	SYSCTRL_HWCTRL(5) &= ~(1<<DA_MCR_PGA0_EN_BIT);
+	SYSCTRL_HWCTRL(6) &= ~((1<<DA_MCR_PGA1_EN_BIT)|(1<<DA_MCR_PGA2_EN_BIT));
+	delay(100);
+	SYSCTRL_HWCTRL(9) &= ~(1<<DA_MCR_PGA_LDO_EN_BIT);
+	SYSCTRL_HWCTRL(7) &= ~(1<<DA_MCR_PGA_VCM_GEN_EN_BIT);
 }
 
 void MSR_Init()
@@ -652,7 +711,6 @@
 		return DETECT_NO_SWIPING_CARD;
 	}
 	
-	
 	if(MSR_CheckTrackWRDone(TRACK_SELECT_1) ||MSR_CheckTrackWRDone(TRACK_SELECT_2)||MSR_CheckTrackWRDone(TRACK_SELECT_3))
 	{
 		if(ISO7811_GetTrackDataNum( TRACK_SELECT_1)> VALID_CHARNUM && (!(MSR_CheckTrackWRDone(TRACK_SELECT_1))))
@@ -702,6 +760,7 @@
 
 		return DETECT_SWIPING_CARD;
 	}
+	return DETECT_NO_SWIPING_CARD;
 }
 
 swiping_direction MSR_GetSwipeDir(void)
@@ -774,11 +833,11 @@
 	 {
 		((void(*)(int))(FUNC_DELAY_MS_ADDR))(10);//清状态位需要时间
 		ISO7811_CTRL |= ENABLE;
-	  }
-	  else
-	  {
-		   ISO7811_CTRL&=~(ENABLE);
-	  }
+	}
+	else
+	{
+		ISO7811_CTRL&=~(ENABLE);
+	}
 }
 
 
@@ -797,32 +856,18 @@
 	}
 	if((TrackSel & TRACK_SELECT_2) || (TrackSel==TRACK_SELECT_ALL))
 	{
-			ISO7811_CTRL |= 1<<T2_CLR_ITBIT_MASK;
-			ISO7811_CTRL &= ~ (1<<T2_CLR_ITBIT_MASK);
+		ISO7811_CTRL |= 1<<T2_CLR_ITBIT_MASK;
+		ISO7811_CTRL &= ~ (1<<T2_CLR_ITBIT_MASK);
 
 	}	
 	if((TrackSel & TRACK_SELECT_3) || (TrackSel==TRACK_SELECT_ALL))
 	{
-			ISO7811_CTRL |= 1<<T3_CLR_ITBIT_MASK;
-			ISO7811_CTRL &= ~ (1<<T3_CLR_ITBIT_MASK);
+		ISO7811_CTRL |= 1<<T3_CLR_ITBIT_MASK;
+		ISO7811_CTRL &= ~ (1<<T3_CLR_ITBIT_MASK);
 	}
 
 }
 
-//------------------Debug 7811--------------
-/*-----------------------------------*/
-
-#define DA_MCR_ADC_EN_BIT 2
-#define DA_MCR_ADC_EN_BIASGEN_BIT 3
-#define DA_MCR_ADC_EN_CONSTGM_BIT 4
-#define DA_MCR_ADC_EN_REG_BIT 5
-
-#define DA_MCR_PGA0_EN_BIT 7
-#define DA_MCR_PGA1_EN_BIT 3
-#define DA_MCR_PGA2_EN_BIT 7
-#define DA_MCR_PGA_VCM_GEN_EN_BIT 3 
-
-#define DA_MCR_PGA_LDO_EN_BIT 3
 void MCR_ADCEnable(void)
 {
 	SYSCTRL_HWCTRL(7) |= (1<<DA_MCR_PGA_VCM_GEN_EN_BIT);
@@ -991,14 +1036,14 @@
 	switch(track_idx)
 	{
 		case TRACK_SELECT_1:
-				return (0xff&ISO7811_INTERFER_CHAR_NUM);
+			return (0xff&ISO7811_INTERFER_CHAR_NUM);
 
 		case TRACK_SELECT_2:
-				return( 0xff&(ISO7811_INTERFER_CHAR_NUM>>8) );
+			return( 0xff&(ISO7811_INTERFER_CHAR_NUM>>8) );
 
 		case TRACK_SELECT_3:
 		default:
-				return (0xff&(ISO7811_INTERFER_CHAR_NUM>>16));
+			return (0xff&(ISO7811_INTERFER_CHAR_NUM>>16));
 	}
 }
 int ISO7811_GetTrackDataNum(uint8_t track_idx)
@@ -1008,7 +1053,7 @@
 	switch(track_idx)
 	{
 		case TRACK_SELECT_1:
-				return (0xff&ISO7811_CHAR_NUM);
+			return (0xff&ISO7811_CHAR_NUM);
 		case TRACK_SELECT_2:
 			return( 0xff & (ISO7811_CHAR_NUM>>8) );
 		case TRACK_SELECT_3:
@@ -1049,7 +1094,7 @@
 	ISO7811_CTRL = (ISO7811_CTRL&CLEAR_CHANNEL_SEL) |temp;
 }
 
-#define MSR_LIB_VERSION 0x00010001
+#define MSR_LIB_VERSION 0x00010002
 uint32_t MSR_GetVersion(void)
 {
     return MSR_LIB_VERSION;
Index: fw/sdk/yc_msr/yc_msr.lib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: fw/sdk/yc_msr/yc_msr_single.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_msr/yc_msr_single.c	(revision 703)
+++ /YC3121_SDK/fw/sdk/yc_msr/yc_msr_single.c	(working copy)
@@ -5,6 +5,18 @@
 //#define	MSR_PRINT_RAW_DATA
 #define MAX_TRACK_NUM	3
 
+#define DA_MCR_ADC_EN_BIT 2
+#define DA_MCR_ADC_EN_BIASGEN_BIT 3
+#define DA_MCR_ADC_EN_CONSTGM_BIT 4
+#define DA_MCR_ADC_EN_REG_BIT 5
+
+#define DA_MCR_PGA0_EN_BIT 7
+#define DA_MCR_PGA1_EN_BIT 3
+#define DA_MCR_PGA2_EN_BIT 7
+#define DA_MCR_PGA_VCM_GEN_EN_BIT 3 
+
+#define DA_MCR_PGA_LDO_EN_BIT 3
+
 void ISO7811_Init(void);
 Boolean ISO7811_Check_RXDone(uint8_t TrackSel);
 Boolean MSR_CheckTrackWRDone(uint8_t TrackSel);
@@ -144,7 +156,10 @@
 	uint8_t TempHead = 0;
 	uint8_t tempchar = 0;
 	int count = 0;
-	if (CodingBits == 7) { end = 0x7c; }
+	if(CodingBits == 7)
+	{
+		end = 0x7c;
+	}
 
 	if(*direction == SD_FORWARD_DIRECTION)
 	{
@@ -154,21 +169,30 @@
 			HeadIndex = (((bufindex << 8) & 0xffffff00) | (bitindex & 0xff));
 			if (TempHead == head) 
 			{
-        #if 0			
+				#if 0			
 				count = 0;
-				while (count < CodingBits) { indexadd(bufindex, bitindex);   count++; }
+				while(count < CodingBits)
+				{
+					indexadd(bufindex, bitindex);
+					count++;
+				}
 				count = 0;
 				tempchar = get_one_char(InputBuf, bufindex, bitindex, CodingBits, SD_FORWARD_DIRECTION);
 				if (tempchar != end)
-					 { return HeadIndex; }
-				      else { break; }
+				{
+					return HeadIndex;
+				}
+				else
+				{
+					break;
+				}
 				#else  
 				return HeadIndex;
 				#endif
 			}
 			else 
 			{ 
-					indexadd(bufindex, bitindex); 
+				indexadd(bufindex, bitindex); 
 			}
 			if (TempHead == end)break;
 		}
@@ -181,10 +205,15 @@
 	{
 		TempHead = get_one_char(InputBuf, bufindex, bitindex, CodingBits, SD_REVERSE_DIRECTION);
 		HeadIndex = (((bufindex << 8) & 0xffffff00) | (bitindex & 0xff));
-		if (TempHead == head) { return HeadIndex; }
-		else { indexdec(bufindex, bitindex); }
+		if(TempHead == head)
+		{
+			return HeadIndex;
+		}
+		else
+		{
+			indexdec(bufindex, bitindex);
+		}
 	}
-	
 	return -1;
 }
 
@@ -193,15 +222,33 @@
 	uint8_t LRCData=0x00;
 	for (int i = 0; i < len-1; i++)
   	{
-  		if(CodingBits==5)	data[i]&=0x0F;//奇偶校验位不参与LRC校验
-		else	data[i]&=0x3F;
+		if(CodingBits==5)
+		{
+			data[i]&=0x0F;        //奇偶校验位不参与LRC校验
+		}
+		else
+		{
+			data[i]&=0x3F;
+		}
 
   		LRCData ^=  data[i];
-  		if(CodingBits==5)	data[i]+=0x30;//编码转换
-		else	data[i]+=0x20;
- 	 }
- 	 if(CodingBits==5)	data[len-1]&=0x0F;
-	else	data[len-1]&=0x3F;
+		if(CodingBits==5)
+		{
+			data[i]+=0x30;        //编码转换
+		}
+		else
+		{
+			data[i]+=0x20;
+		}
+	}
+	if(CodingBits==5)
+	{
+		data[len-1]&=0x0F;
+	}
+	else
+	{
+		data[len-1]&=0x3F;
+	}
   	if(LRCData==data[len-1])
   	{
   		return TRUE;
@@ -319,22 +366,22 @@
 			getbinarynum = 0;
 			while(getbinarynum <CodingBits)//get a char
 			{	
-					if(get_data_bit( InputBuf[bufindex], bitindex))
-					{
-						tempdata|= 1<<getbinarynum;    //最终获得5个bit的数字值，用于奇偶校验
-					}
-					getbinarynum++;
-					indexadd(bufindex,bitindex);	//#define indexadd(a,b) ((b)<4)?((b)++):((a)++, (b)=0)bufindex是当前检索的字节数，bitindex是在当前字节的有效位
-					if(bufindex>=InPutLen)
-					{
-						#ifdef MSR_DEBUG
-						MyPrintf("Forward direction len error; bufindex:%d  bitindex %d data count:%d\n",bufindex,bitindex,(*OutLen));
-						#endif
-						MSR_ClearBuf(OutputBuf,MAX_TRACK_DATA_SIZE);
-						*OutLen=0;
-						rtnvalue =  LENGTH_ERR;
-						break;
-					}
+				if(get_data_bit( InputBuf[bufindex], bitindex))
+				{
+					tempdata|= 1<<getbinarynum;    //最终获得5个bit的数字值，用于奇偶校验
+				}
+				getbinarynum++;
+				indexadd(bufindex,bitindex);	//#define indexadd(a,b) ((b)<4)?((b)++):((a)++, (b)=0)bufindex是当前检索的字节数，bitindex是在当前字节的有效位
+				if(bufindex>=InPutLen)
+				{
+					#ifdef MSR_DEBUG
+					MyPrintf("Forward direction len error; bufindex:%d  bitindex %d data count:%d\n",bufindex,bitindex,(*OutLen));
+					#endif
+					MSR_ClearBuf(OutputBuf,MAX_TRACK_DATA_SIZE);
+					*OutLen=0;
+					rtnvalue =  LENGTH_ERR;
+					break;
+				}
 			}
 
 			if(!MSR_OddEvenCheck(tempdata,CodingBits))     //奇校验，如果错误则进入执行
@@ -394,10 +441,10 @@
 						}
 						else
 						{
-								MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
-								*OutLen=0;
-								rtnvalue = PARITY_ERR;
-								break;
+							MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
+							*OutLen=0;
+							rtnvalue = PARITY_ERR;
+							break;
 						}
 					}
 					else
@@ -422,7 +469,7 @@
 	HeadIndex=MSR_GetHeadIndex(InputBuf,InPutLen, head, end, CodingBits,&TempDirection);
 		
 	#ifdef MSR_DEBUG
-		MyPrintf("\nStart back forward direction decode \n");
+	MyPrintf("\nStart back forward direction decode \n");
 	#endif
 	
 	if(HeadIndex == -1)
@@ -516,9 +563,9 @@
 					}
 					else
 					{
-							MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
-							*OutLen=0;
-							return PARITY_ERR;
+						MSR_ClearBuf(OutputBuf, MAX_TRACK_DATA_SIZE);
+						*OutLen=0;
+						return PARITY_ERR;
 					}
 				}
 				else
@@ -589,7 +636,9 @@
 		}
  	}
 	if((*tflag&0x07)!=0)
-			return MSR_SUCCESS;
+	{
+		return MSR_SUCCESS;
+	}
  	for(i=0;i<MAX_TRACK_NUM;i++)
  	{
  		if(result[i]==INVALID_ADDR)	return INVALID_ADDR;
@@ -605,10 +654,20 @@
  	return TRACK_NO_DATA;
  }
 
-void	MSR_DeInit()
+void MSR_DeInit()
 {
 	MSR_ENABLE(DISABLE);
-	ISO7811_CTRL = 0;
+
+	ISO7811_T1_AGC_CFG &= ~(1<<ISO7811_AGC_CFG_DISAB_MASK);
+	ISO7811_T2_AGC_CFG &= ~(1<<ISO7811_AGC_CFG_DISAB_MASK);
+	ISO7811_T3_AGC_CFG &= ~(1<<ISO7811_AGC_CFG_DISAB_MASK);
+
+	SYSCTRL_HWCTRL(1) &= ~((1<<DA_MCR_ADC_EN_BIT)|(1<<DA_MCR_ADC_EN_BIASGEN_BIT)|(1<<DA_MCR_ADC_EN_CONSTGM_BIT)|(1<<DA_MCR_ADC_EN_REG_BIT));
+	SYSCTRL_HWCTRL(5) &= ~(1<<DA_MCR_PGA0_EN_BIT);
+	SYSCTRL_HWCTRL(6) &= ~((1<<DA_MCR_PGA1_EN_BIT)|(1<<DA_MCR_PGA2_EN_BIT));
+	delay(100);
+	SYSCTRL_HWCTRL(9) &= ~(1<<DA_MCR_PGA_LDO_EN_BIT);
+	SYSCTRL_HWCTRL(7) &= ~(1<<DA_MCR_PGA_VCM_GEN_EN_BIT);
 }
 
 void MSR_Init()
@@ -652,7 +711,6 @@
 		return DETECT_NO_SWIPING_CARD;
 	}
 	
-	
 	if(MSR_CheckTrackWRDone(TRACK_SELECT_1) ||MSR_CheckTrackWRDone(TRACK_SELECT_2)||MSR_CheckTrackWRDone(TRACK_SELECT_3))
 	{
 		if(ISO7811_GetTrackDataNum( TRACK_SELECT_1)> VALID_CHARNUM && (!(MSR_CheckTrackWRDone(TRACK_SELECT_1))))
@@ -702,6 +760,7 @@
 
 		return DETECT_SWIPING_CARD;
 	}
+	return DETECT_NO_SWIPING_CARD;
 }
 
 swiping_direction MSR_GetSwipeDir(void)
@@ -774,11 +833,11 @@
 	 {
 		((void(*)(int))(FUNC_DELAY_MS_ADDR))(10);//清状态位需要时间
 		ISO7811_CTRL |= ENABLE;
-	  }
-	  else
-	  {
-		   ISO7811_CTRL&=~(ENABLE);
-	  }
+	}
+	else
+	{
+		ISO7811_CTRL&=~(ENABLE);
+	}
 }
 
 
@@ -797,32 +856,18 @@
 	}
 	if((TrackSel & TRACK_SELECT_2) || (TrackSel==TRACK_SELECT_ALL))
 	{
-			ISO7811_CTRL |= 1<<T2_CLR_ITBIT_MASK;
-			ISO7811_CTRL &= ~ (1<<T2_CLR_ITBIT_MASK);
+		ISO7811_CTRL |= 1<<T2_CLR_ITBIT_MASK;
+		ISO7811_CTRL &= ~ (1<<T2_CLR_ITBIT_MASK);
 
 	}	
 	if((TrackSel & TRACK_SELECT_3) || (TrackSel==TRACK_SELECT_ALL))
 	{
-			ISO7811_CTRL |= 1<<T3_CLR_ITBIT_MASK;
-			ISO7811_CTRL &= ~ (1<<T3_CLR_ITBIT_MASK);
+		ISO7811_CTRL |= 1<<T3_CLR_ITBIT_MASK;
+		ISO7811_CTRL &= ~ (1<<T3_CLR_ITBIT_MASK);
 	}
 
 }
 
-//------------------Debug 7811--------------
-/*-----------------------------------*/
-
-#define DA_MCR_ADC_EN_BIT 2
-#define DA_MCR_ADC_EN_BIASGEN_BIT 3
-#define DA_MCR_ADC_EN_CONSTGM_BIT 4
-#define DA_MCR_ADC_EN_REG_BIT 5
-
-#define DA_MCR_PGA0_EN_BIT 7
-#define DA_MCR_PGA1_EN_BIT 3
-#define DA_MCR_PGA2_EN_BIT 7
-#define DA_MCR_PGA_VCM_GEN_EN_BIT 3 
-
-#define DA_MCR_PGA_LDO_EN_BIT 3
 void MCR_ADCEnable(void)
 {
 	SYSCTRL_HWCTRL(7) |= (1<<DA_MCR_PGA_VCM_GEN_EN_BIT);
@@ -1005,14 +1050,14 @@
 	switch(track_idx)
 	{
 		case TRACK_SELECT_1:
-				return (0xff&ISO7811_INTERFER_CHAR_NUM);
+			return (0xff&ISO7811_INTERFER_CHAR_NUM);
 
 		case TRACK_SELECT_2:
-				return( 0xff&(ISO7811_INTERFER_CHAR_NUM>>8) );
+			return( 0xff&(ISO7811_INTERFER_CHAR_NUM>>8) );
 
 		case TRACK_SELECT_3:
 		default:
-				return (0xff&(ISO7811_INTERFER_CHAR_NUM>>16));
+			return (0xff&(ISO7811_INTERFER_CHAR_NUM>>16));
 	}
 }
 int ISO7811_GetTrackDataNum(uint8_t track_idx)
@@ -1022,7 +1067,7 @@
 	switch(track_idx)
 	{
 		case TRACK_SELECT_1:
-				return (0xff&ISO7811_CHAR_NUM);
+			return (0xff&ISO7811_CHAR_NUM);
 		case TRACK_SELECT_2:
 			return( 0xff & (ISO7811_CHAR_NUM>>8) );
 		case TRACK_SELECT_3:
@@ -1064,7 +1109,7 @@
 }
 
 
-#define MSR_SINGLE_LIB_VERSION 0x00010001
+#define MSR_SINGLE_LIB_VERSION 0x00010002
 uint32_t MSR_GetVersion(void)
 {
     return MSR_SINGLE_LIB_VERSION;
Index: fw/sdk/yc_msr/yc_msr_single.lib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
