On Mon, 2011-02-07 at 14:27 -0600, Douglas E. Engert wrote:
> 
> On 2/7/2011 11:26 AM, Douglas E. Engert wrote:
> >
> >
> > On 2/3/2011 11:58 PM, Martin Paljak wrote:
> >>
> >> On Feb 3, 2011, at 10:04 PM, Douglas E. Engert wrote:
> >>
> >> I would consider using a new hook, like "use_reader" or  
> >> "use_pcsc_parameters" to
> >> send the arguments to reader-pcsc.c and set the (pcsc, not cardmod) driver 
> >> to
> >> "cardmod state". The reader operations API is by no means set in stone.
> >> Nor is there need to abstract it away too much, the usage pattern is
> >> known and the code path to implement it should be as simple as possible
> >> (sc_XXX wrapper that will not be used by any other reader driver, like
> >> sc_cancel and sc_wait_for_event are examples of "somewhat bad ideas".
> >> Yet it is a working pattern.)
> >
> > I agree, a new entry point use_reader would work. I will look at adding such
> > and entry point that will be ignored by the other drivers, and callable
> > as sc_ctx_use_reader(ctx, void *, void *)
> >
> 
> Attached is a patch that implements a sc_ctx_use_reader, to pass in two void
> pointers to an underling driver. The code to use this from cardmod.c to the
> cardmod code in reader-pcsc.c (or where ever it ends up) will be added as part
> of a much larger patch.
> 
> The intent is to keep this sc_ctx_use_reader patch simple and small so it
> can be committed soon.

The essence of both proposals side-by-sideĀ¹:

Patch A: Index: src/libopensc/opensc.h
===================================================================
--- src/libopensc/opensc.h      (revision 5188)
+++ src/libopensc/opensc.h      (working copy)
@@ -359,7 +359,7 @@
 struct sc_reader_operations {
        /* Called during sc_establish_context(), when the driver
         * is loaded */
-       int (*init)(struct sc_context *ctx);
+       int (*init)(struct sc_context *ctx, void *init_data);


Patch B: Index: src/libopensc/opensc.h
===================================================================
--- src/libopensc/opensc.h      (revision 5187)
+++ src/libopensc/opensc.h      (working copy)
@@ -388,6 +388,8 @@
                        int timeout, void **reader_states);
        /* Reset a reader */
        int (*reset)(struct sc_reader *, int);
+       /* used to pass in reader handles in cardmod mode */
+       int (*use_reader)(struct sc_context *ctx, void * pcsc_context_handle, 
void * pcsc_card_handle);

Regards
Andre

[1] in chronological order of submission

_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to