mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Samuel Ortiz <sameo@linux.intel.com>
To: linux-kernel@vger.kernel.org
Subject: Re: [RFC] NFC subsystem prototype
Date: Thu, 14 Apr 2011 14:17:42 +0000 (UTC)	[thread overview]
Message-ID: <loom.20110414T113238-377@post.gmane.org> (raw)
In-Reply-To: <BANLkTik1wb6Px+K+bBkzkt=dEMi_Xx3T3Q@mail.gmail.com>

Hi Lauro,

Lauro Ramos Venancio <lauro.venancio <at> openbossa.org> writes:
> The prototype implementation can be found at:
> 	git://186.215.206.130/linux-nfc.git
> 
> The userspace test application (list targets and read/write MIFARE
> tags) can be found at:
> 	git://186.215.206.130/nfc-example.git
Really nice. What about putting those in e.g. gitorious ?

 
> Prototype Scope:
> 	- Tag Reader/Writer
> 	- Protocols: MIFARE, ISO14443, FELICA, JEWEL
> 
> Subsystem Operations:
> 	- start poll - start polling for targets using the protocols given as
> parameter
> 	- stop poll - stop polling
> 	- activate target - activate a target for communication using a
> specific protocol
> 	- deactivate target - deactivate a target
> 	- reset device - put the adapter in idle mode
> 	- data exchange - low level data exchange (send and receive data)
I suppose the data_exchange hook is sitting at the NFCIP level ? As I agree
with your further comment that this one should not be part of the netlink
API but should be done through sockets instead, I think this one should be
defined as the netdev start_xmit hook.
So this matches quite well the pn533 API, but I'm wondering how you're
planning to support the HCI based devices (pn544, microread). We clearly
have 2 kind of devices here, and it reminds me of the soft MAC vs full MAC
problem in the 802.11 subsystem.
I think we should have a kernel NFC HCI layer that would implement those
hooks by following the HCP protocol. Then devices that only take HCI
commands (kind of soft MAC NFC devices) would register against the NFC HCI
layer and use those hooks. Other devices (e.g. pn533) would register at a
higher level (The NFC core layer) and provide their own hooks. This would be
similar to what 802.11 drivers do by registering against mac80211 (soft MACs)
or directly against cfg80211 (full MACs).



> Subsystem Event:
> 	- targets found - report all targets found by the polling
I would like to see a target lost event here as well, but as far as I know,
none of the various NFC specs specify such event. So I guess we get to know
that e.g. a tag is not there anymore when failing to read from it.

> However, the netlink choice has not proven to be the best solution for
> the data exchange operation. So we plan to have a new prototype
> version using another solution. The options are:
> 	- sockets for all operations as in bluez implementation;
> 	- sockets for data exchange and keep netlink for the other operations.
I would personally prefer to have a netlink layer for basically anything
except data I/O, and go with a socket for the rest.


> 
> Further work:
> 	- Define subsystem operations for adapters in "target mode"
I am not sure we need any specific additional hook for the target mode. In
this mode, we mostly would be sending events (RF field ON, card activated
or deactivated). After that, afaiu, the card would be expecting data
reception, and then sending responses to it.
We probably need to add a mode setting hook in the ops structure. And also,
according to NFCIP-2, NFC devices should by default be in target mode.


> 	- Implement LLCP
> 	- Add support to the "secure elements"
I'm also wondering how we're going to support the various CCID USB NFC
readers currently available ? At the moment this is all done through libusb
and pcsc-lite in userspace, but it would be nice to see that integrated
with this subsystem.

Cheers,
Samuel.


  parent reply	other threads:[~2011-04-14 14:45 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-06 22:17 Lauro Ramos Venancio
2011-04-09 13:09 ` Harald Welte
2011-04-09 17:45   ` Alan Cox
2011-04-12  6:19     ` Harald Welte
2011-04-11 23:31   ` Lauro Ramos Venancio
2011-04-12  6:08     ` Harald Welte
2011-04-12  7:08       ` Clemens Ladisch
2011-04-14 21:51       ` Lauro Ramos Venancio
2011-04-14 14:17 ` Samuel Ortiz [this message]
2011-04-14 22:57   ` Lauro Ramos Venancio
2011-04-14 23:09     ` Samuel Ortiz
2011-04-15 18:27       ` Lauro Ramos Venancio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=loom.20110414T113238-377@post.gmane.org \
    --to=sameo@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®