mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-18 22:38:32 +03:00
Redundant functions in phone and sniffer moved
File simtrace_iso7816.c is like a library for iso specific functions. The next step will be to use the atmel softlib functions instead.
This commit is contained in:
@@ -58,89 +58,12 @@ static const Pin pPwr[] = {
|
||||
{VCC_FWD, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
|
||||
};
|
||||
|
||||
uint32_t char_stat = 0;
|
||||
uint8_t rcvdChar = 0;
|
||||
extern uint32_t char_stat;
|
||||
extern uint8_t rcvdChar;
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Interrupt routines
|
||||
*-----------------------------------------------------------------------------*/
|
||||
/*
|
||||
* Initializes rcvdChar with the char received on USART interface
|
||||
* char_stat is zero if no error occured.
|
||||
* Otherwise it is filled with the content of the status register.
|
||||
*/
|
||||
void USART1_IrqHandler( void )
|
||||
{
|
||||
uint32_t stat;
|
||||
char_stat = 0;
|
||||
// Rcv buf full
|
||||
/* if((stat & US_CSR_RXBUFF) == US_CSR_RXBUFF) {
|
||||
TRACE_DEBUG("Rcv buf full");
|
||||
USART_DisableIt(USART1, US_IDR_RXBUFF);
|
||||
}
|
||||
*/
|
||||
uint32_t csr = USART_PHONE->US_CSR;
|
||||
|
||||
if (csr & US_CSR_TXRDY) {
|
||||
/* transmit buffer empty, nothing to transmit */
|
||||
}
|
||||
if (csr & US_CSR_RXRDY) {
|
||||
stat = (csr&(US_CSR_OVRE|US_CSR_FRAME|
|
||||
US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|
|
||||
(1<<10)));
|
||||
|
||||
if (stat == 0 ) {
|
||||
/* Get a char */
|
||||
rcvdChar = ((USART_PHONE->US_RHR) & 0xFF);
|
||||
} /* else: error occured */
|
||||
char_stat = stat;
|
||||
}
|
||||
}
|
||||
|
||||
/** Initializes a ISO driver
|
||||
* \param pPinIso7816RstMC Pin ISO 7816 Rst MC
|
||||
*/
|
||||
void _ISO7816_Init( )
|
||||
{
|
||||
TRACE_DEBUG("ISO_Init\n\r");
|
||||
|
||||
USART_Configure( USART_PHONE,
|
||||
US_MR_USART_MODE_IS07816_T_0
|
||||
// Nope, we aren't master:
|
||||
// | US_MR_USCLKS_MCK
|
||||
| US_MR_USCLKS_SCK
|
||||
| US_MR_NBSTOP_1_BIT
|
||||
| US_MR_PAR_EVEN
|
||||
| US_MR_CHRL_8_BIT
|
||||
| US_MR_CLKO /** TODO: This field was set in the original simtrace firmware..why? */
|
||||
| (3<<24), /* MAX_ITERATION */
|
||||
1,
|
||||
0);
|
||||
/*
|
||||
SYNC = 0 (async mode)
|
||||
OVER = 0 (oversampling by 8?)
|
||||
FIDI = 372 (default val on startup before other value is negotiated)
|
||||
USCLKS = 3 (Select SCK as input clock) --> US_MR_USCLKS_SCK
|
||||
CD = 1 ? --> US_BRGR_CD(1)
|
||||
*/
|
||||
USART_PHONE->US_FIDI = 372;
|
||||
USART_PHONE->US_BRGR = US_BRGR_CD(1);
|
||||
// USART_PHONE->US_BRGR = BOARD_MCK / (372*9600);
|
||||
USART_PHONE->US_TTGR = 5;
|
||||
|
||||
/* Configure USART */
|
||||
PMC_EnablePeripheral(ID_USART_PHONE);
|
||||
|
||||
USART1->US_IDR = 0xffffffff;
|
||||
USART_EnableIt( USART1, US_IER_RXRDY) ;
|
||||
/* enable USART1 interrupt */
|
||||
NVIC_EnableIRQ( USART1_IRQn ) ;
|
||||
|
||||
// USART_PHONE->US_IER = US_IER_RXRDY | US_IER_OVRE | US_IER_FRAME | US_IER_PARE | US_IER_NACK | US_IER_ITER;
|
||||
|
||||
USART_SetReceiverEnabled(USART_PHONE, 1);
|
||||
|
||||
}
|
||||
|
||||
void Sniffer_Init( void )
|
||||
{
|
||||
@@ -150,6 +73,7 @@ void Sniffer_Init( void )
|
||||
|
||||
PIO_Configure(pPwr, PIO_LISTSIZE( pPwr ));
|
||||
|
||||
_ISO7816_Init( );
|
||||
_ISO7816_Init();
|
||||
|
||||
USART_SetReceiverEnabled(USART_PHONE, 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user