| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When any of the following events occur:
* VCC_PHONE off
* nRST
* RST
we tranmsit the current req_ctx, if there is data pending.
This ensures that for any successive data, the ATR flag in the next
req_ctx containing the data, not in the previous req_ctx. It also
ensures that the ATR is aligned at 0 offset in the new req_ctx, which is
an assumption the host software makes but the previous code didn't
ensure.
Furthermore, we introduce a periodic flushing of any pending but
incomplete req_ctx.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
The old implementation has a big local_irq_save() / restore() around the
endpoint re-fill routine. This disables interrupts for a long time,
psossibly causing lost interrupts.
The new implementation works around this by disabling the USB (UDP)
interrupt only, rather than disabling all interrupts on the system.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
In order to speed up the lookup of req_ctx, we keep per-state queues
rather than iterating over all the request contexts that exist again and
again.
|
| |
|
|
|
|
|
| |
... which will allow us to check for invalid states by a simple
'greater than' check later on.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Prior to this patch, the ATR was not send in a separate USB message for
cards that are T=0 only.
|
| |
|
|
|
|
|
|
| |
the statistics count various events like overruns, parity errors,
missing rctx and can dump those stats via USB as well as on the serial
console.
|
|
|
|
| |
We have to set WDD and WDV to the same value to avoid watchdog errors
|
|
|
|
|
|
|
|
|
| |
there is now a high-level command by which we can swithc the VCC
supply of the SIM cards.
For some reason, the _PASS variant (passing through the voltage from the
phone) doesn't seem to work reliably. It might be that we are draining
reverse current throught the LDO once we supply SIM power that way.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Add missing entry in Fi_table. It's apparently used as '64' in some
reader and 'unsupported' in some other. For simtrace I guess we should
consider it 64.
|
|
|
|
|
|
|
|
| |
The FPF2005 has no reverse voltage blocker, this is why the 3.3V from
the LDO flows back into VCC_PHONE. It even damages the chip (so says the
datasheet) I corrected the double power source problem by disabling the
LDO (see patch), but still 1.8V does not work and 3.0-3.3V is used. I
have to look for other reasons.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Only send the ZLP if we send less data than was required/asked for
by the host and it is a multiple of the bMaxPacketSize0 (which is
hardcoded to 8 right now).
This is completing the change done in fe88b83e80df8be0351ff38ee6 to
fix SIMtrace attached to OSX and not regress on windows.
Introduce another parameter to udp_ep0_send_data to specify the window
size (wLength) or if not available the default from USB 2.0 specification.
|
| |
|
|
|
|
| |
src/dfu/dfu.c:853:23: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
In case ram_app_entry() returns do not reset i to 32, otherwise we
will never reset the watchdog.
src/dfu/dfu.c:1077:7: warning: declaration of ‘i’ shadows a previous local [-Wshadow]
src/dfu/dfu.c:1068:6: warning: shadowed declaration is here [-Wshadow]
|
| |
|
|
|
|
|
| |
There were some mistakes while copying the tables from ISO 7816-3,
and also a quite old version of 7816-3 was used.
|
|
|
|
|
| |
In case there are no historical bytes, we immediately transition from
the last TD byte into the WAIT_TCK or WAIT_APDU state.
|
| |
|
|
|
|
|
| |
This prevents an IRQ-flood after a parity or overrun error, which
in turn would cause a watchdog reset.
|
|
|
|
|
|
|
| |
As a SIM card tracer, we want to remain completely passive and thus not
signal back parity errors with the ISO 7816 NACK.
The UART INACK flag does exactly that...
|
|
|
|
| |
This helps us to discover _why_ the CPU has been rebooted.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
As we re-locate the entire sam7dfu program into RAM, we don't need
to execute from flash and can thus re-program the DFU partition
via the DFU protocol itself (alternate setting '1').
We also implement downloading executable code into RAM using
alternate setting '2'. The latter part is not properly executed yet.
|
|
|
|
|
| |
This will allow us to load code directly into RAM without going through
flash.
|
|
|
|
| |
This also adds a new 'main_factory' target for simtrace
|
| |
|
| |
|
|
|
|
|
|
|
| |
When we went through a Download -> Manifest cycle, we can switch
back to dfuIDLE. However, we need to memorize that manifest had
already happened and thus should treat a host-initiated bus reset
as trigger to switch back into application mode.
|
|
|
|
|
| |
There is no point in replicating the functionality that already
exists in the DFU section of the flash
|
|
|
|
|
|
| |
We have to send a ZLP at the end of such transfers, otherwise the host
will time out at the end of the transfer. This resulted in multi-second
delays for recognizing the SIMtrace hardware by the USB host.
|
| |
|
|
|
|
|
|
| |
This is just a temp rework in the 1st generation prototype, as the bus
switch has too high resistance for passing throuhg Vcc from the phone
to the SIM.
|