blob: e39d1dc18cd0f73904708a7762fd226d61f62e74 [file] [log] [blame]
Christina Quastc0aa7692015-02-25 14:02:01 +01001#ifndef SIMTRACE_H
2#define SIMTRACE_H
Christina Quast32906bb2015-02-24 11:35:19 +01003
Christina Quast4db82e02015-04-11 18:14:41 +02004#include "ringbuffer.h"
Harald Welte16055642016-03-03 11:02:45 +01005#include "board.h"
Harald Welte5e6e8dc2017-11-28 20:58:06 +01006#include <usb/device/dfu/dfu.h>
Christina Quast4db82e02015-04-11 18:14:41 +02007
Christina Quast4ba4d222015-03-02 16:14:09 +01008/* Endpoint numbers */
9#define DATAOUT 1
10#define DATAIN 2
11#define INT 3
12
Christina Quast235409a2015-06-24 16:05:09 +020013#define BUFLEN 512
Christina Quast71234252015-04-03 11:35:59 +020014
Christina Quastb65b8812015-04-04 10:51:37 +020015#define PHONE_DATAOUT 4
16#define PHONE_DATAIN 5
17#define PHONE_INT 6
Christina Quast71234252015-04-03 11:35:59 +020018
Harald Welte57b3a252016-03-02 15:20:27 +010019#define CARDEM_USIM2_DATAOUT DATAOUT
20#define CARDEM_USIM2_DATAIN DATAIN
21#define CARDEM_USIM2_INT INT
22
Christina Quastec9c09e2015-04-16 10:45:39 +020023#define CLK_MASTER true
24#define CLK_SLAVE false
25
26/* ===================================================*/
27/* Taken from iso7816_4.c */
28/* ===================================================*/
29/** Flip flop for send and receive char */
30#define USART_SEND 0
31#define USART_RCV 1
32
Christina Quast3eab56e2015-04-10 15:38:49 +020033
Christina Quast4db82e02015-04-11 18:14:41 +020034extern volatile ringbuf sim_rcv_buf;
Christina Quast95d66162015-04-09 22:38:47 +020035
36extern volatile bool rcvdChar;
37extern volatile uint32_t char_stat;
Christina Quast4ba4d222015-03-02 16:14:09 +010038
Christina Quaste4cbfe62015-04-20 13:07:28 +020039extern const Pin pinPhoneRST;
40
Christina Quast10b2e5a2015-02-25 18:40:15 +010041enum confNum {
Harald Welte16055642016-03-03 11:02:45 +010042 CFG_NUM_NONE = 0,
43#ifdef HAVE_SNIFFER
44 CFG_NUM_SNIFF,
45#endif
46#ifdef HAVE_CCID
47 CFG_NUM_CCID,
48#endif
49#ifdef HAVE_CARDEM
50 CFG_NUM_PHONE,
51#endif
52#ifdef HAVE_MITM
53 CFG_NUM_MITM,
54#endif
55 NUM_CONF
Christina Quast10b2e5a2015-02-25 18:40:15 +010056};
57
Christina Quastdb7b1ab2015-03-03 12:34:36 +010058/// CCIDDriverConfiguration Descriptors
59/// List of descriptors that make up the configuration descriptors of a
60/// device using the CCID driver.
61typedef struct {
62
63 /// Configuration descriptor
64 USBConfigurationDescriptor configuration;
65 /// Interface descriptor
66 USBInterfaceDescriptor interface;
67 /// CCID descriptor
68 CCIDDescriptor ccid;
69 /// Bulk OUT endpoint descriptor
70 USBEndpointDescriptor bulkOut;
71 /// Bulk IN endpoint descriptor
72 USBEndpointDescriptor bulkIn;
73 /// Interrupt OUT endpoint descriptor
74 USBEndpointDescriptor interruptIn;
Harald Welte5e6e8dc2017-11-28 20:58:06 +010075 DFURT_IF_DESCRIPTOR_STRUCT
Christina Quastdb7b1ab2015-03-03 12:34:36 +010076} __attribute__ ((packed)) CCIDDriverConfigurationDescriptors;
77
Christina Quast4b1e98d2015-04-06 23:28:02 +020078extern const USBConfigurationDescriptor *configurationDescriptorsArr[];
79
Christina Quastcb646bc2015-05-03 14:21:26 +020080void update_fidi(uint8_t fidi);
Christina Quastbe235272015-05-02 17:56:32 +020081
Christina Quaste4cbfe62015-04-20 13:07:28 +020082void ISR_PhoneRST( const Pin *pPin);
Christina Quastdb7b1ab2015-03-03 12:34:36 +010083
Christina Quast95d66162015-04-09 22:38:47 +020084/* Configure functions */
85extern void Sniffer_configure( void );
86extern void CCID_configure( void );
Harald Welte2a6d3af2016-02-28 19:29:14 +010087extern void mode_cardemu_configure(void);
Christina Quast95d66162015-04-09 22:38:47 +020088extern void MITM_configure( void );
89
Christina Quast1edf3502015-02-27 13:33:52 +010090/* Init functions */
Christina Quast95d66162015-04-09 22:38:47 +020091extern void Sniffer_init( void );
Christina Quastdb7b1ab2015-03-03 12:34:36 +010092extern void CCID_init( void );
Harald Welte2a6d3af2016-02-28 19:29:14 +010093extern void mode_cardemu_init(void);
Christina Quast1edf3502015-02-27 13:33:52 +010094extern void MITM_init( void );
Christina Quast27c643d2015-02-24 19:09:08 +010095
Christina Quastc0aa7692015-02-25 14:02:01 +010096extern void SIMtrace_USB_Initialize( void );
Christina Quastc0aa7692015-02-25 14:02:01 +010097
Christina Quast95d66162015-04-09 22:38:47 +020098/* Exit functions */
99extern void Sniffer_exit( void );
100extern void CCID_exit( void );
Harald Welte2a6d3af2016-02-28 19:29:14 +0100101extern void mode_cardemu_exit(void);
Christina Quast95d66162015-04-09 22:38:47 +0200102extern void MITM_exit( void );
103
Christina Quast1edf3502015-02-27 13:33:52 +0100104/* Run functions */
105extern void Sniffer_run( void );
Christina Quastdb7b1ab2015-03-03 12:34:36 +0100106extern void CCID_run( void );
Harald Welte2a6d3af2016-02-28 19:29:14 +0100107extern void mode_cardemu_run(void);
Christina Quast1edf3502015-02-27 13:33:52 +0100108extern void MITM_run( void );
109
Kévin Redon7b734622018-06-06 16:13:48 +0200110/* IRQ functions */
Kévin Redon45ad62d2018-06-07 18:56:41 +0200111extern void Sniffer_usart0_irq(void);
Harald Welte3bafe432016-03-20 16:43:12 +0100112extern void mode_cardemu_usart0_irq(void);
113extern void mode_cardemu_usart1_irq(void);
114
Christina Quast531d10b2015-03-19 19:27:04 +0100115/* Timer helper function */
116void Timer_Init( void );
117void TC0_Counter_Reset( void );
118
Christina Quast1edf3502015-02-27 13:33:52 +0100119#endif /* SIMTRACE_H */