react-native-web-serial-api 0.0.1
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/LICENSE +21 -0
- package/README.md +147 -0
- package/android/build.gradle +62 -0
- package/android/gradle.properties +6 -0
- package/android/src/main/AndroidManifest.xml +21 -0
- package/android/src/main/java/dev/webserialapi/NativeUsbSerialModule.java +704 -0
- package/android/src/main/java/dev/webserialapi/NativeUsbSerialPackage.java +46 -0
- package/android/src/main/java/dev/webserialapi/PortPickerActivity.java +235 -0
- package/android/src/main/java/dev/webserialapi/UsbDetachReceiver.java +37 -0
- package/android/src/main/res/xml/device_filter.xml +13 -0
- package/babel.config.js +3 -0
- package/biome.json +35 -0
- package/example/.watchmanconfig +1 -0
- package/example/App.tsx +71 -0
- package/example/__tests__/App.test.tsx +16 -0
- package/example/android/app/build.gradle +120 -0
- package/example/android/app/debug.keystore +0 -0
- package/example/android/app/proguard-rules.pro +10 -0
- package/example/android/app/src/debug/AndroidManifest.xml +9 -0
- package/example/android/app/src/main/AndroidManifest.xml +38 -0
- package/example/android/app/src/main/java/dev/uzlopak/MainActivity.kt +22 -0
- package/example/android/app/src/main/java/dev/uzlopak/MainApplication.kt +41 -0
- package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
- package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/values/strings.xml +3 -0
- package/example/android/app/src/main/res/values/styles.xml +9 -0
- package/example/android/build.gradle +22 -0
- package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/example/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/example/android/gradle.properties +47 -0
- package/example/android/gradlew +252 -0
- package/example/android/gradlew.bat +94 -0
- package/example/android/settings.gradle +6 -0
- package/example/app.json +4 -0
- package/example/babel.config.js +21 -0
- package/example/biome.json +47 -0
- package/example/deploy.sh +11 -0
- package/example/index.html +26 -0
- package/example/index.js +9 -0
- package/example/index.web.js +8 -0
- package/example/jest.config.js +12 -0
- package/example/metro.config.js +58 -0
- package/example/package-lock.json +14510 -0
- package/example/package.json +48 -0
- package/example/react-native.config.js +17 -0
- package/example/src/components/AppBar.tsx +73 -0
- package/example/src/components/Menu.tsx +90 -0
- package/example/src/components/SingleChoiceDialog.tsx +120 -0
- package/example/src/screens/ConnectScreen.tsx +195 -0
- package/example/src/screens/DevicesScreen.tsx +141 -0
- package/example/src/screens/TerminalScreen.tsx +564 -0
- package/example/src/settings.ts +43 -0
- package/example/src/theme.ts +19 -0
- package/example/src/util/TextUtil.ts +129 -0
- package/example/tsconfig.json +10 -0
- package/example/vite.config.mjs +55 -0
- package/lib/commonjs/NativeUsbSerial.js +11 -0
- package/lib/commonjs/NativeUsbSerial.js.map +1 -0
- package/lib/commonjs/NativeUsbSerial.web.js +12 -0
- package/lib/commonjs/NativeUsbSerial.web.js.map +1 -0
- package/lib/commonjs/UsbSerial.js +149 -0
- package/lib/commonjs/UsbSerial.js.map +1 -0
- package/lib/commonjs/WebSerial.js +852 -0
- package/lib/commonjs/WebSerial.js.map +1 -0
- package/lib/commonjs/index.js +44 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/serial.android.js +13 -0
- package/lib/commonjs/serial.android.js.map +1 -0
- package/lib/commonjs/serial.js +13 -0
- package/lib/commonjs/serial.js.map +1 -0
- package/lib/commonjs/serial.web.js +11 -0
- package/lib/commonjs/serial.web.js.map +1 -0
- package/lib/typescript/src/NativeUsbSerial.d.ts +51 -0
- package/lib/typescript/src/NativeUsbSerial.d.ts.map +1 -0
- package/lib/typescript/src/NativeUsbSerial.web.d.ts +3 -0
- package/lib/typescript/src/NativeUsbSerial.web.d.ts.map +1 -0
- package/lib/typescript/src/UsbSerial.d.ts +97 -0
- package/lib/typescript/src/UsbSerial.d.ts.map +1 -0
- package/lib/typescript/src/WebSerial.d.ts +236 -0
- package/lib/typescript/src/WebSerial.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/serial.android.d.ts +2 -0
- package/lib/typescript/src/serial.android.d.ts.map +1 -0
- package/lib/typescript/src/serial.d.ts +2 -0
- package/lib/typescript/src/serial.d.ts.map +1 -0
- package/lib/typescript/src/serial.web.d.ts +4 -0
- package/lib/typescript/src/serial.web.d.ts.map +1 -0
- package/package.json +78 -0
- package/react-native.config.js +9 -0
- package/scripts/deploy-release.sh +127 -0
- package/src/NativeUsbSerial.ts +124 -0
- package/src/NativeUsbSerial.web.ts +5 -0
- package/src/UsbSerial.ts +305 -0
- package/src/WebSerial.ts +1084 -0
- package/src/index.ts +23 -0
- package/src/lib/dom-exception.ts +161 -0
- package/src/lib/event-target.ts +170 -0
- package/src/lib/promise.ts +19 -0
- package/src/serial.android.ts +1 -0
- package/src/serial.ts +1 -0
- package/src/serial.web.ts +6 -0
- package/tsconfig.build.json +7 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Ported from SimpleUsbTerminal TextUtil.java
|
|
2
|
+
|
|
3
|
+
export const NEWLINE_CRLF = '\r\n';
|
|
4
|
+
export const NEWLINE_LF = '\n';
|
|
5
|
+
|
|
6
|
+
/** A run of text; `caret` runs (^X control-char notation) get a gray background. */
|
|
7
|
+
export type Run = {text: string; caret: boolean};
|
|
8
|
+
|
|
9
|
+
/** Parse a hex string ("AA BB CC" / "aabbcc") into bytes, ignoring non-hex chars. */
|
|
10
|
+
export function fromHexString(s: string): Uint8Array {
|
|
11
|
+
const out: number[] = [];
|
|
12
|
+
let b = 0;
|
|
13
|
+
let nibble = 0;
|
|
14
|
+
for (let i = 0; i < s.length; i++) {
|
|
15
|
+
if (nibble === 2) {
|
|
16
|
+
out.push(b & 0xff);
|
|
17
|
+
nibble = 0;
|
|
18
|
+
b = 0;
|
|
19
|
+
}
|
|
20
|
+
const c = s.charCodeAt(i);
|
|
21
|
+
if (c >= 0x30 && c <= 0x39) {
|
|
22
|
+
nibble++;
|
|
23
|
+
b = b * 16 + (c - 0x30);
|
|
24
|
+
} else if (c >= 0x41 && c <= 0x46) {
|
|
25
|
+
nibble++;
|
|
26
|
+
b = b * 16 + (c - 0x41 + 10);
|
|
27
|
+
} else if (c >= 0x61 && c <= 0x66) {
|
|
28
|
+
nibble++;
|
|
29
|
+
b = b * 16 + (c - 0x61 + 10);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (nibble > 0) {
|
|
33
|
+
out.push(b & 0xff);
|
|
34
|
+
}
|
|
35
|
+
return Uint8Array.from(out);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Format bytes as space-separated uppercase hex: "AA BB CC". */
|
|
39
|
+
export function toHexString(buf: Uint8Array | number[]): string {
|
|
40
|
+
let sb = '';
|
|
41
|
+
for (let i = 0; i < buf.length; i++) {
|
|
42
|
+
if (sb.length > 0) {
|
|
43
|
+
sb += ' ';
|
|
44
|
+
}
|
|
45
|
+
sb += (buf[i] & 0xff).toString(16).toUpperCase().padStart(2, '0');
|
|
46
|
+
}
|
|
47
|
+
return sb;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** HexWatcher formatting: keep only hex chars, uppercase, group into pairs. */
|
|
51
|
+
export function formatHexInput(s: string): string {
|
|
52
|
+
let hex = '';
|
|
53
|
+
for (let i = 0; i < s.length; i++) {
|
|
54
|
+
const c = s[i];
|
|
55
|
+
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')) {
|
|
56
|
+
hex += c;
|
|
57
|
+
} else if (c >= 'a' && c <= 'f') {
|
|
58
|
+
hex += c.toUpperCase();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
let grouped = '';
|
|
62
|
+
for (let i = 0; i < hex.length; i++) {
|
|
63
|
+
if (i > 0 && i % 2 === 0) {
|
|
64
|
+
grouped += ' ';
|
|
65
|
+
}
|
|
66
|
+
grouped += hex[i];
|
|
67
|
+
}
|
|
68
|
+
return grouped;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Caret notation (https://en.wikipedia.org/wiki/Caret_notation) so invisible
|
|
73
|
+
* control characters are shown as ^X with a highlighted background.
|
|
74
|
+
*/
|
|
75
|
+
export function toCaretRuns(s: string, keepNewline: boolean): Run[] {
|
|
76
|
+
const runs: Run[] = [];
|
|
77
|
+
let plain = '';
|
|
78
|
+
const flush = () => {
|
|
79
|
+
if (plain) {
|
|
80
|
+
runs.push({text: plain, caret: false});
|
|
81
|
+
plain = '';
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
for (let i = 0; i < s.length; i++) {
|
|
85
|
+
const ch = s.charCodeAt(i);
|
|
86
|
+
if (ch < 32 && !(keepNewline && ch === 10)) {
|
|
87
|
+
flush();
|
|
88
|
+
runs.push({text: `^${String.fromCharCode(ch + 64)}`, caret: true});
|
|
89
|
+
} else {
|
|
90
|
+
plain += s[i];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
flush();
|
|
94
|
+
return runs;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder() : null;
|
|
98
|
+
const encoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : null;
|
|
99
|
+
|
|
100
|
+
/** Decode received bytes to a string (UTF-8 when available, else Latin-1). */
|
|
101
|
+
export function bytesToString(data: Uint8Array): string {
|
|
102
|
+
if (decoder) {
|
|
103
|
+
return decoder.decode(data);
|
|
104
|
+
}
|
|
105
|
+
let s = '';
|
|
106
|
+
for (let i = 0; i < data.length; i++) {
|
|
107
|
+
s += String.fromCharCode(data[i]);
|
|
108
|
+
}
|
|
109
|
+
return s;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** Encode a string to UTF-8 bytes for sending. */
|
|
113
|
+
export function stringToBytes(str: string): Uint8Array {
|
|
114
|
+
if (encoder) {
|
|
115
|
+
return encoder.encode(str);
|
|
116
|
+
}
|
|
117
|
+
const out: number[] = [];
|
|
118
|
+
for (let i = 0; i < str.length; i++) {
|
|
119
|
+
const c = str.charCodeAt(i);
|
|
120
|
+
if (c < 0x80) {
|
|
121
|
+
out.push(c);
|
|
122
|
+
} else if (c < 0x800) {
|
|
123
|
+
out.push(0xc0 | (c >> 6), 0x80 | (c & 0x3f));
|
|
124
|
+
} else {
|
|
125
|
+
out.push(0xe0 | (c >> 12), 0x80 | ((c >> 6) & 0x3f), 0x80 | (c & 0x3f));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return Uint8Array.from(out);
|
|
129
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {createRequire} from 'node:module';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import react from '@vitejs/plugin-react';
|
|
4
|
+
import {defineConfig} from 'vite';
|
|
5
|
+
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const rootPkg = require('../package.json');
|
|
8
|
+
|
|
9
|
+
// Absolute path to react-native-web so the alias resolves correctly even from
|
|
10
|
+
// the library source outside this folder (avoids duplicate-module resolution).
|
|
11
|
+
const reactNativeWeb = path.dirname(
|
|
12
|
+
require.resolve('react-native-web/package.json'),
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
// Resolve platform-specific files (.web.ts wins on web) the way Metro does.
|
|
16
|
+
const extensions = [
|
|
17
|
+
'.web.tsx',
|
|
18
|
+
'.web.ts',
|
|
19
|
+
'.web.jsx',
|
|
20
|
+
'.web.js',
|
|
21
|
+
'.tsx',
|
|
22
|
+
'.ts',
|
|
23
|
+
'.jsx',
|
|
24
|
+
'.js',
|
|
25
|
+
'.json',
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
export default defineConfig({
|
|
29
|
+
root: import.meta.dirname,
|
|
30
|
+
plugins: [react()],
|
|
31
|
+
define: {
|
|
32
|
+
// React Native / RNW globals expected at runtime
|
|
33
|
+
global: 'globalThis',
|
|
34
|
+
__DEV__: JSON.stringify(process.env.NODE_ENV !== 'production'),
|
|
35
|
+
'process.env.NODE_ENV': JSON.stringify(
|
|
36
|
+
process.env.NODE_ENV || 'development',
|
|
37
|
+
),
|
|
38
|
+
},
|
|
39
|
+
resolve: {
|
|
40
|
+
extensions,
|
|
41
|
+
alias: [
|
|
42
|
+
// Consume the library straight from its TypeScript source (live reload)
|
|
43
|
+
{
|
|
44
|
+
find: new RegExp(`^${rootPkg.name}$`),
|
|
45
|
+
replacement: path.resolve(import.meta.dirname, '..', rootPkg.source),
|
|
46
|
+
},
|
|
47
|
+
// react-native -> react-native-web (exact match only, so it doesn't
|
|
48
|
+
// rewrite react-native-web or react-native-web-serial-api)
|
|
49
|
+
{find: /^react-native$/, replacement: reactNativeWeb},
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
optimizeDeps: {
|
|
53
|
+
include: ['react-native-web', 'web-streams-polyfill'],
|
|
54
|
+
},
|
|
55
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
// UsbSerialPort.ControlLine enum
|
|
9
|
+
// UsbSerialPort.FlowControl enum
|
|
10
|
+
var _default = exports.default = _reactNative.TurboModuleRegistry.get('NativeUsbSerial');
|
|
11
|
+
//# sourceMappingURL=NativeUsbSerial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeUsbSerial.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AAGA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAqHeC,gCAAmB,CAACC,GAAG,CAAO,iBAAiB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
// On web there is no native USB-serial TurboModule. serial.web.ts delegates to
|
|
8
|
+
// the browser's native navigator.serial, and UsbSerial.getUsbSerial() treats a
|
|
9
|
+
// null module as "not available" — so this stub simply avoids touching
|
|
10
|
+
// TurboModuleRegistry (which does not exist under react-native-web).
|
|
11
|
+
var _default = exports.default = null;
|
|
12
|
+
//# sourceMappingURL=NativeUsbSerial.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_default","exports","default"],"sourceRoot":"../../src","sources":["NativeUsbSerial.web.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAAA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACe,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.UsbSerialModule = exports.StopBits = exports.Parity = exports.DataBits = void 0;
|
|
7
|
+
exports.getUsbSerial = getUsbSerial;
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _NativeUsbSerial = _interopRequireDefault(require("./NativeUsbSerial"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const Parity = exports.Parity = {
|
|
12
|
+
NONE: 0,
|
|
13
|
+
ODD: 1,
|
|
14
|
+
EVEN: 2,
|
|
15
|
+
MARK: 3,
|
|
16
|
+
SPACE: 4
|
|
17
|
+
};
|
|
18
|
+
const DataBits = exports.DataBits = {
|
|
19
|
+
FIVE: 5,
|
|
20
|
+
SIX: 6,
|
|
21
|
+
SEVEN: 7,
|
|
22
|
+
EIGHT: 8
|
|
23
|
+
};
|
|
24
|
+
const StopBits = exports.StopBits = {
|
|
25
|
+
ONE: 1,
|
|
26
|
+
ONE_FIVE: 3,
|
|
27
|
+
TWO: 2
|
|
28
|
+
};
|
|
29
|
+
const DEFAULT_OPEN_OPTIONS = {
|
|
30
|
+
dataBits: DataBits.EIGHT,
|
|
31
|
+
stopBits: StopBits.ONE,
|
|
32
|
+
parity: Parity.NONE
|
|
33
|
+
};
|
|
34
|
+
class UsbSerialModule {
|
|
35
|
+
constructor() {
|
|
36
|
+
if (!_NativeUsbSerial.default) {
|
|
37
|
+
throw new Error('NativeUsbSerial is not available');
|
|
38
|
+
}
|
|
39
|
+
this.native = _NativeUsbSerial.default;
|
|
40
|
+
this.emitter = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.NativeUsbSerial);
|
|
41
|
+
}
|
|
42
|
+
findAllDrivers() {
|
|
43
|
+
return this.native.findAllDrivers();
|
|
44
|
+
}
|
|
45
|
+
showPortPicker(filter, labels) {
|
|
46
|
+
return this.native.showPortPicker(filter, labels);
|
|
47
|
+
}
|
|
48
|
+
requestPermission(deviceId) {
|
|
49
|
+
return this.native.requestPermission(deviceId);
|
|
50
|
+
}
|
|
51
|
+
open(deviceId, portNumber, options) {
|
|
52
|
+
const opts = {
|
|
53
|
+
...DEFAULT_OPEN_OPTIONS,
|
|
54
|
+
...options
|
|
55
|
+
};
|
|
56
|
+
return this.native.open(deviceId, portNumber, opts.baudRate, opts.dataBits, opts.stopBits, opts.parity);
|
|
57
|
+
}
|
|
58
|
+
close(deviceId, portNumber) {
|
|
59
|
+
return this.native.close(deviceId, portNumber);
|
|
60
|
+
}
|
|
61
|
+
isOpen(deviceId, portNumber) {
|
|
62
|
+
return this.native.isOpen(deviceId, portNumber);
|
|
63
|
+
}
|
|
64
|
+
write(deviceId, portNumber, data, timeout = 2000) {
|
|
65
|
+
return this.native.write(deviceId, portNumber, data, timeout);
|
|
66
|
+
}
|
|
67
|
+
startReading(deviceId, portNumber) {
|
|
68
|
+
return this.native.startReading(deviceId, portNumber);
|
|
69
|
+
}
|
|
70
|
+
stopReading(deviceId, portNumber) {
|
|
71
|
+
return this.native.stopReading(deviceId, portNumber);
|
|
72
|
+
}
|
|
73
|
+
setParameters(deviceId, portNumber, options) {
|
|
74
|
+
const opts = {
|
|
75
|
+
...DEFAULT_OPEN_OPTIONS,
|
|
76
|
+
...options
|
|
77
|
+
};
|
|
78
|
+
return this.native.setParameters(deviceId, portNumber, opts.baudRate, opts.dataBits, opts.stopBits, opts.parity);
|
|
79
|
+
}
|
|
80
|
+
setDTR(deviceId, portNumber, value) {
|
|
81
|
+
return this.native.setDTR(deviceId, portNumber, value);
|
|
82
|
+
}
|
|
83
|
+
setRTS(deviceId, portNumber, value) {
|
|
84
|
+
return this.native.setRTS(deviceId, portNumber, value);
|
|
85
|
+
}
|
|
86
|
+
getDTR(deviceId, portNumber) {
|
|
87
|
+
return this.native.getDTR(deviceId, portNumber);
|
|
88
|
+
}
|
|
89
|
+
getRTS(deviceId, portNumber) {
|
|
90
|
+
return this.native.getRTS(deviceId, portNumber);
|
|
91
|
+
}
|
|
92
|
+
getCD(deviceId, portNumber) {
|
|
93
|
+
return this.native.getCD(deviceId, portNumber);
|
|
94
|
+
}
|
|
95
|
+
getCTS(deviceId, portNumber) {
|
|
96
|
+
return this.native.getCTS(deviceId, portNumber);
|
|
97
|
+
}
|
|
98
|
+
getDSR(deviceId, portNumber) {
|
|
99
|
+
return this.native.getDSR(deviceId, portNumber);
|
|
100
|
+
}
|
|
101
|
+
getRI(deviceId, portNumber) {
|
|
102
|
+
return this.native.getRI(deviceId, portNumber);
|
|
103
|
+
}
|
|
104
|
+
getControlLines(deviceId, portNumber) {
|
|
105
|
+
return this.native.getControlLines(deviceId, portNumber);
|
|
106
|
+
}
|
|
107
|
+
getSupportedControlLines(deviceId, portNumber) {
|
|
108
|
+
return this.native.getSupportedControlLines(deviceId, portNumber);
|
|
109
|
+
}
|
|
110
|
+
setFlowControl(deviceId, portNumber, flowControl) {
|
|
111
|
+
return this.native.setFlowControl(deviceId, portNumber, flowControl);
|
|
112
|
+
}
|
|
113
|
+
getFlowControl(deviceId, portNumber) {
|
|
114
|
+
return this.native.getFlowControl(deviceId, portNumber);
|
|
115
|
+
}
|
|
116
|
+
getSupportedFlowControl(deviceId, portNumber) {
|
|
117
|
+
return this.native.getSupportedFlowControl(deviceId, portNumber);
|
|
118
|
+
}
|
|
119
|
+
setBreak(deviceId, portNumber, value) {
|
|
120
|
+
return this.native.setBreak(deviceId, portNumber, value);
|
|
121
|
+
}
|
|
122
|
+
purgeHwBuffers(deviceId, portNumber, purgeWriteBuffers, purgeReadBuffers) {
|
|
123
|
+
return this.native.purgeHwBuffers(deviceId, portNumber, purgeWriteBuffers, purgeReadBuffers);
|
|
124
|
+
}
|
|
125
|
+
getSerial(deviceId, portNumber) {
|
|
126
|
+
return this.native.getSerial(deviceId, portNumber);
|
|
127
|
+
}
|
|
128
|
+
onData(listener) {
|
|
129
|
+
return this.emitter.addListener('data', listener);
|
|
130
|
+
}
|
|
131
|
+
onError(listener) {
|
|
132
|
+
return this.emitter.addListener('error', listener);
|
|
133
|
+
}
|
|
134
|
+
onConnect(listener) {
|
|
135
|
+
return this.emitter.addListener('connect', listener);
|
|
136
|
+
}
|
|
137
|
+
onDisconnect(listener) {
|
|
138
|
+
return this.emitter.addListener('disconnect', listener);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.UsbSerialModule = UsbSerialModule;
|
|
142
|
+
let instance = null;
|
|
143
|
+
function getUsbSerial() {
|
|
144
|
+
if (!instance) {
|
|
145
|
+
instance = new UsbSerialModule();
|
|
146
|
+
}
|
|
147
|
+
return instance;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=UsbSerial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_NativeUsbSerial","_interopRequireDefault","e","__esModule","default","Parity","exports","NONE","ODD","EVEN","MARK","SPACE","DataBits","FIVE","SIX","SEVEN","EIGHT","StopBits","ONE","ONE_FIVE","TWO","DEFAULT_OPEN_OPTIONS","dataBits","stopBits","parity","UsbSerialModule","constructor","NativeUsbSerial","Error","native","emitter","NativeEventEmitter","NativeModules","findAllDrivers","showPortPicker","filter","labels","requestPermission","deviceId","open","portNumber","options","opts","baudRate","close","isOpen","write","data","timeout","startReading","stopReading","setParameters","setDTR","value","setRTS","getDTR","getRTS","getCD","getCTS","getDSR","getRI","getControlLines","getSupportedControlLines","setFlowControl","flowControl","getFlowControl","getSupportedFlowControl","setBreak","purgeHwBuffers","purgeWriteBuffers","purgeReadBuffers","getSerial","onData","listener","addListener","onError","onConnect","onDisconnect","instance","getUsbSerial"],"sourceRoot":"../../src","sources":["UsbSerial.ts"],"mappings":"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","ignoreList":[]}
|