mirror of https://gerrit.osmocom.org/simtrace2
116 lines
3.4 KiB
C
116 lines
3.4 KiB
C
// FIXME: Copyright license here
|
|
/*------------------------------------------------------------------------------
|
|
* Headers
|
|
*------------------------------------------------------------------------------*/
|
|
|
|
#include "board.h"
|
|
|
|
/*------------------------------------------------------------------------------
|
|
* Internal definitions
|
|
*------------------------------------------------------------------------------*/
|
|
#define CONF_NONE 0
|
|
#define CONF_SNIFFER 1
|
|
#define CONF_CCID_READER 2
|
|
#define CONF_SIMCARD_EMUL 3
|
|
#define CONF_MITM 4
|
|
|
|
|
|
/*------------------------------------------------------------------------------
|
|
* Internal variables
|
|
*------------------------------------------------------------------------------*/
|
|
uint8_t simtrace_config = CONF_NONE;
|
|
uint8_t conf_changed = 1;
|
|
|
|
uint8_t rcvdChar = 0;
|
|
uint32_t char_stat = 0;
|
|
|
|
/*------------------------------------------------------------------------------
|
|
* Main
|
|
*------------------------------------------------------------------------------*/
|
|
|
|
extern int main( void )
|
|
{
|
|
uint8_t isUsbConnected = 0;
|
|
|
|
LED_Configure(LED_NUM_GREEN);
|
|
LED_Set(LED_NUM_GREEN);
|
|
|
|
/* Disable watchdog*/
|
|
WDT_Disable( WDT ) ;
|
|
|
|
PIO_InitializeInterrupts(0);
|
|
|
|
SIMtrace_USB_Initialize();
|
|
|
|
printf("%s", "USB init\n\r");
|
|
|
|
while(USBD_GetState() < USBD_STATE_CONFIGURED);
|
|
|
|
TRACE_DEBUG("%s", "Start\n\r");
|
|
printf("%s", "Start\n\r");
|
|
while(1) {
|
|
|
|
/* Device is not configured */
|
|
if (USBD_GetState() < USBD_STATE_CONFIGURED) {
|
|
|
|
if (isUsbConnected) {
|
|
isUsbConnected = 0;
|
|
// TC_Stop(TC0, 0);
|
|
}
|
|
}
|
|
else if (isUsbConnected == 0) {
|
|
printf("USB is now configured\n\r");
|
|
|
|
isUsbConnected = 1;
|
|
// TC_Start(TC0, 0);
|
|
}
|
|
|
|
|
|
/* FIXME: Or should we move the while loop into every case, and break out
|
|
in case the config changes? */
|
|
switch(simtrace_config) {
|
|
case CONF_SNIFFER:
|
|
if (conf_changed) {
|
|
Sniffer_Init();
|
|
conf_changed = 0;
|
|
} else {
|
|
if (rcvdChar != 0) {
|
|
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 CONF_SIMCARD_EMUL:
|
|
if (conf_changed) {
|
|
Phone_Master_Init();
|
|
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 CONF_MITM:
|
|
if (conf_changed) {
|
|
// Init
|
|
conf_changed = 0;
|
|
} else {
|
|
// Receive char
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|