WebAPI/WebNFC
From MozillaWiki
< WebAPI
Contents
- 1 Introduction
- 2 Roadmap
- 2.1 First iteration: NDEF (Firefox OS v1.3)
- 2.2 Second iteration: Handover and other bug fixes (Firefox OS v1.4)
- 2.3 Third iteration: NFC Sharing feature, P2P, emulator support, test cases (Firefox OS v2.0)
- 2.4 Fourth iteration: HCI transaction event (Firefox OS v2.1)
- 2.5 Fifth iteration: Secure Element and NFC Privileged API (Firefox OS v2.2)
- 3 Current API
- 4 Usage of APIs
- 5 Application Permissions
- 6 Application Dispatch Order
- 7 NFC on B2G emulator
- 8 NFC Resources
Introduction
Current Status (As to Firefox OS v2.2)
- Gecko b2g-nfc meta bug, bug 860906
- Gecko b2g-secure-element meta bug bug 1044428
- Gaia meta bug, bug 933640
- nfcd meta bug, bug 1044425
- Gonk
- Use a native daemon nfcd which links to native NFC library. nfcd github
- Hardware
- Using Nexus-4/Nexus-5, which uses Broadcom NFC chipset with libnfc-nci library.
- Flame, NXP chipsets with libnfc-nci library.
Security Review (By Paul Theriault and Stephanie Ouillon)
- https://wiki.mozilla.org/Security/Reviews/B2G/WebNFC
- Security Review for WebNFC: bug 749325
- Security Review for NFC Payment: bug 948280
- Security Review for NFC privilege API: bug 1095417
Contributors
- Gecko Engineers: Arno Puder, Garner Lee, Siddartha Pothapragada, Yoshi Huang, Dimi Lee
- Early Contributors: Markus Neubrand, Philipp von Weitershausen
Roadmap
First iteration: NDEF (Firefox OS v1.3)
- meta bug, bug 959692 - (b2g-NFC-1.3) [meta] FxOS v1.3 NFC feature
- Technologies:
- Focus on NDEF standard only for now
- Others (e.g. proprietary MIFARE) to be investigated later.
- Capabilities:
- Read/write NDEF records on tags
- bug 933136 - [Gecko] NFC onpeerready, onpeerlost callbacks
- Implementation:
- See bug 674741
- NDEF-only API is available on MozNFCTag object.
- Discovered NDEF tags are automatically parsed and dispatched to content in the "nfc-manager-tech-discovered" system message.
- navigator.mozNfc only available to a specific privileged content page (cf. WebTelephony, WebSMS).
- For now, content is expected to do filtering and dispatching to handlers e.g. via WebActivity.
- Gonk
- bug 906579 - B2G NFC: NFC Daemon for supporting libnfc-nci
- Hardware
- Using Nexus-4, which uses Broadcom NFC chipset with libnfc-nci library.
Second iteration: Handover and other bug fixes (Firefox OS v1.4)
- meta bug : bug 949293 - (b2g-NFC-1.4) [meta] FxOS v1.4 NFC feature
- Capabilities:
- bug 933093 NFC handover.
- bug 916863 - [NFC] NFC support in emulator
- NFC Manager API
- bug 952217 - [B2G][NFC] Have a separate NFC application API and NFC Manager API
- bug 959437 - Refactor NfcManager APIs and implementation details to support sendFile , notifyUserAcceptedP2P and other privileged Nfc operations
Third iteration: NFC Sharing feature, P2P, emulator support, test cases (Firefox OS v2.0)
- meta bug : bug 949293 - (b2g-NFC-2.0) [meta] FxOS v2.0 NFC feature
- NFC emulator: bug 973133
- More Gaia unit tests for NFC in apps/system/test/unit/
Fourth iteration: HCI transaction event (Firefox OS v2.1)
Fifth iteration: Secure Element and NFC Privileged API (Firefox OS v2.2)
- bug 1044428 b2g-secure-element
- bug 879861 - NFC Secure Element Support
- bug 1042851 - (b2g-nfc-privilege) (meta) [NFC] Make NFC APIs available to privileged webapps
- Slide: http://bit.ly/1x7nWp5
Current API
Check DXR for latest NFC IDL
- MozNDEFRecord.webidl
- MozNFC.webidl
- MozNFCPeer.webidl
- MozNFCPeerEvent.webidl
- MozNFCTag.webidl
- MozNFCTagEvent.webidl
Usage of APIs
https://developer.mozilla.org/en-US/docs/Web/API/NFC_API
Application Permissions
NFC API has three permissions.
- nfc, which will be used by privileged applications.
- nfc-share, which will be used by ceritified(internal) applications.
- nfc-manager', which will be used by System app.
nfc permission could be used for general tag reading/writing, or sending NDEF to NFC Peer. nfc-share could be used to send large file (Blob) to another NFC peer. nfc-manager is used to control the RF state of NFC hardware.
Application Dispatch Order
1) Foreground App, if the callback ontagfound/onpeerfound is set. 2) If the foreground app doesn't register NFC callbacks or cannot process the event, the event will be redirected to System app, and System app will fire a nfc-ndef-discovered MozActivity.
NFC on B2G emulator
- See Kami's notes : https://bitbucket.org/kamituel/b2g-notepad/wiki/Using%20emulator
NFC Resources
Reference
- Introduction to NFC: http://www.adafruit.com/datasheets/Introduction_to_NFC_v1_0_en.pdf
- NDEF specification: NFCForum-TS-NDEF_1.0.pdf
- Understand NDEF messages : http://developer.nokia.com/Community/Wiki/Inside_NFC:_Understanding_NDEF_message
- NFC forum specifications: http://members.nfc-forum.org/specs/
- Handover specification: NFCForum-TS-ConnectionHandover_1_2.pdf