diff options
author | laforge <laforge@e0336214-984f-0b4b-a45f-81c69e1f0ede> | 2006-10-14 12:34:38 +0000 |
---|---|---|
committer | laforge <laforge@e0336214-984f-0b4b-a45f-81c69e1f0ede> | 2006-10-14 12:34:38 +0000 |
commit | e404cccecd20a2418c2429cd182c18218e54bd28 (patch) | |
tree | 5a15b5ca51874f0f8e96ccc4ee0457a66de3cec7 /src/rfid_reader.c | |
parent | 6e87a007525b313dcf2da194977bb1abdf62026f (diff) |
Prepare RFID compilation in firmware mode
- switch from linked lists to static arrays
- remove all non-handle dynamic allocations (at the expense of stack)
- declare all proto/reader/asic/layer2 structures as const
- wrap all handle allocations in macros that expand to references to
static structures in case of firmware mode
- update copyright notices
- add skeleton code for openpcd-inside-firmware driver
- update TODO with remaining TODO for firmware mode
git-svn-id: https://svn.gnumonks.org/trunk/librfid@1903 e0336214-984f-0b4b-a45f-81c69e1f0ede
Diffstat (limited to 'src/rfid_reader.c')
-rw-r--r-- | src/rfid_reader.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/rfid_reader.c b/src/rfid_reader.c index f41ae8f..a5dbeb2 100644 --- a/src/rfid_reader.c +++ b/src/rfid_reader.c @@ -1,5 +1,5 @@ /* librfid - core reader handling - * (C) 2005 by Harald Welte <laforge@gnumonks.org> + * (C) 2005-2006 by Harald Welte <laforge@gnumonks.org> */ /* @@ -22,20 +22,29 @@ #include <librfid/rfid.h> #include <librfid/rfid_reader.h> +#include <librfid/rfid_reader_cm5121.h> +#include <librfid/rfid_reader_openpcd.h> -static struct rfid_reader *rfid_reader_list; +static const struct rfid_reader *rfid_readers[] = { +#ifndef LIBRFID_FIRMWARE + [RFID_READER_CM5121] = &rfid_reader_cm5121, +#endif + [RFID_READER_OPENPCD] = &rfid_reader_openpcd, +}; struct rfid_reader_handle * rfid_reader_open(void *data, unsigned int id) { - struct rfid_reader *p; + const struct rfid_reader *p; - for (p = rfid_reader_list; p; p = p->next) - if (p->id == id) - return p->open(data); + if (id >= ARRAY_SIZE(rfid_readers)) { + DEBUGP("unable to find matching reader\n"); + return NULL; + } - DEBUGP("unable to find matching reader\n"); - return NULL; + p = rfid_readers[id]; + + return p->open(data); } int @@ -54,12 +63,3 @@ rfid_reader_close(struct rfid_reader_handle *rh) { rh->reader->close(rh); } - -int -rfid_reader_register(struct rfid_reader *r) -{ - r->next = rfid_reader_list; - rfid_reader_list = r; - - return 0; -} |