From d52201f6dbb6b795a77f945446c291201f088165 Mon Sep 17 00:00:00 2001 From: Christina Quast Date: Mon, 13 Apr 2015 22:38:05 +0200 Subject: [PATCH] phone.c: Enable/disable interrupts on init/exit --- firmware/src_simtrace/phone.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/firmware/src_simtrace/phone.c b/firmware/src_simtrace/phone.c index 092c8aff..f4f76605 100644 --- a/firmware/src_simtrace/phone.c +++ b/firmware/src_simtrace/phone.c @@ -169,9 +169,13 @@ void sendResponse_to_phone( uint8_t *pArg, uint8_t status, uint32_t transferred, PR("sendResp, stat: %X, trnsf: %x, rem: %x\n\r", status, transferred, remaining); PR("Resp: %x %x %x .. %x\n", host_to_sim_buf[0], host_to_sim_buf[1], host_to_sim_buf[2], host_to_sim_buf[transferred-1]); + USART_SetReceiverEnabled(USART_PHONE, 0); + USART_SetTransmitterEnabled(USART_PHONE, 1); for (uint32_t i = 0; i < transferred; i++ ) { ISO7816_SendChar(host_to_sim_buf[i], &usart_info); } + USART_SetTransmitterEnabled(USART_PHONE, 0); + USART_SetReceiverEnabled(USART_PHONE, 1); receive_from_host(); } @@ -193,6 +197,7 @@ void Phone_configure( void ) { void Phone_exit( void ) { PIO_DisableIt( &pinPhoneRST ) ; + NVIC_DisableIRQ(USART1_IRQn); USART_DisableIt( USART_PHONE, US_IER_RXRDY) ; USART_SetTransmitterEnabled(USART_PHONE, 0); USART_SetReceiverEnabled(USART_PHONE, 0); @@ -207,17 +212,18 @@ void Phone_init( void ) { PIO_EnableIt( &pinPhoneRST ) ; ISO7816_Init(&usart_info, CLK_SLAVE); - USART_SetTransmitterEnabled(USART_PHONE, 1); + USART_SetTransmitterEnabled(USART_PHONE, 0); USART_SetReceiverEnabled(USART_PHONE, 1); + USART_EnableIt(USART_PHONE, US_IER_RXRDY); // TODO: interrupt enable/disable is shared with sniffer + NVIC_EnableIRQ(USART1_IRQn); + /* Configure ISO7816 driver */ // FIXME: PIO_Configure(pPwr, PIO_LISTSIZE( pPwr )); // FIXME: Or do I need to call VBUS_CONFIGURE() here instead, which will call USBD_Connect() later? // USBD_Connect(); - USART_EnableIt( USART_PHONE, US_IER_RXRDY) ; - //Timer_Init(); receive_from_host();