Code Monkey home page Code Monkey logo

nfc-class-extension-driver's Introduction

NFC class extension (CX) design guide

The NFC CX driver implements all NFC device driver interfaces and standard NFC protocols and formats based on the NFC Forum NFC Controller Interface (NCI) Technical Specification.

The NFC client driver is responsible for transport layer interfacing as well as support for any non-standard vendor-defined extensions for the optimized functioning of the NFC controller.

The NFC class extension driver implements all standard NFC Forum Tag (T1T, T2T, T3T, ISO-DEP) and P2P (LLCP and SNEP) protocols, and RF Management based on the NCI Core specification. The class extension driver implements all the Windows-defined device driver interfaces to interact with the NFC controller, Secure Elements, and Remote RF endpoints.

These topics describe the architecture and public interface between the NFC class extension driver supplied by Microsoft and the NFC client driver supplied by the corresponding chipset manufacturers. The NFC CX driver is designed to support NFC chipsets from various manufacturers, and enables manufacturers to implement non-NCI standard functionality in their NFC client driver for differentiation purposes.

NFC driver DDI

The following are the Windows-defined NFC driver DDI that are implemented by the NFC CX driver:

NFC forum specifications

The following are the NFC Forum specifications implemented by the NFC CX driver:

  • NFC Controller Interface, NCI 1.0 Specification
  • NFC Data Exchange Format, NDEF
  • NFC Forum Type 1-4 Tag
  • Logical Link Control Protocol, LLCP 1.1 Specification
  • Simple NDEF Exchange Protocol, SNEP 1.0 Specification
  • ISO/IEC 15693

Supported NFC smart cards and tags

The following are the NFC smart cards and tags supported by the NFC CX driver:

  • MIFARE Classic family
  • MIFARE Ultralight family
  • MIFARE DESFire family
  • FeliCa family
  • Jewel/Topaz family
  • Generic ISO 15693 tags

Contributions

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

nfc-class-extension-driver's People

Contributors

artourg avatar cricard13 avatar cwize1 avatar hariomkesh avatar icherniukh avatar marklan avatar microsoft-github-policy-service[bot] avatar pchaisson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nfc-class-extension-driver's Issues

missing the definitionh of DEV_QUERY_RESULT_ACTION_DATA

Dear sir

I am trying to make use of the following API and shall be most grateful if you could me a sample codes of the following APis for my reference:

CFGMGR32.DLL:DevGetObjectProperties
CFGMGR32.DLL:DevCreateObjectQuery

as well as the structur eof tthe follwoing:
DEV_QUERY_RESULT_ACTION_DATA

Many thanks.

Cheers.

Jack

NfcCx reject ISO15693 tags with generic memory area size

When NDEF formatting an ISO15693 tag, phFriNfc_ISO15693_H_ProFormat will return NFCSTATUS_INVALID_DEVICE_REQUEST if the max_data_size does not match ISO15693_SLI_X_MAX_SIZE or ISO15693_SLI_X_S_MAX_SIZE or ISO15693_SLI_X_L_MAX_SIZE.

The default CC byte 3 value should be set by default to 0.

Additionally is ISO15693_INVENTORY_CMD_MASK is a RFU value following NFC Forum T5T specification.

NfcCx crash in P2P mode with RF_DISCOVER_NTF

During the NFC Forum Plugfest 2017 in Fremont we found evidence of a NfcCx crash (NULL pointer access).
This is happening in the following conditions at least one RF_DISCOVER_NTF with at least one "RF Technology and Mode" in Poll coming in position 1 or greater.

I have been able to validate a fix but not able to run the HLK again.
Will share a patch for early review.

NFCDEP_OP bit 0 incorrect setting

NFCDEP_OP is by default set as 0x0e.
Following NCI1.x or NCI2.0 specification as well as LLCP 1.1 specification, this setting looks incorrect.
NFCDEP_OP bit 0 (Table 81 in NCI1x and 101 in NCI2.0):

  • If set to 1b, the NFC-DEP target SHALL NOT send RTOX requests.

In LLCP (1.1) chapter 6.2.1 Restrictions on the use of NFC-DEP item 3:

  • Waiting Time eXtension (WTX) SHALL not be used.
    This configuration can be forced in the NFC Client but we believe it is an incorrect setting.

LoadKey Overwrite always returns status as (00,00)

From any PCSC App ( for instance SpringCard ) , if we send transceive for Load key ( INS -'82') for same P1 & P2 , from 2nd transceive onward, CLX driver returns status is 00, 00 (SW1, SW2).

CMD: FF 82 00 00 06 FF FF FF FF FF FF
RSP: 90 00
CMD: FF 86 00 00 05 01 00 04 60 00
RSP: 69 81
CMD: FF 82 00 00 06 04 07 06 05 07 0F
RSP: 00 00

Tag : Mifare Classic (1K)

NFC driver doesn't go into low power state (D3) on system going to Modern standby

Need Win10 Desktop PC with connected standby support.
Issue seen in CLX based NFC Client driver.

Steps to repro:

  • put system into modern standby & resume from Modern standby
    Expected results:
  • NFC driver shown be in D3 when system is in standby & resumes back to D0 when system resumes from connected standby.
    Actual results:
  • NFC driver remains in D0.

Initial Analysis :-
On Modern standby proximity service sends NFP_DISABLE for all open handles.
But ScardSvr handle still remains open as there is no disable for that.
This causes CLX driver to remain in D0 state so do NFC Client driver also remain in D0.

If we stop ScardSvr manually, CLX driver is able to go into low power mode so do NFC Client driver is able to go into low power mode when system goes into Modern standby.

scardsrv_Disabled_Success_ETL.zip
scardsrv_running_Failed_ETL.zip

Logs are attached for success (scardsrv disbaled) & failed (scardsrv running) cases.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.