<p>Hoernchen has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16243">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">dbg<br><br>Change-Id: I4340cb53f0f903842eb1c4d60a36d44ac9e5cbde<br>---<br>M ccid_common/cuart.h<br>M ccid_common/iso7816_fsm.c<br>M sysmoOCTSIM/atmel_start.c<br>M sysmoOCTSIM/cuart_driver_asf4_usart_async.c<br>M sysmoOCTSIM/driver_init.c<br>M sysmoOCTSIM/gcc/Makefile<br>M sysmoOCTSIM/hpl/sercom/hpl_sercom.c<br>M sysmoOCTSIM/libosmo_emb.c<br>M sysmoOCTSIM/main.c<br>9 files changed, 124 insertions(+), 23 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/43/16243/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/ccid_common/cuart.h b/ccid_common/cuart.h</span><br><span>index 9c93b7e..efd70f0 100644</span><br><span>--- a/ccid_common/cuart.h</span><br><span>+++ b/ccid_common/cuart.h</span><br><span>@@ -23,6 +23,7 @@</span><br><span> </span><br><span> enum card_uart_ctl {</span><br><span> CUART_CTL_RX, /* enable/disable receiver */</span><br><span style="color: hsl(120, 100%, 40%);">+ CUART_CTL_NO_RXTX, /* enable/disable receiver */</span><br><span> CUART_CTL_POWER, /* enable/disable ICC power */</span><br><span> CUART_CTL_CLOCK, /* enable/disable ICC clock */</span><br><span> CUART_CTL_CLOCK_FREQ, /* set ICC clock frequency (hz)*/</span><br><span>diff --git a/ccid_common/iso7816_fsm.c b/ccid_common/iso7816_fsm.c</span><br><span>index 3d09a84..585d25d 100644</span><br><span>--- a/ccid_common/iso7816_fsm.c</span><br><span>+++ b/ccid_common/iso7816_fsm.c</span><br><span>@@ -305,7 +305,7 @@</span><br><span> {</span><br><span> struct iso7816_3_priv *ip = get_iso7816_3_priv(fi);</span><br><span> OSMO_ASSERT(fi->fsm == &iso7816_3_fsm);</span><br><span style="color: hsl(0, 100%, 40%);">- card_uart_ctrl(ip->uart, CUART_CTL_RX, false);</span><br><span style="color: hsl(120, 100%, 40%);">+ card_uart_ctrl(ip->uart, CUART_CTL_NO_RXTX, true);</span><br><span> /* reset the TPDU state machine */</span><br><span> osmo_fsm_inst_dispatch(ip->tpdu_fi, ISO7816_E_TPDU_CLEAR_REQ, NULL);</span><br><span> }</span><br><span>@@ -1135,11 +1135,14 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include <hal_gpio.h></span><br><span> static void tpdu_s_tx_hdr_action(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span> {</span><br><span> OSMO_ASSERT(fi->fsm == &tpdu_fsm);</span><br><span> switch (event) {</span><br><span> case ISO7816_E_TX_COMPL:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Rx of single byte is already enabled by previous card_uart_tx() call */</span><br><span> osmo_fsm_inst_state_chg(fi, TPDU_S_PROCEDURE, 0, 0);</span><br><span> break;</span><br><span>@@ -1174,6 +1177,12 @@</span><br><span> } else if (byte == tpduh->ins) {</span><br><span> if (tfp->is_command) {</span><br><span> /* transmit all remaining bytes */</span><br><span style="color: hsl(120, 100%, 40%);">+#if 0</span><br><span style="color: hsl(120, 100%, 40%);">+// rx -> tx delay</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, true);</span><br><span style="color: hsl(120, 100%, 40%);">+ delay_us(1);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, false);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> card_uart_tx(ip->uart, msgb_l2(tfp->tpdu), msgb_l2len(tfp->tpdu), true);</span><br><span> osmo_fsm_inst_state_chg(fi, TPDU_S_TX_REMAINING, 0, 0);</span><br><span> } else {</span><br><span>diff --git a/sysmoOCTSIM/atmel_start.c b/sysmoOCTSIM/atmel_start.c</span><br><span>index bee1ed2..6670364 100644</span><br><span>--- a/sysmoOCTSIM/atmel_start.c</span><br><span>+++ b/sysmoOCTSIM/atmel_start.c</span><br><span>@@ -14,6 +14,6 @@</span><br><span> system_init();</span><br><span> dma_memory_init();</span><br><span> dma_memory_register_callback(DMA_MEMORY_COMPLETE_CB, M2M_DMA_complete_cb);</span><br><span style="color: hsl(0, 100%, 40%);">- stdio_redirect_init();</span><br><span style="color: hsl(120, 100%, 40%);">+// stdio_redirect_init();</span><br><span> usb_init();</span><br><span> }</span><br><span>diff --git a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c</span><br><span>index a8f8044..14fe491 100644</span><br><span>--- a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c</span><br><span>+++ b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c</span><br><span>@@ -348,14 +348,39 @@</span><br><span> Sercom *sercom = cuart->u.asf4.usa_pd->device.hw;</span><br><span> </span><br><span> switch (ctl) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case CUART_CTL_NO_RXTX:</span><br><span style="color: hsl(120, 100%, 40%);">+// if (arg){</span><br><span style="color: hsl(120, 100%, 40%);">+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;</span><br><span style="color: hsl(120, 100%, 40%);">+// ctrlb &= ~(SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_RXEN);</span><br><span style="color: hsl(120, 100%, 40%);">+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;</span><br><span style="color: hsl(120, 100%, 40%);">+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);</span><br><span style="color: hsl(120, 100%, 40%);">+// } else {</span><br><span style="color: hsl(120, 100%, 40%);">+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;</span><br><span style="color: hsl(120, 100%, 40%);">+// ctrlb |= (SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_RXEN);</span><br><span style="color: hsl(120, 100%, 40%);">+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;</span><br><span style="color: hsl(120, 100%, 40%);">+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);</span><br><span style="color: hsl(120, 100%, 40%);">+// }</span><br><span style="color: hsl(120, 100%, 40%);">+ break;</span><br><span> case CUART_CTL_RX:</span><br><span> if (arg){</span><br><span style="color: hsl(0, 100%, 40%);">- sercom->USART.CTRLB.bit.RXEN = 1;</span><br><span style="color: hsl(0, 100%, 40%);">- sercom->USART.CTRLB.bit.TXEN = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+//// delay_us(cuart->u.asf4.extrawait_after_rx);</span><br><span style="color: hsl(120, 100%, 40%);">+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;</span><br><span style="color: hsl(120, 100%, 40%);">+// ctrlb &= ~SERCOM_USART_CTRLB_TXEN;</span><br><span style="color: hsl(120, 100%, 40%);">+// ctrlb |= SERCOM_USART_CTRLB_RXEN;</span><br><span style="color: hsl(120, 100%, 40%);">+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;</span><br><span style="color: hsl(120, 100%, 40%);">+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);</span><br><span style="color: hsl(120, 100%, 40%);">+//</span><br><span style="color: hsl(120, 100%, 40%);">+//// sercom->USART.CTRLB.bit.TXEN = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+//// sercom->USART.CTRLB.bit.RXEN = 1;</span><br><span> } else {</span><br><span> delay_us(cuart->u.asf4.extrawait_after_rx);</span><br><span style="color: hsl(0, 100%, 40%);">- sercom->USART.CTRLB.bit.RXEN = 0;</span><br><span style="color: hsl(0, 100%, 40%);">- sercom->USART.CTRLB.bit.TXEN = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+//// sercom->USART.CTRLB.bit.RXEN = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+//// sercom->USART.CTRLB.bit.TXEN = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;</span><br><span style="color: hsl(120, 100%, 40%);">+// ctrlb &= ~SERCOM_USART_CTRLB_RXEN;</span><br><span style="color: hsl(120, 100%, 40%);">+// ctrlb |= SERCOM_USART_CTRLB_TXEN;</span><br><span style="color: hsl(120, 100%, 40%);">+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;</span><br><span style="color: hsl(120, 100%, 40%);">+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);</span><br><span> }</span><br><span> break;</span><br><span> case CUART_CTL_RST:</span><br><span>diff --git a/sysmoOCTSIM/driver_init.c b/sysmoOCTSIM/driver_init.c</span><br><span>index c373dc2..7071ea5 100644</span><br><span>--- a/sysmoOCTSIM/driver_init.c</span><br><span>+++ b/sysmoOCTSIM/driver_init.c</span><br><span>@@ -33,7 +33,7 @@</span><br><span> #define SIM6_BUFFER_SIZE 512</span><br><span> </span><br><span> /*! The buffer size for USART */</span><br><span style="color: hsl(0, 100%, 40%);">-#define UART_DEBUG_BUFFER_SIZE 256</span><br><span style="color: hsl(120, 100%, 40%);">+#define UART_DEBUG_BUFFER_SIZE 4096</span><br><span> </span><br><span> struct usart_async_descriptor SIM0;</span><br><span> struct usart_async_descriptor SIM1;</span><br><span>diff --git a/sysmoOCTSIM/gcc/Makefile b/sysmoOCTSIM/gcc/Makefile</span><br><span>index 41f5d10..95a582f 100644</span><br><span>--- a/sysmoOCTSIM/gcc/Makefile</span><br><span>+++ b/sysmoOCTSIM/gcc/Makefile</span><br><span>@@ -8,7 +8,7 @@</span><br><span> CROSS_COMPILE= arm-none-eabi-</span><br><span> </span><br><span> CFLAGS_CPU=-D__SAME54N19A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16</span><br><span style="color: hsl(0, 100%, 40%);">-CFLAGS=-x c -mthumb -DDEBUG -O0 -ffunction-sections -fdata-sections -mlong-calls \</span><br><span style="color: hsl(120, 100%, 40%);">+CFLAGS=-x c -mthumb -DDEBUG -Os -ffunction-sections -fdata-sections -mlong-calls \</span><br><span> -g3 -Wall -c -std=gnu99 $(CFLAGS_CPU)</span><br><span> </span><br><span> CC = $(CROSS_COMPILE)gcc</span><br><span>diff --git a/sysmoOCTSIM/hpl/sercom/hpl_sercom.c b/sysmoOCTSIM/hpl/sercom/hpl_sercom.c</span><br><span>index f235115..272fb07 100644</span><br><span>--- a/sysmoOCTSIM/hpl/sercom/hpl_sercom.c</span><br><span>+++ b/sysmoOCTSIM/hpl/sercom/hpl_sercom.c</span><br><span>@@ -577,7 +577,7 @@</span><br><span> hri_sercomusart_write_INTEN_ERROR_bit(device->hw, state);</span><br><span> }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+#include <hal_gpio.h></span><br><span> /**</span><br><span> * \internal Sercom interrupt handler</span><br><span> *</span><br><span>@@ -591,6 +591,12 @@</span><br><span> hri_sercomusart_clear_INTEN_DRE_bit(hw);</span><br><span> device->usart_cb.tx_byte_sent(device);</span><br><span> } else if (hri_sercomusart_get_interrupt_TXC_bit(hw) && hri_sercomusart_get_INTEN_TXC_bit(hw)) {</span><br><span style="color: hsl(120, 100%, 40%);">+#if 0</span><br><span style="color: hsl(120, 100%, 40%);">+// tx byte last edge <-> txc irq delay</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, true);</span><br><span style="color: hsl(120, 100%, 40%);">+ delay_us(1);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, false);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> hri_sercomusart_clear_INTEN_TXC_bit(hw);</span><br><span> device->usart_cb.tx_done_cb(device);</span><br><span> } else if (hri_sercomusart_get_interrupt_RXC_bit(hw)) {</span><br><span>@@ -600,8 +606,20 @@</span><br><span> hri_sercomusart_clear_STATUS_reg(hw, SERCOM_USART_STATUS_MASK);</span><br><span> return;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+#if 0</span><br><span style="color: hsl(120, 100%, 40%);">+// rx byte last edge <-> rxc irq delay</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, true);</span><br><span style="color: hsl(120, 100%, 40%);">+ delay_us(1);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, false);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span> device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw));</span><br><span style="color: hsl(120, 100%, 40%);">+#if 0</span><br><span style="color: hsl(120, 100%, 40%);">+// rx byte last edge <-> rxc irq end delay</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, true);</span><br><span style="color: hsl(120, 100%, 40%);">+ delay_us(1);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, false);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> } else if (hri_sercomusart_get_interrupt_ERROR_bit(hw)) {</span><br><span> uint32_t status;</span><br><span> </span><br><span>diff --git a/sysmoOCTSIM/libosmo_emb.c b/sysmoOCTSIM/libosmo_emb.c</span><br><span>index 09555f3..e550b07 100644</span><br><span>--- a/sysmoOCTSIM/libosmo_emb.c</span><br><span>+++ b/sysmoOCTSIM/libosmo_emb.c</span><br><span>@@ -41,43 +41,43 @@</span><br><span> [DUSB] = {</span><br><span> .name = "USB",</span><br><span> .description = "USB Transport",</span><br><span style="color: hsl(0, 100%, 40%);">- .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 0,</span><br><span> .loglevel = LOGL_NOTICE,</span><br><span> },</span><br><span> [DCCID] = {</span><br><span> .name = "CCID",</span><br><span> .description = "USB-CCID Protocol",</span><br><span style="color: hsl(0, 100%, 40%);">- .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 0,</span><br><span> .loglevel = LOGL_DEBUG,</span><br><span> },</span><br><span> [DISO7816] = {</span><br><span> .name = "ISO7816",</span><br><span> .description = "ISO7816-3 State machines",</span><br><span style="color: hsl(0, 100%, 40%);">- .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 0,</span><br><span> .loglevel = LOGL_DEBUG,</span><br><span> },</span><br><span> [DATR] = {</span><br><span> .name = "ATR",</span><br><span> .description = "ATR (Answer To Reset) FSM",</span><br><span style="color: hsl(0, 100%, 40%);">- .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 0,</span><br><span> .loglevel = LOGL_DEBUG,</span><br><span> },</span><br><span> [DTPDU] = {</span><br><span> .name = "TPDU",</span><br><span> .description = "TPDU FSM",</span><br><span style="color: hsl(0, 100%, 40%);">- .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 0,</span><br><span> .loglevel = LOGL_DEBUG,</span><br><span> },</span><br><span> [DPPS] = {</span><br><span> .name = "PPS",</span><br><span> .description = "PPS (Protocol and Parameter Selection) FSM",</span><br><span style="color: hsl(0, 100%, 40%);">- .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 0,</span><br><span> .loglevel = LOGL_DEBUG,</span><br><span> },</span><br><span> [DCARD] = {</span><br><span> .name = "CARD",</span><br><span> .description = "Card FSM",</span><br><span style="color: hsl(0, 100%, 40%);">- .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 0,</span><br><span> .loglevel = LOGL_DEBUG,</span><br><span> },</span><br><span> };</span><br><span>@@ -150,13 +150,13 @@</span><br><span> struct log_target *stderr_target;</span><br><span> </span><br><span> /* msgb */</span><br><span style="color: hsl(0, 100%, 40%);">- g_msgb_ctx = talloc_pool(g_tall_ctx, 20480);</span><br><span style="color: hsl(120, 100%, 40%);">+// g_msgb_ctx = talloc_pool(g_tall_ctx, 20480);</span><br><span> //talloc_set_memlimit(g_msgb_ctx, 20480);</span><br><span style="color: hsl(0, 100%, 40%);">- msgb_talloc_ctx_init(g_msgb_ctx, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+// msgb_talloc_ctx_init(g_msgb_ctx, 0);</span><br><span> </span><br><span> /* logging */</span><br><span> log_init(&log_info, g_tall_ctx);</span><br><span style="color: hsl(0, 100%, 40%);">- stderr_target = log_target_create_stderr_raw();</span><br><span style="color: hsl(120, 100%, 40%);">+// stderr_target = log_target_create_stderr_raw();</span><br><span> //log_add_target(stderr_target);</span><br><span> //log_set_all_filter(stderr_target, 1);</span><br><span> </span><br><span>diff --git a/sysmoOCTSIM/main.c b/sysmoOCTSIM/main.c</span><br><span>index d81f189..189d764 100644</span><br><span>--- a/sysmoOCTSIM/main.c</span><br><span>+++ b/sysmoOCTSIM/main.c</span><br><span>@@ -151,7 +151,7 @@</span><br><span> /* bit-mask of card-insert status, as determined from NCN8025 IRQ output */</span><br><span> uint8_t card_insert_mask;</span><br><span> };</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ccid_state g_ccid_s;</span><br><span style="color: hsl(120, 100%, 40%);">+static volatile struct ccid_state g_ccid_s;</span><br><span> </span><br><span> static void ccid_out_read_compl(const uint8_t ep, enum usb_xfer_code code, uint32_t transferred);</span><br><span> static void ccid_in_write_compl(const uint8_t ep, enum usb_xfer_code code, uint32_t transferred);</span><br><span>@@ -1131,6 +1131,38 @@</span><br><span> char sernr_buf[16*2+1];</span><br><span> char rstcause_buf[RSTCAUSE_STR_SIZE];</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#if 0</span><br><span style="color: hsl(120, 100%, 40%);">+CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk ; //| /* tracing*/</span><br><span style="color: hsl(120, 100%, 40%);">+////CoreDebug_DEMCR_MON_EN_Msk; /* mon interupt catcher */</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%);">+DWT->COMP0 = 0x40003028; /* sercom 0 data */</span><br><span style="color: hsl(120, 100%, 40%);">+//DWT->COMP0 = 0x40003428; /* sercom 1 data */</span><br><span style="color: hsl(120, 100%, 40%);">+DWT->MASK0 = 0; /* 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+DWT->FUNCTION0 = 0; /* has to be 0 for linked address */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DWT->COMP1 = 0xa5; /* value */</span><br><span style="color: hsl(120, 100%, 40%);">+DWT->MASK1 = 0; /* match all bits */</span><br><span style="color: hsl(120, 100%, 40%);">+DWT->FUNCTION1 = (0b10 << DWT_FUNCTION_DATAVSIZE_Pos) | /* DATAVSIZE 10 - dword */</span><br><span style="color: hsl(120, 100%, 40%);">+#if 1</span><br><span style="color: hsl(120, 100%, 40%);">+(0 << DWT_FUNCTION_DATAVADDR0_Pos) | /* Data Match linked addr pointer in COMP0 */</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span style="color: hsl(120, 100%, 40%);">+(1 << DWT_FUNCTION_DATAVADDR0_Pos) | /* Data Match on any addr -> own number */</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+(1 << DWT_FUNCTION_DATAVMATCH_Pos) | /* DATAVMATCH Enable data comparation */</span><br><span style="color: hsl(120, 100%, 40%);">+(0b0111 << DWT_FUNCTION_FUNCTION_Pos); /* generate a watchpoint event on rw */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#if 0</span><br><span style="color: hsl(120, 100%, 40%);">+ dwt_init();</span><br><span style="color: hsl(120, 100%, 40%);">+ //geht</span><br><span style="color: hsl(120, 100%, 40%);">+ // int a = request_dwt_watchpoint(0x40003428, 0, WDE_DATA_RW, 0, false);</span><br><span style="color: hsl(120, 100%, 40%);">+ int a = request_dwt_watchpoint(0x40003428, 0, WDE_DATA_RW, 0, false);</span><br><span style="color: hsl(120, 100%, 40%);">+// int b = request_dwt_watchpoint(0, 0, WDE_DATA_RW, a, true);</span><br><span style="color: hsl(120, 100%, 40%);">+ enable_dwt_comp(a);</span><br><span style="color: hsl(120, 100%, 40%);">+// enable_dwt_comp(b);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> atmel_start_init();</span><br><span> get_chip_unique_serial_str(sernr_buf, sizeof(sernr_buf));</span><br><span> get_rstcause_str(rstcause_buf);</span><br><span>@@ -1154,6 +1186,9 @@</span><br><span> // command_register(&cmd_get_time);</span><br><span> // command_register(&cmd_test_timer);</span><br><span> </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> printf("\r\n\r\n"</span><br><span> "=============================================================================\n\r"</span><br><span> "sysmoOCTSIM firmware " GIT_VERSION "\n\r"</span><br><span>@@ -1166,12 +1201,14 @@</span><br><span> g_tall_ctx = talloc_named_const(NULL, 0, "global");</span><br><span> printf("g_tall_ctx=%p\r\n", g_tall_ctx);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ //FIXME osmo_emb has a pool?</span><br><span style="color: hsl(120, 100%, 40%);">+ msgb_talloc_ctx_init(g_tall_ctx, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> libosmo_emb_init();</span><br><span> </span><br><span> LOGP(DUSB, LOGL_ERROR, "foobar usb\n");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- //FIXME osmo_emb has a pool?</span><br><span style="color: hsl(0, 100%, 40%);">- //msgb_set_talloc_ctx(g_tall_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> //prevent spurious interrupts before our driver structs are ready</span><br><span> CRITICAL_SECTION_ENTER()</span><br><span>@@ -1186,11 +1223,22 @@</span><br><span> }</span><br><span> submit_next_out();</span><br><span> CRITICAL_SECTION_LEAVE()</span><br><span style="color: hsl(120, 100%, 40%);">+#if 0</span><br><span style="color: hsl(120, 100%, 40%);">+ /* CAN_RX */</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_function(PIN_PB12, GPIO_PIN_FUNCTION_OFF);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_direction(PIN_PB12, GPIO_DIRECTION_OUT);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB12, false);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* CAN_TX */</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_function(PIN_PB13, GPIO_PIN_FUNCTION_OFF);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_direction(PIN_PB13, GPIO_DIRECTION_OUT);</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_set_pin_level(PIN_PB13, false);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+ poll_card_detect();</span><br><span> // command_print_prompt();</span><br><span> while (true) { // main loop</span><br><span> command_try_recv();</span><br><span style="color: hsl(0, 100%, 40%);">- poll_card_detect();</span><br><span style="color: hsl(120, 100%, 40%);">+// poll_card_detect();</span><br><span> submit_next_irq();</span><br><span> feed_ccid();</span><br><span> osmo_timers_update();</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16243">change 16243</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/c/osmo-ccid-firmware/+/16243"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-ccid-firmware </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I4340cb53f0f903842eb1c4d60a36d44ac9e5cbde </div>
<div style="display:none"> Gerrit-Change-Number: 16243 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>