mirror of https://github.com/ARMmbed/mbed-os.git
95 lines
2.6 KiB
Markdown
95 lines
2.6 KiB
Markdown
# NFC test SDK comparison
|
||
|
||
A comparison of the SDKs exposed to manage NFC tags on Android IOs and Python module PyNFC.
|
||
|
||
<!-- TOC -->
|
||
|
||
- [NFC test SDK comparison](#nfc-test-sdk-comparison)
|
||
- [Overview](#overview)
|
||
- [Comparison](#comparison)
|
||
- [IOS (objective C)](#ios-objective-c)
|
||
- [Android (Java)](#android-java)
|
||
- [pynfc (python)](#pynfc-python)
|
||
- [Observe](#observe)
|
||
|
||
<!-- /TOC -->
|
||
|
||
# Overview
|
||
A comparison which analyses NFC use cases on mobile, as background to the test case design/implementation in the comissioning workflow :NFC-Bluetooth-pairing application.
|
||
- Analyse the [Apple API](https://developer.apple.com/documentation/corenfc)
|
||
- Analyse the [Android API](https://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc#java)
|
||
- Python test [pynfc modules](https://nfcpy.readthedocs.io/en/latest/modules/index.html)
|
||
|
||
|
||
# Comparison
|
||
From the lowest level, each programmer interface has a definition for Errors, Link, NDEF, Tags and Sessions.
|
||
Note: Comparisons are high level and use past experience and old docs.
|
||
|
||
|
||
## IOS (objective C)
|
||
1. Errors:
|
||
are a struct with 3 members:<BR>
|
||
int:value, <BR>struct:string:usererror<BR>struct:string:localized
|
||
1. isodep:
|
||
|
||
not supported
|
||
1. NDEF support parameters with
|
||
|
||
payload<BR>and Typename,
|
||
4. Tags:
|
||
|
||
Are an Object representing tag
|
||
5. Sessions are managed using
|
||
|
||
Delegate &callbacks
|
||
|
||
## Android (Java)
|
||
1. Errors:
|
||
|
||
thrown as IOException with cause and message, there are no returned error datas
|
||
2. isodep:
|
||
|
||
get/set communication parameters and RAW.
|
||
3. NDEF:
|
||
|
||
Includes SNEP
|
||
4. Tags :
|
||
|
||
(3)A,(3)B,(4)F,V and isoDep layer
|
||
5. Sessions
|
||
|
||
Intents and Actions, runtime registration of PendingIntent() allows hooking using tag filters
|
||
|
||
## pynfc (python)
|
||
1. Errors :
|
||
|
||
raises Exceptions nfc.clf.Error and others per class
|
||
2. isodep:
|
||
|
||
get/set communication parameters and RAW.
|
||
3. NDEF:
|
||
|
||
full implementation and types. Includes SNEP
|
||
4. Tags :
|
||
|
||
1,2,(3)A,(3)B,(4)F isoDep layer
|
||
5. Sessions :
|
||
|
||
using delegate class callbacks
|
||
|
||
# Observe
|
||
Negative test cases would be better designed around the user cases, than around the implementations, base error conditions at the API layer look more like
|
||
- UnsupportedTarget
|
||
- Communication
|
||
- Protocol
|
||
- (w) Transmission
|
||
- (w) Timeout
|
||
- (w) BrokenLink
|
||
- ValueError
|
||
|
||
Valuable test data cases shall be for valid and boundary cases for the smartposter NDEF record:
|
||
- uri – URI string ASCII only
|
||
- title – Smart poster title(s), (additional internationalizations with IANA codes not tested)
|
||
- icons – omitted
|
||
- action – The recommended action , a string
|