ISO7816_Init: Initialized with USART

* ISO7816_Init: Takes Usart_info and CLK_SLAVE/CLK_MASTER as param
* ISO7816_SendChar, ISO7816_GetChar: Usart_info is passed
* ISO7816_Set_Reset_Pin function for CCID part
* iso7816_4.c: BOARD_ISO7816_BASE_USART replaced by USART_SIM
* Redundant _ISO7816_Init, _ISO7816_SendChar, _ISO7816_GetChar
    functions removed
* All simtrace modes use iso7816_4.c functions instead of redefined
    _ISO7816_xxx functions
diff --git a/firmware/src_simtrace/phone.c b/firmware/src_simtrace/phone.c
index 2cc9790..7c1adeb 100644
--- a/firmware/src_simtrace/phone.c
+++ b/firmware/src_simtrace/phone.c
@@ -99,9 +99,10 @@
     {VCC_FWD, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
 };
 
-
 static const Pin pinPhoneRST = PIN_ISO7816_RST_PHONE;
 
+static struct Usart_info usart_info = {.base = USART_PHONE, .id = ID_USART_PHONE};
+
 #define PR  TRACE_INFO
 
 /* ===================================================*/
@@ -150,95 +151,6 @@
     PIO_DisableIt( &pinPhoneRST ) ;
 }
 
-/**
- * Get a character from ISO7816
- * \param pCharToReceive Pointer for store the received char
- * \return 0: if timeout else status of US_CSR
- */
-/* FIXME: This code is taken from cciddriver.c
-        --> Reuse the code!!! */
-uint32_t _ISO7816_GetChar( uint8_t *pCharToReceive )
-{
-    uint32_t status;
-    uint32_t timeout=0;
-
-    TRACE_DEBUG("--");
-
-    if( StateUsartGlobal == USART_SEND ) {
-        while((USART_PHONE->US_CSR & US_CSR_TXEMPTY) == 0) {}
-        USART_PHONE->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;
-        StateUsartGlobal = USART_RCV;
-    }
-
-    /* Wait USART ready for reception */
-    while( ((USART_PHONE->US_CSR & US_CSR_RXRDY) == 0) ) {
-        if(timeout++ > 12000 * (BOARD_MCK/1000000)) {
-            TRACE_DEBUG("TimeOut\n\r");
-            return( 0 );
-        }
-    }
-
-    /* At least one complete character has been received and US_RHR has not yet been read. */
-
-    /* Get a char */
-    *pCharToReceive = ((USART_PHONE->US_RHR) & 0xFF);
-
-    status = (USART_PHONE->US_CSR&(US_CSR_OVRE|US_CSR_FRAME|
-                                      US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|
-                                      (1<<10)));
-
-    if (status != 0 ) {
-        TRACE_DEBUG("R:0x%X\n\r", status); 
-        TRACE_DEBUG("R:0x%X\n\r", USART_PHONE->US_CSR);
-        TRACE_DEBUG("Nb:0x%X\n\r", USART_PHONE->US_NER );
-        USART_PHONE->US_CR = US_CR_RSTSTA;
-    }
-
-    /* Return status */
-    return( status );
-}
-
-/**
- * Send a char to ISO7816
- * \param CharToSend char to be send
- * \return status of US_CSR
- */
-uint32_t _ISO7816_SendChar( uint8_t CharToSend )
-{
-    uint32_t status;
-
-    TRACE_DEBUG("********** Send char: %c (0x%X)\n\r", CharToSend, CharToSend);
-
-    if( StateUsartGlobal == USART_RCV ) {
-        USART_PHONE->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;
-        StateUsartGlobal = USART_SEND;
-    }
-
-    /* Wait USART ready for transmit */
-    while((USART_PHONE->US_CSR & US_CSR_TXRDY) == 0)  {}
-    /* There is no character in the US_THR */
-
-    /* Transmit a char */
-    USART_PHONE->US_THR = CharToSend;
-
-    status = (USART_PHONE->US_CSR&(US_CSR_OVRE|US_CSR_FRAME|
-                                      US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|
-                                      (1<<10)));
-
-    if (status != 0 ) {
-        TRACE_DEBUG("******* status: 0x%X (Overrun: %lu, NACK: %lu, Timeout: %lu, underrun: %lu)\n\r",
-                    status, ((status & US_CSR_OVRE)>> 5), ((status & US_CSR_NACK) >> 13),
-                    ((status & US_CSR_TIMEOUT) >> 8), ((status & (1 << 10)) >> 10));
-
-        TRACE_DEBUG("E (USART CSR reg):0x%X\n\r", USART_PHONE->US_CSR);
-        TRACE_DEBUG("Nb (Number of errors):0x%X\n\r", USART_PHONE->US_NER );
-        USART_PHONE->US_CR = US_CR_RSTSTA;
-    }
-
-    /* Return status */
-    return( status );
-}
-
 void Phone_configure( void ) {
     PIO_ConfigureIt( &pinPhoneRST, ISR_PhoneRST ) ;
     NVIC_EnableIRQ( PIOA_IRQn );
@@ -246,7 +158,7 @@
 
 void Phone_exit( void ) {
     PIO_DisableIt( &pinPhoneRST ) ;
-    USART_DisableIt( USART_PHONE, US_IER_RXRDY) ;
+    USART_DisableIt( USART_PHONE, US_IER_RXRDY);
     USART_SetTransmitterEnabled(USART_PHONE, 0);
     USART_SetReceiverEnabled(USART_PHONE, 0);
 }
@@ -258,7 +170,7 @@
     PIO_Configure( &pinPhoneRST, 1);
 
     PIO_EnableIt( &pinPhoneRST ) ;
-    _ISO7816_Init();
+    ISO7816_Init(&usart_info, CLK_SLAVE);
 
     USART_SetTransmitterEnabled(USART_PHONE, 1);
     USART_SetReceiverEnabled(USART_PHONE, 1);
@@ -287,7 +199,7 @@
     }
     PR("Send %x %x .. %x (tr: %d, st: %x)", ATR[0], ATR[1], ATR[transferred-1], transferred, status);
     for ( i = 0; i < transferred; i++ ) {
-        _ISO7816_SendChar(*(ATR++));
+        ISO7816_SendChar(*(ATR++), &usart_info);
     }
     state = WAIT_CMD_PHONE;
     PIO_EnableIt( &pinPhoneRST ) ;
@@ -305,15 +217,8 @@
     PR("Resp: %x %x %x .. %x", pArg[0], pArg[1], pArg[2], pArg[transferred-1]);
 
     for ( i = 0; i < transferred; i++ ) {
-        _ISO7816_SendChar(*(pArg++));
+        ISO7816_SendChar(*(pArg++), &usart_info);
     }
-/*
-    if (*(pArg-1) == 0x8A) {
-        for (i=0; i<20000; i++) ;
-        _ISO7816_SendChar(0x90);
-        _ISO7816_SendChar(0x00);
-    }
-*/
     state = WAIT_CMD_PHONE;
 }