cciddriver.c: Fixed slot status bugs
The atmel lib takes the wrong values to signalize the current
slot status to the PC.
diff --git a/firmware/simtrace_src/cciddriver.c b/firmware/simtrace_src/cciddriver.c
index c2d1c40..55c4375 100644
--- a/firmware/simtrace_src/cciddriver.c
+++ b/firmware/simtrace_src/cciddriver.c
@@ -136,12 +136,18 @@
//------------------------------------------------------------------------------
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