Commit Graph

44 Commits

Author SHA1 Message Date
Jeff Hamilton
641dd62155 First pass at advanced NFC tag dispatching APIs and other cleanup.
Change-Id: I022fcd481274a2f68d93218026e77551cfae8cae
2010-12-10 22:48:16 -06:00
Martijn Coenen
b79173f660 Changed technology close() to reconnect to the tag instead of physical disconnect.
Change-Id: I8935e4aae452adeec472c0b3ff3c77f1400a264e
2010-12-10 22:07:46 -06:00
Martijn Coenen
fc5a3b6cfb Changed transceive on all technologies to "raw", except for Mifare classes.
Change-Id: I3d680e37fec0ab84cdbb70d9fb6fff9527dd76a2
2010-12-10 22:06:35 -06:00
Martijn Coenen
3300e4c3ea Implemented isWritable() to indicate NDEF capability container r/w state.
Change-Id: Ie8bdf490c955e620f5e5029346fbe2e188ea4748
2010-12-10 22:02:09 -06:00
Nick Pelly
50b4d8f643 Make getSystemService(NFC_SERVICE) the NFC entry point.
This gives NFC service a handle to the application context.

Deprecate NfcAdapter.getDefaultAdapter(), it does not provide a context.
Using this method will print a warning, and will later throw an exception
if a method that requires a context is called. No 2.3 API's will fail, but
new API's that do require a context might fail.

Also add helper NfcAdapter.getDefaultAdapter(Context).

Change-Id: I9a6378de4ef4b61ad922f8d53e64e2a1a1d5d60c
2010-12-10 17:12:33 -08:00
Nick Pelly
40ddd4a649 Merge "Implemented getSize() to return max ndef size." into gingerbread 2010-12-07 22:55:21 -08:00
Martijn Coenen
6d9fc7e1ef Implemented getSize() to return max ndef size.
Change-Id: Ia584e8cfa51a4eaef5f03dc436c78a67296c2cae
2010-12-07 22:54:07 -08:00
Martijn Coenen
5289b91c88 Implement ndef formatting.
Change-Id: I6e3e3abdc304bc14d7c93a413e42bf957963e288
2010-12-07 22:30:39 -08:00
Martijn Coenen
72df4ea830 Remove Type X Tags from the top-level API.
Also added an extra to carry the ndef message, so we can have it in multiple
Ndef instances without doing an active read.

Change-Id: I2ecabc24732990c5c9979ee3a001a7fb13da21d9
2010-12-07 13:51:47 -08:00
Jan Brands
65c3f9806e Corrected MIFARE default key set
The all-zero key is not a commonly used key.
Fixed naming

Change-Id: I2fb86079159195c6893ea758e8b0bbda266dc420
2010-12-07 09:27:06 -08:00
Martijn Coenen
9a9706a213 Added missing ndef technology to getTech.
Change-Id: I1f08e140c9bb43a8e894812adbc4d11801637f46
2010-12-06 18:44:12 -08:00
Nick Pelly
e58e8a715b Merge "Added NdefFormatable tag, initial class with supported methods." into gingerbread 2010-12-06 18:41:36 -08:00
Martijn Coenen
39f91ed529 Added NdefFormatable tag, initial class with supported methods.
Change-Id: Ifa358b5e980158d5e8accb9f42fdcfb29ad81e64
2010-12-06 18:38:49 -08:00
Jeff Hamilton
c1576ad627 Update the docs to clarify the ordering constraints.
Change-Id: Ib3932e637a675c875b9ed3482826a150b845a385
2010-12-05 21:50:29 -06:00
Jan Brands
2fe24e3e14 First implementation of MifareUltralight
Change-Id: I77818ddc89b529c17fc41d6c0850688365c6b770
2010-12-03 23:45:03 +01:00
Martijn Coenen
67a337bc51 Fixed technology name typo's.
Change-Id: If39b109cb60c762d50c21f6aaced0a31abb66c40
2010-12-01 14:16:59 +01:00
Martijn Coenen
bc7180bba4 Implement historical bytes / attrib on IsoDep
Change-Id: Ic7afa29515d10fec72ac8f27adc411788ad6f68c
2010-11-29 17:03:35 +01:00
Martijn Coenen
438feb9b3b Provide system code and manufacturer code for Felica tech.
Change-Id: I56d5308ad5fa4998a88e1e0aec51fe301ab99078
2010-11-25 09:40:50 +01:00
Martijn Coenen
1253ebc74a Fixed NfcAdapter init and getTechnology().
- GetTechnology() used a binary search, but the array was linked to another
  array (extras) which was not sorted. So made it linear.
- The tag technologies were instantiated with a null NfcAdapter.

Change-Id: Iae15169a89155c3a5c9f81824f809d6010ebac01
2010-11-24 11:13:57 +01:00
Daniel Tomas
9024564107 Secure Element access implementation
Change-Id: I907e6771ecc5babe895115c3a49288fa2144a187
2010-11-19 22:23:45 -06:00
Jeff Hamilton
6be655c768 Rough first pass at the NFC technology API.
Change-Id: I903ad6bc124bf9a65af788dae45f55d58704ef7b
2010-11-19 20:26:29 -06:00
Jeff Hamilton
4934d3361e Revert "Merge "Remove the My Tag feature." into gingerbread"
This reverts commit ef5694692f, reversing
changes made to 65816a32ee.
2010-11-11 20:42:28 -06:00
Jeff Hamilton
575a6bbfe0 Remove the My Tag feature.
Change-Id: I9167121da2fa66ddae23386d24fef7bcc64eb3f1
2010-11-03 15:32:40 -05:00
Jason parks
3ebd59bb5d Return a zero length byte from toByteArray instead of null.
Change-Id: I67b388099c72a0d2ec6b429caea8f29bf8f7a75a
2010-11-02 20:03:52 -05:00
Nick Pelly
275708c82c Remove timeout support.
The implementation was guarenteed to cause deadlock when a timeout was set.

Change-Id: I59444ea784eb9057c6c4c9e9123f558b3ef5eef6
Signed-off-by: Nick Pelly <npelly@google.com>
2010-11-02 16:13:52 -05:00
Nick Pelly
11b075e218 Hide some NFC API's.
We are leaving enough API so that you can see when any Tag is discovered,
get its ID, and get its NDEF messages.

But for advanced use - creating tag connections and writing messages - we have
2 problems. Firstly a lot of the code is untested
(RawTagConnection.transceive()), or in some cases known not to work
(NdefTagConnection.write()). Secondly, there is still debate about how to
best expose information about Tags.

The set of data/methods exposed for a Tag changes completely depending on the
tag technology. There may be multiple sets of technology implemented in a
single tag. Tag A may have technology X and Y, Tag B may have technology Y
and Z. Furthermore, some NFC controllers will be not be able to use all
technologies, and so Android Device 1 may see technology X and Y on Tag A but
Android device 2 may only see technology X. So we have a pretty challenging
set of constraints to work under, and we are not convinced the current Tag and
NdefTag class is the best approach going forwards.

The Tag application should be able to remain unbundled, since it just needs to
get incoming NDEF Messages.

Change-Id: Ic09f094f33794e10f8d730fffe011c9a5957e0ac
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-28 14:54:52 -07:00
Nick Pelly
6d55e1342f Make best effort attempt to recover NFC service when it dies.
Retrieve the service again from ServiceManager on RemoteException.

Change-Id: Ie227b52019e7deafeab712af1addd6d957f7a8ee
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-27 01:15:32 -07:00
Jeff Hamilton
68a5c9f3cf Add a way to get a string for an error code.
Change-Id: I133e974c656eb558349cbc3f9a2caf5b18c8fc3d
2010-10-26 14:09:48 -05:00
Sylvain Fonteneau
e2e4ea9ea8 Fixed NdefTag parcelable conversion methods.
Also removed call to obsolete openTagConnection() method which was crashing.

Change-Id: Iffd46bd5cad877bb3a82ede298e65ae98322dca9
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-25 08:55:36 -07:00
Nick Pelly
416d72f4b6 Document getPollBytes() and getActivationBytes().
No code change.

Change-Id: Ideb427b2684b9f9296abefb7c97eabc52db73ee0
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-24 22:03:04 -07:00
Nick Pelly
07f3bee2db Push Tag/NdefTag implementation details into the service.
Tag/NdefTag objects should just be simple data objects. Push the mapping of
internal tag type to public rawTarget/ndefTarget into Nfc Service.

This gives an oppurtunity to clean up some Tag/NdefTag API methods. Most
significantly, adding createMockTag() and createMockNdefTag() to help with
application testing.

There will probably be some more tweaking of the types/targets in
Tag/NdefTag to come, this commit makes that a lot easier.

Also:
- Introduce getActivationBytes() and getPollBytes(). These are just stubs
for NFC service to implement, we have feedback these are really important
to help identify NFC tags.
- Based on outside advice, remove 3B_PRIME (roll into 3B) and TOPAZ (roll
into 3A).

Change-Id: I3e6789c047f6ee5c298bf76c65e0885cf3c15d97
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-22 16:29:43 -07:00
Jeff Hamilton
da83f513ca Unhide some NFC APIs that are required for the Tag app.
Change-Id: Ic64e00476132dbf4644de5c465e06fe11a264508
2010-10-21 23:43:22 -05:00
Sylvain Fonteneau
a71354d766 Enable presence check at application level using
RawTagConnection.isConnected() method.

Also needs packages/apps/Nfc to be updated.

Change-Id: I726e88853e2c4b348f3b87b7574bc6eded7f5b7c
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-21 03:54:52 -07:00
Nick Pelly
7ea5c45e8d NFC settings cleanup.
Remove NFC settings from Settings.System. The NFC Service tracks them
internally using SharedPreference.

Revert back to enable()/disable()/isEnabled() - Tag discovery is the
only functionality NFC service performs right now so we don't need to
break it up more explicitly yet. enable/disable is the global NFC
on/off and later we'll add enableDiscovery(), enableTagEmulation(),
enableSecureElement() etc as needed.

Change-Id: Id5b23e89d4a29511835f509962842452075e56cb
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-21 03:54:51 -07:00
Sylvain Fonteneau
dd7341f775 Added missing implementation for NdefRecord.
Implemented constructor using a byte array to parse.
Added missing exception in method declaration, leading to update api/current.xml

Change-Id: I2660484aef1225e90c2f32a572041a2c3aecf288
2010-10-18 19:09:26 -07:00
Brad Fitzpatrick
afb082dba5 NFC: broadcast intent constants for adapter state change
These are @hide for now.  Sent by Iec9596a and used in Ief09a5a4

Bug: 3097279
Change-Id: Ie5dc05e33a98366fbe1767d19ac0253651abe862
2010-10-18 15:17:48 -07:00
Nick Pelly
fdf9086e24 Prevent use of NFC api if device is not featurized for NFC.
Change-Id: I8724cb947223b7b60814d0be51e1122123ebb98a
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-18 11:52:28 -07:00
Nick Pelly
e47150e933 Fix up NFC permissions.
The initial (vendor) implementation had 4 perms, replace with 1.

Requires no permissions:
- Viewing UID, type of discovered tags and cards.
- Viewing the NDEF message contents of NDEF formatted tags and cards.

Requires android.permission.NFC
- Get/Set the local tag "MyTag"
- Creating or using a RawTagConnection (transceive())
- Creating or using a NdefTagConnection (write()/read())

Change-Id: I1b585c7d91738bed6261277061a48cf7c939482a
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-18 10:04:40 -07:00
Sylvain Fonteneau
a926540d54 Implement methods introduced in draft #5 NFC API.
The API is implemented but still do not support muli-protocol tags.

Change-Id: I5cea3eec7b5b92e8e1106d4660e2400e4433e943
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-17 15:06:45 -07:00
Nick Kralevich
6df23609d4 range checking for tnf
Change-Id: Ie94acd598d3b8b349ffa98cef0f64ef8fa9f9612
2010-10-15 16:45:51 -07:00
Scott Main
c9f7890a20 Revise some javadocs for NFC; add package description
Change-Id: I60223e2ad24af98b3b16a74960365185096ae614
2010-10-15 15:27:16 -07:00
Nick Pelly
bc21fdefdf NFC: Move NFC service implementation out of system_server.
NFC service is now an application service in packages/apps/Nfc.

NFC service is registered through ServiceManager.addService(), and the proxy
object NfcAdapter obtains a handle to it through ServiceManager.getService().

**Important** Had to add new symbols AID_NFC / NFC_UID / android.uid.nfc and
modify service_manager.c, Process.java and PackageManagerService.java in order
to force the com.android.nfc process to take a fixed uid, so that it can use
ServiceManager.addService().

Most of the JNI has moved to packages/apps/Nfc/jni. However NdefRecord and
NdefMessage require some in-process native code, so android_com_NdefMessage.cpp
and android_com_NdefRecord.cpp stay in frameworks/base/core/jni. They link to
a very small library libnfc_ndef.so that implements NDEF message parsing. This
has been added to core.mk so all devices (even without NFC hardware) can work
with NDEF data.

Bug: 3041259
Bug: 3097445
Change-Id: If8f00ce8f2053acfc9319ca366d4a9c02bd396e6
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-15 02:12:32 -07:00
Nick Pelly
590b73bc5b NFC API revision round 2.
- Add the second half of the new NFC API: NfcAdapter, Tag, NdefTag,
  RawTagConnection, NdefTagConnection.
- Add implementations for all of the new NFC API.

Change-Id: I8da9fd1d2971ed2c8b76f2a93f207fa9e305b0f6
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-12 18:37:26 -07:00
Nick Pelly
dc993791fc New API stubs: NdefMessage and NdefRecord.
NDEF Messages and NDEF Record data classes.

Change-Id: I9b7114773281b0eb9680f595c95ac79943d2903b
Signed-off-by: Nick Pelly <npelly@google.com>
2010-10-04 17:56:23 -07:00