Harald Welte
13e8202c81
mode_cardem: Prepare for full support of second UART/USIM
...
So far we have only been working with a single UART/USIM. Let's
make things more data structure driven and pass around handles to
the data structures rather than hardcoding...
2016-03-16 20:45:09 +01:00
Harald Welte
06b27f64a2
mode_cardemu: Implement CEMU_USB_MSGT_DT_SET_ATR
...
This way the host PC can set the ATR of the emulated card
2016-03-16 20:45:09 +01:00
Harald Welte
ebb80eda19
introduce 'main' queue between USB receive and UART TX
...
In order to handle other USB commands like GET_STATUS, SET_ATR
or GET_STATS, we introduce an intermediary queue. The USB receive
completion call-back puts the command on that intermediate 'main'
queue. From that intermediate queue, the are further
dispatched/processed according to their mesage type.
2016-03-16 20:45:09 +01:00
Harald Welte
ad43440d93
card_emu: Fix various compiler warnings by switch/default/break
2016-03-16 20:45:09 +01:00
Harald Welte
5e00400a05
board_lowlevel.c: Improve main oscillator initialization
...
* ensure the PB8/PB9 pins are actually not in GPIO mode, which they
apparently are on boot-up
* ensure that neither pull-up nor pull-down are enabled on PB8/PB9
* ensure we first start the oscillator, before selecting it
The sum of the above changes seems to make oscillator start-up much more
reliable than before. The time needed for initialization is now pretty
stable, and the occasional 15-20second clock stabiliziation has not been
observed with this change.
2016-03-16 20:45:09 +01:00
Harald Welte
a0cf200695
host_communication: keep track of number of pending/queued req_ctx
2016-03-02 10:35:51 +01:00
Harald Welte
acd48c51f2
HACK: always use the USART interrupt handler of mode_cardemu()
...
This must be fixed in a way that the per-configuration interrupt
handler is called, depending on the USB configuration that is set.
2016-03-02 10:34:24 +01:00
Harald Welte
fcdd660fb1
card_emu: Don't de-reference a NULL variable
2016-03-02 10:33:58 +01:00
Harald Welte
fde250a54b
uart_console.c: Don't redefine constants from board.h
2016-03-02 10:33:11 +01:00
Harald Welte
715bc05f55
Increase serial console sped to 230400 bps
...
This makes debug printf's twice as fast (half as slow) and thus
has less of an impact on execution speed than the previous 115200
2016-03-02 10:31:59 +01:00
Harald Welte
12d4bdfbb1
mode_cardemu: Process RX interrupts before TX
...
It's always more important to pull out a received character from
the receive holding register to avoid the risk of overflow, so let's
do that first.
2016-03-02 10:31:03 +01:00
Harald Welte
dda7355306
card_emu: Only transmit NULL byte from the right state
...
The reader cannot accept a waiting time extension at any time. Rather,
it can only accept it if it is currently waiting for a procedure byte.
2016-03-02 10:29:55 +01:00
Harald Welte
f1697e2dd9
card_emu: Only allocate a new buffer if needed in send_tpdu_header()
2016-03-02 10:28:54 +01:00
Harald Welte
acae412b2a
explicitly inform card_emu once data to transmit has arrived
2016-03-02 10:27:58 +01:00
Harald Welte
8a416b1812
mode_cardemu: fix ordering of events when switching rx/tx mode
2016-03-01 00:42:04 +01:00
Harald Welte
45688d4c3b
mode_cardemu: Disable UART TXRDY generation if we don't have data to TX
...
When the ISO7816 state machine requires us to transmit something, but
we don't have data ready to transmit, we should switch off TXRDY
interrupt generation.
What's missing is of course the other part that re-enabls TXRDY
generation once new data is available
2016-02-29 21:35:38 +01:00
Harald Welte
349c54bc3b
req_ctx: LF -> CR+LF
2016-02-29 21:35:24 +01:00
Harald Welte
22925ea707
test: Add TRACE_INFO and TRACE_ERROR definitions
2016-02-29 21:14:25 +01:00
Harald Welte
4678388c3c
board_lowlevel: More comments about clock initialization
2016-02-29 19:45:59 +01:00
Harald Welte
ebbb645f4b
req_ctx: Fix allocation (allocate 1 block, not all) and call _init()
2016-02-29 17:57:51 +01:00
Harald Welte
54cb3d017f
host_communication/card_emu: adapt to nwe req_ctx / queuing paradignm
2016-02-29 14:12:40 +01:00
Harald Welte
f672e9d63a
req_ctx: Convert from hand-coded linked lists to linuxlist.h
...
This also removes the actual queuing code from req_ctx, and
leaves this to the caller. Only tw out of the existing states actually
required the ordering requirement enforced by the qeue, and in the
future we will need to have per-endpoint queues anyway. Both means it
is better to manage queues outside the req_ctx, and leve that as a pure
memory allocator.
2016-02-29 14:10:22 +01:00
Harald Welte
b66ce249d0
req_ctx: Add better explanation about the various states
2016-02-29 14:07:07 +01:00
Harald Welte
22bf67fc9c
card_emu: Use \r\n instead of \n
...
When printing over the actual serial port (as opposed to the unit
tests) we need CR+LF, and not just LF.
2016-02-29 10:18:59 +01:00
Harald Welte
708d85c085
trace.h: Don't print file/function name in TRACE_DEBUG()
2016-02-29 10:16:05 +01:00
Harald Welte
c0bd7f0aaa
mode_cardemu: Move GPIO detection to IRQ, use ring buffer for UART RX
...
We don't want to call into the bulk of card_emu.c from interrupt
context, so let's introduce a ring buffer as a softwre-FIFO between
the USART receiving a byte and the processing of that byte in
card_emu.c, which is then performed from the main loop outside
interrupt context.
2016-02-29 10:13:33 +01:00
Harald Welte
47ee283d14
card_emu_io_statechg(): properly determine edges from levels
...
The caller might not have edge triggering and just gives us the
current state. we have to use that informtaion to determine the
edges when something is actually switched on or off.
2016-02-29 10:09:46 +01:00
Harald Welte
99f62a6def
mode_cardemu: update_fidi just needs to execute
...
the actual translation of the Fi/Di values to the divider is
already made, we just need to update the USART divider here.
2016-02-29 10:08:49 +01:00
Harald Welte
2ad0ca15a8
host_communication: Fix TRACE_ERROR syntax
2016-02-29 10:07:16 +01:00
Harald Welte
43f7949fe0
card_emu: Add TRACE_DEBUG once TPDU header is sent to USB
2016-02-29 10:06:54 +01:00
Harald Welte
b086ab0242
owhw: Fix GPIO for USIM1_RST (24, not 23!) and enable SET_USIM1_PRES
2016-02-29 10:05:53 +01:00
Harald Welte
9dbc46e799
mode_cardemu: Proper enabling/disabling of USART IRQ sources
...
we always have to disable all intrerrupts that we don't want to be
enabled
2016-02-29 10:05:10 +01:00
Harald Welte
ba0c688103
owhw: Make owhw/board.h the default for now
...
I will re-introduce simtrace2 hardware support later
2016-02-28 19:32:36 +01:00
Harald Welte
4dc3db7beb
req_ctx: Use only 10 small buffers, and no large ones
2016-02-28 19:32:01 +01:00
Harald Welte
203ea19227
req_ctx: Use the linked lists between req_ctx to ensure ordering
...
It is important we send the buffers in-order, and not re-order
them between the main program and the USB host.
2016-02-28 19:31:24 +01:00
Harald Welte
bd71768e5f
mode_card_emu: connect the update_fidi() callback
2016-02-28 19:30:05 +01:00
Harald Welte
2a6d3afd6c
re-introduce req_ctx buffers into the host communication
2016-02-28 19:29:14 +01:00
Harald Welte
29f8f0e5d4
improvements in req_ctx debugging
2016-02-28 12:44:30 +01:00
Harald Welte
2fb5996d30
owhw: fix GPIO definitions (output low level by default)
2016-02-28 12:34:26 +01:00
Harald Welte
8c49636127
card_emu.c: avoid re-defining update_fidi() symbol
2016-02-27 16:24:09 +01:00
Harald Welte
390760a006
add board/owhw.c
2016-02-27 16:23:46 +01:00
Harald Welte
54a7cec7bd
Add card_emu_target.c to bind card_emu.c code into target firmware
2016-02-27 16:23:14 +01:00
Harald Welte
17db2f1112
card_emu: Fix PTS checksum verification
...
If the checksum doesn't match, the card should not apply any Fi/Di
changes, not respond anything and simply expect the next TPDU.
2016-02-26 09:48:57 +01:00
Harald Welte
4ba66d0098
implement forwarding of PTS/PPS from emulator to host PC + test case
2016-02-26 09:40:34 +01:00
Harald Welte
86d047b8f4
card_emu_test: Verify content of emulator->reader bytes
2016-02-25 00:26:17 +01:00
Harald Welte
0ef96d5735
card_emu: Ensure the length is properly set on a TPDU header rctx
2016-02-25 00:09:17 +01:00
Harald Welte
0ab6fcd173
card_emu_tests: Verify context of USB request contexts
...
when the emulator has received some data, don't just check that
we see it coming up on teh USB side, but actually also check
the content of those messages
2016-02-25 00:08:22 +01:00
Harald Welte
c043e64ef1
card_emu_tests: move test cases into functions
2016-02-24 23:26:55 +01:00
Harald Welte
eef6c2a46c
card_emu_test: Add test for card-TX (reader-RX) APDU
2016-02-24 22:19:03 +01:00
Harald Welte
f16b618755
card_emu: Fix the length checks for transmit beyond rctx->tot_len
2016-02-24 22:18:46 +01:00