[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: