diff options
author | Christina Quast <chrysh.ng+git@gmail.com> | 2015-04-20 13:07:28 +0200 |
---|---|---|
committer | Christina Quast <chrysh.ng+git@gmail.com> | 2015-04-20 13:07:28 +0200 |
commit | e4cbfe6f4794bca7b8ce99db576f976c782383c9 (patch) | |
tree | f3007f1c379cd13bf9ced24e19776fe265379b16 /firmware | |
parent | 3d5e3ab612194876d0757ecfc4a50679521f2761 (diff) |
Moved ISR_PhoneRST into iso code file and simtrace header
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/src_simtrace/phone.c | 35 | ||||
-rw-r--r-- | firmware/src_simtrace/simtrace.h | 3 | ||||
-rw-r--r-- | firmware/src_simtrace/simtrace_iso7816.c | 31 |
3 files changed, 35 insertions, 34 deletions
diff --git a/firmware/src_simtrace/phone.c b/firmware/src_simtrace/phone.c index 82ba612..1b78ecb 100644 --- a/firmware/src_simtrace/phone.c +++ b/firmware/src_simtrace/phone.c @@ -94,7 +94,6 @@ static const Pin pins_bus[] = {PINS_BUS_DEFAULT}; #endif /** ISO7816 RST pin */ -static const Pin pinIso7816RstMC = PIN_ISO7816_RST_PHONE; static uint8_t sim_inserted = 0; static const Pin pPwr[] = { @@ -105,8 +104,7 @@ static const Pin pPwr[] = { {VCC_FWD, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT} }; - -static const Pin pinPhoneRST = PIN_ISO7816_RST_PHONE; +const Pin pinPhoneRST = PIN_ISO7816_RST_PHONE; static struct Usart_info usart_info = {.base = USART_PHONE, .id = ID_USART_PHONE, .state = USART_RCV}; @@ -125,37 +123,6 @@ static struct Usart_info usart_info = {.base = USART_PHONE, .id = ID_USART_PHONE *-----------------------------------------------------------------------------*/ static uint8_t host_to_sim_buf[BUFLEN]; -/*----------------------------------------------------------------------------- - * Interrupt routines - *-----------------------------------------------------------------------------*/ -void Callback_PhoneRST_ISR( uint8_t *pArg, uint8_t status, uint32_t transferred, uint32_t remaining) -{ - printf("rstCB\n\r"); - PIO_EnableIt( &pinPhoneRST ) ; -} -static void ISR_PhoneRST( const Pin *pPin) -{ - int ret; - // FIXME: no printfs in ISRs? - printf("+++ Int!! %x\n\r", pinPhoneRST.pio->PIO_ISR); - if ( ((pinPhoneRST.pio->PIO_ISR & pinPhoneRST.mask) != 0) ) - { - if(PIO_Get( &pinPhoneRST ) == 0) { - printf(" 0 "); - } else { - printf(" 1 "); - } - } - - if ((ret = USBD_Write( PHONE_INT, "R", 1, (TransferCallback)&Callback_PhoneRST_ISR, 0 )) != USBD_STATUS_SUCCESS) { - TRACE_ERROR("USB err status: %d (%s)\n", ret, __FUNCTION__); - return; - } - - /* Interrupt enabled after ATR is sent to phone */ - PIO_DisableIt( &pinPhoneRST ) ; -} - void receive_from_host( void ); void sendResponse_to_phone( uint8_t *pArg, uint8_t status, uint32_t transferred, uint32_t remaining) { diff --git a/firmware/src_simtrace/simtrace.h b/firmware/src_simtrace/simtrace.h index 83fc8b1..1c6b871 100644 --- a/firmware/src_simtrace/simtrace.h +++ b/firmware/src_simtrace/simtrace.h @@ -31,6 +31,8 @@ extern volatile bool rcvdChar; extern volatile uint32_t char_stat; extern volatile enum confNum simtrace_config; +extern const Pin pinPhoneRST; + enum confNum { CFG_NUM_SNIFF = 1, CFG_NUM_CCID, CFG_NUM_PHONE, CFG_NUM_MITM, NUM_CONF }; @@ -57,6 +59,7 @@ typedef struct { extern const USBConfigurationDescriptor *configurationDescriptorsArr[]; int check_data_from_phone(); +void ISR_PhoneRST( const Pin *pPin); /* Configure functions */ extern void Sniffer_configure( void ); diff --git a/firmware/src_simtrace/simtrace_iso7816.c b/firmware/src_simtrace/simtrace_iso7816.c index d182ed6..1376ee7 100644 --- a/firmware/src_simtrace/simtrace_iso7816.c +++ b/firmware/src_simtrace/simtrace_iso7816.c @@ -43,6 +43,37 @@ volatile uint32_t char_stat; volatile ringbuf sim_rcv_buf = { {0}, 0, 0 }; +/*----------------------------------------------------------------------------- + * Interrupt routines + *-----------------------------------------------------------------------------*/ +void Callback_PhoneRST_ISR( uint8_t *pArg, uint8_t status, uint32_t transferred, uint32_t remaining) +{ + printf("rstCB\n\r"); + PIO_EnableIt( &pinPhoneRST ) ; +} +void ISR_PhoneRST( const Pin *pPin) +{ + int ret; + // FIXME: no printfs in ISRs? + printf("+++ Int!! %x\n\r", pinPhoneRST.pio->PIO_ISR); + if ( ((pinPhoneRST.pio->PIO_ISR & pinPhoneRST.mask) != 0) ) + { + if(PIO_Get( &pinPhoneRST ) == 0) { + printf(" 0 "); + } else { + printf(" 1 "); + } + } + + if ((ret = USBD_Write( PHONE_INT, "R", 1, (TransferCallback)&Callback_PhoneRST_ISR, 0 )) != USBD_STATUS_SUCCESS) { + TRACE_ERROR("USB err status: %d (%s)\n", ret, __FUNCTION__); + return; + } + + /* Interrupt enabled after ATR is sent to phone */ + PIO_DisableIt( &pinPhoneRST ) ; +} + /* * char_stat is zero if no error occured. * Otherwise it is filled with the content of the status register. |