From 20a6814c46a40b98e2669db4496e91cca8dce695 Mon Sep 17 00:00:00 2001 From: Christina Quast Date: Thu, 9 Apr 2015 13:36:28 +0200 Subject: [PATCH] cciddriver.c: Fixed slot status bugs The atmel lib takes the wrong values to signalize the current slot status to the PC. --- firmware/simtrace_src/cciddriver.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/firmware/simtrace_src/cciddriver.c b/firmware/simtrace_src/cciddriver.c index c2d1c40a..55c4375e 100644 --- a/firmware/simtrace_src/cciddriver.c +++ b/firmware/simtrace_src/cciddriver.c @@ -136,12 +136,18 @@ void CCIDDriver_Initialize( void ) //------------------------------------------------------------------------------ static void RDRtoPCSlotStatus( void ) { - TRACE_DEBUG("."); - // Header fields settings ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_SLOTSTATUS; ccidDriver.sCcidMessage.wLength = 0; - ccidDriver.sCcidMessage.bStatus = ccidDriver.SlotStatus; + + if (ccidDriver.SlotStatus == ICC_INSERTED_EVENT) { + ccidDriver.sCcidMessage.bStatus = 0; /* ICC present and active card */ + } else if (ccidDriver.SlotStatus == ICC_NOT_PRESENT) { + ccidDriver.sCcidMessage.bStatus = 2; /* No ICC present*/ + } else{ + TRACE_ERROR("Strange bStatus"); + ccidDriver.sCcidMessage.bStatus = 0; + } ccidDriver.sCcidMessage.bError = 0; // 00h Clock running // 01h Clock stopped in state L