react-native-nfc-manager 4.0.0-beta.1 → 4.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -49
- package/android/src/main/java/community/revteltech/nfc/MifareClassicHandler.java +419 -0
- package/android/src/main/java/community/revteltech/nfc/MifareUltralightHandler.java +84 -0
- package/android/src/main/java/community/revteltech/nfc/NdefHandler.java +373 -0
- package/android/src/main/java/community/revteltech/nfc/NfcAdapterStateChangedReceiver.java +48 -0
- package/android/src/main/java/community/revteltech/nfc/NfcErrorCodes.java +16 -0
- package/android/src/main/java/community/revteltech/nfc/NfcManager.java +348 -1087
- package/android/src/main/java/community/revteltech/nfc/NfcManagerIOSStubBase.java +130 -0
- package/android/src/main/java/community/revteltech/nfc/NfcTechIoRouter.java +258 -0
- package/android/src/main/java/community/revteltech/nfc/TagTechnologyRequest.java +19 -7
- package/android/src/main/java/community/revteltech/nfc/Util.java +275 -2
- package/app.plugin.js +8 -9
- package/dist/ndef-lib/constants.js +67 -0
- package/dist/ndef-lib/constants.js.map +1 -0
- package/dist/ndef-lib/index.js +79 -0
- package/dist/ndef-lib/index.js.map +1 -0
- package/dist/ndef-lib/ndef-text.js +29 -0
- package/dist/ndef-lib/ndef-text.js.map +1 -0
- package/dist/ndef-lib/ndef-uri.js +40 -0
- package/dist/ndef-lib/ndef-uri.js.map +1 -0
- package/dist/ndef-lib/ndef-wifi-simple.js +100 -0
- package/dist/ndef-lib/ndef-wifi-simple.js.map +1 -0
- package/dist/ndef-lib/ndef.js +152 -0
- package/dist/ndef-lib/ndef.js.map +1 -0
- package/dist/ndef-lib/stringifier.js +155 -0
- package/dist/ndef-lib/stringifier.js.map +1 -0
- package/dist/ndef-lib/util.js +126 -0
- package/dist/ndef-lib/util.js.map +1 -0
- package/dist/specs/NativeNfcManager.js +5 -0
- package/dist/specs/NativeNfcManager.js.map +1 -0
- package/dist/src/NativeNfcManager.js +55 -0
- package/dist/src/NativeNfcManager.js.map +1 -0
- package/dist/src/NfcError.js +220 -0
- package/dist/src/NfcError.js.map +1 -0
- package/dist/src/NfcManager.js +175 -0
- package/dist/src/NfcManager.js.map +1 -0
- package/dist/src/NfcManagerAndroid.js +112 -0
- package/dist/src/NfcManagerAndroid.js.map +1 -0
- package/dist/src/NfcManagerIOS.js +119 -0
- package/dist/src/NfcManagerIOS.js.map +1 -0
- package/dist/src/NfcTech/Iso15693HandlerIOS.js +99 -0
- package/dist/src/NfcTech/Iso15693HandlerIOS.js.map +1 -0
- package/dist/src/NfcTech/IsoDepHandler.js +29 -0
- package/dist/src/NfcTech/IsoDepHandler.js.map +1 -0
- package/dist/src/NfcTech/MifareClassicHandlerAndroid.js +68 -0
- package/dist/src/NfcTech/MifareClassicHandlerAndroid.js.map +1 -0
- package/dist/src/NfcTech/MifareUltralightHandlerAndroid.js +23 -0
- package/dist/src/NfcTech/MifareUltralightHandlerAndroid.js.map +1 -0
- package/dist/src/NfcTech/NdefFormatableHandlerAndroid.js +16 -0
- package/dist/src/NfcTech/NdefFormatableHandlerAndroid.js.map +1 -0
- package/dist/src/NfcTech/NdefHandler.js +54 -0
- package/dist/src/NfcTech/NdefHandler.js.map +1 -0
- package/dist/src/NfcTech/NfcAHandler.js +16 -0
- package/dist/src/NfcTech/NfcAHandler.js.map +1 -0
- package/dist/src/NfcTech/NfcVHandler.js +33 -0
- package/dist/src/NfcTech/NfcVHandler.js.map +1 -0
- package/dist/src/index.js +53 -0
- package/dist/src/index.js.map +1 -0
- package/index.d.ts +110 -46
- package/ios/NfcManager.h +2 -11
- package/ios/NfcManager.mm +264 -438
- package/ios/RNNfcBridgeUtil.h +28 -0
- package/ios/RNNfcBridgeUtil.mm +52 -0
- package/ios/RNNfcManager+Felica.swift +61 -0
- package/ios/RNNfcManager+Iso15693.swift +895 -0
- package/ios/RNNfcManager+IsoDep.swift +145 -0
- package/ios/RNNfcManager+Mifare.swift +61 -0
- package/ios/RNNfcManager+Ndef.swift +120 -0
- package/ios/RNNfcManager.h +251 -0
- package/ios/RNNfcManager.swift +648 -0
- package/ios/RNNfcSessionDelegateProxy.swift +104 -0
- package/ios/RNNfcSwiftUtil.swift +34 -0
- package/ndef-lib/{constants.js → constants.ts} +2 -0
- package/ndef-lib/{index.js → index.ts} +23 -12
- package/ndef-lib/{ndef-text.js → ndef-text.ts} +7 -2
- package/ndef-lib/{ndef-uri.js → ndef-uri.ts} +8 -3
- package/ndef-lib/{ndef-wifi-simple.js → ndef-wifi-simple.ts} +34 -11
- package/ndef-lib/{ndef.js → ndef.ts} +53 -25
- package/ndef-lib/{stringifier.js → stringifier.ts} +27 -10
- package/ndef-lib/{util.js → util.ts} +13 -8
- package/package.json +42 -13
- package/react-native-nfc-manager.podspec +3 -2
- package/specs/NativeNfcManager.ts +18 -4
- package/src/NativeNfcManager.ts +84 -0
- package/src/{NfcError.js → NfcError.ts} +6 -17
- package/src/{NfcManager.js → NfcManager.ts} +51 -34
- package/src/{NfcManagerAndroid.js → NfcManagerAndroid.ts} +27 -8
- package/src/{NfcManagerIOS.js → NfcManagerIOS.ts} +31 -10
- package/src/NfcTech/{Iso15693HandlerIOS.js → Iso15693HandlerIOS.ts} +64 -36
- package/src/NfcTech/{IsoDepHandler.js → IsoDepHandler.ts} +8 -5
- package/src/NfcTech/{MifareClassicHandlerAndroid.js → MifareClassicHandlerAndroid.ts} +33 -24
- package/src/NfcTech/{MifareUltralightHandlerAndroid.js → MifareUltralightHandlerAndroid.ts} +14 -5
- package/src/NfcTech/{NdefFormatableHandlerAndroid.js → NdefFormatableHandlerAndroid.ts} +9 -2
- package/src/NfcTech/{NdefHandler.js → NdefHandler.ts} +19 -6
- package/src/NfcTech/{NfcAHandler.js → NfcAHandler.ts} +6 -3
- package/src/NfcTech/{NfcVHandler.js → NfcVHandler.ts} +8 -5
- package/src/__mocks__/{NativeNfcManager.js → NativeNfcManager.ts} +4 -1
- package/src/{index.js → index.ts} +1 -1
- package/android/src/main/java/community/revteltech/nfc/JsonConvert.java +0 -141
- package/android/src/main/java/community/revteltech/nfc/MifareUtil.java +0 -84
- package/ios/NfcManager+Felica.mm +0 -43
- package/ios/NfcManager+Iso15693.mm +0 -600
- package/ios/NfcManager+IsoDep.mm +0 -83
- package/ios/NfcManager+Mifare.mm +0 -43
- package/ios/Util.mm +0 -55
- package/specs/NativeNfcManager.d.ts +0 -6
- package/specs/NativeNfcManager.js +0 -3
- package/specs/NativeNfcManager.js.map +0 -1
- package/src/NativeNfcManager.js +0 -37
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
package community.revteltech.nfc;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Callback;
|
|
4
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
5
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Temporary Android-side holder for iOS-only API stubs required by the shared RN spec.
|
|
10
|
+
*
|
|
11
|
+
* TODO: Remove this class after splitting platform specs so Android no longer needs iOS methods.
|
|
12
|
+
*/
|
|
13
|
+
@Deprecated
|
|
14
|
+
abstract class NfcManagerIOSStubBase extends NativeNfcManagerSpec {
|
|
15
|
+
NfcManagerIOSStubBase(ReactApplicationContext reactContext) {
|
|
16
|
+
super(reactContext);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@Override
|
|
20
|
+
public void setAlertMessage(String message, Callback callback) {
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@Override
|
|
24
|
+
public void isSessionAvailable(Callback callback) {
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@Override
|
|
28
|
+
public void isTagSessionAvailable(Callback callback) {
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
public void sendMifareCommand(ReadableArray bytes, Callback callback) {
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@Override
|
|
36
|
+
public void sendCommandAPDU(ReadableMap payload, Callback callback) {
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@Override
|
|
40
|
+
public void sendCommandAPDUBytes(ReadableArray bytes, Callback callback) {
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Override
|
|
44
|
+
public void sendFelicaCommand(ReadableArray bytes, Callback callback) {
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Override
|
|
48
|
+
public void restartTechnologyRequest(Callback callback) {
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Override
|
|
52
|
+
public void invalidateSession(Callback callback) {
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@Override
|
|
56
|
+
public void invalidateSessionWithError(String message, Callback callback) {
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@Override
|
|
60
|
+
public void iso15693_getSystemInfo(double requestFlag, Callback callback) {
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@Override
|
|
64
|
+
public void iso15693_readSingleBlock(ReadableMap options, Callback callback) {
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@Override
|
|
68
|
+
public void iso15693_readMultipleBlocks(ReadableMap options, Callback callback) {
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@Override
|
|
72
|
+
public void iso15693_writeSingleBlock(ReadableMap options, Callback callback) {
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@Override
|
|
76
|
+
public void iso15693_lockBlock(ReadableMap options, Callback callback) {
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Override
|
|
80
|
+
public void iso15693_writeAFI(ReadableMap options, Callback callback) {
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@Override
|
|
84
|
+
public void iso15693_lockAFI(ReadableMap options, Callback callback) {
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@Override
|
|
88
|
+
public void iso15693_writeDSFID(ReadableMap options, Callback callback) {
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@Override
|
|
92
|
+
public void iso15693_lockDSFID(ReadableMap options, Callback callback) {
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@Override
|
|
96
|
+
public void iso15693_resetToReady(ReadableMap options, Callback callback) {
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@Override
|
|
100
|
+
public void iso15693_select(ReadableMap options, Callback callback) {
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Override
|
|
104
|
+
public void iso15693_stayQuiet(Callback callback) {
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@Override
|
|
108
|
+
public void iso15693_customCommand(ReadableMap options, Callback callback) {
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@Override
|
|
112
|
+
public void iso15693_sendRequest(ReadableMap options, Callback callback) {
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@Override
|
|
116
|
+
public void iso15693_extendedReadSingleBlock(ReadableMap options, Callback callback) {
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@Override
|
|
120
|
+
public void iso15693_extendedReadMultipleBlocks(ReadableMap options, Callback callback) {
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@Override
|
|
124
|
+
public void iso15693_extendedWriteSingleBlock(ReadableMap options, Callback callback) {
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@Override
|
|
128
|
+
public void iso15693_extendedLockBlock(ReadableMap options, Callback callback) {
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
package community.revteltech.nfc;
|
|
2
|
+
|
|
3
|
+
import static community.revteltech.nfc.NfcErrorCodes.*;
|
|
4
|
+
|
|
5
|
+
import android.nfc.tech.IsoDep;
|
|
6
|
+
import android.nfc.tech.MifareClassic;
|
|
7
|
+
import android.nfc.tech.MifareUltralight;
|
|
8
|
+
import android.nfc.tech.NfcA;
|
|
9
|
+
import android.nfc.tech.NfcB;
|
|
10
|
+
import android.nfc.tech.NfcF;
|
|
11
|
+
import android.nfc.tech.NfcV;
|
|
12
|
+
import android.nfc.tech.TagTechnology;
|
|
13
|
+
|
|
14
|
+
import android.util.Log;
|
|
15
|
+
|
|
16
|
+
import com.facebook.react.bridge.Arguments;
|
|
17
|
+
import com.facebook.react.bridge.Callback;
|
|
18
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
19
|
+
import com.facebook.react.bridge.WritableArray;
|
|
20
|
+
|
|
21
|
+
class NfcTechIoRouter {
|
|
22
|
+
private static final String LOG_TAG = "ReactNativeNfcManager";
|
|
23
|
+
|
|
24
|
+
private NfcTechIoRouter() {
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static void setTimeout(
|
|
28
|
+
TagTechnologyRequest techRequest,
|
|
29
|
+
int timeout,
|
|
30
|
+
Callback callback
|
|
31
|
+
) {
|
|
32
|
+
if (techRequest == null) {
|
|
33
|
+
callback.invoke(ERR_NO_TECH_REQ);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
String tech = techRequest.getTechType();
|
|
39
|
+
TagTechnology baseTechHandle = techRequest.getTechHandle();
|
|
40
|
+
switch (tech) {
|
|
41
|
+
case "NfcA": {
|
|
42
|
+
NfcA techHandle = (NfcA) baseTechHandle;
|
|
43
|
+
techHandle.setTimeout(timeout);
|
|
44
|
+
callback.invoke();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
case "NfcF": {
|
|
48
|
+
NfcF techHandle = (NfcF) baseTechHandle;
|
|
49
|
+
techHandle.setTimeout(timeout);
|
|
50
|
+
callback.invoke();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
case "IsoDep": {
|
|
54
|
+
IsoDep techHandle = (IsoDep) baseTechHandle;
|
|
55
|
+
techHandle.setTimeout(timeout);
|
|
56
|
+
callback.invoke();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
case "MifareClassic": {
|
|
60
|
+
MifareClassic techHandle = (MifareClassic) baseTechHandle;
|
|
61
|
+
techHandle.setTimeout(timeout);
|
|
62
|
+
callback.invoke();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
case "MifareUltralight": {
|
|
66
|
+
MifareUltralight techHandle = (MifareUltralight) baseTechHandle;
|
|
67
|
+
techHandle.setTimeout(timeout);
|
|
68
|
+
callback.invoke();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
Log.d(LOG_TAG, "setTimeout not supported");
|
|
74
|
+
callback.invoke(ERR_API_NOT_SUPPORT);
|
|
75
|
+
} catch (Exception ex) {
|
|
76
|
+
Log.d(LOG_TAG, ex.toString());
|
|
77
|
+
callback.invoke(ex.toString());
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
static void getTimeout(
|
|
82
|
+
TagTechnologyRequest techRequest,
|
|
83
|
+
Callback callback
|
|
84
|
+
) {
|
|
85
|
+
if (techRequest == null) {
|
|
86
|
+
callback.invoke(ERR_NO_TECH_REQ);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
String tech = techRequest.getTechType();
|
|
92
|
+
TagTechnology baseTechHandle = techRequest.getTechHandle();
|
|
93
|
+
switch (tech) {
|
|
94
|
+
case "NfcA": {
|
|
95
|
+
NfcA techHandle = (NfcA) baseTechHandle;
|
|
96
|
+
callback.invoke(null, techHandle.getTimeout());
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
case "NfcF": {
|
|
100
|
+
NfcF techHandle = (NfcF) baseTechHandle;
|
|
101
|
+
callback.invoke(null, techHandle.getTimeout());
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
case "IsoDep": {
|
|
105
|
+
IsoDep techHandle = (IsoDep) baseTechHandle;
|
|
106
|
+
callback.invoke(null, techHandle.getTimeout());
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
case "MifareClassic": {
|
|
110
|
+
MifareClassic techHandle = (MifareClassic) baseTechHandle;
|
|
111
|
+
callback.invoke(null, techHandle.getTimeout());
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
case "MifareUltralight": {
|
|
115
|
+
MifareUltralight techHandle = (MifareUltralight) baseTechHandle;
|
|
116
|
+
callback.invoke(null, techHandle.getTimeout());
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
Log.d(LOG_TAG, "getTimeout not supported");
|
|
122
|
+
callback.invoke(ERR_API_NOT_SUPPORT);
|
|
123
|
+
} catch (Exception ex) {
|
|
124
|
+
Log.d(LOG_TAG, ex.toString());
|
|
125
|
+
callback.invoke(ex.toString());
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
static void transceive(
|
|
130
|
+
TagTechnologyRequest techRequest,
|
|
131
|
+
ReadableArray rnArray,
|
|
132
|
+
Callback callback
|
|
133
|
+
) {
|
|
134
|
+
if (techRequest == null) {
|
|
135
|
+
callback.invoke(ERR_NO_TECH_REQ);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
String tech = techRequest.getTechType();
|
|
141
|
+
byte[] bytes = rnArrayToBytes(rnArray);
|
|
142
|
+
TagTechnology baseTechHandle = techRequest.getTechHandle();
|
|
143
|
+
|
|
144
|
+
switch (tech) {
|
|
145
|
+
case "NfcA": {
|
|
146
|
+
NfcA techHandle = (NfcA) baseTechHandle;
|
|
147
|
+
callback.invoke(null, bytesToRnArray(techHandle.transceive(bytes)));
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
case "NfcB": {
|
|
151
|
+
NfcB techHandle = (NfcB) baseTechHandle;
|
|
152
|
+
callback.invoke(null, bytesToRnArray(techHandle.transceive(bytes)));
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
case "NfcF": {
|
|
156
|
+
NfcF techHandle = (NfcF) baseTechHandle;
|
|
157
|
+
callback.invoke(null, bytesToRnArray(techHandle.transceive(bytes)));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
case "NfcV": {
|
|
161
|
+
NfcV techHandle = (NfcV) baseTechHandle;
|
|
162
|
+
callback.invoke(null, bytesToRnArray(techHandle.transceive(bytes)));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
case "IsoDep": {
|
|
166
|
+
IsoDep techHandle = (IsoDep) baseTechHandle;
|
|
167
|
+
callback.invoke(null, bytesToRnArray(techHandle.transceive(bytes)));
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
case "MifareClassic": {
|
|
171
|
+
MifareClassic techHandle = (MifareClassic) baseTechHandle;
|
|
172
|
+
callback.invoke(null, bytesToRnArray(techHandle.transceive(bytes)));
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
case "MifareUltralight": {
|
|
176
|
+
MifareUltralight techHandle = (MifareUltralight) baseTechHandle;
|
|
177
|
+
callback.invoke(null, bytesToRnArray(techHandle.transceive(bytes)));
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
Log.d(LOG_TAG, "transceive not supported");
|
|
183
|
+
callback.invoke(ERR_API_NOT_SUPPORT);
|
|
184
|
+
} catch (Exception ex) {
|
|
185
|
+
Log.d(LOG_TAG, "transceive fail: " + ex);
|
|
186
|
+
callback.invoke(ERR_TRANSCEIVE_FAIL);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
static void getMaxTransceiveLength(
|
|
191
|
+
TagTechnologyRequest techRequest,
|
|
192
|
+
Callback callback
|
|
193
|
+
) {
|
|
194
|
+
if (techRequest == null) {
|
|
195
|
+
callback.invoke(ERR_NO_TECH_REQ);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
try {
|
|
200
|
+
String tech = techRequest.getTechType();
|
|
201
|
+
TagTechnology baseTechHandle = techRequest.getTechHandle();
|
|
202
|
+
switch (tech) {
|
|
203
|
+
case "NfcA": {
|
|
204
|
+
NfcA techHandle = (NfcA) baseTechHandle;
|
|
205
|
+
callback.invoke(null, techHandle.getMaxTransceiveLength());
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
case "NfcB": {
|
|
209
|
+
NfcB techHandle = (NfcB) baseTechHandle;
|
|
210
|
+
callback.invoke(null, techHandle.getMaxTransceiveLength());
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
case "NfcF": {
|
|
214
|
+
NfcF techHandle = (NfcF) baseTechHandle;
|
|
215
|
+
callback.invoke(null, techHandle.getMaxTransceiveLength());
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
case "NfcV": {
|
|
219
|
+
NfcV techHandle = (NfcV) baseTechHandle;
|
|
220
|
+
callback.invoke(null, techHandle.getMaxTransceiveLength());
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
case "IsoDep": {
|
|
224
|
+
IsoDep techHandle = (IsoDep) baseTechHandle;
|
|
225
|
+
callback.invoke(null, techHandle.getMaxTransceiveLength());
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
case "MifareUltralight": {
|
|
229
|
+
MifareUltralight techHandle = (MifareUltralight) baseTechHandle;
|
|
230
|
+
callback.invoke(null, techHandle.getMaxTransceiveLength());
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
Log.d(LOG_TAG, "getMaxTransceiveLength not supported");
|
|
236
|
+
callback.invoke(ERR_API_NOT_SUPPORT);
|
|
237
|
+
} catch (Exception ex) {
|
|
238
|
+
Log.d(LOG_TAG, "getMaxTransceiveLength fail");
|
|
239
|
+
callback.invoke(ex.toString());
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
private static byte[] rnArrayToBytes(ReadableArray rArray) {
|
|
244
|
+
byte[] bytes = new byte[rArray.size()];
|
|
245
|
+
for (int i = 0; i < rArray.size(); i++) {
|
|
246
|
+
bytes[i] = (byte) (rArray.getInt(i) & 0xff);
|
|
247
|
+
}
|
|
248
|
+
return bytes;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
private static WritableArray bytesToRnArray(byte[] bytes) {
|
|
252
|
+
WritableArray value = Arguments.createArray();
|
|
253
|
+
for (byte aByte : bytes) {
|
|
254
|
+
value.pushInt((aByte & 0xFF));
|
|
255
|
+
}
|
|
256
|
+
return value;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -33,19 +33,25 @@ class TagTechnologyRequest {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
void invokePendingCallbackWithError(String err) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
Callback callback = takePendingCallback();
|
|
37
|
+
if (callback != null) {
|
|
38
|
+
callback.invoke(err);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
void invokePendingCallback(String connectedTech) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
Callback callback = takePendingCallback();
|
|
44
|
+
if (callback != null) {
|
|
45
|
+
callback.invoke(null, connectedTech);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
private Callback takePendingCallback() {
|
|
50
|
+
Callback callback = mJsCallback;
|
|
51
|
+
mJsCallback = null;
|
|
52
|
+
return callback;
|
|
53
|
+
}
|
|
54
|
+
|
|
49
55
|
TagTechnology getTechHandle() {
|
|
50
56
|
return mTech;
|
|
51
57
|
}
|
|
@@ -122,9 +128,15 @@ class TagTechnologyRequest {
|
|
|
122
128
|
|
|
123
129
|
void close() {
|
|
124
130
|
try {
|
|
125
|
-
mTech
|
|
131
|
+
if (mTech != null) {
|
|
132
|
+
mTech.close();
|
|
133
|
+
}
|
|
126
134
|
} catch (Exception ex) {
|
|
127
135
|
Log.d(LOG_TAG, "fail to close tech");
|
|
136
|
+
} finally {
|
|
137
|
+
mTag = null;
|
|
138
|
+
mTech = null;
|
|
139
|
+
mTechType = null;
|
|
128
140
|
}
|
|
129
141
|
}
|
|
130
142
|
}
|