ccid: Get card atr in init
diff --git a/sam3s_example/simtrace/ccid.c b/sam3s_example/simtrace/ccid.c
index fb04897..cb8dda5 100644
--- a/sam3s_example/simtrace/ccid.c
+++ b/sam3s_example/simtrace/ccid.c
@@ -51,6 +51,10 @@
/** ISO7816 pins */
static const Pin pinsISO7816[] = {PINS_ISO7816};
+/** Bus switch pins */
+static const Pin pinsBus[] = {PINS_BUS_DEFAULT};
+/* SIMcard power pin */
+static const Pin pinsPower[] = {PWR_PINS};
/** ISO7816 RST pin */
static const Pin pinIso7816RstMC = PIN_ISO7816_RSTMC;
static uint8_t sim_inserted = 0;
@@ -129,18 +133,32 @@
/*-----------------------------------------------------------------------------
* Initialization and run
*-----------------------------------------------------------------------------*/
-extern const CCIDDriverConfigurationDescriptors *configDescCCID = &configurationDescriptorCCID;
+static const CCIDDriverConfigurationDescriptors *configDescCCID;
+extern CCIDDriverConfigurationDescriptors configurationDescriptorCCID;
void CCID_init( void )
{
-// FIXME: do we want to print ATR?
+ uint8_t pAtr[MAX_ATR_SIZE];
+ uint8_t ucSize ;
+
+ configDescCCID = &configurationDescriptorCCID;
+
+ // FIXME: do we want to print ATR?
/* Initialize Atr buffer */
memset( pAtr, 0, sizeof( pAtr ) ) ;
/* Configure IT on Smart Card */
ConfigureCardDetection() ;
- ISO7816_Init( pinIso7816RstMC ) ;
+ // Configure ISO7816 driver
+ PIO_Configure(pinsISO7816, PIO_LISTSIZE(pinsISO7816));
+ PIO_Configure(pinsBus, PIO_LISTSIZE(pinsBus));
+ PIO_Configure(pinsPower, PIO_LISTSIZE(pinsPower));
+
+ /* power up the card */
+// PIO_Set(&pinsPower[0]);
+
+ ISO7816_Init( &pinIso7816RstMC ) ;
CCIDDriver_Initialize();
@@ -167,5 +185,8 @@
uint8_t pAtr[MAX_ATR_SIZE] ;
uint8_t ucSize ;
+
+ //if (USBD_Read(INT, pBuffer, dLength, fCallback, pArgument);
+
CCID_SmartCardRequest();
}