This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/simtrace@lists.osmocom.org/.
Rupert Lloyd rupert.lloyd at gmail.comI applied this patch and it seems to have fixed my dropped byte issue.
Before the patch I could not capture more than ~10 APDUs without dropping
bytes, now I am getting through the entire startup sequence (600+ APDUS)
Thanks for the change!
Rupert
On Fri, Aug 9, 2013 at 4:54 PM, Min Xu <mxu at sanjole.com> wrote:
> Hi Holger
>
> Thanks for getting back to me. After analyzing the issue, I believe the
> issue is the overrun error the USART reports. The issue appear to stem
> from the fact that each byte received by the USART is handled in the
> interrupt handler, but the USB sending code locks out the interrupt for the
> entirety of its call. So I change the code in the following manner and it
> appears to solve the issue for me:
>
> 1) Increase the small buffer to be large enough to hold 1 typical apdu:
> 270 bytes: 4 byte SIMTrace header, 4 byte command, 2 byte status, 1 byte
> instruction that appears to be repeated?? 256 bytes payload
>
> 2) Disable USB interrupt before deciding to Continue to send stuff to USB
> until returning from function.
>
> 3) lock out interrupt ONLY when retrieving a new req_ctx to transmit to
> USB
>
> 4) Some additional code change to detect if a req_ctx is completely
> transmitted ..
>
> 5) An additional function call in the main loop to detect (and output to
> debug serial) if an overrun occured
>
> Attached is my diff file based on what's in git.
>
> Let me know if it works for you
>
>
> On Thu, Aug 8, 2013 at 9:58 PM, Holger Hans Peter Freyther <
> holger at freyther.de> wrote:
>
>> On Wed, Aug 07, 2013 at 09:52:04AM -1000, Min Xu wrote:
>>
>> Dear Min,
>>
>>
>> > There appears to be numerous references to "decrease the buffer in the
>> > firmware" to workaround the problem of losing bytes... but
>>
>>
>> src/simtrace/iso7816_uart.c:process_byte
>>
>> if (rctx->tot_len >= rctx->size || ih->rctx_must_be_sent) {
>> ih->rctx_must_be_sent = 0;
>> send_rctx(ih);
>> }
>>
>> You could change this part.
>>
>> > can you clarify which buffer to decrease, in which source file?
>> >
>> > I am guessing it's the req_ctx.c / req_ctx.h?
>>
>> yes, or make sure the ->size is smaller.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/simtrace/attachments/20130813/37f7317e/attachment.htm>