<p>Kévin Redon has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/9918">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">replace leading spaces with tabs<br><br>Change-Id: I86783eba0827b58303b10310e9f6b9625e1a27f1<br>---<br>M firmware/apps/cardem/main.c<br>M firmware/apps/dfu/main.c<br>M firmware/apps/trace/main.c<br>M firmware/apps/triple_play/main.c<br>M firmware/libboard/common/source/board_cstartup_gnu.c<br>M firmware/libboard/common/source/board_lowlevel.c<br>M firmware/libboard/common/source/led.c<br>M firmware/libboard/common/source/uart_console.c<br>M firmware/libcommon/include/assert.h<br>M firmware/libcommon/include/cciddriver.h<br>M firmware/libcommon/include/iso7816_4.h<br>M firmware/libcommon/include/simtrace.h<br>M firmware/libcommon/source/cciddriver.c<br>M firmware/libcommon/source/iso7816_4.c<br>M firmware/libcommon/source/mode_cardemu.c<br>M firmware/libcommon/source/mode_ccid.c<br>M firmware/libcommon/source/stdio.c<br>M firmware/libcommon/source/string.c<br>18 files changed, 1,727 insertions(+), 1,727 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/18/9918/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/apps/cardem/main.c b/firmware/apps/cardem/main.c</span><br><span>index 9241c06..ae46794 100644</span><br><span>--- a/firmware/apps/cardem/main.c</span><br><span>+++ b/firmware/apps/cardem/main.c</span><br><span>@@ -152,7 +152,7 @@</span><br><span> </span><br><span>    EEFC_ReadUniqueID(g_unique_id);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf("\n\r\n\r"</span><br><span style="color: hsl(120, 100%, 40%);">+                printf("\n\r\n\r"</span><br><span>          "=============================================================================\n\r"</span><br><span>                "SIMtrace2 firmware " GIT_VERSION " (C) 2010-2016 by Harald Welte\n\r"</span><br><span>           "=============================================================================\n\r");</span><br><span>diff --git a/firmware/apps/dfu/main.c b/firmware/apps/dfu/main.c</span><br><span>index eb63cb5..e93aa58 100644</span><br><span>--- a/firmware/apps/dfu/main.c</span><br><span>+++ b/firmware/apps/dfu/main.c</span><br><span>@@ -180,7 +180,7 @@</span><br><span>   uint32_t *app_part = (uint32_t *)FLASH_ADDR(0);</span><br><span>      /* at the first call we are before the text segment has been relocated,</span><br><span>       * so g_dfu is not initialized yet */</span><br><span style="color: hsl(0, 100%, 40%);">-    g_dfu = &_g_dfu;</span><br><span style="color: hsl(120, 100%, 40%);">+ g_dfu = &_g_dfu;</span><br><span>         static bool dfu_magic = false;</span><br><span>       if (dfu_magic || (!dfu_magic && USB_DFU_MAGIC == g_dfu->magic)) {</span><br><span>                 dfu_magic = true;</span><br><span>diff --git a/firmware/apps/trace/main.c b/firmware/apps/trace/main.c</span><br><span>index d2fddf9..6b6d70b 100644</span><br><span>--- a/firmware/apps/trace/main.c</span><br><span>+++ b/firmware/apps/trace/main.c</span><br><span>@@ -155,7 +155,7 @@</span><br><span> </span><br><span>     EEFC_ReadUniqueID(g_unique_id);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf("\n\r\n\r"</span><br><span style="color: hsl(120, 100%, 40%);">+                printf("\n\r\n\r"</span><br><span>          "=============================================================================\n\r"</span><br><span>                "SIMtrace2 firmware " GIT_VERSION " (C) 2010-2016 by Harald Welte\n\r"</span><br><span>           "=============================================================================\n\r");</span><br><span>diff --git a/firmware/apps/triple_play/main.c b/firmware/apps/triple_play/main.c</span><br><span>index 47d53af..b81abdd 100644</span><br><span>--- a/firmware/apps/triple_play/main.c</span><br><span>+++ b/firmware/apps/triple_play/main.c</span><br><span>@@ -151,7 +151,7 @@</span><br><span> </span><br><span>       EEFC_ReadUniqueID(g_unique_id);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf("\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                printf("\r\n\r\n"</span><br><span>          "=============================================================================\r\n"</span><br><span>                "SIMtrace2 firmware " GIT_REVISION " (C) 2010-2017 by Harald Welte\r\n"</span><br><span>          "=============================================================================\r\n");</span><br><span>diff --git a/firmware/libboard/common/source/board_cstartup_gnu.c b/firmware/libboard/common/source/board_cstartup_gnu.c</span><br><span>index 0e8bb87..e82a2fb 100644</span><br><span>--- a/firmware/libboard/common/source/board_cstartup_gnu.c</span><br><span>+++ b/firmware/libboard/common/source/board_cstartup_gnu.c</span><br><span>@@ -71,59 +71,59 @@</span><br><span> __attribute__((section(".vectors")))</span><br><span> IntFunc exception_table[] = {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure Initial Stack Pointer, using linker-generated symbols */</span><br><span style="color: hsl(0, 100%, 40%);">-    (IntFunc)(&pdwStack[STACK_SIZE-1]),</span><br><span style="color: hsl(0, 100%, 40%);">-    ResetException,</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Configure Initial Stack Pointer, using linker-generated symbols */</span><br><span style="color: hsl(120, 100%, 40%);">+ (IntFunc)(&pdwStack[STACK_SIZE-1]),</span><br><span style="color: hsl(120, 100%, 40%);">+       ResetException,</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    NMI_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    HardFault_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    MemManage_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    BusFault_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    UsageFault_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    0, 0, 0, 0,         /* Reserved */</span><br><span style="color: hsl(0, 100%, 40%);">-    SVC_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    DebugMon_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    0,                  /* Reserved  */</span><br><span style="color: hsl(0, 100%, 40%);">-    PendSV_Handler,</span><br><span style="color: hsl(0, 100%, 40%);">-    SysTick_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+  NMI_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+  HardFault_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+    MemManage_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+    BusFault_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+     UsageFault_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+   0, 0, 0, 0,         /* Reserved */</span><br><span style="color: hsl(120, 100%, 40%);">+    SVC_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+  DebugMon_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+     0,                  /* Reserved  */</span><br><span style="color: hsl(120, 100%, 40%);">+   PendSV_Handler,</span><br><span style="color: hsl(120, 100%, 40%);">+       SysTick_Handler,</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configurable interrupts  */</span><br><span style="color: hsl(0, 100%, 40%);">-    SUPC_IrqHandler,    /* 0  Supply Controller */</span><br><span style="color: hsl(0, 100%, 40%);">-    RSTC_IrqHandler,    /* 1  Reset Controller */</span><br><span style="color: hsl(0, 100%, 40%);">-    RTC_IrqHandler,     /* 2  Real Time Clock */</span><br><span style="color: hsl(0, 100%, 40%);">-    RTT_IrqHandler,     /* 3  Real Time Timer */</span><br><span style="color: hsl(0, 100%, 40%);">-    WDT_IrqHandler,     /* 4  Watchdog Timer */</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC_IrqHandler,     /* 5  PMC */</span><br><span style="color: hsl(0, 100%, 40%);">-    EEFC_IrqHandler,    /* 6  EEFC */</span><br><span style="color: hsl(0, 100%, 40%);">-    IrqHandlerNotUsed,  /* 7  Reserved */</span><br><span style="color: hsl(0, 100%, 40%);">-    UART0_IrqHandler,   /* 8  UART0 */</span><br><span style="color: hsl(0, 100%, 40%);">-    UART1_IrqHandler,   /* 9  UART1 */</span><br><span style="color: hsl(0, 100%, 40%);">-    SMC_IrqHandler,     /* 10 SMC */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOA_IrqHandler,    /* 11 Parallel IO Controller A */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOB_IrqHandler,    /* 12 Parallel IO Controller B */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOC_IrqHandler,    /* 13 Parallel IO Controller C */</span><br><span style="color: hsl(0, 100%, 40%);">-    USART0_IrqHandler,  /* 14 USART 0 */</span><br><span style="color: hsl(0, 100%, 40%);">-    USART1_IrqHandler,  /* 15 USART 1 */</span><br><span style="color: hsl(0, 100%, 40%);">-    IrqHandlerNotUsed,  /* 16 Reserved */</span><br><span style="color: hsl(0, 100%, 40%);">-    IrqHandlerNotUsed,  /* 17 Reserved */</span><br><span style="color: hsl(0, 100%, 40%);">-    MCI_IrqHandler,     /* 18 MCI */</span><br><span style="color: hsl(0, 100%, 40%);">-    TWI0_IrqHandler,    /* 19 TWI 0 */</span><br><span style="color: hsl(0, 100%, 40%);">-    TWI1_IrqHandler,    /* 20 TWI 1 */</span><br><span style="color: hsl(0, 100%, 40%);">-    SPI_IrqHandler,     /* 21 SPI */</span><br><span style="color: hsl(0, 100%, 40%);">-    SSC_IrqHandler,     /* 22 SSC */</span><br><span style="color: hsl(0, 100%, 40%);">-    TC0_IrqHandler,     /* 23 Timer Counter 0 */</span><br><span style="color: hsl(0, 100%, 40%);">-    TC1_IrqHandler,     /* 24 Timer Counter 1 */</span><br><span style="color: hsl(0, 100%, 40%);">-    TC2_IrqHandler,     /* 25 Timer Counter 2 */</span><br><span style="color: hsl(0, 100%, 40%);">-    TC3_IrqHandler,     /* 26 Timer Counter 3 */</span><br><span style="color: hsl(0, 100%, 40%);">-    TC4_IrqHandler,     /* 27 Timer Counter 4 */</span><br><span style="color: hsl(0, 100%, 40%);">-    TC5_IrqHandler,     /* 28 Timer Counter 5 */</span><br><span style="color: hsl(0, 100%, 40%);">-    ADC_IrqHandler,     /* 29 ADC controller */</span><br><span style="color: hsl(0, 100%, 40%);">-    DAC_IrqHandler,     /* 30 DAC controller */</span><br><span style="color: hsl(0, 100%, 40%);">-    PWM_IrqHandler,     /* 31 PWM */</span><br><span style="color: hsl(0, 100%, 40%);">-    CRCCU_IrqHandler,   /* 32 CRC Calculation Unit */</span><br><span style="color: hsl(0, 100%, 40%);">-    ACC_IrqHandler,     /* 33 Analog Comparator */</span><br><span style="color: hsl(0, 100%, 40%);">-    USBD_IrqHandler,    /* 34 USB Device Port */</span><br><span style="color: hsl(0, 100%, 40%);">-    IrqHandlerNotUsed   /* 35 not used */</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Configurable interrupts  */</span><br><span style="color: hsl(120, 100%, 40%);">+        SUPC_IrqHandler,    /* 0  Supply Controller */</span><br><span style="color: hsl(120, 100%, 40%);">+        RSTC_IrqHandler,    /* 1  Reset Controller */</span><br><span style="color: hsl(120, 100%, 40%);">+ RTC_IrqHandler,     /* 2  Real Time Clock */</span><br><span style="color: hsl(120, 100%, 40%);">+  RTT_IrqHandler,     /* 3  Real Time Timer */</span><br><span style="color: hsl(120, 100%, 40%);">+  WDT_IrqHandler,     /* 4  Watchdog Timer */</span><br><span style="color: hsl(120, 100%, 40%);">+   PMC_IrqHandler,     /* 5  PMC */</span><br><span style="color: hsl(120, 100%, 40%);">+      EEFC_IrqHandler,    /* 6  EEFC */</span><br><span style="color: hsl(120, 100%, 40%);">+     IrqHandlerNotUsed,  /* 7  Reserved */</span><br><span style="color: hsl(120, 100%, 40%);">+ UART0_IrqHandler,   /* 8  UART0 */</span><br><span style="color: hsl(120, 100%, 40%);">+    UART1_IrqHandler,   /* 9  UART1 */</span><br><span style="color: hsl(120, 100%, 40%);">+    SMC_IrqHandler,     /* 10 SMC */</span><br><span style="color: hsl(120, 100%, 40%);">+      PIOA_IrqHandler,    /* 11 Parallel IO Controller A */</span><br><span style="color: hsl(120, 100%, 40%);">+ PIOB_IrqHandler,    /* 12 Parallel IO Controller B */</span><br><span style="color: hsl(120, 100%, 40%);">+ PIOC_IrqHandler,    /* 13 Parallel IO Controller C */</span><br><span style="color: hsl(120, 100%, 40%);">+ USART0_IrqHandler,  /* 14 USART 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+  USART1_IrqHandler,  /* 15 USART 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+  IrqHandlerNotUsed,  /* 16 Reserved */</span><br><span style="color: hsl(120, 100%, 40%);">+ IrqHandlerNotUsed,  /* 17 Reserved */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCI_IrqHandler,     /* 18 MCI */</span><br><span style="color: hsl(120, 100%, 40%);">+      TWI0_IrqHandler,    /* 19 TWI 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+    TWI1_IrqHandler,    /* 20 TWI 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+    SPI_IrqHandler,     /* 21 SPI */</span><br><span style="color: hsl(120, 100%, 40%);">+      SSC_IrqHandler,     /* 22 SSC */</span><br><span style="color: hsl(120, 100%, 40%);">+      TC0_IrqHandler,     /* 23 Timer Counter 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+  TC1_IrqHandler,     /* 24 Timer Counter 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+  TC2_IrqHandler,     /* 25 Timer Counter 2 */</span><br><span style="color: hsl(120, 100%, 40%);">+  TC3_IrqHandler,     /* 26 Timer Counter 3 */</span><br><span style="color: hsl(120, 100%, 40%);">+  TC4_IrqHandler,     /* 27 Timer Counter 4 */</span><br><span style="color: hsl(120, 100%, 40%);">+  TC5_IrqHandler,     /* 28 Timer Counter 5 */</span><br><span style="color: hsl(120, 100%, 40%);">+  ADC_IrqHandler,     /* 29 ADC controller */</span><br><span style="color: hsl(120, 100%, 40%);">+   DAC_IrqHandler,     /* 30 DAC controller */</span><br><span style="color: hsl(120, 100%, 40%);">+   PWM_IrqHandler,     /* 31 PWM */</span><br><span style="color: hsl(120, 100%, 40%);">+      CRCCU_IrqHandler,   /* 32 CRC Calculation Unit */</span><br><span style="color: hsl(120, 100%, 40%);">+     ACC_IrqHandler,     /* 33 Analog Comparator */</span><br><span style="color: hsl(120, 100%, 40%);">+        USBD_IrqHandler,    /* 34 USB Device Port */</span><br><span style="color: hsl(120, 100%, 40%);">+  IrqHandlerNotUsed   /* 35 not used */</span><br><span> };</span><br><span> </span><br><span> #if defined(BOARD_USB_DFU) && defined(APPLICATION_dfu)</span><br><span>@@ -153,56 +153,56 @@</span><br><span>  */</span><br><span> void ResetException( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t *pSrc, *pDest ;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t *pSrc, *pDest ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Low level Initialize */</span><br><span style="color: hsl(0, 100%, 40%);">-    LowLevelInit() ;</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Low level Initialize */</span><br><span style="color: hsl(120, 100%, 40%);">+    LowLevelInit() ;</span><br><span> </span><br><span> </span><br><span> #if defined(BOARD_USB_DFU) && defined(APPLICATION_dfu)</span><br><span style="color: hsl(0, 100%, 40%);">-    if (!USBDFU_OverrideEnterDFU()) {</span><br><span style="color: hsl(0, 100%, 40%);">-        UART_Exit();</span><br><span style="color: hsl(0, 100%, 40%);">-        __disable_irq();</span><br><span style="color: hsl(0, 100%, 40%);">-        BootIntoApp();</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Infinite loop */</span><br><span style="color: hsl(0, 100%, 40%);">-        while ( 1 ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!USBDFU_OverrideEnterDFU()) {</span><br><span style="color: hsl(120, 100%, 40%);">+             UART_Exit();</span><br><span style="color: hsl(120, 100%, 40%);">+          __disable_irq();</span><br><span style="color: hsl(120, 100%, 40%);">+              BootIntoApp();</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Infinite loop */</span><br><span style="color: hsl(120, 100%, 40%);">+           while ( 1 ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> #endif</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Initialize the relocate segment */</span><br><span style="color: hsl(0, 100%, 40%);">-    pSrc = &_etext ;</span><br><span style="color: hsl(0, 100%, 40%);">-    pDest = &_srelocate ;</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Initialize the relocate segment */</span><br><span style="color: hsl(120, 100%, 40%);">+ pSrc = &_etext ;</span><br><span style="color: hsl(120, 100%, 40%);">+  pDest = &_srelocate ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( pSrc != pDest )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        for ( ; pDest < &_erelocate ; )</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            *pDest++ = *pSrc++ ;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+       if ( pSrc != pDest )</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             for ( ; pDest < &_erelocate ; )</span><br><span style="color: hsl(120, 100%, 40%);">+                {</span><br><span style="color: hsl(120, 100%, 40%);">+                 *pDest++ = *pSrc++ ;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Clear the zero segment */</span><br><span style="color: hsl(0, 100%, 40%);">-    for ( pDest = &_szero ; pDest < &_ezero ; )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        *pDest++ = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Clear the zero segment */</span><br><span style="color: hsl(120, 100%, 40%);">+  for ( pDest = &_szero ; pDest < &_ezero ; )</span><br><span style="color: hsl(120, 100%, 40%);">+        {</span><br><span style="color: hsl(120, 100%, 40%);">+             *pDest++ = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Set the vector table base address */</span><br><span style="color: hsl(0, 100%, 40%);">-    pSrc = (uint32_t *)&_sfixed;</span><br><span style="color: hsl(0, 100%, 40%);">-    SCB->VTOR = ( (uint32_t)pSrc & SCB_VTOR_TBLOFF_Msk ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-    </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( ((uint32_t)pSrc >= IRAM_ADDR) && ((uint32_t)pSrc < IRAM_ADDR+IRAM_SIZE) )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Set the vector table base address */</span><br><span style="color: hsl(120, 100%, 40%);">+       pSrc = (uint32_t *)&_sfixed;</span><br><span style="color: hsl(120, 100%, 40%);">+      SCB->VTOR = ( (uint32_t)pSrc & SCB_VTOR_TBLOFF_Msk ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+      if ( ((uint32_t)pSrc >= IRAM_ADDR) && ((uint32_t)pSrc < IRAM_ADDR+IRAM_SIZE) )</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span>        SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* App should have disabled interrupts during the transition */</span><br><span style="color: hsl(0, 100%, 40%);">-    __enable_irq();</span><br><span style="color: hsl(120, 100%, 40%);">+   /* App should have disabled interrupts during the transition */</span><br><span style="color: hsl(120, 100%, 40%);">+       __enable_irq();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Branch to main function */</span><br><span style="color: hsl(0, 100%, 40%);">-    main() ;</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Branch to main function */</span><br><span style="color: hsl(120, 100%, 40%);">+ main() ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Infinite loop */</span><br><span style="color: hsl(0, 100%, 40%);">-    while ( 1 ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Infinite loop */</span><br><span style="color: hsl(120, 100%, 40%);">+   while ( 1 ) ;</span><br><span> }</span><br><span> </span><br><span>diff --git a/firmware/libboard/common/source/board_lowlevel.c b/firmware/libboard/common/source/board_lowlevel.c</span><br><span>index b37719c..b82f6f3 100644</span><br><span>--- a/firmware/libboard/common/source/board_lowlevel.c</span><br><span>+++ b/firmware/libboard/common/source/board_lowlevel.c</span><br><span>@@ -50,15 +50,15 @@</span><br><span> #if (BOARD_MAINOSC == 18432000)</span><br><span> /* Clock settings at 48MHz  for 18 MHz crystal */</span><br><span> #define BOARD_PLLAR     (CKGR_PLLAR_STUCKTO1 \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_MULA(13-1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_DIVA(5))</span><br><span style="color: hsl(120, 100%, 40%);">+                                      | CKGR_PLLAR_MULA(13-1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                     | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                         | CKGR_PLLAR_DIVA(5))</span><br><span> #elif (BOARD_MAINOSC == 12000000)</span><br><span> /* QMod has 12 MHz clock, so multply by 8 (96 MHz) and divide by 2 */</span><br><span> #define BOARD_PLLAR     (CKGR_PLLAR_STUCKTO1 \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_MULA(8-1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_DIVA(2))</span><br><span style="color: hsl(120, 100%, 40%);">+                                          | CKGR_PLLAR_MULA(8-1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                      | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                         | CKGR_PLLAR_DIVA(2))</span><br><span> #else</span><br><span> #error "Please define PLLA config for your MAINOSC frequency"</span><br><span> #endif /* MAINOSC */</span><br><span>@@ -66,19 +66,19 @@</span><br><span> #if (BOARD_MAINOSC == 18432000)</span><br><span> /* Clock settings at 64MHz  for 18 MHz crystal: 64.512 MHz */</span><br><span> #define BOARD_PLLAR     (CKGR_PLLAR_STUCKTO1 \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_MULA(7-1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_DIVA(2))</span><br><span style="color: hsl(120, 100%, 40%);">+                                          | CKGR_PLLAR_MULA(7-1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                      | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                         | CKGR_PLLAR_DIVA(2))</span><br><span> #elif (BOARD_MAINOSC == 12000000)</span><br><span> /* QMod has 12 MHz clock, so multply by 10 / div by 2: 60 MHz */</span><br><span> #define BOARD_PLLAR     (CKGR_PLLAR_STUCKTO1 \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_MULA(10-1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(0, 100%, 40%);">-                       | CKGR_PLLAR_DIVA(2))</span><br><span style="color: hsl(120, 100%, 40%);">+                                      | CKGR_PLLAR_MULA(10-1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                     | CKGR_PLLAR_PLLACOUNT(0x1) \</span><br><span style="color: hsl(120, 100%, 40%);">+                                         | CKGR_PLLAR_DIVA(2))</span><br><span> #error "Please define PLLA config for your MAINOSC frequency"</span><br><span> #endif /* MAINOSC */</span><br><span> #else</span><br><span style="color: hsl(0, 100%, 40%);">-    #error "No PLL settings for current BOARD_MCK."</span><br><span style="color: hsl(120, 100%, 40%);">+     #error "No PLL settings for current BOARD_MCK."</span><br><span> #endif</span><br><span> </span><br><span> #if (BOARD_MAINOSC == 12000000)</span><br><span>@@ -117,85 +117,85 @@</span><br><span>  */</span><br><span> extern WEAK void LowLevelInit( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t timeout = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t timeout = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure the Supply Monitor to reset the CPU in case VDDIO is</span><br><span style="color: hsl(0, 100%, 40%);">-     * lower than 3.0V.  As we run the board on 3.3V, any lower voltage</span><br><span style="color: hsl(0, 100%, 40%);">-     * might be some kind of leakage that creeps in some way, but is not</span><br><span style="color: hsl(0, 100%, 40%);">-     * the "official" power supply */</span><br><span style="color: hsl(0, 100%, 40%);">-    SUPC->SUPC_SMMR = SUPC_SMMR_SMTH_3_0V | SUPC_SMMR_SMSMPL_CSM |</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Configure the Supply Monitor to reset the CPU in case VDDIO is</span><br><span style="color: hsl(120, 100%, 40%);">+      * lower than 3.0V.  As we run the board on 3.3V, any lower voltage</span><br><span style="color: hsl(120, 100%, 40%);">+    * might be some kind of leakage that creeps in some way, but is not</span><br><span style="color: hsl(120, 100%, 40%);">+   * the "official" power supply */</span><br><span style="color: hsl(120, 100%, 40%);">+   SUPC->SUPC_SMMR = SUPC_SMMR_SMTH_3_0V | SUPC_SMMR_SMSMPL_CSM |</span><br><span>                  SUPC_SMMR_SMRSTEN_ENABLE;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* enable both LED and green LED */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOA->PIO_PER |= PIO_LED_RED | PIO_LED_GREEN;</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOA->PIO_OER |= PIO_LED_RED | PIO_LED_GREEN;</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOA->PIO_CODR |= PIO_LED_RED | PIO_LED_GREEN;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* enable both LED and green LED */</span><br><span style="color: hsl(120, 100%, 40%);">+   PIOA->PIO_PER |= PIO_LED_RED | PIO_LED_GREEN;</span><br><span style="color: hsl(120, 100%, 40%);">+      PIOA->PIO_OER |= PIO_LED_RED | PIO_LED_GREEN;</span><br><span style="color: hsl(120, 100%, 40%);">+      PIOA->PIO_CODR |= PIO_LED_RED | PIO_LED_GREEN;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Set 3 FWS for Embedded Flash Access */</span><br><span style="color: hsl(0, 100%, 40%);">-    EFC->EEFC_FMR = EEFC_FMR_FWS(3);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Set 3 FWS for Embedded Flash Access */</span><br><span style="color: hsl(120, 100%, 40%);">+     EFC->EEFC_FMR = EEFC_FMR_FWS(3);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Select external slow clock */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Select external slow clock */</span><br><span> /*    if ((SUPC->SUPC_SR & SUPC_SR_OSCSEL) != SUPC_SR_OSCSEL_CRYST)</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        SUPC->SUPC_CR = (uint32_t)(SUPC_CR_XTALSEL_CRYSTAL_SEL | SUPC_CR_KEY(0xA5));</span><br><span style="color: hsl(0, 100%, 40%);">-        timeout = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        while (!(SUPC->SUPC_SR & SUPC_SR_OSCSEL_CRYST) );</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   {</span><br><span style="color: hsl(120, 100%, 40%);">+             SUPC->SUPC_CR = (uint32_t)(SUPC_CR_XTALSEL_CRYSTAL_SEL | SUPC_CR_KEY(0xA5));</span><br><span style="color: hsl(120, 100%, 40%);">+               timeout = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+          while (!(SUPC->SUPC_SR & SUPC_SR_OSCSEL_CRYST) );</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span> */</span><br><span> </span><br><span> #ifndef qmod</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Initialize main oscillator */</span><br><span style="color: hsl(0, 100%, 40%);">-    if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN;</span><br><span style="color: hsl(0, 100%, 40%);">-        timeout = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        while (!(PMC->PMC_SR & PMC_SR_MOSCXTS) && (timeout++ < CLOCK_TIMEOUT));</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Initialize main oscillator */</span><br><span style="color: hsl(120, 100%, 40%);">+      if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) )</span><br><span style="color: hsl(120, 100%, 40%);">+     {</span><br><span style="color: hsl(120, 100%, 40%);">+             PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN;</span><br><span style="color: hsl(120, 100%, 40%);">+                timeout = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+          while (!(PMC->PMC_SR & PMC_SR_MOSCXTS) && (timeout++ < CLOCK_TIMEOUT));</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Switch to 3-20MHz Xtal oscillator */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOB->PIO_PDR = (1 << 8) | (1 << 9);</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOB->PIO_PUDR = (1 << 8) | (1 << 9);</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOB->PIO_PPDDR = (1 << 8) | (1 << 9);</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL;</span><br><span style="color: hsl(0, 100%, 40%);">-    /* wait for Main XTAL oscillator stabilization */</span><br><span style="color: hsl(0, 100%, 40%);">-    timeout = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    while (!(PMC->PMC_SR & PMC_SR_MOSCSELS) && (timeout++ < CLOCK_TIMEOUT));</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Switch to 3-20MHz Xtal oscillator */</span><br><span style="color: hsl(120, 100%, 40%);">+       PIOB->PIO_PDR = (1 << 8) | (1 << 9);</span><br><span style="color: hsl(120, 100%, 40%);">+   PIOB->PIO_PUDR = (1 << 8) | (1 << 9);</span><br><span style="color: hsl(120, 100%, 40%);">+  PIOB->PIO_PPDDR = (1 << 8) | (1 << 9);</span><br><span style="color: hsl(120, 100%, 40%);">+ PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* wait for Main XTAL oscillator stabilization */</span><br><span style="color: hsl(120, 100%, 40%);">+     timeout = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  while (!(PMC->PMC_SR & PMC_SR_MOSCSELS) && (timeout++ < CLOCK_TIMEOUT));</span><br><span> #else</span><br><span style="color: hsl(0, 100%, 40%);">-    /* QMOD has external 12MHz clock source */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOB->PIO_PDR = (1 << 9);</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOB->PIO_PUDR = (1 << 9);</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOB->PIO_PPDDR = (1 << 9);</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTBY| CKGR_MOR_MOSCSEL;</span><br><span style="color: hsl(120, 100%, 40%);">+    /* QMOD has external 12MHz clock source */</span><br><span style="color: hsl(120, 100%, 40%);">+    PIOB->PIO_PDR = (1 << 9);</span><br><span style="color: hsl(120, 100%, 40%);">+    PIOB->PIO_PUDR = (1 << 9);</span><br><span style="color: hsl(120, 100%, 40%);">+   PIOB->PIO_PPDDR = (1 << 9);</span><br><span style="color: hsl(120, 100%, 40%);">+  PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTBY| CKGR_MOR_MOSCSEL;</span><br><span> #endif</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* disable the red LED after main clock initialization */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIOA->PIO_SODR = PIO_LED_RED;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* disable the red LED after main clock initialization */</span><br><span style="color: hsl(120, 100%, 40%);">+     PIOA->PIO_SODR = PIO_LED_RED;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* "switch" to main clock as master clock source (should already be the case */</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK;</span><br><span style="color: hsl(0, 100%, 40%);">-    /* wait for master clock to be ready */</span><br><span style="color: hsl(0, 100%, 40%);">-    for ( timeout = 0; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (timeout++ < CLOCK_TIMEOUT) ; );</span><br><span style="color: hsl(120, 100%, 40%);">+   /* "switch" to main clock as master clock source (should already be the case */</span><br><span style="color: hsl(120, 100%, 40%);">+     PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK;</span><br><span style="color: hsl(120, 100%, 40%);">+      /* wait for master clock to be ready */</span><br><span style="color: hsl(120, 100%, 40%);">+       for ( timeout = 0; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (timeout++ < CLOCK_TIMEOUT) ; );</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Initialize PLLA */</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC->CKGR_PLLAR = BOARD_PLLAR;</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Wait for PLLA to lock */</span><br><span style="color: hsl(0, 100%, 40%);">-    timeout = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    while (!(PMC->PMC_SR & PMC_SR_LOCKA) && (timeout++ < CLOCK_TIMEOUT));</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Initialize PLLA */</span><br><span style="color: hsl(120, 100%, 40%);">+ PMC->CKGR_PLLAR = BOARD_PLLAR;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Wait for PLLA to lock */</span><br><span style="color: hsl(120, 100%, 40%);">+   timeout = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  while (!(PMC->PMC_SR & PMC_SR_LOCKA) && (timeout++ < CLOCK_TIMEOUT));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Switch to main clock (again ?!?) */</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC->PMC_MCKR = (BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK;</span><br><span style="color: hsl(0, 100%, 40%);">-    /* wait for master clock to be ready */</span><br><span style="color: hsl(0, 100%, 40%);">-    for ( timeout = 0; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (timeout++ < CLOCK_TIMEOUT) ; );</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Switch to main clock (again ?!?) */</span><br><span style="color: hsl(120, 100%, 40%);">+        PMC->PMC_MCKR = (BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK;</span><br><span style="color: hsl(120, 100%, 40%);">+      /* wait for master clock to be ready */</span><br><span style="color: hsl(120, 100%, 40%);">+       for ( timeout = 0; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (timeout++ < CLOCK_TIMEOUT) ; );</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* switch to PLLA as master clock source */</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC->PMC_MCKR = BOARD_MCKR ;</span><br><span style="color: hsl(0, 100%, 40%);">-    /* wait for master clock to be ready */</span><br><span style="color: hsl(0, 100%, 40%);">-    for ( timeout = 0; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (timeout++ < CLOCK_TIMEOUT) ; );</span><br><span style="color: hsl(120, 100%, 40%);">+   /* switch to PLLA as master clock source */</span><br><span style="color: hsl(120, 100%, 40%);">+   PMC->PMC_MCKR = BOARD_MCKR ;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* wait for master clock to be ready */</span><br><span style="color: hsl(120, 100%, 40%);">+       for ( timeout = 0; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (timeout++ < CLOCK_TIMEOUT) ; );</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure SysTick for 1ms */</span><br><span style="color: hsl(0, 100%, 40%);">-    SysTick_Config(BOARD_MCK/1000);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Configure SysTick for 1ms */</span><br><span style="color: hsl(120, 100%, 40%);">+       SysTick_Config(BOARD_MCK/1000);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    _ConfigureUsbClock();</span><br><span style="color: hsl(120, 100%, 40%);">+  _ConfigureUsbClock();</span><br><span> }</span><br><span> </span><br><span> /* SysTick based delay function */</span><br><span>diff --git a/firmware/libboard/common/source/led.c b/firmware/libboard/common/source/led.c</span><br><span>index cffff70..e3293b6 100644</span><br><span>--- a/firmware/libboard/common/source/led.c</span><br><span>+++ b/firmware/libboard/common/source/led.c</span><br><span>@@ -35,9 +35,9 @@</span><br><span>    ASSERT(led < PIO_LISTSIZE(pinsLeds));</span><br><span> </span><br><span>         if (on)</span><br><span style="color: hsl(0, 100%, 40%);">-         PIO_Clear(&pinsLeds[led]);</span><br><span style="color: hsl(120, 100%, 40%);">+                        PIO_Clear(&pinsLeds[led]);</span><br><span>       else</span><br><span style="color: hsl(0, 100%, 40%);">-            PIO_Set(&pinsLeds[led]);</span><br><span style="color: hsl(120, 100%, 40%);">+                  PIO_Set(&pinsLeds[led]);</span><br><span> }</span><br><span> </span><br><span> /* LED blinking code */</span><br><span>diff --git a/firmware/libboard/common/source/uart_console.c b/firmware/libboard/common/source/uart_console.c</span><br><span>index 88c9166..3ce7331 100644</span><br><span>--- a/firmware/libboard/common/source/uart_console.c</span><br><span>+++ b/firmware/libboard/common/source/uart_console.c</span><br><span>@@ -66,41 +66,41 @@</span><br><span>  */</span><br><span> extern void UART_Configure( uint32_t baudrate, uint32_t masterClock)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    const Pin pPins[] = CONSOLE_PINS;</span><br><span style="color: hsl(0, 100%, 40%);">-    Uart *pUart = CONSOLE_UART;</span><br><span style="color: hsl(120, 100%, 40%);">+   const Pin pPins[] = CONSOLE_PINS;</span><br><span style="color: hsl(120, 100%, 40%);">+     Uart *pUart = CONSOLE_UART;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure PIO */</span><br><span style="color: hsl(0, 100%, 40%);">-    PIO_Configure(pPins, PIO_LISTSIZE(pPins));</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Configure PIO */</span><br><span style="color: hsl(120, 100%, 40%);">+   PIO_Configure(pPins, PIO_LISTSIZE(pPins));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure PMC */</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC->PMC_PCER0 = 1 << CONSOLE_ID;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Configure PMC */</span><br><span style="color: hsl(120, 100%, 40%);">+   PMC->PMC_PCER0 = 1 << CONSOLE_ID;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Reset and disable receiver & transmitter */</span><br><span style="color: hsl(0, 100%, 40%);">-    pUart->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX</span><br><span style="color: hsl(0, 100%, 40%);">-                   | UART_CR_RXDIS | UART_CR_TXDIS;</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Reset and disable receiver & transmitter */</span><br><span style="color: hsl(120, 100%, 40%);">+    pUart->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX</span><br><span style="color: hsl(120, 100%, 40%);">+                                | UART_CR_RXDIS | UART_CR_TXDIS;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure mode */</span><br><span style="color: hsl(0, 100%, 40%);">-    pUart->UART_MR =  UART_MR_PAR_NO;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Configure mode */</span><br><span style="color: hsl(120, 100%, 40%);">+  pUart->UART_MR =  UART_MR_PAR_NO;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure baudrate */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Asynchronous, no oversampling */</span><br><span style="color: hsl(0, 100%, 40%);">-    pUart->UART_BRGR = (masterClock / baudrate) / 16;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Configure baudrate */</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Asynchronous, no oversampling */</span><br><span style="color: hsl(120, 100%, 40%);">+   pUart->UART_BRGR = (masterClock / baudrate) / 16;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Disable PDC channel */</span><br><span style="color: hsl(0, 100%, 40%);">-    pUart->UART_PTCR = UART_PTCR_RXTDIS | UART_PTCR_TXTDIS;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Disable PDC channel */</span><br><span style="color: hsl(120, 100%, 40%);">+     pUart->UART_PTCR = UART_PTCR_RXTDIS | UART_PTCR_TXTDIS;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Reset transmit ring buffer */</span><br><span style="color: hsl(0, 100%, 40%);">-    rbuf_reset(&uart_tx_buffer);</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Reset transmit ring buffer */</span><br><span style="color: hsl(120, 100%, 40%);">+      rbuf_reset(&uart_tx_buffer);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Enable TX interrupts */</span><br><span style="color: hsl(0, 100%, 40%);">-    pUart->UART_IER = UART_IER_TXRDY;</span><br><span style="color: hsl(0, 100%, 40%);">-    NVIC_EnableIRQ(CONSOLE_IRQ);</span><br><span style="color: hsl(0, 100%, 40%);">-    </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Enable receiver and transmitter */</span><br><span style="color: hsl(0, 100%, 40%);">-    pUart->UART_CR = UART_CR_RXEN | UART_CR_TXEN;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Enable TX interrupts */</span><br><span style="color: hsl(120, 100%, 40%);">+    pUart->UART_IER = UART_IER_TXRDY;</span><br><span style="color: hsl(120, 100%, 40%);">+  NVIC_EnableIRQ(CONSOLE_IRQ);</span><br><span style="color: hsl(120, 100%, 40%);">+  </span><br><span style="color: hsl(120, 100%, 40%);">+      /* Enable receiver and transmitter */</span><br><span style="color: hsl(120, 100%, 40%);">+ pUart->UART_CR = UART_CR_RXEN | UART_CR_TXEN;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Remember the configuration is complete */</span><br><span style="color: hsl(0, 100%, 40%);">-    _ucIsConsoleInitialized=1 ;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Remember the configuration is complete */</span><br><span style="color: hsl(120, 100%, 40%);">+  _ucIsConsoleInitialized=1 ;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -140,22 +140,22 @@</span><br><span>  */</span><br><span> extern void UART_PutChar( uint8_t c )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    Uart *pUart = CONSOLE_UART ;</span><br><span style="color: hsl(120, 100%, 40%);">+      Uart *pUart = CONSOLE_UART ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Initialize console is not already done */</span><br><span style="color: hsl(0, 100%, 40%);">-    if ( !_ucIsConsoleInitialized )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        UART_Configure(CONSOLE_BAUDRATE, BOARD_MCK);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Initialize console is not already done */</span><br><span style="color: hsl(120, 100%, 40%);">+  if ( !_ucIsConsoleInitialized )</span><br><span style="color: hsl(120, 100%, 40%);">+       {</span><br><span style="color: hsl(120, 100%, 40%);">+             UART_Configure(CONSOLE_BAUDRATE, BOARD_MCK);</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Only store input if buffer is not full, else drop it */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (!rbuf_is_full(&uart_tx_buffer)) {</span><br><span style="color: hsl(0, 100%, 40%);">-        rbuf_write(&uart_tx_buffer, c);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (!(pUart->UART_IMR & UART_IMR_TXRDY)) {</span><br><span style="color: hsl(0, 100%, 40%);">-            pUart->UART_IER = UART_IER_TXRDY;</span><br><span style="color: hsl(0, 100%, 40%);">-            CONSOLE_ISR();</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Only store input if buffer is not full, else drop it */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!rbuf_is_full(&uart_tx_buffer)) {</span><br><span style="color: hsl(120, 100%, 40%);">+             rbuf_write(&uart_tx_buffer, c);</span><br><span style="color: hsl(120, 100%, 40%);">+           if (!(pUart->UART_IMR & UART_IMR_TXRDY)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     pUart->UART_IER = UART_IER_TXRDY;</span><br><span style="color: hsl(120, 100%, 40%);">+                  CONSOLE_ISR();</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -166,17 +166,17 @@</span><br><span>  */</span><br><span> extern uint32_t UART_GetChar( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    Uart *pUart = CONSOLE_UART ;</span><br><span style="color: hsl(120, 100%, 40%);">+ Uart *pUart = CONSOLE_UART ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( !_ucIsConsoleInitialized )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        UART_Configure(CONSOLE_BAUDRATE, BOARD_MCK);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     if ( !_ucIsConsoleInitialized )</span><br><span style="color: hsl(120, 100%, 40%);">+       {</span><br><span style="color: hsl(120, 100%, 40%);">+             UART_Configure(CONSOLE_BAUDRATE, BOARD_MCK);</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while ( (pUart->UART_SR & UART_SR_RXRDY) == 0 )</span><br><span style="color: hsl(0, 100%, 40%);">-        WDT_Restart(WDT);</span><br><span style="color: hsl(120, 100%, 40%);">+      while ( (pUart->UART_SR & UART_SR_RXRDY) == 0 )</span><br><span style="color: hsl(120, 100%, 40%);">+                WDT_Restart(WDT);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return pUart->UART_RHR ;</span><br><span style="color: hsl(120, 100%, 40%);">+  return pUart->UART_RHR ;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -186,14 +186,14 @@</span><br><span>  */</span><br><span> extern uint32_t UART_IsRxReady( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    Uart *pUart = CONSOLE_UART;</span><br><span style="color: hsl(120, 100%, 40%);">+      Uart *pUart = CONSOLE_UART;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( !_ucIsConsoleInitialized )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        UART_Configure( CONSOLE_BAUDRATE, BOARD_MCK ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   if ( !_ucIsConsoleInitialized )</span><br><span style="color: hsl(120, 100%, 40%);">+       {</span><br><span style="color: hsl(120, 100%, 40%);">+             UART_Configure( CONSOLE_BAUDRATE, BOARD_MCK ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return (pUart->UART_SR & UART_SR_RXRDY) > 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+      return (pUart->UART_SR & UART_SR_RXRDY) > 0 ;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -204,14 +204,14 @@</span><br><span>  */</span><br><span> extern void UART_DumpFrame( uint8_t* pucFrame, uint32_t dwSize )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t dw ;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t dw ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for ( dw=0 ; dw < dwSize ; dw++ )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf( "%02X ", pucFrame[dw] ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+        for ( dw=0 ; dw < dwSize ; dw++ )</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf( "%02X ", pucFrame[dw] ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    printf( "\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+ printf( "\n\r" ) ;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -223,62 +223,62 @@</span><br><span>  */</span><br><span> extern void UART_DumpMemory( uint8_t* pucBuffer, uint32_t dwSize, uint32_t dwAddress )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t i ;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t j ;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t dwLastLineStart ;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t* pucTmp ;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t i ;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t j ;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t dwLastLineStart ;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t* pucTmp ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for ( i=0 ; i < (dwSize / 16) ; i++ )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf( "0x%08X: ", (unsigned int)(dwAddress + (i*16)) ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-        pucTmp = (uint8_t*)&pucBuffer[i*16] ;</span><br><span style="color: hsl(120, 100%, 40%);">+   for ( i=0 ; i < (dwSize / 16) ; i++ )</span><br><span style="color: hsl(120, 100%, 40%);">+      {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf( "0x%08X: ", (unsigned int)(dwAddress + (i*16)) ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+          pucTmp = (uint8_t*)&pucBuffer[i*16] ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        for ( j=0 ; j < 4 ; j++ )</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            printf( "%02X%02X%02X%02X ", pucTmp[0], pucTmp[1], pucTmp[2], pucTmp[3] ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-            pucTmp += 4 ;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+         for ( j=0 ; j < 4 ; j++ )</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     printf( "%02X%02X%02X%02X ", pucTmp[0], pucTmp[1], pucTmp[2], pucTmp[3] ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                 pucTmp += 4 ;</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        pucTmp=(uint8_t*)&pucBuffer[i*16] ;</span><br><span style="color: hsl(120, 100%, 40%);">+          pucTmp=(uint8_t*)&pucBuffer[i*16] ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        for ( j=0 ; j < 16 ; j++ )</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            UART_PutChar( *pucTmp++ ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+             for ( j=0 ; j < 16 ; j++ )</span><br><span style="color: hsl(120, 100%, 40%);">+         {</span><br><span style="color: hsl(120, 100%, 40%);">+                     UART_PutChar( *pucTmp++ ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf( "\n\r" ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                printf( "\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( (dwSize%16) != 0 )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        dwLastLineStart=dwSize - (dwSize%16) ;</span><br><span style="color: hsl(120, 100%, 40%);">+   if ( (dwSize%16) != 0 )</span><br><span style="color: hsl(120, 100%, 40%);">+       {</span><br><span style="color: hsl(120, 100%, 40%);">+             dwLastLineStart=dwSize - (dwSize%16) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf( "0x%08X: ", (unsigned int)(dwAddress + dwLastLineStart) ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-        for ( j=dwLastLineStart ; j < dwLastLineStart+16 ; j++ )</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            if ( (j!=dwLastLineStart) && (j%4 == 0) )</span><br><span style="color: hsl(0, 100%, 40%);">-            {</span><br><span style="color: hsl(0, 100%, 40%);">-                printf( " " ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(120, 100%, 40%);">+           printf( "0x%08X: ", (unsigned int)(dwAddress + dwLastLineStart) ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+         for ( j=dwLastLineStart ; j < dwLastLineStart+16 ; j++ )</span><br><span style="color: hsl(120, 100%, 40%);">+           {</span><br><span style="color: hsl(120, 100%, 40%);">+                     if ( (j!=dwLastLineStart) && (j%4 == 0) )</span><br><span style="color: hsl(120, 100%, 40%);">+                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                             printf( " " ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            if ( j < dwSize )</span><br><span style="color: hsl(0, 100%, 40%);">-            {</span><br><span style="color: hsl(0, 100%, 40%);">-                printf( "%02X", pucBuffer[j] ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            else</span><br><span style="color: hsl(0, 100%, 40%);">-            {</span><br><span style="color: hsl(0, 100%, 40%);">-                printf("  ") ;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+                  if ( j < dwSize )</span><br><span style="color: hsl(120, 100%, 40%);">+                  {</span><br><span style="color: hsl(120, 100%, 40%);">+                             printf( "%02X", pucBuffer[j] ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     else</span><br><span style="color: hsl(120, 100%, 40%);">+                  {</span><br><span style="color: hsl(120, 100%, 40%);">+                             printf("  ") ;</span><br><span style="color: hsl(120, 100%, 40%);">+                      }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf( " " ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-        for ( j=dwLastLineStart ; j < dwSize ; j++ )</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            UART_PutChar( pucBuffer[j] ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+             printf( " " ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+             for ( j=dwLastLineStart ; j < dwSize ; j++ )</span><br><span style="color: hsl(120, 100%, 40%);">+               {</span><br><span style="color: hsl(120, 100%, 40%);">+                     UART_PutChar( pucBuffer[j] ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf( "\n\r" ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                printf( "\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -288,46 +288,46 @@</span><br><span>  */</span><br><span> extern uint32_t UART_GetInteger( uint32_t* pdwValue )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t ucKey ;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t ucNbNb=0 ;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t dwValue=0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint8_t ucKey ;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint8_t ucNbNb=0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint32_t dwValue=0 ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while ( 1 )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        ucKey=UART_GetChar() ;</span><br><span style="color: hsl(0, 100%, 40%);">-        UART_PutChar( ucKey ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+     while ( 1 )</span><br><span style="color: hsl(120, 100%, 40%);">+   {</span><br><span style="color: hsl(120, 100%, 40%);">+             ucKey=UART_GetChar() ;</span><br><span style="color: hsl(120, 100%, 40%);">+                UART_PutChar( ucKey ) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if ( ucKey >= '0' &&  ucKey <= '9' )</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            dwValue = (dwValue * 10) + (ucKey - '0');</span><br><span style="color: hsl(0, 100%, 40%);">-            ucNbNb++ ;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            if ( ucKey == 0x0D || ucKey == ' ' )</span><br><span style="color: hsl(0, 100%, 40%);">-            {</span><br><span style="color: hsl(0, 100%, 40%);">-                if ( ucNbNb == 0 )</span><br><span style="color: hsl(0, 100%, 40%);">-                {</span><br><span style="color: hsl(0, 100%, 40%);">-                    printf( "\n\rWrite a number and press ENTER or SPACE!\n\r" ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-                    return 0 ;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-                else</span><br><span style="color: hsl(0, 100%, 40%);">-                {</span><br><span style="color: hsl(0, 100%, 40%);">-                    printf( "\n\r" ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-                    *pdwValue=dwValue ;</span><br><span style="color: hsl(120, 100%, 40%);">+                if ( ucKey >= '0' &&  ucKey <= '9' )</span><br><span style="color: hsl(120, 100%, 40%);">+            {</span><br><span style="color: hsl(120, 100%, 40%);">+                     dwValue = (dwValue * 10) + (ucKey - '0');</span><br><span style="color: hsl(120, 100%, 40%);">+                     ucNbNb++ ;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+             else</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     if ( ucKey == 0x0D || ucKey == ' ' )</span><br><span style="color: hsl(120, 100%, 40%);">+                  {</span><br><span style="color: hsl(120, 100%, 40%);">+                             if ( ucNbNb == 0 )</span><br><span style="color: hsl(120, 100%, 40%);">+                            {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     printf( "\n\rWrite a number and press ENTER or SPACE!\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                                      return 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+                            }</span><br><span style="color: hsl(120, 100%, 40%);">+                             else</span><br><span style="color: hsl(120, 100%, 40%);">+                          {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     printf( "\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                                  *pdwValue=dwValue ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                    return 1 ;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            else</span><br><span style="color: hsl(0, 100%, 40%);">-            {</span><br><span style="color: hsl(0, 100%, 40%);">-                printf( "\n\r'%c' not a number!\n\r", ucKey ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     return 1 ;</span><br><span style="color: hsl(120, 100%, 40%);">+                            }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     else</span><br><span style="color: hsl(120, 100%, 40%);">+                  {</span><br><span style="color: hsl(120, 100%, 40%);">+                             printf( "\n\r'%c' not a number!\n\r", ucKey ) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                return 0 ;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        WDT_Restart(WDT);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                           return 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             WDT_Restart(WDT);</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -339,25 +339,25 @@</span><br><span>  */</span><br><span> extern uint32_t UART_GetIntegerMinMax( uint32_t* pdwValue, uint32_t dwMin, uint32_t dwMax )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t dwValue=0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t dwValue=0 ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( UART_GetInteger( &dwValue ) == 0 )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        return 0 ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   if ( UART_GetInteger( &dwValue ) == 0 )</span><br><span style="color: hsl(120, 100%, 40%);">+   {</span><br><span style="color: hsl(120, 100%, 40%);">+             return 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( dwValue < dwMin || dwValue > dwMax )</span><br><span style="color: hsl(120, 100%, 40%);">+      if ( dwValue < dwMin || dwValue > dwMax )</span><br><span>  {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf( "\n\rThe number have to be between %d and %d\n\r", (int)dwMin, (int)dwMax ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+          printf( "\n\rThe number have to be between %d and %d\n\r", (int)dwMin, (int)dwMax ) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        return 0 ;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+            return 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    printf( "\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+ printf( "\n\r" ) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    *pdwValue = dwValue ;</span><br><span style="color: hsl(120, 100%, 40%);">+     *pdwValue = dwValue ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return 1 ;</span><br><span style="color: hsl(120, 100%, 40%);">+       return 1 ;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -367,45 +367,45 @@</span><br><span>  */</span><br><span> extern uint32_t UART_GetHexa32( uint32_t* pdwValue )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t ucKey ;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t dw = 0 ;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t dwValue = 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint8_t ucKey ;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint32_t dw = 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+     uint32_t dwValue = 0 ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for ( dw=0 ; dw < 8 ; dw++ )</span><br><span style="color: hsl(0, 100%, 40%);">-    {</span><br><span style="color: hsl(0, 100%, 40%);">-        ucKey = UART_GetChar() ;</span><br><span style="color: hsl(0, 100%, 40%);">-        UART_PutChar( ucKey ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+     for ( dw=0 ; dw < 8 ; dw++ )</span><br><span style="color: hsl(120, 100%, 40%);">+       {</span><br><span style="color: hsl(120, 100%, 40%);">+             ucKey = UART_GetChar() ;</span><br><span style="color: hsl(120, 100%, 40%);">+              UART_PutChar( ucKey ) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if ( ucKey >= '0' &&  ucKey <= '9' )</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            dwValue = (dwValue * 16) + (ucKey - '0') ;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else</span><br><span style="color: hsl(0, 100%, 40%);">-        {</span><br><span style="color: hsl(0, 100%, 40%);">-            if ( ucKey >= 'A' &&  ucKey <= 'F' )</span><br><span style="color: hsl(0, 100%, 40%);">-            {</span><br><span style="color: hsl(0, 100%, 40%);">-                dwValue = (dwValue * 16) + (ucKey - 'A' + 10) ;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            else</span><br><span style="color: hsl(0, 100%, 40%);">-            {</span><br><span style="color: hsl(0, 100%, 40%);">-                if ( ucKey >= 'a' &&  ucKey <= 'f' )</span><br><span style="color: hsl(0, 100%, 40%);">-                {</span><br><span style="color: hsl(0, 100%, 40%);">-                    dwValue = (dwValue * 16) + (ucKey - 'a' + 10) ;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-                else</span><br><span style="color: hsl(0, 100%, 40%);">-                {</span><br><span style="color: hsl(0, 100%, 40%);">-                    printf( "\n\rIt is not a hexa character!\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+             if ( ucKey >= '0' &&  ucKey <= '9' )</span><br><span style="color: hsl(120, 100%, 40%);">+            {</span><br><span style="color: hsl(120, 100%, 40%);">+                     dwValue = (dwValue * 16) + (ucKey - '0') ;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+             else</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     if ( ucKey >= 'A' &&  ucKey <= 'F' )</span><br><span style="color: hsl(120, 100%, 40%);">+                    {</span><br><span style="color: hsl(120, 100%, 40%);">+                             dwValue = (dwValue * 16) + (ucKey - 'A' + 10) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+                     else</span><br><span style="color: hsl(120, 100%, 40%);">+                  {</span><br><span style="color: hsl(120, 100%, 40%);">+                             if ( ucKey >= 'a' &&  ucKey <= 'f' )</span><br><span style="color: hsl(120, 100%, 40%);">+                            {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     dwValue = (dwValue * 16) + (ucKey - 'a' + 10) ;</span><br><span style="color: hsl(120, 100%, 40%);">+                               }</span><br><span style="color: hsl(120, 100%, 40%);">+                             else</span><br><span style="color: hsl(120, 100%, 40%);">+                          {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     printf( "\n\rIt is not a hexa character!\n\r" ) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                    return 0 ;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                                     return 0 ;</span><br><span style="color: hsl(120, 100%, 40%);">+                            }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    printf("\n\r" ) ;</span><br><span style="color: hsl(0, 100%, 40%);">-    *pdwValue = dwValue ;</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("\n\r" ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+   *pdwValue = dwValue ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return 1 ;</span><br><span style="color: hsl(120, 100%, 40%);">+       return 1 ;</span><br><span> }</span><br><span> </span><br><span> #if defined __ICCARM__ /* IAR Ewarm 5.41+ */</span><br><span>@@ -418,9 +418,9 @@</span><br><span>  */</span><br><span> extern WEAK signed int putchar( signed int c )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    UART_PutChar( c ) ;</span><br><span style="color: hsl(120, 100%, 40%);">+        UART_PutChar( c ) ;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return c ;</span><br><span style="color: hsl(120, 100%, 40%);">+ return c ;</span><br><span> }</span><br><span> #endif // defined __ICCARM__</span><br><span> </span><br><span>diff --git a/firmware/libcommon/include/assert.h b/firmware/libcommon/include/assert.h</span><br><span>index a52ffa9..22bb101 100644</span><br><span>--- a/firmware/libcommon/include/assert.h</span><br><span>+++ b/firmware/libcommon/include/assert.h</span><br><span>@@ -65,41 +65,41 @@</span><br><span> //         Definitions</span><br><span> //------------------------------------------------------------------------------</span><br><span> #if defined(NOASSERT)</span><br><span style="color: hsl(0, 100%, 40%);">-    #define ASSERT(...)</span><br><span style="color: hsl(0, 100%, 40%);">-    #define SANITY_CHECK(...)</span><br><span style="color: hsl(120, 100%, 40%);">+ #define ASSERT(...)</span><br><span style="color: hsl(120, 100%, 40%);">+   #define SANITY_CHECK(...)</span><br><span> #else</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    #if (TRACE_LEVEL == 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        /// Checks that the given condition is true, </span><br><span style="color: hsl(0, 100%, 40%);">-        /// otherwise stops the program execution.</span><br><span style="color: hsl(0, 100%, 40%);">-        /// \param condition  Condition to verify.</span><br><span style="color: hsl(0, 100%, 40%);">-        #define ASSERT(condition)  { \</span><br><span style="color: hsl(0, 100%, 40%);">-            if (!(condition)) { \</span><br><span style="color: hsl(0, 100%, 40%);">-                while (1); \</span><br><span style="color: hsl(0, 100%, 40%);">-            } \</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+  #if (TRACE_LEVEL == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                /// Checks that the given condition is true, </span><br><span style="color: hsl(120, 100%, 40%);">+         /// otherwise stops the program execution.</span><br><span style="color: hsl(120, 100%, 40%);">+            /// \param condition  Condition to verify.</span><br><span style="color: hsl(120, 100%, 40%);">+            #define ASSERT(condition)  { \</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (!(condition)) { \</span><br><span style="color: hsl(120, 100%, 40%);">+                         while (1); \</span><br><span style="color: hsl(120, 100%, 40%);">+                  } \</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        /// Performs the same duty as the ASSERT() macro</span><br><span style="color: hsl(0, 100%, 40%);">-        /// \param condition  Condition to verify.</span><br><span style="color: hsl(0, 100%, 40%);">-        #define SANITY_CHECK(condition) ASSERT(condition, ...)</span><br><span style="color: hsl(120, 100%, 40%);">+         /// Performs the same duty as the ASSERT() macro</span><br><span style="color: hsl(120, 100%, 40%);">+              /// \param condition  Condition to verify.</span><br><span style="color: hsl(120, 100%, 40%);">+            #define SANITY_CHECK(condition) ASSERT(condition, ...)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    #else</span><br><span style="color: hsl(0, 100%, 40%);">-        /// Checks that the given condition is true, otherwise displays an error</span><br><span style="color: hsl(0, 100%, 40%);">-        /// message and stops the program execution.</span><br><span style="color: hsl(0, 100%, 40%);">-        /// \param condition  Condition to verify.</span><br><span style="color: hsl(0, 100%, 40%);">-        #define ASSERT(condition)  { \</span><br><span style="color: hsl(0, 100%, 40%);">-            if (!(condition)) { \</span><br><span style="color: hsl(0, 100%, 40%);">-                printf("-F- ASSERT: %s %s:%d\n\r", #condition, __BASE_FILE__, __LINE__); \</span><br><span style="color: hsl(0, 100%, 40%);">-                while (1); \</span><br><span style="color: hsl(0, 100%, 40%);">-            } \</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        #define SANITY_ERROR            "Sanity check failed at %s:%d\n\r"</span><br><span style="color: hsl(0, 100%, 40%);">-    </span><br><span style="color: hsl(0, 100%, 40%);">-        /// Performs the same duty as the ASSERT() macro, except a default error</span><br><span style="color: hsl(0, 100%, 40%);">-        /// message is output if the condition is false.</span><br><span style="color: hsl(0, 100%, 40%);">-        /// \param condition  Condition to verify.</span><br><span style="color: hsl(0, 100%, 40%);">-        #define SANITY_CHECK(condition) ASSERT(condition, SANITY_ERROR, __FILE__, __LINE__)</span><br><span style="color: hsl(0, 100%, 40%);">-    #endif</span><br><span style="color: hsl(120, 100%, 40%);">+       #else</span><br><span style="color: hsl(120, 100%, 40%);">+         /// Checks that the given condition is true, otherwise displays an error</span><br><span style="color: hsl(120, 100%, 40%);">+              /// message and stops the program execution.</span><br><span style="color: hsl(120, 100%, 40%);">+          /// \param condition  Condition to verify.</span><br><span style="color: hsl(120, 100%, 40%);">+            #define ASSERT(condition)  { \</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (!(condition)) { \</span><br><span style="color: hsl(120, 100%, 40%);">+                         printf("-F- ASSERT: %s %s:%d\n\r", #condition, __BASE_FILE__, __LINE__); \</span><br><span style="color: hsl(120, 100%, 40%);">+                          while (1); \</span><br><span style="color: hsl(120, 100%, 40%);">+                  } \</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+             #define SANITY_ERROR            "Sanity check failed at %s:%d\n\r"</span><br><span style="color: hsl(120, 100%, 40%);">+  </span><br><span style="color: hsl(120, 100%, 40%);">+              /// Performs the same duty as the ASSERT() macro, except a default error</span><br><span style="color: hsl(120, 100%, 40%);">+              /// message is output if the condition is false.</span><br><span style="color: hsl(120, 100%, 40%);">+              /// \param condition  Condition to verify.</span><br><span style="color: hsl(120, 100%, 40%);">+            #define SANITY_CHECK(condition) ASSERT(condition, SANITY_ERROR, __FILE__, __LINE__)</span><br><span style="color: hsl(120, 100%, 40%);">+   #endif</span><br><span> #endif</span><br><span> </span><br><span> </span><br><span>diff --git a/firmware/libcommon/include/cciddriver.h b/firmware/libcommon/include/cciddriver.h</span><br><span>index ee5e028..f9be027 100644</span><br><span>--- a/firmware/libcommon/include/cciddriver.h</span><br><span>+++ b/firmware/libcommon/include/cciddriver.h</span><br><span>@@ -145,129 +145,129 @@</span><br><span> /// 6.1.11.2 PIN Verification Data Structure</span><br><span> typedef struct</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Number of seconds.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bTimerOut;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Several parameters for the PIN format options</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmFormatString;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Define the length of the PIN to present in the APDU command</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmPINBlockString;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Allows the length PIN insertion in the APDU command</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmPINLengthFormat;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Minimum PIN size in digit and Maximum PIN size in digit</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char wPINMaxExtraDigit;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// The value is a bit wise OR operation.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bEntryValidationCondition;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Number of messages to display for the PIN modify command</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bNumberMessage;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Language used to display the messages.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char wLangId;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Message index in the Reader message table</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bMsgIndex;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// T=1 I-block prologue field to use</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bTeoPrologue[3];</span><br><span style="color: hsl(0, 100%, 40%);">-    /// APDU to send to the ICC</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char abPINApdu[255];</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Number of seconds.</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned char bTimerOut;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Several parameters for the PIN format options</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char bmFormatString;</span><br><span style="color: hsl(120, 100%, 40%);">+ /// Define the length of the PIN to present in the APDU command</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned char bmPINBlockString;</span><br><span style="color: hsl(120, 100%, 40%);">+       /// Allows the length PIN insertion in the APDU command</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned char bmPINLengthFormat;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Minimum PIN size in digit and Maximum PIN size in digit</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char wPINMaxExtraDigit;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// The value is a bit wise OR operation.</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char bEntryValidationCondition;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Number of messages to display for the PIN modify command</span><br><span style="color: hsl(120, 100%, 40%);">+  unsigned char bNumberMessage;</span><br><span style="color: hsl(120, 100%, 40%);">+ /// Language used to display the messages.</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned char wLangId;</span><br><span style="color: hsl(120, 100%, 40%);">+        /// Message index in the Reader message table</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bMsgIndex;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// T=1 I-block prologue field to use</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bTeoPrologue[3];</span><br><span style="color: hsl(120, 100%, 40%);">+        /// APDU to send to the ICC</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char abPINApdu[255];</span><br><span> }__attribute__ ((packed)) S_ccid_PIN_Verification;</span><br><span> </span><br><span> </span><br><span> /// 6.1.11.7 PIN Modification Data Structure</span><br><span> typedef struct</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Number of seconds. If 00h then CCID default value is used.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bTimeOut;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Several parameters for the PIN format options (defined in § 6.1.11.4)</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmFormatString4;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Define the length of the PIN to present in the APDU command</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmPINBlockString;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Allows the length PIN insertion in the APDU command (defined in § 6.1.11.6)</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmPinLengthFormat;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Insertion position offset in byte for the current PIN</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bInsertionOffsetOld;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Insertion position offset in byte for the new PIN</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bInsertionOffsetNew;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// XXYYh</span><br><span style="color: hsl(0, 100%, 40%);">-    /// XX: Minimum PIN size in digit</span><br><span style="color: hsl(0, 100%, 40%);">-    /// YY: Maximum PIN size in digit</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char wPINMaxExtraDigit;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 00h,01h,02h,03h</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Indicates if a confirmation is requested before acceptance of a new PIN (meaning that the user has to enter this new PIN twice before it is accepted)</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Indicates if the current PIN must be entered and set in the same APDU field of not.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bConfirmPIN;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// The value is a bit wise OR operation.</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 01h Max size reached</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 02h Validation key pressed</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 04h Timeout occurred</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bEntryValidationCondition;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 00h,01h,02h,03h,or FFh</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Number of messages to display for the PIN modify command.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bNumberMessage;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Language used to display the messages. The 16 bit</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char wLangId;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Message index in the Reader message table (should be 00h or 01h).</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bMsgIndex1;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Message index in the Reader message table (should be 01h or 02h).</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bMsgIndex2;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Message index in the Reader message table (should be 02h).</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bMsgIndex3;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// T=1 I-block prologue field to use. Significant only if protocol in use is T=1.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bTeoPrologue[3];</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Byte array APDU to send to the ICC</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char abPINApdu[255];</span><br><span style="color: hsl(120, 100%, 40%);">+   /// Number of seconds. If 00h then CCID default value is used.</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned char bTimeOut;</span><br><span style="color: hsl(120, 100%, 40%);">+       /// Several parameters for the PIN format options (defined in § 6.1.11.4)</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned char bmFormatString4;</span><br><span style="color: hsl(120, 100%, 40%);">+        /// Define the length of the PIN to present in the APDU command</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned char bmPINBlockString;</span><br><span style="color: hsl(120, 100%, 40%);">+       /// Allows the length PIN insertion in the APDU command (defined in § 6.1.11.6)</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned char bmPinLengthFormat;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Insertion position offset in byte for the current PIN</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char bInsertionOffsetOld;</span><br><span style="color: hsl(120, 100%, 40%);">+    /// Insertion position offset in byte for the new PIN</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bInsertionOffsetNew;</span><br><span style="color: hsl(120, 100%, 40%);">+    /// XXYYh</span><br><span style="color: hsl(120, 100%, 40%);">+     /// XX: Minimum PIN size in digit</span><br><span style="color: hsl(120, 100%, 40%);">+     /// YY: Maximum PIN size in digit</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char wPINMaxExtraDigit;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// 00h,01h,02h,03h</span><br><span style="color: hsl(120, 100%, 40%);">+   /// Indicates if a confirmation is requested before acceptance of a new PIN (meaning that the user has to enter this new PIN twice before it is accepted)</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Indicates if the current PIN must be entered and set in the same APDU field of not.</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned char bConfirmPIN;</span><br><span style="color: hsl(120, 100%, 40%);">+    /// The value is a bit wise OR operation.</span><br><span style="color: hsl(120, 100%, 40%);">+     /// 01h Max size reached</span><br><span style="color: hsl(120, 100%, 40%);">+      /// 02h Validation key pressed</span><br><span style="color: hsl(120, 100%, 40%);">+        /// 04h Timeout occurred</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned char bEntryValidationCondition;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// 00h,01h,02h,03h,or FFh</span><br><span style="color: hsl(120, 100%, 40%);">+    /// Number of messages to display for the PIN modify command.</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bNumberMessage;</span><br><span style="color: hsl(120, 100%, 40%);">+ /// Language used to display the messages. The 16 bit</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char wLangId;</span><br><span style="color: hsl(120, 100%, 40%);">+        /// Message index in the Reader message table (should be 00h or 01h).</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bMsgIndex1;</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Message index in the Reader message table (should be 01h or 02h).</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bMsgIndex2;</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Message index in the Reader message table (should be 02h).</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned char bMsgIndex3;</span><br><span style="color: hsl(120, 100%, 40%);">+     /// T=1 I-block prologue field to use. Significant only if protocol in use is T=1.</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned char bTeoPrologue[3];</span><br><span style="color: hsl(120, 100%, 40%);">+        /// Byte array APDU to send to the ICC</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned char abPINApdu[255];</span><br><span> }__attribute__ ((packed)) S_ccid_PIN_Modification;</span><br><span> </span><br><span> /// Protocol Data Structure for Protocol T=0 (bProtocolNum=0, dwLength=00000005h)</span><br><span> typedef struct</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B7-4 – FI – Index into the table 7 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(0, 100%, 40%);">-    /// clock rate conversion factor</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B3-0 – DI - Index into the table 8 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(0, 100%, 40%);">-    /// baud rate conversion factor</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmFindexDindex;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// For T=0 ,B0 – 0b, B7-2 – 000000b</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B1 – Convention used (b1=0 for direct, b1=1 for inverse)</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmTCCKST0;         // 0 to 2</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Extra Guardtime between two characters. Add 0 to 254 etu to the normal </span><br><span style="color: hsl(0, 100%, 40%);">-    /// guardtime of 12etu. FFh is the same as 00h.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bGuardTimeT0;      // 0 to FF</span><br><span style="color: hsl(0, 100%, 40%);">-    /// WI for T=0 used to define WWT</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bWaitingIntegerT0; // 0 to FF</span><br><span style="color: hsl(0, 100%, 40%);">-    /// ICC Clock Stop Support</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 00 = Stopping the Clock is not allowed</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 01 = Stop with Clock signal Low</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 02 = Stop with Clock signal High</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 03 = Stop with Clock either High or Low</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bClockStop;        // 0 to 3</span><br><span style="color: hsl(120, 100%, 40%);">+      /// B7-4 – FI – Index into the table 7 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(120, 100%, 40%);">+  /// clock rate conversion factor</span><br><span style="color: hsl(120, 100%, 40%);">+      /// B3-0 – DI - Index into the table 8 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(120, 100%, 40%);">+   /// baud rate conversion factor</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned char bmFindexDindex;</span><br><span style="color: hsl(120, 100%, 40%);">+ /// For T=0 ,B0 – 0b, B7-2 – 000000b</span><br><span style="color: hsl(120, 100%, 40%);">+        /// B1 – Convention used (b1=0 for direct, b1=1 for inverse)</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bmTCCKST0;         // 0 to 2</span><br><span style="color: hsl(120, 100%, 40%);">+    /// Extra Guardtime between two characters. Add 0 to 254 etu to the normal </span><br><span style="color: hsl(120, 100%, 40%);">+   /// guardtime of 12etu. FFh is the same as 00h.</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned char bGuardTimeT0;      // 0 to FF</span><br><span style="color: hsl(120, 100%, 40%);">+   /// WI for T=0 used to define WWT</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char bWaitingIntegerT0; // 0 to FF</span><br><span style="color: hsl(120, 100%, 40%);">+   /// ICC Clock Stop Support</span><br><span style="color: hsl(120, 100%, 40%);">+    /// 00 = Stopping the Clock is not allowed</span><br><span style="color: hsl(120, 100%, 40%);">+    /// 01 = Stop with Clock signal Low</span><br><span style="color: hsl(120, 100%, 40%);">+   /// 02 = Stop with Clock signal High</span><br><span style="color: hsl(120, 100%, 40%);">+  /// 03 = Stop with Clock either High or Low</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char bClockStop;        // 0 to 3</span><br><span> } __attribute__ ((packed)) S_ccid_protocol_t0;</span><br><span> </span><br><span> </span><br><span> /// Protocol Data Structure for Protocol T=1 (bProtocolNum=1, dwLength=00000007h)</span><br><span> typedef struct</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B7-4 – FI – Index into the table 7 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(0, 100%, 40%);">-    /// clock rate conversion factor</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B3-0 – DI - Index into the table 8 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(0, 100%, 40%);">-    /// baud rate conversion factor</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmFindexDindex;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// For T=1, B7-2 – 000100b</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B0 – Checksum type (b0=0 for LRC, b0=1 for CRC</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B1 – Convention used (b1=0 for direct, b1=1 for inverse)</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmTCCKST1;           // 10h, 11h, 12h, 13h</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Extra Guardtime (0 to 254 etu between two characters). </span><br><span style="color: hsl(0, 100%, 40%);">-    /// If value is FFh, then guardtime is reduced by 1.</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bGuardTimeT1;        // 0 to FF</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B7-4 = BWI</span><br><span style="color: hsl(0, 100%, 40%);">-    /// B3-0 = CWI</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmWaitingIntegersT1; // 0 to 9</span><br><span style="color: hsl(0, 100%, 40%);">-    /// ICC Clock Stop Support</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 00 = Stopping the Clock is not allowed</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 01 = Stop with Clock signal Low</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 02 = Stop with Clock signal High</span><br><span style="color: hsl(0, 100%, 40%);">-    /// 03 = Stop with Clock either High or Low</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bClockStop;          // 0 to 3</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Size of negotiated IFSC</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bIFSC;               // 0 to FE</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Nad value used by CCID</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bNadValue;           // 0 to FF</span><br><span style="color: hsl(120, 100%, 40%);">+      /// B7-4 – FI – Index into the table 7 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(120, 100%, 40%);">+  /// clock rate conversion factor</span><br><span style="color: hsl(120, 100%, 40%);">+      /// B3-0 – DI - Index into the table 8 in ISO/IEC 7816-3:1997 selecting a </span><br><span style="color: hsl(120, 100%, 40%);">+   /// baud rate conversion factor</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned char bmFindexDindex;</span><br><span style="color: hsl(120, 100%, 40%);">+ /// For T=1, B7-2 – 000100b</span><br><span style="color: hsl(120, 100%, 40%);">+  /// B0 – Checksum type (b0=0 for LRC, b0=1 for CRC</span><br><span style="color: hsl(120, 100%, 40%);">+   /// B1 – Convention used (b1=0 for direct, b1=1 for inverse)</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bmTCCKST1;           // 10h, 11h, 12h, 13h</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Extra Guardtime (0 to 254 etu between two characters). </span><br><span style="color: hsl(120, 100%, 40%);">+   /// If value is FFh, then guardtime is reduced by 1.</span><br><span style="color: hsl(120, 100%, 40%);">+  unsigned char bGuardTimeT1;        // 0 to FF</span><br><span style="color: hsl(120, 100%, 40%);">+ /// B7-4 = BWI</span><br><span style="color: hsl(120, 100%, 40%);">+        /// B3-0 = CWI</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned char bmWaitingIntegersT1; // 0 to 9</span><br><span style="color: hsl(120, 100%, 40%);">+  /// ICC Clock Stop Support</span><br><span style="color: hsl(120, 100%, 40%);">+    /// 00 = Stopping the Clock is not allowed</span><br><span style="color: hsl(120, 100%, 40%);">+    /// 01 = Stop with Clock signal Low</span><br><span style="color: hsl(120, 100%, 40%);">+   /// 02 = Stop with Clock signal High</span><br><span style="color: hsl(120, 100%, 40%);">+  /// 03 = Stop with Clock either High or Low</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char bClockStop;          // 0 to 3</span><br><span style="color: hsl(120, 100%, 40%);">+  /// Size of negotiated IFSC</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char bIFSC;               // 0 to FE</span><br><span style="color: hsl(120, 100%, 40%);">+ /// Nad value used by CCID</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned char bNadValue;           // 0 to FF</span><br><span> } __attribute__ ((packed)) S_ccid_protocol_t1;</span><br><span> </span><br><span> </span><br><span>@@ -357,8 +357,8 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> </span><br><span> extern unsigned char RDRtoPCHardwareError( unsigned char bSlot, </span><br><span style="color: hsl(0, 100%, 40%);">-                                           unsigned char bSeq, </span><br><span style="color: hsl(0, 100%, 40%);">-                                           unsigned char bHardwareErrorCode );</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               unsigned char bSeq, </span><br><span style="color: hsl(120, 100%, 40%);">+                                                          unsigned char bHardwareErrorCode );</span><br><span> </span><br><span> /*</span><br><span> #if !defined(NOAUTOCALLBACK)</span><br><span>@@ -368,13 +368,13 @@</span><br><span> extern void CCID_SmartCardRequest( void );</span><br><span> extern void CCIDDriver_Initialize( void );</span><br><span> extern unsigned char CCID_Read(void *pBuffer,</span><br><span style="color: hsl(0, 100%, 40%);">-                               unsigned int dLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                               TransferCallback fCallback,</span><br><span style="color: hsl(0, 100%, 40%);">-                               void *pArgument);</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  unsigned int dLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 TransferCallback fCallback,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   void *pArgument);</span><br><span> extern unsigned char CCID_Write(void *pBuffer,</span><br><span style="color: hsl(0, 100%, 40%);">-                                unsigned int dLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                                TransferCallback fCallback,</span><br><span style="color: hsl(0, 100%, 40%);">-                                void *pArgument);</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   unsigned int dLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 TransferCallback fCallback,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   void *pArgument);</span><br><span> extern unsigned char CCID_Insertion( void );</span><br><span> extern unsigned char CCID_Removal( void );</span><br><span> </span><br><span>diff --git a/firmware/libcommon/include/iso7816_4.h b/firmware/libcommon/include/iso7816_4.h</span><br><span>index 7c371b2..e2215c7 100644</span><br><span>--- a/firmware/libcommon/include/iso7816_4.h</span><br><span>+++ b/firmware/libcommon/include/iso7816_4.h</span><br><span>@@ -76,9 +76,9 @@</span><br><span> </span><br><span> extern void ISO7816_IccPowerOff(void);</span><br><span> extern uint32_t ISO7816_XfrBlockTPDU_T0(const uint8_t *pAPDU,</span><br><span style="color: hsl(0, 100%, 40%);">-                                        uint8_t *pMessage,</span><br><span style="color: hsl(0, 100%, 40%);">-                                        uint16_t wLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                                        uint16_t *retlen);</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      uint8_t *pMessage,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            uint16_t wLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     uint16_t *retlen);</span><br><span> extern void ISO7816_Escape( void );</span><br><span> extern void ISO7816_RestartClock(void);</span><br><span> extern void ISO7816_StopClock( void );</span><br><span>diff --git a/firmware/libcommon/include/simtrace.h b/firmware/libcommon/include/simtrace.h</span><br><span>index 5edea17..0486581 100644</span><br><span>--- a/firmware/libcommon/include/simtrace.h</span><br><span>+++ b/firmware/libcommon/include/simtrace.h</span><br><span>@@ -65,19 +65,19 @@</span><br><span> /// device using the CCID driver.</span><br><span> typedef struct {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /// Configuration descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-    USBConfigurationDescriptor configuration;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Interface descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-    USBInterfaceDescriptor     interface;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// CCID descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-    CCIDDescriptor             ccid;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bulk OUT endpoint descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-    USBEndpointDescriptor      bulkOut;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bulk IN endpoint descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-    USBEndpointDescriptor      bulkIn;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Interrupt OUT endpoint descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-    USBEndpointDescriptor      interruptIn;</span><br><span style="color: hsl(0, 100%, 40%);">-    DFURT_IF_DESCRIPTOR_STRUCT</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Configuration descriptor</span><br><span style="color: hsl(120, 100%, 40%);">+  USBConfigurationDescriptor configuration;</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Interface descriptor</span><br><span style="color: hsl(120, 100%, 40%);">+      USBInterfaceDescriptor     interface;</span><br><span style="color: hsl(120, 100%, 40%);">+ /// CCID descriptor</span><br><span style="color: hsl(120, 100%, 40%);">+   CCIDDescriptor             ccid;</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Bulk OUT endpoint descriptor</span><br><span style="color: hsl(120, 100%, 40%);">+      USBEndpointDescriptor      bulkOut;</span><br><span style="color: hsl(120, 100%, 40%);">+   /// Bulk IN endpoint descriptor</span><br><span style="color: hsl(120, 100%, 40%);">+       USBEndpointDescriptor      bulkIn;</span><br><span style="color: hsl(120, 100%, 40%);">+    /// Interrupt OUT endpoint descriptor</span><br><span style="color: hsl(120, 100%, 40%);">+ USBEndpointDescriptor      interruptIn;</span><br><span style="color: hsl(120, 100%, 40%);">+       DFURT_IF_DESCRIPTOR_STRUCT</span><br><span> } __attribute__ ((packed)) CCIDDriverConfigurationDescriptors;</span><br><span> </span><br><span> extern const USBConfigurationDescriptor *configurationDescriptorsArr[];</span><br><span>diff --git a/firmware/libcommon/source/cciddriver.c b/firmware/libcommon/source/cciddriver.c</span><br><span>index 8cf28ca..1dbdf23 100644</span><br><span>--- a/firmware/libcommon/source/cciddriver.c</span><br><span>+++ b/firmware/libcommon/source/cciddriver.c</span><br><span>@@ -83,24 +83,24 @@</span><br><span> /// Driver structure for an CCID device</span><br><span> typedef struct {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /// CCID message</span><br><span style="color: hsl(0, 100%, 40%);">-    S_ccid_bulk_in_header  sCcidMessage;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// CCID command</span><br><span style="color: hsl(0, 100%, 40%);">-    S_ccid_bulk_out_header sCcidCommand;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Interrupt message answer</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char          BufferINT[4];</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Buffer data of message</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char          ProtocolDataStructure[10];</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Protocol used</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char          bProtocol;</span><br><span style="color: hsl(0, 100%, 40%);">-    /// SlotStatus</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bit 0 = Slot 0 current state</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bit 1 = Slot 0 changed status</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bit 2 = Slot 1 current state</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bit 3 = Slot 1 changed status</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bit 4 = Slot 2 current state</span><br><span style="color: hsl(0, 100%, 40%);">-    /// Bit 5 = Slot 2 changed status</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char          SlotStatus;</span><br><span style="color: hsl(120, 100%, 40%);">+     /// CCID message</span><br><span style="color: hsl(120, 100%, 40%);">+      S_ccid_bulk_in_header  sCcidMessage;</span><br><span style="color: hsl(120, 100%, 40%);">+  /// CCID command</span><br><span style="color: hsl(120, 100%, 40%);">+      S_ccid_bulk_out_header sCcidCommand;</span><br><span style="color: hsl(120, 100%, 40%);">+  /// Interrupt message answer</span><br><span style="color: hsl(120, 100%, 40%);">+  unsigned char          BufferINT[4];</span><br><span style="color: hsl(120, 100%, 40%);">+  /// Buffer data of message</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned char          ProtocolDataStructure[10];</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Protocol used</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char          bProtocol;</span><br><span style="color: hsl(120, 100%, 40%);">+     /// SlotStatus</span><br><span style="color: hsl(120, 100%, 40%);">+        /// Bit 0 = Slot 0 current state</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Bit 1 = Slot 0 changed status</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Bit 2 = Slot 1 current state</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Bit 3 = Slot 1 changed status</span><br><span style="color: hsl(120, 100%, 40%);">+     /// Bit 4 = Slot 2 current state</span><br><span style="color: hsl(120, 100%, 40%);">+      /// Bit 5 = Slot 2 changed status</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char          SlotStatus;</span><br><span> </span><br><span> } CCIDDriver;</span><br><span> </span><br><span>@@ -121,7 +121,7 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> void CCIDDriver_Initialize( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    configurationDescriptorsFS = (CCIDDriverConfigurationDescriptors *) configurationDescriptorsArr[CFG_NUM_CCID-1];</span><br><span style="color: hsl(120, 100%, 40%);">+  configurationDescriptorsFS = (CCIDDriverConfigurationDescriptors *) configurationDescriptorsArr[CFG_NUM_CCID-1];</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -137,25 +137,25 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void RDRtoPCSlotStatus( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    // Header fields settings</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_SLOTSTATUS;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.wLength   = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        // Header fields settings</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_SLOTSTATUS;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.wLength   = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if (ccidDriver.SlotStatus == ICC_INSERTED_EVENT) {</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bStatus = 0;    /* ICC present and active card */</span><br><span style="color: hsl(0, 100%, 40%);">-    } else if (ccidDriver.SlotStatus == ICC_NOT_PRESENT) {</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bStatus = 2;    /* No ICC present*/</span><br><span style="color: hsl(0, 100%, 40%);">-    } else{</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_ERROR("Strange bStatus");</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError    = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    // 00h Clock running</span><br><span style="color: hsl(0, 100%, 40%);">-    // 01h Clock stopped in state L</span><br><span style="color: hsl(0, 100%, 40%);">-    // 02h Clock stopped in state H</span><br><span style="color: hsl(0, 100%, 40%);">-    // 03h Clock stopped in an unknown state</span><br><span style="color: hsl(0, 100%, 40%);">-    // All other values are Reserved for Future Use.</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSpecific = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (ccidDriver.SlotStatus == ICC_INSERTED_EVENT) {</span><br><span style="color: hsl(120, 100%, 40%);">+            ccidDriver.sCcidMessage.bStatus = 0;    /* ICC present and active card */</span><br><span style="color: hsl(120, 100%, 40%);">+     } else if (ccidDriver.SlotStatus == ICC_NOT_PRESENT) {</span><br><span style="color: hsl(120, 100%, 40%);">+                ccidDriver.sCcidMessage.bStatus = 2;    /* No ICC present*/</span><br><span style="color: hsl(120, 100%, 40%);">+   } else{</span><br><span style="color: hsl(120, 100%, 40%);">+               TRACE_ERROR("Strange bStatus");</span><br><span style="color: hsl(120, 100%, 40%);">+             ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bError    = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        // 00h Clock running</span><br><span style="color: hsl(120, 100%, 40%);">+  // 01h Clock stopped in state L</span><br><span style="color: hsl(120, 100%, 40%);">+       // 02h Clock stopped in state H</span><br><span style="color: hsl(120, 100%, 40%);">+       // 03h Clock stopped in an unknown state</span><br><span style="color: hsl(120, 100%, 40%);">+      // All other values are Reserved for Future Use.</span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.sCcidMessage.bSpecific = 0;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -164,71 +164,71 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void RDRtoPCDatablock_ATR( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char i;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char Atr[ATR_SIZE_MAX];</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char length;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t status; </span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned char i;</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned char Atr[ATR_SIZE_MAX];</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned char length;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t status; </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+  TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    status = ISO7816_Datablock_ATR( Atr, &length );</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_Decode_ATR( Atr );</span><br><span style="color: hsl(120, 100%, 40%);">+  status = ISO7816_Datablock_ATR( Atr, &length );</span><br><span style="color: hsl(120, 100%, 40%);">+   ISO7816_Decode_ATR( Atr );</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if (status == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_DEBUG("Timeout occured while reading ATR");</span><br><span style="color: hsl(120, 100%, 40%);">+       if (status == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            TRACE_DEBUG("Timeout occured while reading ATR");</span><br><span> // FIXME: react properly to timeout..</span><br><span> //        return;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span> // FIXME: More tests? Is bProtocol = Atr[3] ?</span><br><span style="color: hsl(0, 100%, 40%);">-    if( length > 5 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.ProtocolDataStructure[1] = Atr[3]&0x0F; // TD(1)</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.bProtocol = Atr[3]&0x0F;           // TD(1)</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_INFO("Protocol data structure: 0x%x\n\r",</span><br><span style="color: hsl(0, 100%, 40%);">-                        ccidDriver.ProtocolDataStructure[1]);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   if( length > 5 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+         ccidDriver.ProtocolDataStructure[1] = Atr[3]&0x0F; // TD(1)</span><br><span style="color: hsl(120, 100%, 40%);">+               ccidDriver.bProtocol = Atr[3]&0x0F;           // TD(1)</span><br><span style="color: hsl(120, 100%, 40%);">+            TRACE_INFO("Protocol data structure: 0x%x\n\r",</span><br><span style="color: hsl(120, 100%, 40%);">+                                         ccidDriver.ProtocolDataStructure[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // S_ccid_protocol_t0</span><br><span style="color: hsl(0, 100%, 40%);">-    // bmFindexDindex</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.ProtocolDataStructure[0] = Atr[2];     // TA(1)</span><br><span style="color: hsl(120, 100%, 40%);">+     // S_ccid_protocol_t0</span><br><span style="color: hsl(120, 100%, 40%);">+ // bmFindexDindex</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.ProtocolDataStructure[0] = Atr[2];     // TA(1)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // bmTCCKST0</span><br><span style="color: hsl(0, 100%, 40%);">-    // For T=0 ,B0 – 0b, B7-2 – 000000b</span><br><span style="color: hsl(0, 100%, 40%);">-    // B1 – Convention used (b1=0 for direct, b1=1 for inverse)</span><br><span style="color: hsl(120, 100%, 40%);">+       // bmTCCKST0</span><br><span style="color: hsl(120, 100%, 40%);">+  // For T=0 ,B0 – 0b, B7-2 – 000000b</span><br><span style="color: hsl(120, 100%, 40%);">+ // B1 – Convention used (b1=0 for direct, b1=1 for inverse)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // bGuardTimeT0</span><br><span style="color: hsl(0, 100%, 40%);">-    // Extra Guardtime between two characters. Add 0 to 254 etu to the normal </span><br><span style="color: hsl(0, 100%, 40%);">-    // guardtime of 12etu. FFh is the same as 00h.</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.ProtocolDataStructure[2] = Atr[4];     // TC(1)</span><br><span style="color: hsl(0, 100%, 40%);">-    // AT91C_BASE_US0->US_TTGR = 0;  // TC1</span><br><span style="color: hsl(120, 100%, 40%);">+       // bGuardTimeT0</span><br><span style="color: hsl(120, 100%, 40%);">+       // Extra Guardtime between two characters. Add 0 to 254 etu to the normal </span><br><span style="color: hsl(120, 100%, 40%);">+    // guardtime of 12etu. FFh is the same as 00h.</span><br><span style="color: hsl(120, 100%, 40%);">+        ccidDriver.ProtocolDataStructure[2] = Atr[4];     // TC(1)</span><br><span style="color: hsl(120, 100%, 40%);">+    // AT91C_BASE_US0->US_TTGR = 0;  // TC1</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // bWaitingIntegerT0</span><br><span style="color: hsl(0, 100%, 40%);">-    // WI for T=0 used to define WWT</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.ProtocolDataStructure[3] = Atr[7];     // TC(2)</span><br><span style="color: hsl(120, 100%, 40%);">+      // bWaitingIntegerT0</span><br><span style="color: hsl(120, 100%, 40%);">+  // WI for T=0 used to define WWT</span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.ProtocolDataStructure[3] = Atr[7];     // TC(2)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // bClockStop</span><br><span style="color: hsl(0, 100%, 40%);">-    // ICC Clock Stop Support</span><br><span style="color: hsl(0, 100%, 40%);">-    // 00 = Stopping the Clock is not allowed</span><br><span style="color: hsl(0, 100%, 40%);">-    // 01 = Stop with Clock signal Low</span><br><span style="color: hsl(0, 100%, 40%);">-    // 02 = Stop with Clock signal High</span><br><span style="color: hsl(0, 100%, 40%);">-    // 03 = Stop with Clock either High or Low</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.ProtocolDataStructure[4] = 0x00;       // 0 to 3</span><br><span style="color: hsl(120, 100%, 40%);">+   // bClockStop</span><br><span style="color: hsl(120, 100%, 40%);">+ // ICC Clock Stop Support</span><br><span style="color: hsl(120, 100%, 40%);">+     // 00 = Stopping the Clock is not allowed</span><br><span style="color: hsl(120, 100%, 40%);">+     // 01 = Stop with Clock signal Low</span><br><span style="color: hsl(120, 100%, 40%);">+    // 02 = Stop with Clock signal High</span><br><span style="color: hsl(120, 100%, 40%);">+   // 03 = Stop with Clock either High or Low</span><br><span style="color: hsl(120, 100%, 40%);">+    ccidDriver.ProtocolDataStructure[4] = 0x00;       // 0 to 3</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Header fields settings</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_DATABLOCK;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.wLength      = length;  // Size of ATR</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSizeToSend += length;  // Size of ATR</span><br><span style="color: hsl(0, 100%, 40%);">-    // bChainParameter: 00 the response APDU begins and ends in this command</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSpecific    = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      // Header fields settings</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_DATABLOCK;</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.wLength      = length;  // Size of ATR</span><br><span style="color: hsl(120, 100%, 40%);">+        ccidDriver.sCcidMessage.bSizeToSend += length;  // Size of ATR</span><br><span style="color: hsl(120, 100%, 40%);">+        // bChainParameter: 00 the response APDU begins and ends in this command</span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.sCcidMessage.bSpecific    = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for( i=0; i<length; i++ ) {</span><br><span style="color: hsl(120, 100%, 40%);">+       for( i=0; i<length; i++ ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.abData[i]  = Atr[i];</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+           ccidDriver.sCcidMessage.abData[i]  = Atr[i];</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Set the slot to an active status</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+   // Set the slot to an active status</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.bError = 0;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -243,17 +243,17 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void RDRtoPCDatablock( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    //TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+    //TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Header fields settings</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_DATABLOCK;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSizeToSend += ccidDriver.sCcidMessage.wLength;</span><br><span style="color: hsl(0, 100%, 40%);">-    // bChainParameter: 00 the response APDU begins and ends in this command</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSpecific = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        // Header fields settings</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_DATABLOCK;</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.bSizeToSend += ccidDriver.sCcidMessage.wLength;</span><br><span style="color: hsl(120, 100%, 40%);">+       // bChainParameter: 00 the response APDU begins and ends in this command</span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.sCcidMessage.bSpecific = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Set the slot to an active status</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      // Set the slot to an active status</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.bError = 0;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -265,34 +265,34 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void RDRtoPCParameters( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int i;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+    TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Header fields settings</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_PARAMETERS;</span><br><span style="color: hsl(120, 100%, 40%);">+  // Header fields settings</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_PARAMETERS;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    //ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError  = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    //ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        ccidDriver.sCcidMessage.bError  = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if( ccidDriver.ProtocolDataStructure[1] == PROTOCOL_TO ) {</span><br><span style="color: hsl(120, 100%, 40%);">+        if( ccidDriver.ProtocolDataStructure[1] == PROTOCOL_TO ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // T=0</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.wLength   = sizeof(S_ccid_protocol_t0);</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bSpecific = PROTOCOL_TO;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+            // T=0</span><br><span style="color: hsl(120, 100%, 40%);">+                ccidDriver.sCcidMessage.wLength   = sizeof(S_ccid_protocol_t0);</span><br><span style="color: hsl(120, 100%, 40%);">+               ccidDriver.sCcidMessage.bSpecific = PROTOCOL_TO;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // T=1</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.wLength   = sizeof(S_ccid_protocol_t1);</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bSpecific = PROTOCOL_T1;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+          // T=1</span><br><span style="color: hsl(120, 100%, 40%);">+                ccidDriver.sCcidMessage.wLength   = sizeof(S_ccid_protocol_t1);</span><br><span style="color: hsl(120, 100%, 40%);">+               ccidDriver.sCcidMessage.bSpecific = PROTOCOL_T1;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSizeToSend += ccidDriver.sCcidMessage.wLength;</span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.sCcidMessage.bSizeToSend += ccidDriver.sCcidMessage.wLength;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for( i=0; i<ccidDriver.sCcidMessage.wLength; i++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.abData[i] = ccidDriver.ProtocolDataStructure[i];</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   for( i=0; i<ccidDriver.sCcidMessage.wLength; i++ ) {</span><br><span style="color: hsl(120, 100%, 40%);">+               ccidDriver.sCcidMessage.abData[i] = ccidDriver.ProtocolDataStructure[i];</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span> </span><br><span> }</span><br><span> </span><br><span>@@ -303,23 +303,23 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void RDRtoPCEscape( unsigned char length, unsigned char *data_send_from_CCID )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int i;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned int i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+    TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Header fields settings</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_ESCAPE;</span><br><span style="color: hsl(120, 100%, 40%);">+      // Header fields settings</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_ESCAPE;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.wLength   = length;</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.wLength   = length;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError  = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.bError  = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSpecific = 0;  // bRFU</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.bSpecific = 0;  // bRFU</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for( i=0; i<length; i++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.abData[i] = data_send_from_CCID[i];</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+ for( i=0; i<length; i++ ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                ccidDriver.sCcidMessage.abData[i] = data_send_from_CCID[i];</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -328,23 +328,23 @@</span><br><span> ///   PC_to_RDR_SetDataRateAndClockFrequency</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void RDRtoPCDataRateAndClockFrequency( unsigned int dwClockFrequency, </span><br><span style="color: hsl(0, 100%, 40%);">-                                       unsigned int dwDataRate )</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      unsigned int dwDataRate )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+      TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Header fields settings</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_DATARATEANDCLOCKFREQUENCY;</span><br><span style="color: hsl(120, 100%, 40%);">+   // Header fields settings</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_DATARATEANDCLOCKFREQUENCY;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.wLength   = 8;</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.wLength   = 8;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError  = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.bError  = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSpecific = 0;  // bRFU</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.bSpecific = 0;  // bRFU</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.abData[0] = dwClockFrequency;</span><br><span style="color: hsl(0, 100%, 40%);">-    </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.abData[4] = dwDataRate;</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.abData[0] = dwClockFrequency;</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.sCcidMessage.abData[4] = dwDataRate;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -354,27 +354,27 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRIccPowerOn( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(0, 100%, 40%);">-    if( CCID_FEATURES_AUTO_VOLT == (configurationDescriptorsFS->ccid.dwFeatures & CCID_FEATURES_AUTO_VOLT) ) {</span><br><span style="color: hsl(120, 100%, 40%);">+    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+   if( CCID_FEATURES_AUTO_VOLT == (configurationDescriptorsFS->ccid.dwFeatures & CCID_FEATURES_AUTO_VOLT) ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        //bPowerSelect = ccidDriver.sCcidCommand.bSpecific_0;</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidCommand.bSpecific_0 = VOLTS_AUTO;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+              //bPowerSelect = ccidDriver.sCcidCommand.bSpecific_0;</span><br><span style="color: hsl(120, 100%, 40%);">+         ccidDriver.sCcidCommand.bSpecific_0 = VOLTS_AUTO;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_warm_reset();</span><br><span style="color: hsl(120, 100%, 40%);">+        ISO7816_warm_reset();</span><br><span> //    ISO7816_cold_reset();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // for emulation only //JCB </span><br><span style="color: hsl(0, 100%, 40%);">-    if ( ccidDriver.sCcidCommand.bSpecific_0 != VOLTS_5_0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+ // for emulation only //JCB </span><br><span style="color: hsl(120, 100%, 40%);">+  if ( ccidDriver.sCcidCommand.bSpecific_0 != VOLTS_5_0 ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_ERROR("POWER_NOT_SUPPORTED\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+           TRACE_ERROR("POWER_NOT_SUPPORTED\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+       else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        RDRtoPCDatablock_ATR();</span><br><span style="color: hsl(120, 100%, 40%);">+             RDRtoPCDatablock_ATR();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -384,23 +384,23 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRIccPowerOff( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bStatus;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char bStatus;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+     TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_IccPowerOff();</span><br><span style="color: hsl(120, 100%, 40%);">+     ISO7816_IccPowerOff();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    //JCB stub</span><br><span style="color: hsl(0, 100%, 40%);">-    bStatus = ICC_BS_PRESENT_NOTACTIVATED;</span><br><span style="color: hsl(120, 100%, 40%);">+    //JCB stub</span><br><span style="color: hsl(120, 100%, 40%);">+    bStatus = ICC_BS_PRESENT_NOTACTIVATED;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Set the slot to an inactive status</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    // Set the slot to an inactive status</span><br><span style="color: hsl(120, 100%, 40%);">+ ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.bError = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // if error, see Table 6.1-2 errors</span><br><span style="color: hsl(120, 100%, 40%);">+        // if error, see Table 6.1-2 errors</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Return the slot status to the host</span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCSlotStatus();</span><br><span style="color: hsl(120, 100%, 40%);">+      // Return the slot status to the host</span><br><span style="color: hsl(120, 100%, 40%);">+ RDRtoPCSlotStatus();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -409,13 +409,13 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRGetSlotStatus( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bError = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.bError = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Return the slot status to the host</span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCSlotStatus();</span><br><span style="color: hsl(120, 100%, 40%);">+      // Return the slot status to the host</span><br><span style="color: hsl(120, 100%, 40%);">+ RDRtoPCSlotStatus();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -425,69 +425,69 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRXfrBlock( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint16_t msglen = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t ret;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint16_t msglen = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t ret;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("PCtoRDRXfrBlock\n");</span><br><span style="color: hsl(120, 100%, 40%);">+      TRACE_DEBUG("PCtoRDRXfrBlock\n");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Check the block length</span><br><span style="color: hsl(0, 100%, 40%);">-    if ( ccidDriver.sCcidCommand.wLength > (configurationDescriptorsFS->ccid.dwMaxCCIDMessageLength-10) ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_DEBUG("Err block/msg len");</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bStatus = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bError  = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    // check bBWI</span><br><span style="color: hsl(0, 100%, 40%);">-    else if ( 0 != ccidDriver.sCcidCommand.bSpecific_0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+      // Check the block length</span><br><span style="color: hsl(120, 100%, 40%);">+     if ( ccidDriver.sCcidCommand.wLength > (configurationDescriptorsFS->ccid.dwMaxCCIDMessageLength-10) ) {</span><br><span style="color: hsl(120, 100%, 40%);">+         TRACE_DEBUG("Err block/msg len");</span><br><span style="color: hsl(120, 100%, 40%);">+           ccidDriver.sCcidMessage.bStatus = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+          ccidDriver.sCcidMessage.bError  = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     // check bBWI</span><br><span style="color: hsl(120, 100%, 40%);">+ else if ( 0 != ccidDriver.sCcidCommand.bSpecific_0 ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-         TRACE_ERROR("Bad bBWI\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+               TRACE_ERROR("Bad bBWI\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // APDU or TPDU</span><br><span style="color: hsl(0, 100%, 40%);">-        switch(configurationDescriptorsFS->ccid.dwFeatures </span><br><span style="color: hsl(0, 100%, 40%);">-              & (CCID_FEATURES_EXC_TPDU|CCID_FEATURES_EXC_SAPDU|CCID_FEATURES_EXC_APDU)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         // APDU or TPDU</span><br><span style="color: hsl(120, 100%, 40%);">+               switch(configurationDescriptorsFS->ccid.dwFeatures </span><br><span style="color: hsl(120, 100%, 40%);">+                          & (CCID_FEATURES_EXC_TPDU|CCID_FEATURES_EXC_SAPDU|CCID_FEATURES_EXC_APDU)) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            case CCID_FEATURES_EXC_TPDU:</span><br><span style="color: hsl(0, 100%, 40%);">-                if (ccidDriver.ProtocolDataStructure[1] == PROTOCOL_TO) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    TRACE_DEBUG("APDU cmd: %x %x %x ..", ccidDriver.sCcidCommand.APDU[0], ccidDriver.sCcidCommand.APDU[1],ccidDriver.sCcidCommand.APDU[2] );</span><br><span style="color: hsl(120, 100%, 40%);">+                 case CCID_FEATURES_EXC_TPDU:</span><br><span style="color: hsl(120, 100%, 40%);">+                          if (ccidDriver.ProtocolDataStructure[1] == PROTOCOL_TO) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     TRACE_DEBUG("APDU cmd: %x %x %x ..", ccidDriver.sCcidCommand.APDU[0], ccidDriver.sCcidCommand.APDU[1],ccidDriver.sCcidCommand.APDU[2] );</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                    // Send commande APDU</span><br><span style="color: hsl(0, 100%, 40%);">-                    ret = ISO7816_XfrBlockTPDU_T0( ccidDriver.sCcidCommand.APDU ,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            ccidDriver.sCcidMessage.abData,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            ccidDriver.sCcidCommand.wLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            &msglen );</span><br><span style="color: hsl(0, 100%, 40%);">-                    if (ret != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        TRACE_ERROR("APDU could not be sent: (US_CSR = 0x%x)", ret);</span><br><span style="color: hsl(0, 100%, 40%);">-                        return;</span><br><span style="color: hsl(0, 100%, 40%);">-                    }</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-                else {</span><br><span style="color: hsl(0, 100%, 40%);">-                    if (ccidDriver.ProtocolDataStructure[1] == PROTOCOL_T1) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        TRACE_DEBUG("Not supported T=1\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-                    }</span><br><span style="color: hsl(0, 100%, 40%);">-                    else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        TRACE_DEBUG("Not supported 0x%x\n\r", ccidDriver.ProtocolDataStructure[1]);</span><br><span style="color: hsl(0, 100%, 40%);">-                    }</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     // Send commande APDU</span><br><span style="color: hsl(120, 100%, 40%);">+                                 ret = ISO7816_XfrBlockTPDU_T0( ccidDriver.sCcidCommand.APDU ,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         ccidDriver.sCcidMessage.abData,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               ccidDriver.sCcidCommand.wLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              &msglen );</span><br><span style="color: hsl(120, 100%, 40%);">+                                        if (ret != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                           TRACE_ERROR("APDU could not be sent: (US_CSR = 0x%x)", ret);</span><br><span style="color: hsl(120, 100%, 40%);">+                                        return;</span><br><span style="color: hsl(120, 100%, 40%);">+                                   }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                             else {</span><br><span style="color: hsl(120, 100%, 40%);">+                                        if (ccidDriver.ProtocolDataStructure[1] == PROTOCOL_T1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                         TRACE_DEBUG("Not supported T=1\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                                   }</span><br><span style="color: hsl(120, 100%, 40%);">+                                     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                                            TRACE_DEBUG("Not supported 0x%x\n\r", ccidDriver.ProtocolDataStructure[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                             break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            case CCID_FEATURES_EXC_APDU:</span><br><span style="color: hsl(0, 100%, 40%);">-                TRACE_DEBUG("Not supported CCID_FEATURES_EXC_APDU\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(120, 100%, 40%);">+                    case CCID_FEATURES_EXC_APDU:</span><br><span style="color: hsl(120, 100%, 40%);">+                          TRACE_DEBUG("Not supported CCID_FEATURES_EXC_APDU\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                            break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            default:</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+                 default:</span><br><span style="color: hsl(120, 100%, 40%);">+                              break;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.wLength = msglen;</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("USB: 0x%X, 0x%X, 0x%X, 0x%X, 0x%X\n\r", ccidDriver.sCcidMessage.abData[0], </span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    ccidDriver.sCcidMessage.abData[1], </span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    ccidDriver.sCcidMessage.abData[2], </span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    ccidDriver.sCcidMessage.abData[3],</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    ccidDriver.sCcidMessage.abData[4] );</span><br><span style="color: hsl(0, 100%, 40%);">-     RDRtoPCDatablock();</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.wLength = msglen;</span><br><span style="color: hsl(120, 100%, 40%);">+     TRACE_DEBUG("USB: 0x%X, 0x%X, 0x%X, 0x%X, 0x%X\n\r", ccidDriver.sCcidMessage.abData[0], </span><br><span style="color: hsl(120, 100%, 40%);">+                                                                                    ccidDriver.sCcidMessage.abData[1], </span><br><span style="color: hsl(120, 100%, 40%);">+                                                                                   ccidDriver.sCcidMessage.abData[2], </span><br><span style="color: hsl(120, 100%, 40%);">+                                                                                   ccidDriver.sCcidMessage.abData[3],</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                                    ccidDriver.sCcidMessage.abData[4] );</span><br><span style="color: hsl(120, 100%, 40%);">+   RDRtoPCDatablock();</span><br><span> </span><br><span> }</span><br><span> </span><br><span>@@ -497,21 +497,21 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRGetParameters( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // We support only one slot</span><br><span style="color: hsl(120, 100%, 40%);">+        // We support only one slot</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // bmIccStatus</span><br><span style="color: hsl(0, 100%, 40%);">-    if( ISO7816_StatusReset() ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        // 0: An ICC is present and active (power is on and stable, RST is inactive</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(0, 100%, 40%);">-        // 1: An ICC is present and inactive (not activated or shut down by hardware error)</span><br><span style="color: hsl(0, 100%, 40%);">-        ccidDriver.sCcidMessage.bStatus = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+  // bmIccStatus</span><br><span style="color: hsl(120, 100%, 40%);">+        if( ISO7816_StatusReset() ) {</span><br><span style="color: hsl(120, 100%, 40%);">+         // 0: An ICC is present and active (power is on and stable, RST is inactive</span><br><span style="color: hsl(120, 100%, 40%);">+           ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                // 1: An ICC is present and inactive (not activated or shut down by hardware error)</span><br><span style="color: hsl(120, 100%, 40%);">+           ccidDriver.sCcidMessage.bStatus = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCParameters();</span><br><span style="color: hsl(120, 100%, 40%);">+ RDRtoPCParameters();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -520,12 +520,12 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRResetParameters( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+       TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.SlotStatus = ICC_NOT_PRESENT;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = ccidDriver.SlotStatus;</span><br><span style="color: hsl(120, 100%, 40%);">+       ccidDriver.SlotStatus = ICC_NOT_PRESENT;</span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.sCcidMessage.bStatus = ccidDriver.SlotStatus;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCParameters();</span><br><span style="color: hsl(120, 100%, 40%);">+  RDRtoPCParameters();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -534,13 +534,13 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRSetParameters( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.SlotStatus = ccidDriver.sCcidCommand.bSlot;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = ccidDriver.SlotStatus;</span><br><span style="color: hsl(0, 100%, 40%);">-    // Not all feature supported</span><br><span style="color: hsl(120, 100%, 40%);">+ ccidDriver.SlotStatus = ccidDriver.sCcidCommand.bSlot;</span><br><span style="color: hsl(120, 100%, 40%);">+        ccidDriver.sCcidMessage.bStatus = ccidDriver.SlotStatus;</span><br><span style="color: hsl(120, 100%, 40%);">+      // Not all feature supported</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCParameters();</span><br><span style="color: hsl(120, 100%, 40%);">+      RDRtoPCParameters();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -551,13 +551,13 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDREscape( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+        TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // If needed by the user</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_Escape();</span><br><span style="color: hsl(120, 100%, 40%);">+      // If needed by the user</span><br><span style="color: hsl(120, 100%, 40%);">+      ISO7816_Escape();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // stub, return all value send</span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCEscape( ccidDriver.sCcidCommand.wLength, ccidDriver.sCcidCommand.APDU);    </span><br><span style="color: hsl(120, 100%, 40%);">+ // stub, return all value send</span><br><span style="color: hsl(120, 100%, 40%);">+        RDRtoPCEscape( ccidDriver.sCcidCommand.wLength, ccidDriver.sCcidCommand.APDU);    </span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -566,18 +566,18 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRICCClock( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+        TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if( 0 == ccidDriver.sCcidCommand.bSpecific_0 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        // restarts the clock</span><br><span style="color: hsl(0, 100%, 40%);">-        ISO7816_RestartClock();</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(0, 100%, 40%);">-        // stop clock in the state shown in the bClockStop field</span><br><span style="color: hsl(0, 100%, 40%);">-        ISO7816_StopClock();</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+       if( 0 == ccidDriver.sCcidCommand.bSpecific_0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+              // restarts the clock</span><br><span style="color: hsl(120, 100%, 40%);">+         ISO7816_RestartClock();</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                // stop clock in the state shown in the bClockStop field</span><br><span style="color: hsl(120, 100%, 40%);">+              ISO7816_StopClock();</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCSlotStatus( );    </span><br><span style="color: hsl(120, 100%, 40%);">+    RDRtoPCSlotStatus( );    </span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -587,22 +587,22 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRtoAPDU( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bmChanges;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bClassGetResponse;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bClassEnvelope;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char bmChanges;</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned char bClassGetResponse;</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned char bClassEnvelope;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO(".");</span><br><span style="color: hsl(120, 100%, 40%);">+       TRACE_INFO(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if( configurationDescriptorsFS->ccid.dwFeatures == (CCID_FEATURES_EXC_SAPDU|CCID_FEATURES_EXC_APDU) ) {</span><br><span style="color: hsl(120, 100%, 40%);">+  if( configurationDescriptorsFS->ccid.dwFeatures == (CCID_FEATURES_EXC_SAPDU|CCID_FEATURES_EXC_APDU) ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        bmChanges = ccidDriver.sCcidCommand.bSpecific_0;</span><br><span style="color: hsl(0, 100%, 40%);">-        bClassGetResponse = ccidDriver.sCcidCommand.bSpecific_1;</span><br><span style="color: hsl(0, 100%, 40%);">-        bClassEnvelope = ccidDriver.sCcidCommand.bSpecific_2;</span><br><span style="color: hsl(120, 100%, 40%);">+           bmChanges = ccidDriver.sCcidCommand.bSpecific_0;</span><br><span style="color: hsl(120, 100%, 40%);">+              bClassGetResponse = ccidDriver.sCcidCommand.bSpecific_1;</span><br><span style="color: hsl(120, 100%, 40%);">+              bClassEnvelope = ccidDriver.sCcidCommand.bSpecific_2;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        ISO7816_toAPDU();</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+               ISO7816_toAPDU();</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCSlotStatus();    </span><br><span style="color: hsl(120, 100%, 40%);">+     RDRtoPCSlotStatus();    </span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -612,9 +612,9 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRSecure( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+      TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("For user\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+     TRACE_DEBUG("For user\n\r");</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -627,10 +627,10 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRMechanical( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("Not implemented\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_DEBUG("Not implemented\n\r");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCSlotStatus();</span><br><span style="color: hsl(120, 100%, 40%);">+     RDRtoPCSlotStatus();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -641,9 +641,9 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRAbort( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCSlotStatus();</span><br><span style="color: hsl(120, 100%, 40%);">+       RDRtoPCSlotStatus();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -653,24 +653,24 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void PCtoRDRSetDataRateAndClockFrequency( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int dwClockFrequency;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int dwDataRate;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned int dwClockFrequency;</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned int dwDataRate;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    dwClockFrequency = ccidDriver.sCcidCommand.APDU[0]</span><br><span style="color: hsl(0, 100%, 40%);">-                     + (ccidDriver.sCcidCommand.APDU[1]<<8)</span><br><span style="color: hsl(0, 100%, 40%);">-                     + (ccidDriver.sCcidCommand.APDU[2]<<16)</span><br><span style="color: hsl(0, 100%, 40%);">-                     + (ccidDriver.sCcidCommand.APDU[3]<<24);</span><br><span style="color: hsl(120, 100%, 40%);">+   dwClockFrequency = ccidDriver.sCcidCommand.APDU[0]</span><br><span style="color: hsl(120, 100%, 40%);">+                                     + (ccidDriver.sCcidCommand.APDU[1]<<8)</span><br><span style="color: hsl(120, 100%, 40%);">+                                  + (ccidDriver.sCcidCommand.APDU[2]<<16)</span><br><span style="color: hsl(120, 100%, 40%);">+                                         + (ccidDriver.sCcidCommand.APDU[3]<<24);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    dwDataRate = ccidDriver.sCcidCommand.APDU[4]</span><br><span style="color: hsl(0, 100%, 40%);">-               + (ccidDriver.sCcidCommand.APDU[5]<<8)</span><br><span style="color: hsl(0, 100%, 40%);">-               + (ccidDriver.sCcidCommand.APDU[6]<<16)</span><br><span style="color: hsl(0, 100%, 40%);">-               + (ccidDriver.sCcidCommand.APDU[7]<<24);</span><br><span style="color: hsl(120, 100%, 40%);">+       dwDataRate = ccidDriver.sCcidCommand.APDU[4]</span><br><span style="color: hsl(120, 100%, 40%);">+                     + (ccidDriver.sCcidCommand.APDU[5]<<8)</span><br><span style="color: hsl(120, 100%, 40%);">+                          + (ccidDriver.sCcidCommand.APDU[6]<<16)</span><br><span style="color: hsl(120, 100%, 40%);">+                         + (ccidDriver.sCcidCommand.APDU[7]<<24);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_SetDataRateandClockFrequency( dwClockFrequency, dwDataRate );</span><br><span style="color: hsl(120, 100%, 40%);">+        ISO7816_SetDataRateandClockFrequency( dwClockFrequency, dwDataRate );</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    RDRtoPCDataRateAndClockFrequency( dwClockFrequency, dwDataRate );</span><br><span style="color: hsl(120, 100%, 40%);">+        RDRtoPCDataRateAndClockFrequency( dwClockFrequency, dwDataRate );</span><br><span> </span><br><span> }</span><br><span> </span><br><span>@@ -679,20 +679,20 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void vCCIDCommandNotSupported( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    // Command not supported</span><br><span style="color: hsl(0, 100%, 40%);">-    // vCCIDReportError(CMD_NOT_SUPPORTED);</span><br><span style="color: hsl(120, 100%, 40%);">+        // Command not supported</span><br><span style="color: hsl(120, 100%, 40%);">+      // vCCIDReportError(CMD_NOT_SUPPORTED);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("CMD_NOT_SUPPORTED\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+        TRACE_DEBUG("CMD_NOT_SUPPORTED\n\r");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Header fields settings</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_SLOTSTATUS;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.wLength      = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSpecific    = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    // Header fields settings</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bMessageType = RDR_TO_PC_SLOTSTATUS;</span><br><span style="color: hsl(120, 100%, 40%);">+  ccidDriver.sCcidMessage.wLength      = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.sCcidMessage.bSpecific    = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus |= ICC_CS_FAILED;</span><br><span style="color: hsl(120, 100%, 40%);">+    ccidDriver.sCcidMessage.bStatus |= ICC_CS_FAILED;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Send the response to the host</span><br><span style="color: hsl(0, 100%, 40%);">-    //vCCIDSendResponse();</span><br><span style="color: hsl(120, 100%, 40%);">+   // Send the response to the host</span><br><span style="color: hsl(120, 100%, 40%);">+      //vCCIDSendResponse();</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -700,15 +700,15 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void vCCIDSendResponse( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bStatus;</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned char bStatus;</span><br><span style="color: hsl(120, 100%, 40%);">+        TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    do {</span><br><span style="color: hsl(0, 100%, 40%);">-        bStatus = CCID_Write((void*)&ccidDriver.sCcidMessage,</span><br><span style="color: hsl(0, 100%, 40%);">-                              ccidDriver.sCcidMessage.bSizeToSend, 0, 0 );</span><br><span style="color: hsl(0, 100%, 40%);">-    } while (bStatus != USBD_STATUS_SUCCESS);</span><br><span style="color: hsl(120, 100%, 40%);">+       do {</span><br><span style="color: hsl(120, 100%, 40%);">+          bStatus = CCID_Write((void*)&ccidDriver.sCcidMessage,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               ccidDriver.sCcidMessage.bSizeToSend, 0, 0 );</span><br><span style="color: hsl(120, 100%, 40%);">+        } while (bStatus != USBD_STATUS_SUCCESS);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("bStatus: 0x%x\n\r", bStatus);</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG("bStatus: 0x%x\n\r", bStatus);</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -717,133 +717,133 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void CCIDCommandDispatcher( void *pArg, uint8_t status, uint32_t transferred, uint32_t remaining )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char MessageToSend = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char MessageToSend = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != USBD_STATUS_SUCCESS) {</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_ERROR("USB error: %d", status);</span><br><span style="color: hsl(0, 100%, 40%);">-        return;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("Command: 0x%X 0x%x 0x%X 0x%X 0x%X 0x%X 0x%X\n\r\n\r",</span><br><span style="color: hsl(0, 100%, 40%);">-                   (unsigned int)ccidDriver.sCcidCommand.bMessageType,</span><br><span style="color: hsl(0, 100%, 40%);">-                   (unsigned int)ccidDriver.sCcidCommand.wLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                   (unsigned int)ccidDriver.sCcidCommand.bSlot,</span><br><span style="color: hsl(0, 100%, 40%);">-                   (unsigned int)ccidDriver.sCcidCommand.bSeq,</span><br><span style="color: hsl(0, 100%, 40%);">-                   (unsigned int)ccidDriver.sCcidCommand.bSpecific_0,</span><br><span style="color: hsl(0, 100%, 40%);">-                   (unsigned int)ccidDriver.sCcidCommand.bSpecific_1,</span><br><span style="color: hsl(0, 100%, 40%);">-                   (unsigned int)ccidDriver.sCcidCommand.bSpecific_2);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (status != USBD_STATUS_SUCCESS) {</span><br><span style="color: hsl(120, 100%, 40%);">+          TRACE_ERROR("USB error: %d", status);</span><br><span style="color: hsl(120, 100%, 40%);">+               return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     TRACE_DEBUG("Command: 0x%X 0x%x 0x%X 0x%X 0x%X 0x%X 0x%X\n\r\n\r",</span><br><span style="color: hsl(120, 100%, 40%);">+                             (unsigned int)ccidDriver.sCcidCommand.bMessageType,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   (unsigned int)ccidDriver.sCcidCommand.wLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                (unsigned int)ccidDriver.sCcidCommand.bSlot,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  (unsigned int)ccidDriver.sCcidCommand.bSeq,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   (unsigned int)ccidDriver.sCcidCommand.bSpecific_0,</span><br><span style="color: hsl(120, 100%, 40%);">+                            (unsigned int)ccidDriver.sCcidCommand.bSpecific_1,</span><br><span style="color: hsl(120, 100%, 40%);">+                            (unsigned int)ccidDriver.sCcidCommand.bSpecific_2);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Check the slot number</span><br><span style="color: hsl(0, 100%, 40%);">-    if ( ccidDriver.sCcidCommand.bSlot > 0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+       // Check the slot number</span><br><span style="color: hsl(120, 100%, 40%);">+      if ( ccidDriver.sCcidCommand.bSlot > 0 ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_ERROR("BAD_SLOT_NUMBER\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+           TRACE_ERROR("BAD_SLOT_NUMBER\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("typ=0x%X\n\r", ccidDriver.sCcidCommand.bMessageType);</span><br><span style="color: hsl(120, 100%, 40%);">+  TRACE_INFO("typ=0x%X\n\r", ccidDriver.sCcidCommand.bMessageType);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bStatus = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       ccidDriver.sCcidMessage.bStatus = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSeq  = ccidDriver.sCcidCommand.bSeq;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSlot = ccidDriver.sCcidCommand.bSlot;</span><br><span style="color: hsl(120, 100%, 40%);">+   ccidDriver.sCcidMessage.bSeq  = ccidDriver.sCcidCommand.bSeq;</span><br><span style="color: hsl(120, 100%, 40%);">+ ccidDriver.sCcidMessage.bSlot = ccidDriver.sCcidCommand.bSlot;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.sCcidMessage.bSizeToSend = sizeof(S_ccid_bulk_in_header)-(ABDATA_SIZE+1);</span><br><span style="color: hsl(120, 100%, 40%);">+    ccidDriver.sCcidMessage.bSizeToSend = sizeof(S_ccid_bulk_in_header)-(ABDATA_SIZE+1);</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Command dispatcher</span><br><span style="color: hsl(0, 100%, 40%);">-    switch ( ccidDriver.sCcidCommand.bMessageType ) {</span><br><span style="color: hsl(120, 100%, 40%);">+    // Command dispatcher</span><br><span style="color: hsl(120, 100%, 40%);">+ switch ( ccidDriver.sCcidCommand.bMessageType ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_ICCPOWERON:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRIccPowerOn();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+               case PC_TO_RDR_ICCPOWERON:</span><br><span style="color: hsl(120, 100%, 40%);">+                    PCtoRDRIccPowerOn();</span><br><span style="color: hsl(120, 100%, 40%);">+                  MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_ICCPOWEROFF:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRIccPowerOff();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case PC_TO_RDR_ICCPOWEROFF:</span><br><span style="color: hsl(120, 100%, 40%);">+                   PCtoRDRIccPowerOff();</span><br><span style="color: hsl(120, 100%, 40%);">+                 MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_GETSLOTSTATUS:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRGetSlotStatus();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+            case PC_TO_RDR_GETSLOTSTATUS:</span><br><span style="color: hsl(120, 100%, 40%);">+                 PCtoRDRGetSlotStatus();</span><br><span style="color: hsl(120, 100%, 40%);">+                       MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_XFRBLOCK:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRXfrBlock();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+              case PC_TO_RDR_XFRBLOCK:</span><br><span style="color: hsl(120, 100%, 40%);">+                      PCtoRDRXfrBlock();</span><br><span style="color: hsl(120, 100%, 40%);">+                    MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_GETPARAMETERS:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRGetParameters();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+            case PC_TO_RDR_GETPARAMETERS:</span><br><span style="color: hsl(120, 100%, 40%);">+                 PCtoRDRGetParameters();</span><br><span style="color: hsl(120, 100%, 40%);">+                       MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_RESETPARAMETERS:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRResetParameters();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case PC_TO_RDR_RESETPARAMETERS:</span><br><span style="color: hsl(120, 100%, 40%);">+                       PCtoRDRResetParameters();</span><br><span style="color: hsl(120, 100%, 40%);">+                     MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_SETPARAMETERS:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRSetParameters();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+            case PC_TO_RDR_SETPARAMETERS:</span><br><span style="color: hsl(120, 100%, 40%);">+                 PCtoRDRSetParameters();</span><br><span style="color: hsl(120, 100%, 40%);">+                       MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_ESCAPE:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDREscape();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+          case PC_TO_RDR_ESCAPE:</span><br><span style="color: hsl(120, 100%, 40%);">+                        PCtoRDREscape();</span><br><span style="color: hsl(120, 100%, 40%);">+                      MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_ICCCLOCK:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRICCClock();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+              case PC_TO_RDR_ICCCLOCK:</span><br><span style="color: hsl(120, 100%, 40%);">+                      PCtoRDRICCClock();</span><br><span style="color: hsl(120, 100%, 40%);">+                    MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_T0APDU:</span><br><span style="color: hsl(0, 100%, 40%);">-            // Only CCIDs reporting a short or extended APDU level in the dwFeatures </span><br><span style="color: hsl(0, 100%, 40%);">-            // field of the CCID class descriptor may take this command into account.</span><br><span style="color: hsl(0, 100%, 40%);">-            if( (CCID_FEATURES_EXC_SAPDU == (CCID_FEATURES_EXC_SAPDU&configurationDescriptorsFS->ccid.dwFeatures))</span><br><span style="color: hsl(0, 100%, 40%);">-            || (CCID_FEATURES_EXC_APDU  == (CCID_FEATURES_EXC_APDU &configurationDescriptorsFS->ccid.dwFeatures)) ) {</span><br><span style="color: hsl(120, 100%, 40%);">+               case PC_TO_RDR_T0APDU:</span><br><span style="color: hsl(120, 100%, 40%);">+                        // Only CCIDs reporting a short or extended APDU level in the dwFeatures </span><br><span style="color: hsl(120, 100%, 40%);">+                     // field of the CCID class descriptor may take this command into account.</span><br><span style="color: hsl(120, 100%, 40%);">+                     if( (CCID_FEATURES_EXC_SAPDU == (CCID_FEATURES_EXC_SAPDU&configurationDescriptorsFS->ccid.dwFeatures))</span><br><span style="color: hsl(120, 100%, 40%);">+                 || (CCID_FEATURES_EXC_APDU  == (CCID_FEATURES_EXC_APDU &configurationDescriptorsFS->ccid.dwFeatures)) ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                // command supported</span><br><span style="color: hsl(0, 100%, 40%);">-                PCtoRDRtoAPDU();</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            else {</span><br><span style="color: hsl(0, 100%, 40%);">-                // command not supported</span><br><span style="color: hsl(0, 100%, 40%);">-                TRACE_INFO("Not supported: PC_TO_RDR_T0APDU\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-                vCCIDCommandNotSupported();</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+                           // command supported</span><br><span style="color: hsl(120, 100%, 40%);">+                          PCtoRDRtoAPDU();</span><br><span style="color: hsl(120, 100%, 40%);">+                      }</span><br><span style="color: hsl(120, 100%, 40%);">+                     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                                // command not supported</span><br><span style="color: hsl(120, 100%, 40%);">+                              TRACE_INFO("Not supported: PC_TO_RDR_T0APDU\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                          vCCIDCommandNotSupported();</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+                     MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_SECURE:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRSecure();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+          case PC_TO_RDR_SECURE:</span><br><span style="color: hsl(120, 100%, 40%);">+                        PCtoRDRSecure();</span><br><span style="color: hsl(120, 100%, 40%);">+                      MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_MECHANICAL:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRMechanical();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+          case PC_TO_RDR_MECHANICAL:</span><br><span style="color: hsl(120, 100%, 40%);">+                    PCtoRDRMechanical();</span><br><span style="color: hsl(120, 100%, 40%);">+                  MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_ABORT:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRAbort();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+            case PC_TO_RDR_ABORT:</span><br><span style="color: hsl(120, 100%, 40%);">+                 PCtoRDRAbort();</span><br><span style="color: hsl(120, 100%, 40%);">+                       MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        case PC_TO_RDR_SETDATARATEANDCLOCKFREQUENCY:</span><br><span style="color: hsl(0, 100%, 40%);">-            PCtoRDRSetDataRateAndClockFrequency();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+              case PC_TO_RDR_SETDATARATEANDCLOCKFREQUENCY:</span><br><span style="color: hsl(120, 100%, 40%);">+                  PCtoRDRSetDataRateAndClockFrequency();</span><br><span style="color: hsl(120, 100%, 40%);">+                        MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        default:</span><br><span style="color: hsl(0, 100%, 40%);">-            TRACE_DEBUG("default: Not supported: 0x%X\n\r", ccidDriver.sCcidCommand.bMessageType);</span><br><span style="color: hsl(0, 100%, 40%);">-            vCCIDCommandNotSupported();</span><br><span style="color: hsl(0, 100%, 40%);">-            MessageToSend = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(120, 100%, 40%);">+         default:</span><br><span style="color: hsl(120, 100%, 40%);">+                      TRACE_DEBUG("default: Not supported: 0x%X\n\r", ccidDriver.sCcidCommand.bMessageType);</span><br><span style="color: hsl(120, 100%, 40%);">+                      vCCIDCommandNotSupported();</span><br><span style="color: hsl(120, 100%, 40%);">+                   MessageToSend = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if( MessageToSend == 1 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        vCCIDSendResponse();</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+  if( MessageToSend == 1 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+            vCCIDSendResponse();</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -853,49 +853,49 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> static void CCID_RequestHandler(const USBGenericRequest *pRequest)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("CCID_RHl\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+       TRACE_DEBUG("CCID_RHl\n\r");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Check if this is a class request</span><br><span style="color: hsl(0, 100%, 40%);">-    if (USBGenericRequest_GetType(pRequest) == USBGenericRequest_CLASS) {</span><br><span style="color: hsl(120, 100%, 40%);">+    // Check if this is a class request</span><br><span style="color: hsl(120, 100%, 40%);">+   if (USBGenericRequest_GetType(pRequest) == USBGenericRequest_CLASS) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // Check if the request is supported</span><br><span style="color: hsl(0, 100%, 40%);">-        switch (USBGenericRequest_GetRequest(pRequest)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                // Check if the request is supported</span><br><span style="color: hsl(120, 100%, 40%);">+          switch (USBGenericRequest_GetRequest(pRequest)) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            case CCIDGenericRequest_ABORT:</span><br><span style="color: hsl(0, 100%, 40%);">-                TRACE_DEBUG("CCIDGenericRequest_ABORT\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(120, 100%, 40%);">+                   case CCIDGenericRequest_ABORT:</span><br><span style="color: hsl(120, 100%, 40%);">+                                TRACE_DEBUG("CCIDGenericRequest_ABORT\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                                break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            case CCIDGenericRequest_GET_CLOCK_FREQUENCIES:</span><br><span style="color: hsl(0, 100%, 40%);">-                TRACE_DEBUG("Not supported: CCIDGenericRequest_GET_CLOCK_FREQUENCIES\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-                // A CCID with bNumClockSupported equal to 00h does not have </span><br><span style="color: hsl(0, 100%, 40%);">-                // to support this request</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        case CCIDGenericRequest_GET_CLOCK_FREQUENCIES:</span><br><span style="color: hsl(120, 100%, 40%);">+                                TRACE_DEBUG("Not supported: CCIDGenericRequest_GET_CLOCK_FREQUENCIES\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                         // A CCID with bNumClockSupported equal to 00h does not have </span><br><span style="color: hsl(120, 100%, 40%);">+                         // to support this request</span><br><span style="color: hsl(120, 100%, 40%);">+                            break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            case CCIDGenericRequest_GET_DATA_RATES:</span><br><span style="color: hsl(0, 100%, 40%);">-                TRACE_DEBUG("Not supported: CCIDGenericRequest_GET_DATA_RATES\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-                // A CCID with bNumDataRatesSupported equal to 00h does not have </span><br><span style="color: hsl(0, 100%, 40%);">-                // to support this request.</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(120, 100%, 40%);">+                 case CCIDGenericRequest_GET_DATA_RATES:</span><br><span style="color: hsl(120, 100%, 40%);">+                               TRACE_DEBUG("Not supported: CCIDGenericRequest_GET_DATA_RATES\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                                // A CCID with bNumDataRatesSupported equal to 00h does not have </span><br><span style="color: hsl(120, 100%, 40%);">+                             // to support this request.</span><br><span style="color: hsl(120, 100%, 40%);">+                           break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            default:</span><br><span style="color: hsl(0, 100%, 40%);">-                TRACE_WARNING( "CCIDDriver_RequestHandler: Unsupported request (%d)\n\r",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    USBGenericRequest_GetRequest(pRequest));</span><br><span style="color: hsl(0, 100%, 40%);">-                USBD_Stall(0);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     default:</span><br><span style="color: hsl(120, 100%, 40%);">+                              TRACE_WARNING( "CCIDDriver_RequestHandler: Unsupported request (%d)\n\r",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                   USBGenericRequest_GetRequest(pRequest));</span><br><span style="color: hsl(120, 100%, 40%);">+                              USBD_Stall(0);</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    else if (USBGenericRequest_GetType(pRequest) == USBGenericRequest_STANDARD) {</span><br><span style="color: hsl(120, 100%, 40%);">+        else if (USBGenericRequest_GetType(pRequest) == USBGenericRequest_STANDARD) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // Forward request to the standard handler</span><br><span style="color: hsl(0, 100%, 40%);">-        USBDDriver_RequestHandler(USBD_GetDriver(), pRequest);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+              // Forward request to the standard handler</span><br><span style="color: hsl(120, 100%, 40%);">+            USBDDriver_RequestHandler(USBD_GetDriver(), pRequest);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // Unsupported request type</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_WARNING( "CCIDDriver_RequestHandler: Unsupported request type (%d)\n\r",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    USBGenericRequest_GetType(pRequest));</span><br><span style="color: hsl(0, 100%, 40%);">-        USBD_Stall(0);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+             // Unsupported request type</span><br><span style="color: hsl(120, 100%, 40%);">+           TRACE_WARNING( "CCIDDriver_RequestHandler: Unsupported request type (%d)\n\r",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                      USBGenericRequest_GetType(pRequest));</span><br><span style="color: hsl(120, 100%, 40%);">+         USBD_Stall(0);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -910,7 +910,7 @@</span><br><span> // not static function</span><br><span> void USBDCallbacks_RequestReceived(const USBGenericRequest *request)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    CCID_RequestHandler(request);</span><br><span style="color: hsl(120, 100%, 40%);">+  CCID_RequestHandler(request);</span><br><span> }</span><br><span> #endif</span><br><span> </span><br><span>@@ -920,17 +920,17 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> void CCID_SmartCardRequest( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char bStatus;</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("CCID_req\n");</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char bStatus;</span><br><span style="color: hsl(120, 100%, 40%);">+        TRACE_DEBUG("CCID_req\n");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    do {</span><br><span style="color: hsl(120, 100%, 40%);">+      do {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        bStatus = CCID_Read( (void*)&ccidDriver.sCcidCommand,</span><br><span style="color: hsl(0, 100%, 40%);">-                             sizeof(S_ccid_bulk_out_header),</span><br><span style="color: hsl(0, 100%, 40%);">-                             (TransferCallback)&CCIDCommandDispatcher,</span><br><span style="color: hsl(0, 100%, 40%);">-                             (void*)0 );</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    while (0);</span><br><span style="color: hsl(120, 100%, 40%);">+            bStatus = CCID_Read( (void*)&ccidDriver.sCcidCommand,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              sizeof(S_ccid_bulk_out_header),</span><br><span style="color: hsl(120, 100%, 40%);">+                                               (TransferCallback)&CCIDCommandDispatcher,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 (void*)0 );</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     while (0);</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -943,11 +943,11 @@</span><br><span> /// \return USBD_STATUS_LOCKED or USBD_STATUS_SUCCESS</span><br><span> //------------------------------------------------------------------------------</span><br><span> unsigned char CCID_Read(void *pBuffer,</span><br><span style="color: hsl(0, 100%, 40%);">-                        unsigned int dLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                        TransferCallback fCallback,</span><br><span style="color: hsl(0, 100%, 40%);">-                        void *pArgument)</span><br><span style="color: hsl(120, 100%, 40%);">+                                            unsigned int dLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         TransferCallback fCallback,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           void *pArgument)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    return USBD_Read(CCID_EPT_DATA_OUT, pBuffer, dLength, fCallback, pArgument);</span><br><span style="color: hsl(120, 100%, 40%);">+     return USBD_Read(CCID_EPT_DATA_OUT, pBuffer, dLength, fCallback, pArgument);</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -959,11 +959,11 @@</span><br><span> /// \return USBD_STATUS_LOCKED or USBD_STATUS_SUCCESS</span><br><span> //------------------------------------------------------------------------------</span><br><span> unsigned char CCID_Write(void *pBuffer,</span><br><span style="color: hsl(0, 100%, 40%);">-                         unsigned int dLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                         TransferCallback fCallback,</span><br><span style="color: hsl(0, 100%, 40%);">-                         void *pArgument)</span><br><span style="color: hsl(120, 100%, 40%);">+                                       unsigned int dLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         TransferCallback fCallback,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           void *pArgument)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    return USBD_Write(CCID_EPT_DATA_IN, pBuffer, dLength, fCallback, pArgument);</span><br><span style="color: hsl(120, 100%, 40%);">+    return USBD_Write(CCID_EPT_DATA_IN, pBuffer, dLength, fCallback, pArgument);</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -973,15 +973,15 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> unsigned char CCID_Insertion( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+     TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Build the Interrupt-IN message</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[0] = RDR_TO_PC_NOTIFYSLOTCHANGE;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[1] = ICC_INSERTED_EVENT;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.SlotStatus   = ICC_INSERTED_EVENT;</span><br><span style="color: hsl(120, 100%, 40%);">+       // Build the Interrupt-IN message</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.BufferINT[0] = RDR_TO_PC_NOTIFYSLOTCHANGE;</span><br><span style="color: hsl(120, 100%, 40%);">+ ccidDriver.BufferINT[1] = ICC_INSERTED_EVENT;</span><br><span style="color: hsl(120, 100%, 40%);">+ ccidDriver.SlotStatus   = ICC_INSERTED_EVENT;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Notify the host that a ICC is inserted</span><br><span style="color: hsl(0, 100%, 40%);">-    return USBD_Write( CCID_EPT_NOTIFICATION, ccidDriver.BufferINT, 2, 0, 0 );</span><br><span style="color: hsl(120, 100%, 40%);">+  // Notify the host that a ICC is inserted</span><br><span style="color: hsl(120, 100%, 40%);">+     return USBD_Write( CCID_EPT_NOTIFICATION, ccidDriver.BufferINT, 2, 0, 0 );</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -991,15 +991,15 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> unsigned char CCID_Removal( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Build the Interrupt-IN message</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[0] = RDR_TO_PC_NOTIFYSLOTCHANGE;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[1] = ICC_NOT_PRESENT;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.SlotStatus   = ICC_NOT_PRESENT;</span><br><span style="color: hsl(120, 100%, 40%);">+     // Build the Interrupt-IN message</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.BufferINT[0] = RDR_TO_PC_NOTIFYSLOTCHANGE;</span><br><span style="color: hsl(120, 100%, 40%);">+ ccidDriver.BufferINT[1] = ICC_NOT_PRESENT;</span><br><span style="color: hsl(120, 100%, 40%);">+    ccidDriver.SlotStatus   = ICC_NOT_PRESENT;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Notify the host that a ICC is inserted</span><br><span style="color: hsl(0, 100%, 40%);">-    return USBD_Write( CCID_EPT_NOTIFICATION, ccidDriver.BufferINT, 2, 0, 0 );</span><br><span style="color: hsl(120, 100%, 40%);">+     // Notify the host that a ICC is inserted</span><br><span style="color: hsl(120, 100%, 40%);">+     return USBD_Write( CCID_EPT_NOTIFICATION, ccidDriver.BufferINT, 2, 0, 0 );</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -1014,19 +1014,19 @@</span><br><span> /// \return USBD_STATUS_LOCKED or USBD_STATUS_SUCCESS</span><br><span> //------------------------------------------------------------------------------</span><br><span> unsigned char RDRtoPCHardwareError( unsigned char bSlot, </span><br><span style="color: hsl(0, 100%, 40%);">-                                    unsigned char bSeq, </span><br><span style="color: hsl(0, 100%, 40%);">-                                    unsigned char bHardwareErrorCode )</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     unsigned char bSeq, </span><br><span style="color: hsl(120, 100%, 40%);">+                                                  unsigned char bHardwareErrorCode )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG(".");</span><br><span style="color: hsl(120, 100%, 40%);">+        TRACE_DEBUG(".");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Build the Interrupt-IN message</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[0] = RDR_TO_PC_HARDWAREERROR;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[1] = bSlot;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[2] = bSeq;</span><br><span style="color: hsl(0, 100%, 40%);">-    ccidDriver.BufferINT[3] = bHardwareErrorCode;</span><br><span style="color: hsl(120, 100%, 40%);">+    // Build the Interrupt-IN message</span><br><span style="color: hsl(120, 100%, 40%);">+     ccidDriver.BufferINT[0] = RDR_TO_PC_HARDWAREERROR;</span><br><span style="color: hsl(120, 100%, 40%);">+    ccidDriver.BufferINT[1] = bSlot;</span><br><span style="color: hsl(120, 100%, 40%);">+      ccidDriver.BufferINT[2] = bSeq;</span><br><span style="color: hsl(120, 100%, 40%);">+       ccidDriver.BufferINT[3] = bHardwareErrorCode;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Notify the host that a ICC is inserted</span><br><span style="color: hsl(0, 100%, 40%);">-    return USBD_Write( CCID_EPT_NOTIFICATION, ccidDriver.BufferINT, 4, 0, 0 );</span><br><span style="color: hsl(120, 100%, 40%);">+  // Notify the host that a ICC is inserted</span><br><span style="color: hsl(120, 100%, 40%);">+     return USBD_Write( CCID_EPT_NOTIFICATION, ccidDriver.BufferINT, 4, 0, 0 );</span><br><span> }</span><br><span> </span><br><span> #endif /* HAVE_CCID */</span><br><span>diff --git a/firmware/libcommon/source/iso7816_4.c b/firmware/libcommon/source/iso7816_4.c</span><br><span>index 7219741..ac15306 100644</span><br><span>--- a/firmware/libcommon/source/iso7816_4.c</span><br><span>+++ b/firmware/libcommon/source/iso7816_4.c</span><br><span>@@ -76,45 +76,45 @@</span><br><span>  */</span><br><span> uint32_t ISO7816_GetChar( uint8_t *pCharToReceive, Usart_info *usart)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t status;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t timeout=0;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t status;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t timeout=0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    Usart *us_base = usart->base;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t us_id = usart->id;</span><br><span style="color: hsl(120, 100%, 40%);">+ Usart *us_base = usart->base;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t us_id = usart->id;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if( usart->state == USART_SEND ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        while((us_base->US_CSR & US_CSR_TXEMPTY) == 0) {}</span><br><span style="color: hsl(0, 100%, 40%);">-        us_base->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span style="color: hsl(0, 100%, 40%);">-        usart->state = USART_RCV;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   if( usart->state == USART_SEND ) {</span><br><span style="color: hsl(120, 100%, 40%);">+         while((us_base->US_CSR & US_CSR_TXEMPTY) == 0) {}</span><br><span style="color: hsl(120, 100%, 40%);">+              us_base->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span style="color: hsl(120, 100%, 40%);">+               usart->state = USART_RCV;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Wait USART ready for reception */</span><br><span style="color: hsl(0, 100%, 40%);">-    while( ((us_base->US_CSR & US_CSR_RXRDY) == 0) ) {</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Wait USART ready for reception */</span><br><span style="color: hsl(120, 100%, 40%);">+  while( ((us_base->US_CSR & US_CSR_RXRDY) == 0) ) {</span><br><span>    WDT_Restart(WDT);</span><br><span style="color: hsl(0, 100%, 40%);">-        if(timeout++ > 12000 * (BOARD_MCK/1000000)) {</span><br><span style="color: hsl(0, 100%, 40%);">-            TRACE_WARNING("TimeOut\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-            return( 0 );</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+            if(timeout++ > 12000 * (BOARD_MCK/1000000)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      TRACE_WARNING("TimeOut\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                       return( 0 );</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* At least one complete character has been received and US_RHR has not yet been read. */</span><br><span style="color: hsl(120, 100%, 40%);">+    /* At least one complete character has been received and US_RHR has not yet been read. */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Get a char */</span><br><span style="color: hsl(0, 100%, 40%);">-    *pCharToReceive = ((us_base->US_RHR) & 0xFF);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Get a char */</span><br><span style="color: hsl(120, 100%, 40%);">+      *pCharToReceive = ((us_base->US_RHR) & 0xFF);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    status = (us_base->US_CSR&(US_CSR_OVRE|US_CSR_FRAME|</span><br><span style="color: hsl(0, 100%, 40%);">-                                      US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|</span><br><span style="color: hsl(0, 100%, 40%);">-                                      (1<<10)));</span><br><span style="color: hsl(120, 100%, 40%);">+    status = (us_base->US_CSR&(US_CSR_OVRE|US_CSR_FRAME|</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       (1<<10)));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != 0 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_DEBUG("R:0x%" PRIX32 "\n\r", status); </span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_DEBUG("R:0x%" PRIX32 "\n\r", us_base->US_CSR);</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_DEBUG("Nb:0x%" PRIX32 "\n\r", us_base->US_NER );</span><br><span style="color: hsl(0, 100%, 40%);">-        us_base->US_CR = US_CR_RSTSTA;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   if (status != 0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+           TRACE_DEBUG("R:0x%" PRIX32 "\n\r", status); </span><br><span style="color: hsl(120, 100%, 40%);">+              TRACE_DEBUG("R:0x%" PRIX32 "\n\r", us_base->US_CSR);</span><br><span style="color: hsl(120, 100%, 40%);">+           TRACE_DEBUG("Nb:0x%" PRIX32 "\n\r", us_base->US_NER );</span><br><span style="color: hsl(120, 100%, 40%);">+         us_base->US_CR = US_CR_RSTSTA;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Return status */</span><br><span style="color: hsl(0, 100%, 40%);">-    return( status );</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Return status */</span><br><span style="color: hsl(120, 100%, 40%);">+   return( status );</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -125,50 +125,50 @@</span><br><span>  */</span><br><span> uint32_t ISO7816_SendChar( uint8_t CharToSend, Usart_info *usart )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t status;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t status;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    Usart *us_base = usart->base;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t us_id = usart->id;</span><br><span style="color: hsl(120, 100%, 40%);">+    Usart *us_base = usart->base;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t us_id = usart->id;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if( usart->state == USART_RCV ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        us_base->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span style="color: hsl(0, 100%, 40%);">-        usart->state = USART_SEND;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   if( usart->state == USART_RCV ) {</span><br><span style="color: hsl(120, 100%, 40%);">+          us_base->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span style="color: hsl(120, 100%, 40%);">+               usart->state = USART_SEND;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Wait USART ready for transmit */</span><br><span style="color: hsl(0, 100%, 40%);">-    int i = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    while((us_base->US_CSR & (US_CSR_TXRDY)) == 0)  {</span><br><span style="color: hsl(0, 100%, 40%);">-        i++;</span><br><span style="color: hsl(0, 100%, 40%);">-        if (!(i%1000000)) {</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("s: %x ", us_base->US_CSR);</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("s: %x\r\n", us_base->US_RHR & 0xFF);</span><br><span style="color: hsl(0, 100%, 40%);">-            us_base->US_CR = US_CR_RSTTX;</span><br><span style="color: hsl(0, 100%, 40%);">-            us_base->US_CR = US_CR_RSTRX;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    /* There is no character in the US_THR */</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Wait USART ready for transmit */</span><br><span style="color: hsl(120, 100%, 40%);">+   int i = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    while((us_base->US_CSR & (US_CSR_TXRDY)) == 0)  {</span><br><span style="color: hsl(120, 100%, 40%);">+              i++;</span><br><span style="color: hsl(120, 100%, 40%);">+          if (!(i%1000000)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   printf("s: %x ", us_base->US_CSR);</span><br><span style="color: hsl(120, 100%, 40%);">+                       printf("s: %x\r\n", us_base->US_RHR & 0xFF);</span><br><span style="color: hsl(120, 100%, 40%);">+                 us_base->US_CR = US_CR_RSTTX;</span><br><span style="color: hsl(120, 100%, 40%);">+                      us_base->US_CR = US_CR_RSTRX;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* There is no character in the US_THR */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Transmit a char */</span><br><span style="color: hsl(0, 100%, 40%);">-    us_base->US_THR = CharToSend;</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Transmit a char */</span><br><span style="color: hsl(120, 100%, 40%);">+ us_base->US_THR = CharToSend;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_ERROR("Sx%02X\r\n", CharToSend);</span><br><span style="color: hsl(120, 100%, 40%);">+      TRACE_ERROR("Sx%02X\r\n", CharToSend);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    status = (us_base->US_CSR&(US_CSR_OVRE|US_CSR_FRAME|</span><br><span style="color: hsl(0, 100%, 40%);">-                                      US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|</span><br><span style="color: hsl(0, 100%, 40%);">-                                      (1<<10)));</span><br><span style="color: hsl(120, 100%, 40%);">+        status = (us_base->US_CSR&(US_CSR_OVRE|US_CSR_FRAME|</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       (1<<10)));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != 0 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_INFO("******* status: 0x%" PRIX32 " (Overrun: %" PRIX32</span><br><span style="color: hsl(0, 100%, 40%);">-                    ", NACK: %" PRIX32 ", Timeout: %" PRIX32 ", underrun: %" PRIX32 ")\n\r",</span><br><span style="color: hsl(0, 100%, 40%);">-                    status, ((status & US_CSR_OVRE)>> 5), ((status & US_CSR_NACK) >> 13),</span><br><span style="color: hsl(0, 100%, 40%);">-                    ((status & US_CSR_TIMEOUT) >> 8), ((status & (1 << 10)) >> 10));</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_INFO("E (USART CSR reg):0x%" PRIX32 "\n\r", us_base->US_CSR);</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_INFO("Nb (Number of errors):0x%" PRIX32 "\n\r", us_base->US_NER );</span><br><span style="color: hsl(0, 100%, 40%);">-        us_base->US_CR = US_CR_RSTSTA;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+  if (status != 0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+           TRACE_INFO("******* status: 0x%" PRIX32 " (Overrun: %" PRIX32</span><br><span style="color: hsl(120, 100%, 40%);">+                                     ", NACK: %" PRIX32 ", Timeout: %" PRIX32 ", underrun: %" PRIX32 ")\n\r",</span><br><span style="color: hsl(120, 100%, 40%);">+                                      status, ((status & US_CSR_OVRE)>> 5), ((status & US_CSR_NACK) >> 13),</span><br><span style="color: hsl(120, 100%, 40%);">+                                     ((status & US_CSR_TIMEOUT) >> 8), ((status & (1 << 10)) >> 10));</span><br><span style="color: hsl(120, 100%, 40%);">+            TRACE_INFO("E (USART CSR reg):0x%" PRIX32 "\n\r", us_base->US_CSR);</span><br><span style="color: hsl(120, 100%, 40%);">+            TRACE_INFO("Nb (Number of errors):0x%" PRIX32 "\n\r", us_base->US_NER );</span><br><span style="color: hsl(120, 100%, 40%);">+               us_base->US_CR = US_CR_RSTSTA;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Return status */</span><br><span style="color: hsl(0, 100%, 40%);">-    return( status );</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Return status */</span><br><span style="color: hsl(120, 100%, 40%);">+   return( status );</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -177,10 +177,10 @@</span><br><span>  */</span><br><span> static void ISO7816_IccPowerOn( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Set RESET Master Card */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (st_pinIso7816RstMC) {</span><br><span style="color: hsl(0, 100%, 40%);">-        PIO_Set(st_pinIso7816RstMC);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Set RESET Master Card */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (st_pinIso7816RstMC) {</span><br><span style="color: hsl(120, 100%, 40%);">+             PIO_Set(st_pinIso7816RstMC);</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> }</span><br><span> </span><br><span> /*----------------------------------------------------------------------------</span><br><span>@@ -192,10 +192,10 @@</span><br><span>  */</span><br><span> void ISO7816_IccPowerOff( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Clear RESET Master Card */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (st_pinIso7816RstMC) {</span><br><span style="color: hsl(0, 100%, 40%);">-        PIO_Clear(st_pinIso7816RstMC);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Clear RESET Master Card */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (st_pinIso7816RstMC) {</span><br><span style="color: hsl(120, 100%, 40%);">+             PIO_Clear(st_pinIso7816RstMC);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -207,159 +207,159 @@</span><br><span>  * \return              0 on success, content of US_CSR otherwise</span><br><span>  */</span><br><span> uint32_t ISO7816_XfrBlockTPDU_T0(const uint8_t *pAPDU,</span><br><span style="color: hsl(0, 100%, 40%);">-                                        uint8_t *pMessage,</span><br><span style="color: hsl(0, 100%, 40%);">-                                        uint16_t wLength,</span><br><span style="color: hsl(0, 100%, 40%);">-                                        uint16_t *retlen )</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            uint8_t *pMessage,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            uint16_t wLength,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     uint16_t *retlen )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint16_t NeNc;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint16_t indexApdu = 4;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint16_t indexMsg = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t SW1 = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t procByte;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t cmdCase;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t status = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint16_t NeNc;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint16_t indexApdu = 4;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint16_t indexMsg = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t SW1 = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint8_t procByte;</span><br><span style="color: hsl(120, 100%, 40%);">+     uint8_t cmdCase;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t status = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("pAPDU[0]=0x%X\n\r",pAPDU[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("pAPDU[1]=0x%X\n\r",pAPDU[1]);</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("pAPDU[2]=0x%X\n\r",pAPDU[2]);</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("pAPDU[3]=0x%X\n\r",pAPDU[3]);</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("pAPDU[4]=0x%X\n\r",pAPDU[4]);</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("pAPDU[5]=0x%X\n\r",pAPDU[5]);</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_INFO("wlength=%d\n\r",wLength);</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_INFO("pAPDU[0]=0x%X\n\r",pAPDU[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_INFO("pAPDU[1]=0x%X\n\r",pAPDU[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_INFO("pAPDU[2]=0x%X\n\r",pAPDU[2]);</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_INFO("pAPDU[3]=0x%X\n\r",pAPDU[3]);</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_INFO("pAPDU[4]=0x%X\n\r",pAPDU[4]);</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_INFO("pAPDU[5]=0x%X\n\r",pAPDU[5]);</span><br><span style="color: hsl(120, 100%, 40%);">+   TRACE_INFO("wlength=%d\n\r",wLength);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_SendChar( pAPDU[0], &usart_sim ); /* CLA */</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_SendChar( pAPDU[1], &usart_sim ); /* INS */</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_SendChar( pAPDU[2], &usart_sim ); /* P1 */</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_SendChar( pAPDU[3], &usart_sim ); /* P2 */</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_SendChar( pAPDU[4], &usart_sim ); /* P3 */</span><br><span style="color: hsl(120, 100%, 40%);">+       ISO7816_SendChar( pAPDU[0], &usart_sim ); /* CLA */</span><br><span style="color: hsl(120, 100%, 40%);">+       ISO7816_SendChar( pAPDU[1], &usart_sim ); /* INS */</span><br><span style="color: hsl(120, 100%, 40%);">+       ISO7816_SendChar( pAPDU[2], &usart_sim ); /* P1 */</span><br><span style="color: hsl(120, 100%, 40%);">+        ISO7816_SendChar( pAPDU[3], &usart_sim ); /* P2 */</span><br><span style="color: hsl(120, 100%, 40%);">+        ISO7816_SendChar( pAPDU[4], &usart_sim ); /* P3 */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Handle the four structures of command APDU */</span><br><span style="color: hsl(0, 100%, 40%);">-    indexApdu = 5;</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Handle the four structures of command APDU */</span><br><span style="color: hsl(120, 100%, 40%);">+      indexApdu = 5;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if( wLength == 4 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        cmdCase = CASE1;</span><br><span style="color: hsl(0, 100%, 40%);">-        NeNc = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else if( wLength == 5) {</span><br><span style="color: hsl(0, 100%, 40%);">-        cmdCase = CASE2;</span><br><span style="color: hsl(0, 100%, 40%);">-        NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(0, 100%, 40%);">-        if (NeNc == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            NeNc = 256;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else if( wLength == 6) {</span><br><span style="color: hsl(0, 100%, 40%);">-        NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(0, 100%, 40%);">-        cmdCase = CASE3;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else if( wLength == 7) {</span><br><span style="color: hsl(0, 100%, 40%);">-        NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(0, 100%, 40%);">-        if( NeNc == 0 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-            cmdCase = CASE2;</span><br><span style="color: hsl(0, 100%, 40%);">-            NeNc = (pAPDU[5]<<8)+pAPDU[6];</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(0, 100%, 40%);">-            cmdCase = CASE3;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(0, 100%, 40%);">-        NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(0, 100%, 40%);">-        if( NeNc == 0 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-            cmdCase = CASE3;</span><br><span style="color: hsl(0, 100%, 40%);">-            NeNc = (pAPDU[5]<<8)+pAPDU[6];</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(0, 100%, 40%);">-            cmdCase = CASE3;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+      if( wLength == 4 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+          cmdCase = CASE1;</span><br><span style="color: hsl(120, 100%, 40%);">+              NeNc = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     else if( wLength == 5) {</span><br><span style="color: hsl(120, 100%, 40%);">+              cmdCase = CASE2;</span><br><span style="color: hsl(120, 100%, 40%);">+              NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(120, 100%, 40%);">+             if (NeNc == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      NeNc = 256;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     else if( wLength == 6) {</span><br><span style="color: hsl(120, 100%, 40%);">+              NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(120, 100%, 40%);">+             cmdCase = CASE3;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     else if( wLength == 7) {</span><br><span style="color: hsl(120, 100%, 40%);">+              NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(120, 100%, 40%);">+             if( NeNc == 0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     cmdCase = CASE2;</span><br><span style="color: hsl(120, 100%, 40%);">+                      NeNc = (pAPDU[5]<<8)+pAPDU[6];</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        cmdCase = CASE3;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                NeNc = pAPDU[4]; /* C5 */</span><br><span style="color: hsl(120, 100%, 40%);">+             if( NeNc == 0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     cmdCase = CASE3;</span><br><span style="color: hsl(120, 100%, 40%);">+                      NeNc = (pAPDU[5]<<8)+pAPDU[6];</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        cmdCase = CASE3;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("CASE=0x%X NeNc=0x%X\n\r", cmdCase, NeNc);</span><br><span style="color: hsl(120, 100%, 40%);">+     TRACE_DEBUG("CASE=0x%X NeNc=0x%X\n\r", cmdCase, NeNc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Handle Procedure Bytes */</span><br><span style="color: hsl(0, 100%, 40%);">-    do {</span><br><span style="color: hsl(0, 100%, 40%);">-        status = ISO7816_GetChar(&procByte, &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return status;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        TRACE_INFO("procByte: 0x%X\n\r", procByte);</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Handle NULL */</span><br><span style="color: hsl(0, 100%, 40%);">-        if ( procByte == ISO_NULL_VAL ) {</span><br><span style="color: hsl(0, 100%, 40%);">-            TRACE_INFO("INS\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-            continue;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Handle SW1 */</span><br><span style="color: hsl(0, 100%, 40%);">-        else if ( ((procByte & 0xF0) ==0x60) || ((procByte & 0xF0) ==0x90) ) {</span><br><span style="color: hsl(0, 100%, 40%);">-            TRACE_INFO("SW1\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-            SW1 = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Handle INS */</span><br><span style="color: hsl(0, 100%, 40%);">-        else if ( pAPDU[1] == procByte) {</span><br><span style="color: hsl(0, 100%, 40%);">-            TRACE_INFO("HdlINS\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-            if (cmdCase == CASE2) {</span><br><span style="color: hsl(0, 100%, 40%);">-                /* receive data from card */</span><br><span style="color: hsl(0, 100%, 40%);">-                do {</span><br><span style="color: hsl(0, 100%, 40%);">-                    status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-                } while(( 0 != --NeNc) && (status == 0) );</span><br><span style="color: hsl(0, 100%, 40%);">-                if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    return status;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            else {</span><br><span style="color: hsl(0, 100%, 40%);">-                 /* Send data */</span><br><span style="color: hsl(0, 100%, 40%);">-                do {</span><br><span style="color: hsl(0, 100%, 40%);">-                    TRACE_INFO("Send %X", pAPDU[indexApdu]);</span><br><span style="color: hsl(0, 100%, 40%);">-                    ISO7816_SendChar(pAPDU[indexApdu++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-                } while( 0 != --NeNc );</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Handle INS ^ 0xff */</span><br><span style="color: hsl(0, 100%, 40%);">-        else</span><br><span style="color: hsl(0, 100%, 40%);">-        #pragma GCC diagnostic push</span><br><span style="color: hsl(0, 100%, 40%);">-        #pragma GCC diagnostic ignored "-Wsign-compare"</span><br><span style="color: hsl(0, 100%, 40%);">-        if ( pAPDU[1] == (procByte ^ 0xff)) {</span><br><span style="color: hsl(0, 100%, 40%);">-        #pragma GCC diagnostic pop</span><br><span style="color: hsl(0, 100%, 40%);">-            TRACE_INFO("HdlINS+\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-            if (cmdCase == CASE2) {</span><br><span style="color: hsl(0, 100%, 40%);">-                /* receive data from card */</span><br><span style="color: hsl(0, 100%, 40%);">-                status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-                if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    return status;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-                TRACE_INFO("Rcv: 0x%X\n\r", pMessage[indexMsg-1]);</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            else {</span><br><span style="color: hsl(0, 100%, 40%);">-                status = ISO7816_SendChar(pAPDU[indexApdu++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-                if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    return status;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            NeNc--;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(0, 100%, 40%);">-            /* ?? */</span><br><span style="color: hsl(0, 100%, 40%);">-            TRACE_INFO("procByte=0x%X\n\r", procByte);</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    } while (NeNc != 0);</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Handle Procedure Bytes */</span><br><span style="color: hsl(120, 100%, 40%);">+  do {</span><br><span style="color: hsl(120, 100%, 40%);">+          status = ISO7816_GetChar(&procByte, &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+              if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    return status;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             TRACE_INFO("procByte: 0x%X\n\r", procByte);</span><br><span style="color: hsl(120, 100%, 40%);">+         /* Handle NULL */</span><br><span style="color: hsl(120, 100%, 40%);">+             if ( procByte == ISO_NULL_VAL ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     TRACE_INFO("INS\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                      continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Handle SW1 */</span><br><span style="color: hsl(120, 100%, 40%);">+              else if ( ((procByte & 0xF0) ==0x60) || ((procByte & 0xF0) ==0x90) ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        TRACE_INFO("SW1\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                      SW1 = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Handle INS */</span><br><span style="color: hsl(120, 100%, 40%);">+              else if ( pAPDU[1] == procByte) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     TRACE_INFO("HdlINS\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                   if (cmdCase == CASE2) {</span><br><span style="color: hsl(120, 100%, 40%);">+                               /* receive data from card */</span><br><span style="color: hsl(120, 100%, 40%);">+                          do {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+                          } while(( 0 != --NeNc) && (status == 0) );</span><br><span style="color: hsl(120, 100%, 40%);">+                            if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                    return status;</span><br><span style="color: hsl(120, 100%, 40%);">+                                }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                                 /* Send data */</span><br><span style="color: hsl(120, 100%, 40%);">+                              do {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  TRACE_INFO("Send %X", pAPDU[indexApdu]);</span><br><span style="color: hsl(120, 100%, 40%);">+                                    ISO7816_SendChar(pAPDU[indexApdu++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+                         } while( 0 != --NeNc );</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Handle INS ^ 0xff */</span><br><span style="color: hsl(120, 100%, 40%);">+               else</span><br><span style="color: hsl(120, 100%, 40%);">+          #pragma GCC diagnostic push</span><br><span style="color: hsl(120, 100%, 40%);">+           #pragma GCC diagnostic ignored "-Wsign-compare"</span><br><span style="color: hsl(120, 100%, 40%);">+             if ( pAPDU[1] == (procByte ^ 0xff)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         #pragma GCC diagnostic pop</span><br><span style="color: hsl(120, 100%, 40%);">+                    TRACE_INFO("HdlINS+\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                  if (cmdCase == CASE2) {</span><br><span style="color: hsl(120, 100%, 40%);">+                               /* receive data from card */</span><br><span style="color: hsl(120, 100%, 40%);">+                          status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+                          if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                    return status;</span><br><span style="color: hsl(120, 100%, 40%);">+                                }</span><br><span style="color: hsl(120, 100%, 40%);">+                             TRACE_INFO("Rcv: 0x%X\n\r", pMessage[indexMsg-1]);</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+                     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                                status = ISO7816_SendChar(pAPDU[indexApdu++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+                                if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                    return status;</span><br><span style="color: hsl(120, 100%, 40%);">+                                }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     NeNc--;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* ?? */</span><br><span style="color: hsl(120, 100%, 40%);">+                      TRACE_INFO("procByte=0x%X\n\r", procByte);</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     } while (NeNc != 0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Status Bytes */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (SW1 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim); /* SW1 */</span><br><span style="color: hsl(0, 100%, 40%);">-        if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return status;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(0, 100%, 40%);">-        pMessage[indexMsg++] = procByte;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim); /* SW2 */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        return status;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Status Bytes */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (SW1 == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+               status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim); /* SW1 */</span><br><span style="color: hsl(120, 100%, 40%);">+                if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    return status;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                pMessage[indexMsg++] = procByte;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     status = ISO7816_GetChar(&pMessage[indexMsg++], &usart_sim); /* SW2 */</span><br><span style="color: hsl(120, 100%, 40%);">+        if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            return status;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_WARNING("SW1=0x%X, SW2=0x%X\n\r", pMessage[indexMsg-2], pMessage[indexMsg-1]);</span><br><span style="color: hsl(120, 100%, 40%);">+       TRACE_WARNING("SW1=0x%X, SW2=0x%X\n\r", pMessage[indexMsg-2], pMessage[indexMsg-1]);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    *retlen = indexMsg;</span><br><span style="color: hsl(0, 100%, 40%);">-    return status;</span><br><span style="color: hsl(120, 100%, 40%);">+   *retlen = indexMsg;</span><br><span style="color: hsl(120, 100%, 40%);">+   return status;</span><br><span> </span><br><span> }</span><br><span> </span><br><span>@@ -368,7 +368,7 @@</span><br><span>  */</span><br><span> void ISO7816_Escape( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("For user, if needed\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+     TRACE_DEBUG("For user, if needed\n\r");</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -376,8 +376,8 @@</span><br><span>  */</span><br><span> void ISO7816_RestartClock( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("ISO7816_RestartClock\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_BRGR = 13;</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG("ISO7816_RestartClock\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+    USART_SIM->US_BRGR = 13;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -385,8 +385,8 @@</span><br><span>  */</span><br><span> void ISO7816_StopClock( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("ISO7816_StopClock\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_BRGR = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      TRACE_DEBUG("ISO7816_StopClock\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+       USART_SIM->US_BRGR = 0;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -394,8 +394,8 @@</span><br><span>  */</span><br><span> void ISO7816_toAPDU( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("ISO7816_toAPDU\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("Not supported at this time\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+       TRACE_DEBUG("ISO7816_toAPDU\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+  TRACE_DEBUG("Not supported at this time\n\r");</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -406,64 +406,64 @@</span><br><span>  */</span><br><span> uint32_t ISO7816_Datablock_ATR( uint8_t* pAtr, uint8_t* pLength )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t i;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t j;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t y;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t status = 0; </span><br><span style="color: hsl(120, 100%, 40%);">+       uint32_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint32_t j;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint32_t y;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint32_t status = 0; </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    *pLength = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    *pLength = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Read ATR TS */</span><br><span style="color: hsl(0, 100%, 40%);">-    // FIXME: There should always be a check for the GetChar return value..0 means timeout</span><br><span style="color: hsl(0, 100%, 40%);">-    status = ISO7816_GetChar(&pAtr[0], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        return status;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Read ATR TS */</span><br><span style="color: hsl(120, 100%, 40%);">+     // FIXME: There should always be a check for the GetChar return value..0 means timeout</span><br><span style="color: hsl(120, 100%, 40%);">+        status = ISO7816_GetChar(&pAtr[0], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            return status;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Read ATR T0 */</span><br><span style="color: hsl(0, 100%, 40%);">-    status = ISO7816_GetChar(&pAtr[1], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        return status;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    y = pAtr[1] & 0xF0;</span><br><span style="color: hsl(0, 100%, 40%);">-    i = 2;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Read ATR T0 */</span><br><span style="color: hsl(120, 100%, 40%);">+     status = ISO7816_GetChar(&pAtr[1], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            return status;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     y = pAtr[1] & 0xF0;</span><br><span style="color: hsl(120, 100%, 40%);">+       i = 2;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Read ATR Ti */</span><br><span style="color: hsl(0, 100%, 40%);">-    while (y && (status == 0)) {</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Read ATR Ti */</span><br><span style="color: hsl(120, 100%, 40%);">+     while (y && (status == 0)) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x10) {  /* TA[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x20) {  /* TB[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x40) {  /* TC[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x80) {  /* TD[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            status = ISO7816_GetChar(&pAtr[i], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-            y =  pAtr[i++] & 0xF0;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(0, 100%, 40%);">-            y = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        return status;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+           if (y & 0x10) {  /* TA[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (y & 0x20) {  /* TB[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (y & 0x40) {  /* TC[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (y & 0x80) {  /* TD[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      status = ISO7816_GetChar(&pAtr[i], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+                       y =  pAtr[i++] & 0xF0;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+             else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        y = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            return status;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Historical Bytes */</span><br><span style="color: hsl(0, 100%, 40%);">-    y = pAtr[1] & 0x0F;</span><br><span style="color: hsl(0, 100%, 40%);">-    for( j=0; (j < y) && (status == 0); j++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Historical Bytes */</span><br><span style="color: hsl(120, 100%, 40%);">+        y = pAtr[1] & 0x0F;</span><br><span style="color: hsl(120, 100%, 40%);">+       for( j=0; (j < y) && (status == 0); j++ ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                status = ISO7816_GetChar(&pAtr[i++], &usart_sim);</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if (status != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        return status;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+        if (status != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            return status;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    *pLength = i;</span><br><span style="color: hsl(0, 100%, 40%);">-    return status;</span><br><span style="color: hsl(120, 100%, 40%);">+      *pLength = i;</span><br><span style="color: hsl(120, 100%, 40%);">+ return status;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -473,18 +473,18 @@</span><br><span>  */</span><br><span> void ISO7816_SetDataRateandClockFrequency( uint32_t dwClockFrequency, uint32_t dwDataRate )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t ClockFrequency;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t ClockFrequency;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Define the baud rate divisor register */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* CD  = MCK / SCK */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* SCK = FIDI x BAUD = 372 x 9600 */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* BOARD_MCK */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* CD = MCK/(FIDI x BAUD) = 48000000 / (372x9600) = 13 */</span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_BRGR = BOARD_MCK / (dwClockFrequency*1000);</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Define the baud rate divisor register */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* CD  = MCK / SCK */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* SCK = FIDI x BAUD = 372 x 9600 */</span><br><span style="color: hsl(120, 100%, 40%);">+  /* BOARD_MCK */</span><br><span style="color: hsl(120, 100%, 40%);">+       /* CD = MCK/(FIDI x BAUD) = 48000000 / (372x9600) = 13 */</span><br><span style="color: hsl(120, 100%, 40%);">+     USART_SIM->US_BRGR = BOARD_MCK / (dwClockFrequency*1000);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ClockFrequency = BOARD_MCK / USART_SIM->US_BRGR;</span><br><span style="color: hsl(120, 100%, 40%);">+       ClockFrequency = BOARD_MCK / USART_SIM->US_BRGR;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_FIDI = (ClockFrequency)/dwDataRate;</span><br><span style="color: hsl(120, 100%, 40%);">+       USART_SIM->US_FIDI = (ClockFrequency)/dwDataRate;</span><br><span> </span><br><span> }</span><br><span> </span><br><span>@@ -494,10 +494,10 @@</span><br><span>  */</span><br><span> uint8_t ISO7816_StatusReset( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    if (st_pinIso7816RstMC) {</span><br><span style="color: hsl(0, 100%, 40%);">-        return PIO_Get(st_pinIso7816RstMC);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        if (st_pinIso7816RstMC) {</span><br><span style="color: hsl(120, 100%, 40%);">+             return PIO_Get(st_pinIso7816RstMC);</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     return 0;</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -505,16 +505,16 @@</span><br><span>  */</span><br><span> void ISO7816_cold_reset( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    volatile uint32_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+      volatile uint32_t i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* tb: wait ??? cycles*/</span><br><span style="color: hsl(0, 100%, 40%);">-    for( i=0; i<(400*(BOARD_MCK/1000000)); i++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+        /* tb: wait ??? cycles*/</span><br><span style="color: hsl(120, 100%, 40%);">+      for( i=0; i<(400*(BOARD_MCK/1000000)); i++ ) {</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_RHR;</span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span style="color: hsl(120, 100%, 40%);">+   USART_SIM->US_RHR;</span><br><span style="color: hsl(120, 100%, 40%);">+ USART_SIM->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_IccPowerOn();</span><br><span style="color: hsl(120, 100%, 40%);">+        ISO7816_IccPowerOn();</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -522,20 +522,20 @@</span><br><span>  */</span><br><span> void ISO7816_warm_reset( void )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    volatile uint32_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+  volatile uint32_t i;</span><br><span> </span><br><span> // Clears Reset</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_IccPowerOff();</span><br><span style="color: hsl(120, 100%, 40%);">+ ISO7816_IccPowerOff();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* tb: wait ??? cycles */</span><br><span style="color: hsl(0, 100%, 40%);">-    for( i=0; i<(400*(BOARD_MCK/1000000)); i++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* tb: wait ??? cycles */</span><br><span style="color: hsl(120, 100%, 40%);">+     for( i=0; i<(400*(BOARD_MCK/1000000)); i++ ) {</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_RHR;</span><br><span style="color: hsl(0, 100%, 40%);">-    USART_SIM->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span style="color: hsl(120, 100%, 40%);">+   USART_SIM->US_RHR;</span><br><span style="color: hsl(120, 100%, 40%);">+ USART_SIM->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;</span><br><span> </span><br><span> // Sets Reset</span><br><span style="color: hsl(0, 100%, 40%);">-    ISO7816_IccPowerOn();</span><br><span style="color: hsl(120, 100%, 40%);">+       ISO7816_IccPowerOn();</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span>@@ -544,99 +544,99 @@</span><br><span>  */</span><br><span> void ISO7816_Decode_ATR( uint8_t* pAtr )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t i;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t j;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t y;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t offset;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint32_t j;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint32_t y;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint8_t offset;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    printf("\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("ATR: Answer To Reset:\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("TS = 0x%X Initial character ",pAtr[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-    if( pAtr[0] == 0x3B ) {</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("ATR: Answer To Reset:\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("TS = 0x%X Initial character ",pAtr[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+     if( pAtr[0] == 0x3B ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        printf("Direct Convention\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(0, 100%, 40%);">-        if( pAtr[0] == 0x3F ) {</span><br><span style="color: hsl(120, 100%, 40%);">+           printf("Direct Convention\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span style="color: hsl(120, 100%, 40%);">+                if( pAtr[0] == 0x3F ) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            printf("Inverse Convention\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("BAD Convention\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                    printf("Inverse Convention\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+             else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        printf("BAD Convention\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    printf("T0 = 0x%X Format caracter\n\r",pAtr[1]);</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("    Number of historical bytes: K = %d\n\r", pAtr[1]&0x0F);</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("    Presence further interface byte:\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    if( pAtr[1]&0x80 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf("TA ");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    if( pAtr[1]&0x40 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf("TB ");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    if( pAtr[1]&0x20 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf("TC ");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    if( pAtr[1]&0x10 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf("TD ");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    if( pAtr[1] != 0 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf(" present\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("T0 = 0x%X Format caracter\n\r",pAtr[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("    Number of historical bytes: K = %d\n\r", pAtr[1]&0x0F);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("    Presence further interface byte:\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ if( pAtr[1]&0x80 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("TA ");</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     if( pAtr[1]&0x40 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("TB ");</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     if( pAtr[1]&0x20 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("TC ");</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     if( pAtr[1]&0x10 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("TD ");</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     if( pAtr[1] != 0 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+          printf(" present\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    i = 2;</span><br><span style="color: hsl(0, 100%, 40%);">-    y = pAtr[1] & 0xF0;</span><br><span style="color: hsl(120, 100%, 40%);">+    i = 2;</span><br><span style="color: hsl(120, 100%, 40%);">+        y = pAtr[1] & 0xF0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Read ATR Ti */</span><br><span style="color: hsl(0, 100%, 40%);">-    offset = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-    while (y) {</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Read ATR Ti */</span><br><span style="color: hsl(120, 100%, 40%);">+     offset = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+   while (y) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x10) {  /* TA[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("TA[%d] = 0x%X ", offset, pAtr[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-            if( offset == 1 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-                printf("FI = %d ", (pAtr[i]>>8));</span><br><span style="color: hsl(0, 100%, 40%);">-                printf("DI = %d", (pAtr[i]&0x0F));</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-            i++;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x20) {  /* TB[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("TB[%d] = 0x%X\n\r", offset, pAtr[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-            i++;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x40) {  /* TC[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("TC[%d] = 0x%X ", offset, pAtr[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-            if( offset == 1 ) {</span><br><span style="color: hsl(0, 100%, 40%);">-                printf("Extra Guard Time: N = %d", pAtr[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-            i++;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        if (y & 0x80) {  /* TD[i] */</span><br><span style="color: hsl(0, 100%, 40%);">-            printf("TD[%d] = 0x%X\n\r", offset, pAtr[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-            y =  pAtr[i++] & 0xF0;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(0, 100%, 40%);">-            y = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        offset++;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+               if (y & 0x10) {  /* TA[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      printf("TA[%d] = 0x%X ", offset, pAtr[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                  if( offset == 1 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                           printf("FI = %d ", (pAtr[i]>>8));</span><br><span style="color: hsl(120, 100%, 40%);">+                             printf("DI = %d", (pAtr[i]&0x0F));</span><br><span style="color: hsl(120, 100%, 40%);">+                      }</span><br><span style="color: hsl(120, 100%, 40%);">+                     printf("\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                     i++;</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (y & 0x20) {  /* TB[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      printf("TB[%d] = 0x%X\n\r", offset, pAtr[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                       i++;</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (y & 0x40) {  /* TC[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      printf("TC[%d] = 0x%X ", offset, pAtr[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                  if( offset == 1 ) {</span><br><span style="color: hsl(120, 100%, 40%);">+                           printf("Extra Guard Time: N = %d", pAtr[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+                     printf("\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+                     i++;</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (y & 0x80) {  /* TD[i] */</span><br><span style="color: hsl(120, 100%, 40%);">+                      printf("TD[%d] = 0x%X\n\r", offset, pAtr[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                       y =  pAtr[i++] & 0xF0;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+             else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        y = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             offset++;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Historical Bytes */</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("Historical bytes:\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">-    y = pAtr[1] & 0x0F;</span><br><span style="color: hsl(0, 100%, 40%);">-    for( j=0; j < y; j++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">-        printf(" 0x%X", pAtr[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-        i++;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("\n\r\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Historical Bytes */</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("Historical bytes:\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+    y = pAtr[1] & 0x0F;</span><br><span style="color: hsl(120, 100%, 40%);">+       for( j=0; j < y; j++ ) {</span><br><span style="color: hsl(120, 100%, 40%);">+           printf(" 0x%X", pAtr[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+           i++;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("\n\r\n\r");</span><br><span> </span><br><span> }</span><br><span> </span><br><span> void ISO7816_Set_Reset_Pin(const Pin *pPinIso7816RstMC) {</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Pin ISO7816 initialize */</span><br><span style="color: hsl(0, 100%, 40%);">-    st_pinIso7816RstMC  = (Pin *)pPinIso7816RstMC;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Pin ISO7816 initialize */</span><br><span style="color: hsl(120, 100%, 40%);">+  st_pinIso7816RstMC  = (Pin *)pPinIso7816RstMC;</span><br><span> }</span><br><span> </span><br><span> /** Initializes a ISO driver</span><br><span>@@ -644,46 +644,46 @@</span><br><span>  */</span><br><span> void ISO7816_Init( Usart_info *usart, bool master_clock )</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t clk;</span><br><span style="color: hsl(0, 100%, 40%);">-    TRACE_DEBUG("ISO_Init\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+   uint32_t clk;</span><br><span style="color: hsl(120, 100%, 40%);">+ TRACE_DEBUG("ISO_Init\n\r");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    Usart *us_base = usart->base;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint32_t us_id = usart->id;</span><br><span style="color: hsl(120, 100%, 40%);">+      Usart *us_base = usart->base;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t us_id = usart->id;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if (master_clock == true) {</span><br><span style="color: hsl(0, 100%, 40%);">-        clk = US_MR_USCLKS_MCK;</span><br><span style="color: hsl(0, 100%, 40%);">-    } else {</span><br><span style="color: hsl(0, 100%, 40%);">-        clk = US_MR_USCLKS_SCK;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+      if (master_clock == true) {</span><br><span style="color: hsl(120, 100%, 40%);">+           clk = US_MR_USCLKS_MCK;</span><br><span style="color: hsl(120, 100%, 40%);">+       } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              clk = US_MR_USCLKS_SCK;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    USART_Configure( us_base,</span><br><span style="color: hsl(0, 100%, 40%);">-                     US_MR_USART_MODE_IS07816_T_0</span><br><span style="color: hsl(0, 100%, 40%);">-                     | clk</span><br><span style="color: hsl(0, 100%, 40%);">-                     | US_MR_NBSTOP_1_BIT</span><br><span style="color: hsl(0, 100%, 40%);">-                     | US_MR_PAR_EVEN</span><br><span style="color: hsl(0, 100%, 40%);">-                     | US_MR_CHRL_8_BIT</span><br><span style="color: hsl(0, 100%, 40%);">-                     | US_MR_CLKO</span><br><span style="color: hsl(0, 100%, 40%);">-                     | US_MR_INACK  /* Inhibit errors */</span><br><span style="color: hsl(0, 100%, 40%);">-                     | (3<<24), /* MAX_ITERATION */</span><br><span style="color: hsl(0, 100%, 40%);">-                     1,</span><br><span style="color: hsl(0, 100%, 40%);">-                     0);</span><br><span style="color: hsl(120, 100%, 40%);">+   USART_Configure( us_base,</span><br><span style="color: hsl(120, 100%, 40%);">+                                      US_MR_USART_MODE_IS07816_T_0</span><br><span style="color: hsl(120, 100%, 40%);">+                                  | clk</span><br><span style="color: hsl(120, 100%, 40%);">+                                         | US_MR_NBSTOP_1_BIT</span><br><span style="color: hsl(120, 100%, 40%);">+                                  | US_MR_PAR_EVEN</span><br><span style="color: hsl(120, 100%, 40%);">+                                      | US_MR_CHRL_8_BIT</span><br><span style="color: hsl(120, 100%, 40%);">+                                    | US_MR_CLKO</span><br><span style="color: hsl(120, 100%, 40%);">+                                  | US_MR_INACK  /* Inhibit errors */</span><br><span style="color: hsl(120, 100%, 40%);">+                                   | (3<<24), /* MAX_ITERATION */</span><br><span style="color: hsl(120, 100%, 40%);">+                                  1,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Disable interrupts */</span><br><span style="color: hsl(0, 100%, 40%);">-    us_base->US_IDR = (uint32_t) -1;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Disable interrupts */</span><br><span style="color: hsl(120, 100%, 40%);">+      us_base->US_IDR = (uint32_t) -1;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Configure USART */</span><br><span style="color: hsl(0, 100%, 40%);">-    PMC_EnablePeripheral(us_id);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Configure USART */</span><br><span style="color: hsl(120, 100%, 40%);">+ PMC_EnablePeripheral(us_id);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    us_base->US_FIDI = 372;  /* by default */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Define the baud rate divisor register */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* CD  = MCK / SCK */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* SCK = FIDI x BAUD = 372 x 9600 */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* BOARD_MCK */</span><br><span style="color: hsl(0, 100%, 40%);">-    /* CD = MCK/(FIDI x BAUD) = 48000000 / (372x9600) = 13 */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (master_clock == true) {</span><br><span style="color: hsl(0, 100%, 40%);">-        us_base->US_BRGR = BOARD_MCK / (372*9600);</span><br><span style="color: hsl(0, 100%, 40%);">-    } else {</span><br><span style="color: hsl(0, 100%, 40%);">-        us_base->US_BRGR = US_BRGR_CD(1);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     us_base->US_FIDI = 372;  /* by default */</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Define the baud rate divisor register */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* CD  = MCK / SCK */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* SCK = FIDI x BAUD = 372 x 9600 */</span><br><span style="color: hsl(120, 100%, 40%);">+  /* BOARD_MCK */</span><br><span style="color: hsl(120, 100%, 40%);">+       /* CD = MCK/(FIDI x BAUD) = 48000000 / (372x9600) = 13 */</span><br><span style="color: hsl(120, 100%, 40%);">+     if (master_clock == true) {</span><br><span style="color: hsl(120, 100%, 40%);">+           us_base->US_BRGR = BOARD_MCK / (372*9600);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              us_base->US_BRGR = US_BRGR_CD(1);</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> }</span><br><span> </span><br><span>diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c</span><br><span>index bc91273..c7362cf 100644</span><br><span>--- a/firmware/libcommon/source/mode_cardemu.c</span><br><span>+++ b/firmware/libcommon/source/mode_cardemu.c</span><br><span>@@ -202,7 +202,7 @@</span><br><span>        csr = usart->US_CSR & usart->US_IMR;</span><br><span> </span><br><span>   if (csr & US_CSR_RXRDY) {</span><br><span style="color: hsl(0, 100%, 40%);">-           byte = (usart->US_RHR) & 0xFF;</span><br><span style="color: hsl(120, 100%, 40%);">+                 byte = (usart->US_RHR) & 0xFF;</span><br><span>                if (rbuf_write(&ci->rb, byte) < 0)</span><br><span>                         TRACE_ERROR("rbuf overrun\r\n");</span><br><span>   }</span><br><span>diff --git a/firmware/libcommon/source/mode_ccid.c b/firmware/libcommon/source/mode_ccid.c</span><br><span>index 77d4158..516826e 100644</span><br><span>--- a/firmware/libcommon/source/mode_ccid.c</span><br><span>+++ b/firmware/libcommon/source/mode_ccid.c</span><br><span>@@ -84,11 +84,11 @@</span><br><span> static void ISR_PioSmartCard(const Pin * pPin)</span><br><span> {</span><br><span> /* FIXME: why is pinSmartCard.pio->PIO_ISR the wrong number?</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("+++++ Trying to check for pending interrupts (PIO ISR: 0x%X)\n\r", pinSmartCard.pio->PIO_ISR);</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("+++++ Mask: 0x%X\n\r", pinSmartCard.mask);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("+++++ Trying to check for pending interrupts (PIO ISR: 0x%X)\n\r", pinSmartCard.pio->PIO_ISR);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("+++++ Mask: 0x%X\n\r", pinSmartCard.mask);</span><br><span> Output:</span><br><span style="color: hsl(0, 100%, 40%);">-    +++++ Trying to check for pending interrupts (PIO ISR: 0x400)) = 1<<10</span><br><span style="color: hsl(0, 100%, 40%);">-    +++++ Mask: 0x100 = 1<<8</span><br><span style="color: hsl(120, 100%, 40%);">+     +++++ Trying to check for pending interrupts (PIO ISR: 0x400)) = 1<<10</span><br><span style="color: hsl(120, 100%, 40%);">+  +++++ Mask: 0x100 = 1<<8</span><br><span> */</span><br><span>         // PA10 is DTXD, which is the debug uart transmit pin</span><br><span> </span><br><span>diff --git a/firmware/libcommon/source/stdio.c b/firmware/libcommon/source/stdio.c</span><br><span>index 32bd617..505c895 100644</span><br><span>--- a/firmware/libcommon/source/stdio.c</span><br><span>+++ b/firmware/libcommon/source/stdio.c</span><br><span>@@ -76,8 +76,8 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int PutChar(char *pStr, char c)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    *pStr = c;</span><br><span style="color: hsl(0, 100%, 40%);">-    return 1;</span><br><span style="color: hsl(120, 100%, 40%);">+  *pStr = c;</span><br><span style="color: hsl(120, 100%, 40%);">+    return 1;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -89,15 +89,15 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int PutString(char *pStr, const char *pSource)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int num = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ signed int num = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while (*pSource != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+    while (*pSource != 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        *pStr++ = *pSource++;</span><br><span style="color: hsl(0, 100%, 40%);">-        num++;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+           *pStr++ = *pSource++;</span><br><span style="color: hsl(120, 100%, 40%);">+         num++;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return num;</span><br><span style="color: hsl(120, 100%, 40%);">+  return num;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -110,38 +110,38 @@</span><br><span> // \param value  Integer value.</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int PutUnsignedInt(</span><br><span style="color: hsl(0, 100%, 40%);">-    char *pStr,</span><br><span style="color: hsl(0, 100%, 40%);">-    char fill,</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int width,</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int value)</span><br><span style="color: hsl(120, 100%, 40%);">+        char *pStr,</span><br><span style="color: hsl(120, 100%, 40%);">+   char fill,</span><br><span style="color: hsl(120, 100%, 40%);">+    signed int width,</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned int value)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int num = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       signed int num = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Take current digit into account when calculating width</span><br><span style="color: hsl(0, 100%, 40%);">-    width--;</span><br><span style="color: hsl(120, 100%, 40%);">+      // Take current digit into account when calculating width</span><br><span style="color: hsl(120, 100%, 40%);">+     width--;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Recursively write upper digits</span><br><span style="color: hsl(0, 100%, 40%);">-    if ((value / 10) > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+       // Recursively write upper digits</span><br><span style="color: hsl(120, 100%, 40%);">+     if ((value / 10) > 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        num = PutUnsignedInt(pStr, fill, width, value / 10);</span><br><span style="color: hsl(0, 100%, 40%);">-        pStr += num;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    // Write filler characters</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+           num = PutUnsignedInt(pStr, fill, width, value / 10);</span><br><span style="color: hsl(120, 100%, 40%);">+          pStr += num;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     // Write filler characters</span><br><span style="color: hsl(120, 100%, 40%);">+    else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        while (width > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              while (width > 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            PutChar(pStr, fill);</span><br><span style="color: hsl(0, 100%, 40%);">-            pStr++;</span><br><span style="color: hsl(0, 100%, 40%);">-            num++;</span><br><span style="color: hsl(0, 100%, 40%);">-            width--;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     PutChar(pStr, fill);</span><br><span style="color: hsl(120, 100%, 40%);">+                  pStr++;</span><br><span style="color: hsl(120, 100%, 40%);">+                       num++;</span><br><span style="color: hsl(120, 100%, 40%);">+                        width--;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Write lower digit</span><br><span style="color: hsl(0, 100%, 40%);">-    num += PutChar(pStr, (value % 10) + '0');</span><br><span style="color: hsl(120, 100%, 40%);">+    // Write lower digit</span><br><span style="color: hsl(120, 100%, 40%);">+  num += PutChar(pStr, (value % 10) + '0');</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return num;</span><br><span style="color: hsl(120, 100%, 40%);">+  return num;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -154,69 +154,69 @@</span><br><span> // \param value  Signed integer value.</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int PutSignedInt(</span><br><span style="color: hsl(0, 100%, 40%);">-    char *pStr,</span><br><span style="color: hsl(0, 100%, 40%);">-    char fill,</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int width,</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int value)</span><br><span style="color: hsl(120, 100%, 40%);">+     char *pStr,</span><br><span style="color: hsl(120, 100%, 40%);">+   char fill,</span><br><span style="color: hsl(120, 100%, 40%);">+    signed int width,</span><br><span style="color: hsl(120, 100%, 40%);">+     signed int value)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int num = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int absolute;</span><br><span style="color: hsl(120, 100%, 40%);">+       signed int num = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned int absolute;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Compute absolute value</span><br><span style="color: hsl(0, 100%, 40%);">-    if (value < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+        // Compute absolute value</span><br><span style="color: hsl(120, 100%, 40%);">+     if (value < 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        absolute = -value;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+              absolute = -value;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        absolute = value;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+              absolute = value;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Take current digit into account when calculating width</span><br><span style="color: hsl(0, 100%, 40%);">-    width--;</span><br><span style="color: hsl(120, 100%, 40%);">+        // Take current digit into account when calculating width</span><br><span style="color: hsl(120, 100%, 40%);">+     width--;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Recursively write upper digits</span><br><span style="color: hsl(0, 100%, 40%);">-    if ((absolute / 10) > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+    // Recursively write upper digits</span><br><span style="color: hsl(120, 100%, 40%);">+     if ((absolute / 10) > 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (value < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        </span><br><span style="color: hsl(0, 100%, 40%);">-            num = PutSignedInt(pStr, fill, width, -(absolute / 10));</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(120, 100%, 40%);">+               if (value < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+           </span><br><span style="color: hsl(120, 100%, 40%);">+                      num = PutSignedInt(pStr, fill, width, -(absolute / 10));</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+             else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            num = PutSignedInt(pStr, fill, width, absolute / 10);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        pStr += num;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+                       num = PutSignedInt(pStr, fill, width, absolute / 10);</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+             pStr += num;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // Reserve space for sign</span><br><span style="color: hsl(0, 100%, 40%);">-        if (value < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                // Reserve space for sign</span><br><span style="color: hsl(120, 100%, 40%);">+             if (value < 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            width--;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+                  width--;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // Write filler characters</span><br><span style="color: hsl(0, 100%, 40%);">-        while (width > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+         // Write filler characters</span><br><span style="color: hsl(120, 100%, 40%);">+            while (width > 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            PutChar(pStr, fill);</span><br><span style="color: hsl(0, 100%, 40%);">-            pStr++;</span><br><span style="color: hsl(0, 100%, 40%);">-            num++;</span><br><span style="color: hsl(0, 100%, 40%);">-            width--;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(120, 100%, 40%);">+                  PutChar(pStr, fill);</span><br><span style="color: hsl(120, 100%, 40%);">+                  pStr++;</span><br><span style="color: hsl(120, 100%, 40%);">+                       num++;</span><br><span style="color: hsl(120, 100%, 40%);">+                        width--;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // Write sign</span><br><span style="color: hsl(0, 100%, 40%);">-        if (value < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+         // Write sign</span><br><span style="color: hsl(120, 100%, 40%);">+         if (value < 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            num += PutChar(pStr, '-');</span><br><span style="color: hsl(0, 100%, 40%);">-            pStr++;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                        num += PutChar(pStr, '-');</span><br><span style="color: hsl(120, 100%, 40%);">+                    pStr++;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Write lower digit</span><br><span style="color: hsl(0, 100%, 40%);">-    num += PutChar(pStr, (absolute % 10) + '0');</span><br><span style="color: hsl(120, 100%, 40%);">+ // Write lower digit</span><br><span style="color: hsl(120, 100%, 40%);">+  num += PutChar(pStr, (absolute % 10) + '0');</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return num;</span><br><span style="color: hsl(120, 100%, 40%);">+       return num;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -230,51 +230,51 @@</span><br><span> // \param value  Hexadecimal value.</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int PutHexa(</span><br><span style="color: hsl(0, 100%, 40%);">-    char *pStr,</span><br><span style="color: hsl(0, 100%, 40%);">-    char fill,</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int width,</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char maj,</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int value)</span><br><span style="color: hsl(120, 100%, 40%);">+     char *pStr,</span><br><span style="color: hsl(120, 100%, 40%);">+   char fill,</span><br><span style="color: hsl(120, 100%, 40%);">+    signed int width,</span><br><span style="color: hsl(120, 100%, 40%);">+     unsigned char maj,</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned int value)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int num = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       signed int num = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Decrement width</span><br><span style="color: hsl(0, 100%, 40%);">-    width--;</span><br><span style="color: hsl(120, 100%, 40%);">+     // Decrement width</span><br><span style="color: hsl(120, 100%, 40%);">+    width--;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Recursively output upper digits</span><br><span style="color: hsl(0, 100%, 40%);">-    if ((value >> 4) > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+        // Recursively output upper digits</span><br><span style="color: hsl(120, 100%, 40%);">+    if ((value >> 4) > 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        num += PutHexa(pStr, fill, width, maj, value >> 4);</span><br><span style="color: hsl(0, 100%, 40%);">-        pStr += num;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    // Write filler chars</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+             num += PutHexa(pStr, fill, width, maj, value >> 4);</span><br><span style="color: hsl(120, 100%, 40%);">+             pStr += num;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     // Write filler chars</span><br><span style="color: hsl(120, 100%, 40%);">+ else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        while (width > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              while (width > 0) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            PutChar(pStr, fill);</span><br><span style="color: hsl(0, 100%, 40%);">-            pStr++;</span><br><span style="color: hsl(0, 100%, 40%);">-            num++;</span><br><span style="color: hsl(0, 100%, 40%);">-            width--;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     PutChar(pStr, fill);</span><br><span style="color: hsl(120, 100%, 40%);">+                  pStr++;</span><br><span style="color: hsl(120, 100%, 40%);">+                       num++;</span><br><span style="color: hsl(120, 100%, 40%);">+                        width--;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Write current digit</span><br><span style="color: hsl(0, 100%, 40%);">-    if ((value & 0xF) < 10) {</span><br><span style="color: hsl(120, 100%, 40%);">+   // Write current digit</span><br><span style="color: hsl(120, 100%, 40%);">+        if ((value & 0xF) < 10) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        PutChar(pStr, (value & 0xF) + '0');</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else if (maj) {</span><br><span style="color: hsl(120, 100%, 40%);">+           PutChar(pStr, (value & 0xF) + '0');</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     else if (maj) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        PutChar(pStr, (value & 0xF) - 10 + 'A');</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+                PutChar(pStr, (value & 0xF) - 10 + 'A');</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        PutChar(pStr, (value & 0xF) - 10 + 'a');</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    num++;</span><br><span style="color: hsl(120, 100%, 40%);">+         PutChar(pStr, (value & 0xF) - 10 + 'a');</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     num++;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return num;</span><br><span style="color: hsl(120, 100%, 40%);">+     return num;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -292,91 +292,91 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int vsnprintf(char *pStr, size_t length, const char *pFormat, va_list ap)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    char          fill;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char width;</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int    num = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    size_t        size = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     char          fill;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char width;</span><br><span style="color: hsl(120, 100%, 40%);">+  signed int    num = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+        size_t        size = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Clear the string</span><br><span style="color: hsl(0, 100%, 40%);">-    if (pStr) {</span><br><span style="color: hsl(120, 100%, 40%);">+     // Clear the string</span><br><span style="color: hsl(120, 100%, 40%);">+   if (pStr) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        *pStr = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                *pStr = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Phase string</span><br><span style="color: hsl(0, 100%, 40%);">-    while (*pFormat != 0 && size < length) {</span><br><span style="color: hsl(120, 100%, 40%);">+       // Phase string</span><br><span style="color: hsl(120, 100%, 40%);">+       while (*pFormat != 0 && size < length) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        // Normal character</span><br><span style="color: hsl(0, 100%, 40%);">-        if (*pFormat != '%') {</span><br><span style="color: hsl(120, 100%, 40%);">+              // Normal character</span><br><span style="color: hsl(120, 100%, 40%);">+           if (*pFormat != '%') {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            *pStr++ = *pFormat++;</span><br><span style="color: hsl(0, 100%, 40%);">-            size++;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        // Escaped '%'</span><br><span style="color: hsl(0, 100%, 40%);">-        else if (*(pFormat+1) == '%') {</span><br><span style="color: hsl(120, 100%, 40%);">+                  *pStr++ = *pFormat++;</span><br><span style="color: hsl(120, 100%, 40%);">+                 size++;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             // Escaped '%'</span><br><span style="color: hsl(120, 100%, 40%);">+                else if (*(pFormat+1) == '%') {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            *pStr++ = '%';</span><br><span style="color: hsl(0, 100%, 40%);">-            pFormat += 2;</span><br><span style="color: hsl(0, 100%, 40%);">-            size++;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        // Token delimiter</span><br><span style="color: hsl(0, 100%, 40%);">-        else {</span><br><span style="color: hsl(120, 100%, 40%);">+                    *pStr++ = '%';</span><br><span style="color: hsl(120, 100%, 40%);">+                        pFormat += 2;</span><br><span style="color: hsl(120, 100%, 40%);">+                 size++;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             // Token delimiter</span><br><span style="color: hsl(120, 100%, 40%);">+            else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            fill = ' ';</span><br><span style="color: hsl(0, 100%, 40%);">-            width = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-            pFormat++;</span><br><span style="color: hsl(120, 100%, 40%);">+                 fill = ' ';</span><br><span style="color: hsl(120, 100%, 40%);">+                   width = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                    pFormat++;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            // Parse filler</span><br><span style="color: hsl(0, 100%, 40%);">-            if (*pFormat == '0') {</span><br><span style="color: hsl(120, 100%, 40%);">+                   // Parse filler</span><br><span style="color: hsl(120, 100%, 40%);">+                       if (*pFormat == '0') {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                fill = '0';</span><br><span style="color: hsl(0, 100%, 40%);">-                pFormat++;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(120, 100%, 40%);">+                          fill = '0';</span><br><span style="color: hsl(120, 100%, 40%);">+                           pFormat++;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            // Parse width</span><br><span style="color: hsl(0, 100%, 40%);">-            while ((*pFormat >= '0') && (*pFormat <= '9')) {</span><br><span style="color: hsl(0, 100%, 40%);">-        </span><br><span style="color: hsl(0, 100%, 40%);">-                width = (width*10) + *pFormat-'0';</span><br><span style="color: hsl(0, 100%, 40%);">-                pFormat++;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(120, 100%, 40%);">+                    // Parse width</span><br><span style="color: hsl(120, 100%, 40%);">+                        while ((*pFormat >= '0') && (*pFormat <= '9')) {</span><br><span style="color: hsl(120, 100%, 40%);">+                </span><br><span style="color: hsl(120, 100%, 40%);">+                              width = (width*10) + *pFormat-'0';</span><br><span style="color: hsl(120, 100%, 40%);">+                            pFormat++;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            // Check if there is enough space</span><br><span style="color: hsl(0, 100%, 40%);">-            if (size + width > length) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 // Check if there is enough space</span><br><span style="color: hsl(120, 100%, 40%);">+                     if (size + width > length) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                width = length - size;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-        </span><br><span style="color: hsl(0, 100%, 40%);">-            // Parse type</span><br><span style="color: hsl(0, 100%, 40%);">-            switch (*pFormat) {</span><br><span style="color: hsl(0, 100%, 40%);">-            case 'd': </span><br><span style="color: hsl(0, 100%, 40%);">-            case 'i': num = PutSignedInt(pStr, fill, width, va_arg(ap, signed int)); break;</span><br><span style="color: hsl(0, 100%, 40%);">-            case 'u': num = PutUnsignedInt(pStr, fill, width, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(0, 100%, 40%);">-            case 'x': num = PutHexa(pStr, fill, width, 0, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(0, 100%, 40%);">-            case 'X': num = PutHexa(pStr, fill, width, 1, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(0, 100%, 40%);">-            case 's': num = PutString(pStr, va_arg(ap, char *)); break;</span><br><span style="color: hsl(0, 100%, 40%);">-            case 'c': num = PutChar(pStr, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(0, 100%, 40%);">-            default:</span><br><span style="color: hsl(0, 100%, 40%);">-                return EOF;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(120, 100%, 40%);">+                            width = length - size;</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             </span><br><span style="color: hsl(120, 100%, 40%);">+                      // Parse type</span><br><span style="color: hsl(120, 100%, 40%);">+                 switch (*pFormat) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   case 'd': </span><br><span style="color: hsl(120, 100%, 40%);">+                    case 'i': num = PutSignedInt(pStr, fill, width, va_arg(ap, signed int)); break;</span><br><span style="color: hsl(120, 100%, 40%);">+                       case 'u': num = PutUnsignedInt(pStr, fill, width, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(120, 100%, 40%);">+                   case 'x': num = PutHexa(pStr, fill, width, 0, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(120, 100%, 40%);">+                       case 'X': num = PutHexa(pStr, fill, width, 1, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(120, 100%, 40%);">+                       case 's': num = PutString(pStr, va_arg(ap, char *)); break;</span><br><span style="color: hsl(120, 100%, 40%);">+                   case 'c': num = PutChar(pStr, va_arg(ap, unsigned int)); break;</span><br><span style="color: hsl(120, 100%, 40%);">+                       default:</span><br><span style="color: hsl(120, 100%, 40%);">+                              return EOF;</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            pFormat++;</span><br><span style="color: hsl(0, 100%, 40%);">-            pStr += num;</span><br><span style="color: hsl(0, 100%, 40%);">-            size += num;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     pFormat++;</span><br><span style="color: hsl(120, 100%, 40%);">+                    pStr += num;</span><br><span style="color: hsl(120, 100%, 40%);">+                  size += num;</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // NULL-terminated (final \0 is not counted)</span><br><span style="color: hsl(0, 100%, 40%);">-    if (size < length) {</span><br><span style="color: hsl(120, 100%, 40%);">+      // NULL-terminated (final \0 is not counted)</span><br><span style="color: hsl(120, 100%, 40%);">+  if (size < length) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        *pStr = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    else {</span><br><span style="color: hsl(120, 100%, 40%);">+          *pStr = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     else {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        *(--pStr) = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        size--;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+          *(--pStr) = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                size--;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return size;</span><br><span style="color: hsl(120, 100%, 40%);">+ return size;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -390,14 +390,14 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int snprintf(char *pString, size_t length, const char *pFormat, ...)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    va_list    ap;</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+ va_list    ap;</span><br><span style="color: hsl(120, 100%, 40%);">+        signed int rc;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    va_start(ap, pFormat);</span><br><span style="color: hsl(0, 100%, 40%);">-    rc = vsnprintf(pString, length, pFormat, ap);</span><br><span style="color: hsl(0, 100%, 40%);">-    va_end(ap);</span><br><span style="color: hsl(120, 100%, 40%);">+  va_start(ap, pFormat);</span><br><span style="color: hsl(120, 100%, 40%);">+        rc = vsnprintf(pString, length, pFormat, ap);</span><br><span style="color: hsl(120, 100%, 40%);">+ va_end(ap);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+ return rc;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -410,7 +410,7 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int vsprintf(char *pString, const char *pFormat, va_list ap)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    return vsnprintf(pString, MAX_STRING_SIZE, pFormat, ap);</span><br><span style="color: hsl(120, 100%, 40%);">+     return vsnprintf(pString, MAX_STRING_SIZE, pFormat, ap);</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -422,17 +422,17 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int vfprintf(FILE *pStream, const char *pFormat, va_list ap)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    char pStr[MAX_STRING_SIZE];</span><br><span style="color: hsl(0, 100%, 40%);">-    char pError[] = "stdio.c: increase MAX_STRING_SIZE\n\r";</span><br><span style="color: hsl(120, 100%, 40%);">+    char pStr[MAX_STRING_SIZE];</span><br><span style="color: hsl(120, 100%, 40%);">+   char pError[] = "stdio.c: increase MAX_STRING_SIZE\n\r";</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Write formatted string in buffer</span><br><span style="color: hsl(0, 100%, 40%);">-    if (vsprintf(pStr, pFormat, ap) >= MAX_STRING_SIZE) {</span><br><span style="color: hsl(120, 100%, 40%);">+     // Write formatted string in buffer</span><br><span style="color: hsl(120, 100%, 40%);">+   if (vsprintf(pStr, pFormat, ap) >= MAX_STRING_SIZE) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        fputs(pError, stderr);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+               fputs(pError, stderr);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Display string</span><br><span style="color: hsl(0, 100%, 40%);">-    return fputs(pStr, pStream);</span><br><span style="color: hsl(120, 100%, 40%);">+    // Display string</span><br><span style="color: hsl(120, 100%, 40%);">+     return fputs(pStr, pStream);</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -443,7 +443,7 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int vprintf(const char *pFormat, va_list ap)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    return vfprintf(stdout, pFormat, ap);</span><br><span style="color: hsl(120, 100%, 40%);">+      return vfprintf(stdout, pFormat, ap);</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -454,15 +454,15 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int fprintf(FILE *pStream, const char *pFormat, ...)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    va_list ap;</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int result;</span><br><span style="color: hsl(120, 100%, 40%);">+       va_list ap;</span><br><span style="color: hsl(120, 100%, 40%);">+   signed int result;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Forward call to vfprintf</span><br><span style="color: hsl(0, 100%, 40%);">-    va_start(ap, pFormat);</span><br><span style="color: hsl(0, 100%, 40%);">-    result = vfprintf(pStream, pFormat, ap);</span><br><span style="color: hsl(0, 100%, 40%);">-    va_end(ap);</span><br><span style="color: hsl(120, 100%, 40%);">+    // Forward call to vfprintf</span><br><span style="color: hsl(120, 100%, 40%);">+   va_start(ap, pFormat);</span><br><span style="color: hsl(120, 100%, 40%);">+        result = vfprintf(pStream, pFormat, ap);</span><br><span style="color: hsl(120, 100%, 40%);">+      va_end(ap);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return result;</span><br><span style="color: hsl(120, 100%, 40%);">+     return result;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -472,15 +472,15 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int printf(const char *pFormat, ...)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    va_list ap;</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int result;</span><br><span style="color: hsl(120, 100%, 40%);">+      va_list ap;</span><br><span style="color: hsl(120, 100%, 40%);">+   signed int result;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Forward call to vprintf</span><br><span style="color: hsl(0, 100%, 40%);">-    va_start(ap, pFormat);</span><br><span style="color: hsl(0, 100%, 40%);">-    result = vprintf(pFormat, ap);</span><br><span style="color: hsl(0, 100%, 40%);">-    va_end(ap);</span><br><span style="color: hsl(120, 100%, 40%);">+       // Forward call to vprintf</span><br><span style="color: hsl(120, 100%, 40%);">+    va_start(ap, pFormat);</span><br><span style="color: hsl(120, 100%, 40%);">+        result = vprintf(pFormat, ap);</span><br><span style="color: hsl(120, 100%, 40%);">+        va_end(ap);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return result;</span><br><span style="color: hsl(120, 100%, 40%);">+     return result;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -490,15 +490,15 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int sprintf(char *pStr, const char *pFormat, ...)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    va_list ap;</span><br><span style="color: hsl(0, 100%, 40%);">-    signed int result;</span><br><span style="color: hsl(120, 100%, 40%);">+ va_list ap;</span><br><span style="color: hsl(120, 100%, 40%);">+   signed int result;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Forward call to vsprintf</span><br><span style="color: hsl(0, 100%, 40%);">-    va_start(ap, pFormat);</span><br><span style="color: hsl(0, 100%, 40%);">-    result = vsprintf(pStr, pFormat, ap);</span><br><span style="color: hsl(0, 100%, 40%);">-    va_end(ap);</span><br><span style="color: hsl(120, 100%, 40%);">+       // Forward call to vsprintf</span><br><span style="color: hsl(120, 100%, 40%);">+   va_start(ap, pFormat);</span><br><span style="color: hsl(120, 100%, 40%);">+        result = vsprintf(pStr, pFormat, ap);</span><br><span style="color: hsl(120, 100%, 40%);">+ va_end(ap);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return result;</span><br><span style="color: hsl(120, 100%, 40%);">+     return result;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -507,6 +507,6 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> signed int puts(const char *pStr)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    return fputs(pStr, stdout);</span><br><span style="color: hsl(120, 100%, 40%);">+        return fputs(pStr, stdout);</span><br><span> }</span><br><span> </span><br><span>diff --git a/firmware/libcommon/source/string.c b/firmware/libcommon/source/string.c</span><br><span>index dbbb0e9..0d789a0 100644</span><br><span>--- a/firmware/libcommon/source/string.c</span><br><span>+++ b/firmware/libcommon/source/string.c</span><br><span>@@ -61,33 +61,33 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> void * memcpy(void *pDestination, const void *pSource, size_t num)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char *pByteDestination;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char *pByteSource;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int *pAlignedSource = (unsigned int *) pSource;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int *pAlignedDestination = (unsigned int *) pDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned char *pByteDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned char *pByteSource;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned int *pAlignedSource = (unsigned int *) pSource;</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned int *pAlignedDestination = (unsigned int *) pDestination;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // If num is more than 4 bytes, and both dest. and source are aligned,</span><br><span style="color: hsl(0, 100%, 40%);">-    // then copy dwords</span><br><span style="color: hsl(0, 100%, 40%);">-    if ((((unsigned int) pAlignedDestination & 0x3) == 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        && (((unsigned int) pAlignedSource & 0x3) == 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        && (num >= 4)) {</span><br><span style="color: hsl(120, 100%, 40%);">+    // If num is more than 4 bytes, and both dest. and source are aligned,</span><br><span style="color: hsl(120, 100%, 40%);">+        // then copy dwords</span><br><span style="color: hsl(120, 100%, 40%);">+   if ((((unsigned int) pAlignedDestination & 0x3) == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+             && (((unsigned int) pAlignedSource & 0x3) == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+           && (num >= 4)) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        while (num >= 4) {</span><br><span style="color: hsl(120, 100%, 40%);">+          while (num >= 4) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            *pAlignedDestination++ = *pAlignedSource++;</span><br><span style="color: hsl(0, 100%, 40%);">-            num -= 4;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+                   *pAlignedDestination++ = *pAlignedSource++;</span><br><span style="color: hsl(120, 100%, 40%);">+                   num -= 4;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Copy remaining bytes</span><br><span style="color: hsl(0, 100%, 40%);">-    pByteDestination = (unsigned char *) pAlignedDestination;</span><br><span style="color: hsl(0, 100%, 40%);">-    pByteSource = (unsigned char *) pAlignedSource;</span><br><span style="color: hsl(0, 100%, 40%);">-    while (num--) {</span><br><span style="color: hsl(120, 100%, 40%);">+   // Copy remaining bytes</span><br><span style="color: hsl(120, 100%, 40%);">+       pByteDestination = (unsigned char *) pAlignedDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+     pByteSource = (unsigned char *) pAlignedSource;</span><br><span style="color: hsl(120, 100%, 40%);">+       while (num--) {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        *pByteDestination++ = *pByteSource++;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+         *pByteDestination++ = *pByteSource++;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return pDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+ return pDestination;</span><br><span> }</span><br><span> </span><br><span> //------------------------------------------------------------------------------</span><br><span>@@ -99,23 +99,23 @@</span><br><span> //------------------------------------------------------------------------------</span><br><span> void * memset(void *pBuffer, int value, size_t num)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned char *pByteDestination;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int  *pAlignedDestination = (unsigned int *) pBuffer;</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int  alignedValue = (value << 24) | (value << 16) | (value << 8) | value;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned char *pByteDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+      unsigned int  *pAlignedDestination = (unsigned int *) pBuffer;</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned int  alignedValue = (value << 24) | (value << 16) | (value << 8) | value;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    // Set words if possible</span><br><span style="color: hsl(0, 100%, 40%);">-    if ((((unsigned int) pAlignedDestination & 0x3) == 0) && (num >= 4)) {</span><br><span style="color: hsl(0, 100%, 40%);">-        while (num >= 4) {</span><br><span style="color: hsl(0, 100%, 40%);">-            *pAlignedDestination++ = alignedValue;</span><br><span style="color: hsl(0, 100%, 40%);">-            num -= 4;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    // Set remaining bytes</span><br><span style="color: hsl(0, 100%, 40%);">-    pByteDestination = (unsigned char *) pAlignedDestination;</span><br><span style="color: hsl(0, 100%, 40%);">-    while (num--) {</span><br><span style="color: hsl(0, 100%, 40%);">-        *pByteDestination++ = value;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    return pBuffer;</span><br><span style="color: hsl(120, 100%, 40%);">+ // Set words if possible</span><br><span style="color: hsl(120, 100%, 40%);">+      if ((((unsigned int) pAlignedDestination & 0x3) == 0) && (num >= 4)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         while (num >= 4) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 *pAlignedDestination++ = alignedValue;</span><br><span style="color: hsl(120, 100%, 40%);">+                        num -= 4;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     // Set remaining bytes</span><br><span style="color: hsl(120, 100%, 40%);">+        pByteDestination = (unsigned char *) pAlignedDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+     while (num--) {</span><br><span style="color: hsl(120, 100%, 40%);">+               *pByteDestination++ = value;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     return pBuffer;</span><br><span> }</span><br><span> </span><br><span> //-----------------------------------------------------------------------------</span><br><span>@@ -126,16 +126,16 @@</span><br><span> //-----------------------------------------------------------------------------</span><br><span> char * strchr(const char *pString, int character)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    char * p = (char *)pString;</span><br><span style="color: hsl(0, 100%, 40%);">-    char   c = character & 0xFF;</span><br><span style="color: hsl(120, 100%, 40%);">+   char * p = (char *)pString;</span><br><span style="color: hsl(120, 100%, 40%);">+   char   c = character & 0xFF;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while(*p != c) {</span><br><span style="color: hsl(0, 100%, 40%);">-        if (*p == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        p++;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    return p;</span><br><span style="color: hsl(120, 100%, 40%);">+    while(*p != c) {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (*p == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             p++;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     return p;</span><br><span> }</span><br><span> </span><br><span> //-----------------------------------------------------------------------------</span><br><span>@@ -144,12 +144,12 @@</span><br><span> //-----------------------------------------------------------------------------</span><br><span> size_t strlen(const char *pString)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int length = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned int length = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while(*pString++ != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        length++;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    return length;</span><br><span style="color: hsl(120, 100%, 40%);">+      while(*pString++ != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              length++;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return length;</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -161,14 +161,14 @@</span><br><span> //-----------------------------------------------------------------------------</span><br><span> char * strrchr(const char *pString, int character)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    char *p = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     char *p = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while(*pString != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-        if (*pString++ == character) {</span><br><span style="color: hsl(0, 100%, 40%);">-            p = (char*)pString;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    return p;</span><br><span style="color: hsl(120, 100%, 40%);">+    while(*pString != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                if (*pString++ == character) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        p = (char*)pString;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return p;</span><br><span> }</span><br><span> </span><br><span> //-----------------------------------------------------------------------------</span><br><span>@@ -179,10 +179,10 @@</span><br><span> //-----------------------------------------------------------------------------</span><br><span> char * strcpy(char *pDestination, const char *pSource)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    char *pSaveDest = pDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+    char *pSaveDest = pDestination;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for(; (*pDestination = *pSource) != 0; ++pSource, ++pDestination);</span><br><span style="color: hsl(0, 100%, 40%);">-    return pSaveDest;</span><br><span style="color: hsl(120, 100%, 40%);">+        for(; (*pDestination = *pSource) != 0; ++pSource, ++pDestination);</span><br><span style="color: hsl(120, 100%, 40%);">+    return pSaveDest;</span><br><span> }</span><br><span> </span><br><span> //-----------------------------------------------------------------------------</span><br><span>@@ -196,22 +196,22 @@</span><br><span> //-----------------------------------------------------------------------------</span><br><span> int strncmp(const char *pString1, const char *pString2, size_t count)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    int r;</span><br><span style="color: hsl(120, 100%, 40%);">+      int r;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while(count) {</span><br><span style="color: hsl(0, 100%, 40%);">-        r = *pString1 - *pString2;</span><br><span style="color: hsl(0, 100%, 40%);">-        if (r == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            if (*pString1 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-            pString1++;</span><br><span style="color: hsl(0, 100%, 40%);">-            pString2++;</span><br><span style="color: hsl(0, 100%, 40%);">-            count--;</span><br><span style="color: hsl(0, 100%, 40%);">-            continue;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        return r;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    while(count) {</span><br><span style="color: hsl(120, 100%, 40%);">+                r = *pString1 - *pString2;</span><br><span style="color: hsl(120, 100%, 40%);">+            if (r == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 if (*pString1 == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                         break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+                     pString1++;</span><br><span style="color: hsl(120, 100%, 40%);">+                   pString2++;</span><br><span style="color: hsl(120, 100%, 40%);">+                   count--;</span><br><span style="color: hsl(120, 100%, 40%);">+                      continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             return r;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return 0;</span><br><span> }</span><br><span> </span><br><span> //-----------------------------------------------------------------------------</span><br><span>@@ -223,17 +223,17 @@</span><br><span> //-----------------------------------------------------------------------------</span><br><span> char * strncpy(char *pDestination, const char *pSource, size_t count)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    char *pSaveDest = pDestination;</span><br><span style="color: hsl(120, 100%, 40%);">+     char *pSaveDest = pDestination;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    while (count) {</span><br><span style="color: hsl(0, 100%, 40%);">-        *pDestination = *pSource;</span><br><span style="color: hsl(0, 100%, 40%);">-        if (*pSource == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-        pDestination++;</span><br><span style="color: hsl(0, 100%, 40%);">-        pSource++;</span><br><span style="color: hsl(0, 100%, 40%);">-        count--;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-    return pSaveDest;</span><br><span style="color: hsl(120, 100%, 40%);">+     while (count) {</span><br><span style="color: hsl(120, 100%, 40%);">+               *pDestination = *pSource;</span><br><span style="color: hsl(120, 100%, 40%);">+             if (*pSource == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             pDestination++;</span><br><span style="color: hsl(120, 100%, 40%);">+               pSource++;</span><br><span style="color: hsl(120, 100%, 40%);">+            count--;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     return pSaveDest;</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9918">change 9918</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/9918"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: simtrace2 </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I86783eba0827b58303b10310e9f6b9625e1a27f1 </div>
<div style="display:none"> Gerrit-Change-Number: 9918 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Kévin Redon <kredon@sysmocom.de> </div>