Function pointer struct in main for run,init

This commit is contained in:
Christina Quast 2015-02-27 13:39:45 +01:00
parent 1edf350c34
commit fb524b9bb3
3 changed files with 44 additions and 46 deletions

View File

@ -214,6 +214,13 @@ void Phone_Master_Init( void ) {
USART_SetTransmitterEnabled(USART_PHONE, 1); USART_SetTransmitterEnabled(USART_PHONE, 1);
USART_SetReceiverEnabled(USART_PHONE, 1); USART_SetReceiverEnabled(USART_PHONE, 1);
/* 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? // FIXME: Or do I need to call VBUS_CONFIGURE() here instead, which will call USBD_Connect() later?
// USBD_Connect(); // USBD_Connect();
// FIXME: USB clock? USB PMC? // FIXME: USB clock? USB PMC?
@ -232,3 +239,12 @@ void Phone_Master_Init( void ) {
*/ */
} }
void Phone_run( void )
{
// FIXME: Function Phone_run not implemented yet
/* Send and receive chars */
// ISO7816_GetChar(&rcv_char);
// ISO7816_SendChar(char_to_send);
}

View File

@ -5,6 +5,21 @@
#include "board.h" #include "board.h"
/*------------------------------------------------------------------------------
* Internal variables
*------------------------------------------------------------------------------*/
typedef struct {
void (* init) ( void );
void (* run) ( void );
} conf_func;
conf_func config_func_ptrs[] = {
{Sniffer_Init, Sniffer_run}, /* CFG_NUM_SNIFF */
{Phone_Master_Init, Phone_run}, /* CFG_NUM_PHONE */
{MITM_init, MITM_run}, /* CFG_NUM_MITM */
};
/*------------------------------------------------------------------------------ /*------------------------------------------------------------------------------
* Internal variables * Internal variables
*------------------------------------------------------------------------------*/ *------------------------------------------------------------------------------*/
@ -55,54 +70,13 @@ extern int main( void )
// TC_Start(TC0, 0); // TC_Start(TC0, 0);
} }
/* FIXME: Or should we move the while loop into every case, and break out /* FIXME: Or should we move the while loop into every case, and break out
in case the config changes? */ in case the config changes? */
switch(simtrace_config) {
case CFG_NUM_SNIFF:
if (conf_changed) { if (conf_changed) {
Sniffer_Init(); config_func_ptrs[simtrace_config-1].init();
printf("****+ Changed to CFG_NUM_SNIFF\n\r");
conf_changed = 0; conf_changed = 0;
} else { } else {
if (rcvdChar != 0) { config_func_ptrs[simtrace_config-1].run();
TRACE_DEBUG("Rcvd char _%x_ \n\r", rcvdChar);
rcvdChar = 0;
}
}
break;
/* case CONF_CCID_READER:
if (conf_changed) {
// Init
conf_changed = 0;
} else {
// Receive char
}
break; */
case CFG_NUM_PHONE:
if (conf_changed) {
Phone_Master_Init();
printf("****+ Changed to CFG_NUM_PHONE\n\r");
conf_changed = 0;
/* Configure ISO7816 driver */
// FIXME: PIO_Configure(pPwr, PIO_LISTSIZE( pPwr ));
} else {
/* Send and receive chars */
// ISO7816_GetChar(&rcv_char);
// ISO7816_SendChar(char_to_send);
}
break;
case CFG_NUM_MITM:
if (conf_changed) {
printf("****+ Changed to CFG_NUM_MITM\n\r");
// Init
conf_changed = 0;
} else {
// Receive char
}
break;
default:
break;
} }
} }
} }

View File

@ -77,3 +77,11 @@ void Sniffer_Init( void )
USART_SetReceiverEnabled(USART_PHONE, 1); USART_SetReceiverEnabled(USART_PHONE, 1);
} }
void Sniffer_run( void )
{
if (rcvdChar != 0) {
TRACE_DEBUG("Rcvd char _%x_ \n\r", rcvdChar);
rcvdChar = 0;
}
}