[Pcsclite-cvs-commit] Drivers/ccid/src ccid.c,1.4,1.5

rousseau@haydn.debian.org rousseau@haydn.debian.org


Update of /cvsroot/pcsclite/Drivers/ccid/src
In directory haydn:/tmp/cvs-serv24725/src

Modified Files:
	ccid.c 
Log Message:
- add some missing error codes
- low error values indicate the byte in error in the CCID frame


Index: ccid.c
===================================================================
RCS file: /cvsroot/pcsclite/Drivers/ccid/src/ccid.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ccid.c	17 May 2004 14:39:22 -0000	1.4
+++ ccid.c	24 May 2004 09:58:43 -0000	1.5
@@ -60,7 +60,7 @@
 			{
 				unsigned char cmd[] = "\xA0\x02";
 				unsigned char res[10];
-				unsigned long length_res = sizeof(res);
+				int length_res = sizeof(res);
 
 				if (CmdEscape(lun, cmd, sizeof(cmd)-1, res, &length_res) == IFD_SUCCESS)
 				{
@@ -93,24 +93,8 @@
 			text = "Wrong command length";
 			break;
 
-		case 0x02:
-			text = "Reader detects an excessive current. Card powered off";
-			break;
-
-		case 0x03:
-			text = "Reader detects a defective voltage. Card powered off";
-			break;
-
 		case 0x05:
-			text = "Slot number is invalid (it must be set to 0)";
-			break;
-
-		case 0x07:
-		case 0x08:
-		case 0x09:
-		case 0x0A:
-		case 0x15:
-			text = "Byte displayed is invalid";
+			text = "Invalid slot number";
 			break;
 
 		case 0xA2:
@@ -121,6 +105,10 @@
 			text = "ATR too long (> 33)";
 			break;
 
+		case 0xAB:
+			text = "No data exchanged";
+			break;
+
 		case 0xB0:
 			text = "Reader in EMV mode and T=1 message too long";
 			break;
@@ -137,10 +125,38 @@
 			text = "Wrong APDU command length";
 			break;
 
+		case 0xE0:
+			text = "Slot busy";
+			break;
+
+		case 0xEF:
+			text = "PIN cancelled";
+			break;
+
+		case 0xF0:
+			text = "PIN timeout";
+			break;
+
+		case 0xF2:
+			text = "Busy with autosequence";
+			break;
+
+		case 0xF3:
+			text = "Deactivated protocol";
+			break;
+
 		case 0xF4:
 			text = "Procedure byte conflict";
 			break;
 
+		case 0xF5:
+			text = "Class not supported";
+			break;
+
+		case 0xF6:
+			text = "Protocol not supported";
+			break;
+
 		case 0xF7:
 			text = "Invalid ATR checksum byte (TCK)";
 			break;
@@ -149,6 +165,14 @@
 			text = "Invalid ATR first byte";
 			break;
 
+		case 0xFB:
+			text = "Hardware error";
+			break;
+			
+		case 0xFC:
+			text = "Overrun error";
+			break;
+
 		case 0xFD:
 			text = "Parity error during exchange";
 			break;
@@ -157,10 +181,21 @@
 			text = "Card absent or mute";
 			break;
 
-		default:
-			text = "Unknown CCID error";
+		case 0xFF:
+			text = "Activity aborted by Host";
 			break;
 
+		default:
+			if ((error >= 1) && (error <= 127))
+			{
+				char var_text[20];
+
+				sprintf(var_text, "error on byte %d", error);
+				text = var_text;
+			}
+			else
+				text = "Unknown CCID error";
+			break;
 	}
 	debug_msg("%s:%d %s", file, line, text);