[Pcsclite-cvs-commit] Drivers/ccid/src ifdhandler.c,1.18,1.19

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


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

Modified Files:
	ifdhandler.c 
Log Message:
revert to nearly previous version.
- IFD_POWER_DOWN is power down and power up (cold reset)
- IFD_RESET is power up (warm reset)
- IFD_POWER_UP is power up


Index: ifdhandler.c
===================================================================
RCS file: /cvsroot/pcsclite/Drivers/ccid/src/ifdhandler.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- ifdhandler.c	18 Mar 2004 10:35:53 -0000	1.18
+++ ifdhandler.c	6 Apr 2004 06:52:34 -0000	1.19
@@ -370,45 +370,55 @@
 	if (CheckLun(Lun))
 		return IFD_COMMUNICATION_ERROR;
 
-	if ((IFD_POWER_DOWN == Action) || (IFD_RESET == Action))
+	switch (Action)
 	{
-		/* Clear ATR buffer */
-		CcidSlots[LunToReaderIndex(Lun)].nATRLength = 0;
-		*CcidSlots[LunToReaderIndex(Lun)].pcATRBuffer = '\0';
+		case IFD_POWER_DOWN:
+			/* Clear ATR buffer */
+			CcidSlots[LunToReaderIndex(Lun)].nATRLength = 0;
+			*CcidSlots[LunToReaderIndex(Lun)].pcATRBuffer = '\0';
 
-		/* Memorise the request */
-		CcidSlots[LunToReaderIndex(Lun)].bPowerFlags |=
-			MASK_POWERFLAGS_PDWN;
-		/* send the command */
-		return_value = CmdPowerOff(Lun);
+			/* Memorise the request */
+			CcidSlots[LunToReaderIndex(Lun)].bPowerFlags |=
+				MASK_POWERFLAGS_PDWN;
+			/* send the command */
+			if (IFD_SUCCESS != CmdPowerOff(Lun))
+			{
+				DEBUG_CRITICAL("PowerDown failed");
+				return_value = IFD_ERROR_POWER_ACTION;
+				goto end;
+			}
 
-		return_value = CardDown(Lun);
-	}
+			return_value = CardDown(Lun);
 
-	if ((IFD_POWER_UP == Action) || (IFD_RESET == Action))
-	{
-		nlength = sizeof(pcbuffer);
-		if (CmdPowerOn(Lun, &nlength, pcbuffer) != IFD_SUCCESS)
-		{
-			DEBUG_CRITICAL("PowerUp failed");
-			return_value = IFD_ERROR_POWER_ACTION;
-			goto end;
-		}
+		case IFD_POWER_UP:
+		case IFD_RESET:
+			nlength = sizeof(pcbuffer);
+			if (CmdPowerOn(Lun, &nlength, pcbuffer) != IFD_SUCCESS)
+			{
+				DEBUG_CRITICAL("PowerUp failed");
+				return_value = IFD_ERROR_POWER_ACTION;
+				goto end;
+			}
 
-		/* Power up successful, set state variable to memorise it */
-		CcidSlots[LunToReaderIndex(Lun)].bPowerFlags |=
-			MASK_POWERFLAGS_PUP;
-		CcidSlots[LunToReaderIndex(Lun)].bPowerFlags &=
-			~MASK_POWERFLAGS_PDWN;
+			/* Power up successful, set state variable to memorise it */
+			CcidSlots[LunToReaderIndex(Lun)].bPowerFlags |=
+				MASK_POWERFLAGS_PUP;
+			CcidSlots[LunToReaderIndex(Lun)].bPowerFlags &=
+				~MASK_POWERFLAGS_PDWN;
 
-		/* Reset is returned, even if TCK is wrong */
-		CcidSlots[LunToReaderIndex(Lun)].nATRLength = *AtrLength =
-			(nlength < MAX_ATR_SIZE) ? nlength : MAX_ATR_SIZE;
-		memcpy(Atr, pcbuffer, *AtrLength);
-		memcpy(CcidSlots[LunToReaderIndex(Lun)].pcATRBuffer,
-			pcbuffer, *AtrLength);
+			/* Reset is returned, even if TCK is wrong */
+			CcidSlots[LunToReaderIndex(Lun)].nATRLength = *AtrLength =
+				(nlength < MAX_ATR_SIZE) ? nlength : MAX_ATR_SIZE;
+			memcpy(Atr, pcbuffer, *AtrLength);
+			memcpy(CcidSlots[LunToReaderIndex(Lun)].pcATRBuffer,
+				pcbuffer, *AtrLength);
 
-		return_value = CardUp(Lun);
+			return_value = CardUp(Lun);
+			break;
+
+		default:
+			DEBUG_CRITICAL("Action not supported");
+			return_value = IFD_NOT_SUPPORTED;
 	}
 end: