@samlab-corp/sfm-node 0.2.0 → 0.4.0
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/dist/commands/data.d.ts +4 -4
- package/dist/commands/data.js +12 -12
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/fingerprint.d.ts +23 -23
- package/dist/commands/fingerprint.d.ts.map +1 -1
- package/dist/commands/fingerprint.js +114 -114
- package/dist/commands/fingerprint.js.map +1 -1
- package/dist/commands/firmware.d.ts +5 -5
- package/dist/commands/firmware.d.ts.map +1 -1
- package/dist/commands/firmware.js +32 -32
- package/dist/commands/firmware.js.map +1 -1
- package/dist/commands/freescan.d.ts +16 -16
- package/dist/commands/freescan.d.ts.map +1 -1
- package/dist/commands/freescan.js +41 -41
- package/dist/commands/freescan.js.map +1 -1
- package/dist/commands/index.d.ts +12 -12
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +14 -14
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/system.d.ts +12 -12
- package/dist/commands/system.d.ts.map +1 -1
- package/dist/commands/system.js +14 -14
- package/dist/commands/system.js.map +1 -1
- package/dist/constants/protocol.d.ts +25 -0
- package/dist/constants/protocol.d.ts.map +1 -1
- package/dist/constants/protocol.js +26 -1
- package/dist/constants/protocol.js.map +1 -1
- package/dist/core/client.d.ts +33 -21
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +72 -52
- package/dist/core/client.js.map +1 -1
- package/dist/core/crypto.d.ts +19 -19
- package/dist/core/crypto.js +26 -26
- package/dist/core/crypto.js.map +1 -1
- package/dist/core/errors.d.ts +6 -6
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +46 -32
- package/dist/core/errors.js.map +1 -1
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/packet.d.ts +81 -41
- package/dist/core/packet.d.ts.map +1 -1
- package/dist/core/packet.js +256 -60
- package/dist/core/packet.js.map +1 -1
- package/dist/core/serial.d.ts +37 -27
- package/dist/core/serial.d.ts.map +1 -1
- package/dist/core/serial.js +91 -62
- package/dist/core/serial.js.map +1 -1
- package/dist/core/tcp.d.ts +14 -14
- package/dist/core/tcp.js +17 -17
- package/dist/core/tcp.js.map +1 -1
- package/package.json +2 -2
package/dist/core/packet.js
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Suprema SFM
|
|
3
|
+
* Suprema SFM 시리즈 패킷 프로토콜 V3.6.0
|
|
4
4
|
*
|
|
5
|
-
* [
|
|
6
|
-
* Byte 0:
|
|
7
|
-
* Byte 1:
|
|
8
|
-
* Byte 2-5: Param (4
|
|
9
|
-
* Byte 6-9: Size (4
|
|
10
|
-
* Byte 10: Flag/Error -
|
|
11
|
-
* Byte 11:
|
|
12
|
-
* Byte 12:
|
|
5
|
+
* [일반 패킷 구조 - 13바이트]
|
|
6
|
+
* Byte 0: 시작 코드 (0x40)
|
|
7
|
+
* Byte 1: 명령
|
|
8
|
+
* Byte 2-5: Param (4바이트, 리틀엔디안) - 사용자 ID 또는 시스템 파라미터 값
|
|
9
|
+
* Byte 6-9: Size (4바이트, 리틀엔디안) - 후속 바이너리 데이터 크기
|
|
10
|
+
* Byte 10: Flag/Error - 요청 시 Flag, 응답 시 에러 코드
|
|
11
|
+
* Byte 11: 체크섬 - 바이트 0~10 합의 하위 바이트
|
|
12
|
+
* Byte 12: 종료 코드 (0x0A)
|
|
13
13
|
*
|
|
14
|
-
* [
|
|
15
|
-
* Byte 0:
|
|
16
|
-
* Byte 1-2:
|
|
17
|
-
* Byte 3:
|
|
18
|
-
* Byte 4-7: Param (4
|
|
19
|
-
* Byte 8-11: Size (4
|
|
14
|
+
* [네트워크 패킷 구조 - 15바이트 (RS422/485)]
|
|
15
|
+
* Byte 0: 시작 코드 (0x41)
|
|
16
|
+
* Byte 1-2: 터미널 ID (2바이트, 리틀엔디안)
|
|
17
|
+
* Byte 3: 명령
|
|
18
|
+
* Byte 4-7: Param (4바이트, 리틀엔디안)
|
|
19
|
+
* Byte 8-11: Size (4바이트, 리틀엔디안)
|
|
20
20
|
* Byte 12: Flag/Error
|
|
21
|
-
* Byte 13:
|
|
22
|
-
* Byte 14:
|
|
21
|
+
* Byte 13: 체크섬 - 바이트 0~12 합의 하위 바이트
|
|
22
|
+
* Byte 14: 종료 코드 (0x0A)
|
|
23
23
|
*
|
|
24
|
-
* [
|
|
25
|
-
* Byte 0: 0x50 (
|
|
26
|
-
* Byte 1-32: AES256
|
|
27
|
-
* Byte 33:
|
|
28
|
-
* Byte 34: 0x0A (
|
|
24
|
+
* [보안 패킷 구조 - 35바이트]
|
|
25
|
+
* Byte 0: 0x50 (전송) / 0x51 (수신)
|
|
26
|
+
* Byte 1-32: AES256 암호화 데이터 (32바이트)
|
|
27
|
+
* Byte 33: 체크섬
|
|
28
|
+
* Byte 34: 0x0A (종료)
|
|
29
29
|
*
|
|
30
|
-
* [
|
|
31
|
-
* Byte 0-3:
|
|
32
|
-
* Byte 4+:
|
|
33
|
-
*
|
|
30
|
+
* [데이터 전송 패킷 - 가변 길이]
|
|
31
|
+
* Byte 0-3: 전체 길이 (리틀엔디안 uint32)
|
|
32
|
+
* Byte 4+: 페이로드 데이터
|
|
33
|
+
* 마지막 2: 16비트 체크섬 (리틀엔디안)
|
|
34
34
|
*/
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.PACKET_SIZE = exports.END_CODE = exports.START_CODE = void 0;
|
|
@@ -47,15 +47,18 @@ exports.isValidStartByte = isValidStartByte;
|
|
|
47
47
|
exports.scanForStartByte = scanForStartByte;
|
|
48
48
|
exports.encodeHexAscii = encodeHexAscii;
|
|
49
49
|
exports.decodeHexAscii = decodeHexAscii;
|
|
50
|
+
exports.describeNormalPacket = describeNormalPacket;
|
|
51
|
+
exports.describeNetworkPacket = describeNetworkPacket;
|
|
52
|
+
exports.describePacketFields = describePacketFields;
|
|
50
53
|
const index_js_1 = require("../constants/index.js");
|
|
51
|
-
//
|
|
54
|
+
// 하위 호환 재내보내기
|
|
52
55
|
var index_js_2 = require("../constants/index.js");
|
|
53
56
|
Object.defineProperty(exports, "START_CODE", { enumerable: true, get: function () { return index_js_2.START_CODE; } });
|
|
54
57
|
Object.defineProperty(exports, "END_CODE", { enumerable: true, get: function () { return index_js_2.END_CODE; } });
|
|
55
58
|
Object.defineProperty(exports, "PACKET_SIZE", { enumerable: true, get: function () { return index_js_2.PACKET_SIZE; } });
|
|
56
59
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
60
|
+
* 체크섬 계산
|
|
61
|
+
* 바이트 배열 합 & 0xFF
|
|
59
62
|
*/
|
|
60
63
|
function calcChecksum(data, length) {
|
|
61
64
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
@@ -67,7 +70,7 @@ function calcChecksum(data, length) {
|
|
|
67
70
|
return sum & 0xFF;
|
|
68
71
|
}
|
|
69
72
|
/**
|
|
70
|
-
*
|
|
73
|
+
* 16비트 체크섬 계산 (데이터 전송 패킷용)
|
|
71
74
|
*/
|
|
72
75
|
function calcChecksum16(data) {
|
|
73
76
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
@@ -78,41 +81,41 @@ function calcChecksum16(data) {
|
|
|
78
81
|
return sum & 0xFFFF;
|
|
79
82
|
}
|
|
80
83
|
/**
|
|
81
|
-
*
|
|
84
|
+
* 일반 패킷 생성 (13바이트)
|
|
82
85
|
* [Start(0x40)] [Command] [Param LE 4B] [Size LE 4B] [Flag] [Checksum] [End(0x0A)]
|
|
83
86
|
*/
|
|
84
87
|
function buildNormalPacket(command, param = 0, size = 0, flag = 0) {
|
|
85
88
|
const packet = Buffer.alloc(index_js_1.PACKET_SIZE.NORMAL);
|
|
86
|
-
packet[0] = index_js_1.START_CODE.NORMAL; //
|
|
87
|
-
packet[1] = command; //
|
|
88
|
-
packet.writeUInt32LE(param >>> 0, 2); // Param (4
|
|
89
|
-
packet.writeUInt32LE(size >>> 0, 6); // Size (4
|
|
89
|
+
packet[0] = index_js_1.START_CODE.NORMAL; // 시작 코드
|
|
90
|
+
packet[1] = command; // 명령
|
|
91
|
+
packet.writeUInt32LE(param >>> 0, 2); // Param (4바이트)
|
|
92
|
+
packet.writeUInt32LE(size >>> 0, 6); // Size (4바이트)
|
|
90
93
|
packet[10] = flag; // Flag/Error
|
|
91
|
-
//
|
|
94
|
+
// 체크섬: 바이트 0~10 합 & 0xFF
|
|
92
95
|
packet[11] = calcChecksum(packet, 11);
|
|
93
|
-
packet[12] = index_js_1.END_CODE; //
|
|
96
|
+
packet[12] = index_js_1.END_CODE; // 종료 코드
|
|
94
97
|
return packet;
|
|
95
98
|
}
|
|
96
99
|
/**
|
|
97
|
-
*
|
|
100
|
+
* 네트워크 패킷 생성 (15바이트, RS422/485)
|
|
98
101
|
* [Start(0x41)] [TermID LE 2B] [Command] [Param LE 4B] [Size LE 4B] [Flag] [Checksum] [End(0x0A)]
|
|
99
102
|
*/
|
|
100
103
|
function buildNetworkPacket(command, terminalId = 0, param = 0, size = 0, flag = 0) {
|
|
101
104
|
const packet = Buffer.alloc(index_js_1.PACKET_SIZE.NETWORK);
|
|
102
|
-
packet[0] = index_js_1.START_CODE.NETWORK; //
|
|
103
|
-
packet.writeUInt16LE(terminalId, 1); //
|
|
104
|
-
packet[3] = command; //
|
|
105
|
-
packet.writeUInt32LE(param >>> 0, 4); // Param (4
|
|
106
|
-
packet.writeUInt32LE(size >>> 0, 8); // Size (4
|
|
105
|
+
packet[0] = index_js_1.START_CODE.NETWORK; // 시작 코드 (0x41)
|
|
106
|
+
packet.writeUInt16LE(terminalId, 1); // 터미널 ID (2바이트)
|
|
107
|
+
packet[3] = command; // 명령
|
|
108
|
+
packet.writeUInt32LE(param >>> 0, 4); // Param (4바이트)
|
|
109
|
+
packet.writeUInt32LE(size >>> 0, 8); // Size (4바이트)
|
|
107
110
|
packet[12] = flag; // Flag/Error
|
|
108
|
-
//
|
|
111
|
+
// 체크섬: 바이트 0~12 합 & 0xFF
|
|
109
112
|
packet[13] = calcChecksum(packet, 13);
|
|
110
|
-
packet[14] = index_js_1.END_CODE; //
|
|
113
|
+
packet[14] = index_js_1.END_CODE; // 종료 코드
|
|
111
114
|
return packet;
|
|
112
115
|
}
|
|
113
116
|
/**
|
|
114
|
-
*
|
|
115
|
-
* [4
|
|
117
|
+
* 데이터 전송 패킷 생성 (가변 길이)
|
|
118
|
+
* [4바이트 길이 LE] [N바이트 데이터] [2바이트 체크섬 LE]
|
|
116
119
|
*/
|
|
117
120
|
function buildDataPacket(data) {
|
|
118
121
|
const dataBuf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
@@ -125,12 +128,12 @@ function buildDataPacket(data) {
|
|
|
125
128
|
return packet;
|
|
126
129
|
}
|
|
127
130
|
/**
|
|
128
|
-
*
|
|
131
|
+
* 일반 패킷 파싱 (13바이트)
|
|
129
132
|
*/
|
|
130
133
|
function parseNormalPacket(data) {
|
|
131
134
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
132
135
|
if (buf.length < index_js_1.PACKET_SIZE.NORMAL) {
|
|
133
|
-
return { valid: false, error: '
|
|
136
|
+
return { valid: false, error: '패킷 크기 부족' };
|
|
134
137
|
}
|
|
135
138
|
const startCode = buf[0];
|
|
136
139
|
const command = buf[1];
|
|
@@ -168,12 +171,12 @@ function parseNormalPacket(data) {
|
|
|
168
171
|
};
|
|
169
172
|
}
|
|
170
173
|
/**
|
|
171
|
-
*
|
|
174
|
+
* 네트워크 패킷 파싱 (15바이트)
|
|
172
175
|
*/
|
|
173
176
|
function parseNetworkPacket(data) {
|
|
174
177
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
175
178
|
if (buf.length < index_js_1.PACKET_SIZE.NETWORK) {
|
|
176
|
-
return { valid: false, error: '
|
|
179
|
+
return { valid: false, error: '패킷 크기 부족' };
|
|
177
180
|
}
|
|
178
181
|
const startCode = buf[0];
|
|
179
182
|
const terminalId = buf.readUInt16LE(1);
|
|
@@ -212,16 +215,16 @@ function parseNetworkPacket(data) {
|
|
|
212
215
|
};
|
|
213
216
|
}
|
|
214
217
|
/**
|
|
215
|
-
*
|
|
218
|
+
* 데이터 전송 패킷 파싱
|
|
216
219
|
*/
|
|
217
220
|
function parseDataPacket(data) {
|
|
218
221
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
219
222
|
if (buf.length < 6) {
|
|
220
|
-
return { valid: false, error: '
|
|
223
|
+
return { valid: false, error: '패킷 크기 부족' };
|
|
221
224
|
}
|
|
222
225
|
const totalLen = buf.readUInt32LE(0);
|
|
223
226
|
if (buf.length < totalLen) {
|
|
224
|
-
return { valid: false, error:
|
|
227
|
+
return { valid: false, error: `불완전한 패킷: expected=${totalLen}, got=${buf.length}` };
|
|
225
228
|
}
|
|
226
229
|
const dataLen = totalLen - 6;
|
|
227
230
|
const payload = buf.subarray(4, 4 + dataLen);
|
|
@@ -233,18 +236,18 @@ function parseDataPacket(data) {
|
|
|
233
236
|
payload: Buffer.from(payload),
|
|
234
237
|
checksum: receivedChecksum,
|
|
235
238
|
expectedChecksum,
|
|
236
|
-
error: receivedChecksum !== expectedChecksum ? '
|
|
239
|
+
error: receivedChecksum !== expectedChecksum ? '체크섬 불일치' : null,
|
|
237
240
|
};
|
|
238
241
|
}
|
|
239
242
|
/**
|
|
240
|
-
*
|
|
243
|
+
* 패킷을 hex 문자열로 변환 (디버깅용)
|
|
241
244
|
*/
|
|
242
245
|
function packetToHex(data) {
|
|
243
246
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
244
247
|
return buf.toString('hex').toUpperCase().replace(/(.{2})/g, '$1 ').trim();
|
|
245
248
|
}
|
|
246
249
|
/**
|
|
247
|
-
*
|
|
250
|
+
* 시작 바이트 유효성 검증
|
|
248
251
|
*/
|
|
249
252
|
function isValidStartByte(byte, type = 'normal') {
|
|
250
253
|
switch (type) {
|
|
@@ -259,7 +262,7 @@ function isValidStartByte(byte, type = 'normal') {
|
|
|
259
262
|
}
|
|
260
263
|
}
|
|
261
264
|
/**
|
|
262
|
-
*
|
|
265
|
+
* 버퍼에서 유효한 시작 바이트 위치 탐색
|
|
263
266
|
*/
|
|
264
267
|
function scanForStartByte(buffer, type = 'normal', offset = 0) {
|
|
265
268
|
for (let i = offset; i < buffer.length; i++) {
|
|
@@ -270,17 +273,210 @@ function scanForStartByte(buffer, type = 'normal', offset = 0) {
|
|
|
270
273
|
return -1;
|
|
271
274
|
}
|
|
272
275
|
/**
|
|
273
|
-
*
|
|
276
|
+
* 바이너리 → Hex-ASCII 인코딩
|
|
274
277
|
*/
|
|
275
278
|
function encodeHexAscii(data) {
|
|
276
279
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
277
280
|
return Buffer.from(buf.toString('hex').toUpperCase(), 'ascii');
|
|
278
281
|
}
|
|
279
282
|
/**
|
|
280
|
-
* Hex-ASCII →
|
|
283
|
+
* Hex-ASCII → 바이너리 디코딩
|
|
281
284
|
*/
|
|
282
285
|
function decodeHexAscii(data) {
|
|
283
286
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
284
287
|
return Buffer.from(buf.toString('ascii'), 'hex');
|
|
285
288
|
}
|
|
289
|
+
// ─── 디버그용 패킷 해석 ───
|
|
290
|
+
// 코드 → 이름 역매핑 (최초 호출 시 1회 생성)
|
|
291
|
+
let _cmdNameMap = null;
|
|
292
|
+
let _errorNameMap = null;
|
|
293
|
+
let _flagNameMap = null;
|
|
294
|
+
function getCmdNameMap() {
|
|
295
|
+
if (!_cmdNameMap) {
|
|
296
|
+
_cmdNameMap = new Map();
|
|
297
|
+
for (const [name, code] of Object.entries(index_js_1.SFM_CMD)) {
|
|
298
|
+
_cmdNameMap.set(code, name);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return _cmdNameMap;
|
|
302
|
+
}
|
|
303
|
+
function getErrorNameMap() {
|
|
304
|
+
if (!_errorNameMap) {
|
|
305
|
+
_errorNameMap = new Map();
|
|
306
|
+
for (const [name, code] of Object.entries(index_js_1.SFM_ERROR)) {
|
|
307
|
+
_errorNameMap.set(code, name);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return _errorNameMap;
|
|
311
|
+
}
|
|
312
|
+
function getFlagNameMap() {
|
|
313
|
+
if (!_flagNameMap) {
|
|
314
|
+
_flagNameMap = new Map();
|
|
315
|
+
for (const [name, code] of Object.entries(index_js_1.SFM_FLAG)) {
|
|
316
|
+
_flagNameMap.set(code, name);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return _flagNameMap;
|
|
320
|
+
}
|
|
321
|
+
function hex(value, bytes = 1) {
|
|
322
|
+
return '0x' + value.toString(16).toUpperCase().padStart(bytes * 2, '0');
|
|
323
|
+
}
|
|
324
|
+
function resolveCmdName(code) {
|
|
325
|
+
return getCmdNameMap().get(code) ?? hex(code);
|
|
326
|
+
}
|
|
327
|
+
function resolveFlagOrErrorName(code) {
|
|
328
|
+
// 에러/응답 코드와 플래그 코드가 겹치는 경우 에러 이름 우선
|
|
329
|
+
const errorName = getErrorNameMap().get(code);
|
|
330
|
+
if (errorName)
|
|
331
|
+
return errorName;
|
|
332
|
+
const flagName = getFlagNameMap().get(code);
|
|
333
|
+
if (flagName)
|
|
334
|
+
return flagName;
|
|
335
|
+
return hex(code);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* 일반 패킷(13B)을 사람이 읽을 수 있는 디버그 문자열로 해석
|
|
339
|
+
*
|
|
340
|
+
* @example
|
|
341
|
+
* const info = describeNormalPacket(Buffer.from([0x40,0x87,0x64,0,0,0,0x80,0x01,0x01,0x02,0x71,0x20,0x0A]));
|
|
342
|
+
* console.log(info.description);
|
|
343
|
+
* // "[ETX] param=100 size=0x02010180 flag=ADD_NEW(0x71)"
|
|
344
|
+
*/
|
|
345
|
+
function describeNormalPacket(data) {
|
|
346
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
347
|
+
const hexDump = packetToHex(buf);
|
|
348
|
+
if (buf.length < index_js_1.PACKET_SIZE.NORMAL) {
|
|
349
|
+
return {
|
|
350
|
+
hex: hexDump,
|
|
351
|
+
description: `[INVALID] 패킷 크기 부족 (${buf.length}B < 13B)`,
|
|
352
|
+
fields: { start: '?', command: '?', param: '?', size: '?', flag: '?', checksum: '?', end: '?' },
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
const startCode = buf[0];
|
|
356
|
+
const command = buf[1];
|
|
357
|
+
const param = buf.readUInt32LE(2);
|
|
358
|
+
const size = buf.readUInt32LE(6);
|
|
359
|
+
const flag = buf[10];
|
|
360
|
+
const checksum = buf[11];
|
|
361
|
+
const endCode = buf[12];
|
|
362
|
+
const cmdName = resolveCmdName(command);
|
|
363
|
+
const flagName = resolveFlagOrErrorName(flag);
|
|
364
|
+
// param 해석: 일반적으로 userId
|
|
365
|
+
const paramStr = param === 0 ? '0' : `${param} (${hex(param, 4)})`;
|
|
366
|
+
// size 해석: ETX/RTX는 복합 필드
|
|
367
|
+
let sizeStr;
|
|
368
|
+
if ((command === index_js_1.SFM_CMD.ETX || command === index_js_1.SFM_CMD.RTX) && size > 0xFFFF) {
|
|
369
|
+
const count = (size >>> 24) & 0xFF;
|
|
370
|
+
const enroll = (size >>> 16) & 0xFF;
|
|
371
|
+
const chunk = size & 0xFFFF;
|
|
372
|
+
sizeStr = `${hex(size, 4)} (count=${count}, enroll=${enroll}, chunk=${chunk})`;
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
sizeStr = size === 0 ? '0' : `${size} (${hex(size, 4)})`;
|
|
376
|
+
}
|
|
377
|
+
const flagStr = flag === 0 ? 'NONE(0x00)' : `${flagName}(${hex(flag)})`;
|
|
378
|
+
// 체크섬 검증
|
|
379
|
+
const expected = calcChecksum(buf, 11);
|
|
380
|
+
const checksumOk = checksum === expected;
|
|
381
|
+
const checksumStr = checksumOk ? `${hex(checksum)} OK` : `${hex(checksum)} NG (expected ${hex(expected)})`;
|
|
382
|
+
const description = `[${cmdName}] param=${paramStr} size=${sizeStr} flag=${flagStr}`;
|
|
383
|
+
return {
|
|
384
|
+
hex: hexDump,
|
|
385
|
+
description,
|
|
386
|
+
fields: {
|
|
387
|
+
start: startCode === index_js_1.START_CODE.NORMAL ? 'NORMAL(0x40)' : hex(startCode),
|
|
388
|
+
command: `${cmdName}(${hex(command)})`,
|
|
389
|
+
param: paramStr,
|
|
390
|
+
size: sizeStr,
|
|
391
|
+
flag: flagStr,
|
|
392
|
+
checksum: checksumStr,
|
|
393
|
+
end: endCode === index_js_1.END_CODE ? 'END(0x0A)' : hex(endCode),
|
|
394
|
+
},
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* 네트워크 패킷(15B)을 사람이 읽을 수 있는 디버그 문자열로 해석
|
|
399
|
+
*/
|
|
400
|
+
function describeNetworkPacket(data) {
|
|
401
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
402
|
+
const hexDump = packetToHex(buf);
|
|
403
|
+
if (buf.length < index_js_1.PACKET_SIZE.NETWORK) {
|
|
404
|
+
return {
|
|
405
|
+
hex: hexDump,
|
|
406
|
+
description: `[INVALID] 패킷 크기 부족 (${buf.length}B < 15B)`,
|
|
407
|
+
fields: { start: '?', command: '?', param: '?', size: '?', flag: '?', checksum: '?', end: '?' },
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
const startCode = buf[0];
|
|
411
|
+
const terminalId = buf.readUInt16LE(1);
|
|
412
|
+
const command = buf[3];
|
|
413
|
+
const param = buf.readUInt32LE(4);
|
|
414
|
+
const size = buf.readUInt32LE(8);
|
|
415
|
+
const flag = buf[12];
|
|
416
|
+
const checksum = buf[13];
|
|
417
|
+
const endCode = buf[14];
|
|
418
|
+
const cmdName = resolveCmdName(command);
|
|
419
|
+
const flagName = resolveFlagOrErrorName(flag);
|
|
420
|
+
const paramStr = param === 0 ? '0' : `${param} (${hex(param, 4)})`;
|
|
421
|
+
const sizeStr = size === 0 ? '0' : `${size} (${hex(size, 4)})`;
|
|
422
|
+
const flagStr = flag === 0 ? 'NONE(0x00)' : `${flagName}(${hex(flag)})`;
|
|
423
|
+
const expected = calcChecksum(buf, 13);
|
|
424
|
+
const checksumOk = checksum === expected;
|
|
425
|
+
const checksumStr = checksumOk ? `${hex(checksum)} OK` : `${hex(checksum)} NG (expected ${hex(expected)})`;
|
|
426
|
+
const description = `[${cmdName}] termId=${terminalId} param=${paramStr} size=${sizeStr} flag=${flagStr}`;
|
|
427
|
+
return {
|
|
428
|
+
hex: hexDump,
|
|
429
|
+
description,
|
|
430
|
+
fields: {
|
|
431
|
+
start: startCode === index_js_1.START_CODE.NETWORK ? 'NETWORK(0x41)' : hex(startCode),
|
|
432
|
+
command: `${cmdName}(${hex(command)})`,
|
|
433
|
+
param: paramStr,
|
|
434
|
+
size: sizeStr,
|
|
435
|
+
flag: flagStr,
|
|
436
|
+
checksum: checksumStr,
|
|
437
|
+
end: endCode === index_js_1.END_CODE ? 'END(0x0A)' : hex(endCode),
|
|
438
|
+
terminalId: `${terminalId}`,
|
|
439
|
+
},
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* 패킷 바이트를 필드별 테이블 문자열로 표시 (디버그용)
|
|
444
|
+
*
|
|
445
|
+
* @example
|
|
446
|
+
* console.log(describePacketFields(buf));
|
|
447
|
+
* // Start | Cmd | Param | Size | Flag | Chk | End
|
|
448
|
+
* // 40 | 87 | 64 00 00 00 | 80 01 01 02 | 71 | 20 | 0A
|
|
449
|
+
* // NORMAL(0x40)| ETX(0x87) | 100 (0x00000064) | 0x02010180 (count=2, enroll=1, chunk=384)| ADD_NEW(0x71) | 0x20 OK | END(0x0A)
|
|
450
|
+
*/
|
|
451
|
+
function describePacketFields(data, type = 'normal') {
|
|
452
|
+
const W = { start: 12, cmd: 10, param: 19, size: 42, flag: 20, chk: 10, end: 9, termId: 8 };
|
|
453
|
+
if (type === 'network') {
|
|
454
|
+
const info = describeNetworkPacket(data);
|
|
455
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
456
|
+
if (buf.length < index_js_1.PACKET_SIZE.NETWORK)
|
|
457
|
+
return info.description;
|
|
458
|
+
const h = ['Start', 'TermID', 'Cmd', 'Param', 'Size', 'Flag', 'Chk', 'End'];
|
|
459
|
+
const hW = [W.start, W.termId, W.cmd, W.param, W.size, W.flag, W.chk, W.end];
|
|
460
|
+
const row1 = [hex(buf[0], 1), packetToHex(buf.subarray(1, 3)), hex(buf[3], 1), packetToHex(buf.subarray(4, 8)), packetToHex(buf.subarray(8, 12)), hex(buf[12], 1), hex(buf[13], 1), hex(buf[14], 1)];
|
|
461
|
+
const row2 = [info.fields.start, info.fields.terminalId ?? '', info.fields.command, info.fields.param, info.fields.size, info.fields.flag, info.fields.checksum, info.fields.end];
|
|
462
|
+
return [
|
|
463
|
+
h.map((v, i) => v.padEnd(hW[i])).join('| '),
|
|
464
|
+
row1.map((v, i) => v.padEnd(hW[i])).join('| '),
|
|
465
|
+
row2.map((v, i) => v.padEnd(hW[i])).join('| '),
|
|
466
|
+
].join('\n');
|
|
467
|
+
}
|
|
468
|
+
const info = describeNormalPacket(data);
|
|
469
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
470
|
+
if (buf.length < index_js_1.PACKET_SIZE.NORMAL)
|
|
471
|
+
return info.description;
|
|
472
|
+
const h = ['Start', 'Cmd', 'Param', 'Size', 'Flag', 'Chk', 'End'];
|
|
473
|
+
const hW = [W.start, W.cmd, W.param, W.size, W.flag, W.chk, W.end];
|
|
474
|
+
const row1 = [hex(buf[0], 1), hex(buf[1], 1), packetToHex(buf.subarray(2, 6)), packetToHex(buf.subarray(6, 10)), hex(buf[10], 1), hex(buf[11], 1), hex(buf[12], 1)];
|
|
475
|
+
const row2 = [info.fields.start, info.fields.command, info.fields.param, info.fields.size, info.fields.flag, info.fields.checksum, info.fields.end];
|
|
476
|
+
return [
|
|
477
|
+
h.map((v, i) => v.padEnd(hW[i])).join('| '),
|
|
478
|
+
row1.map((v, i) => v.padEnd(hW[i])).join('| '),
|
|
479
|
+
row2.map((v, i) => v.padEnd(hW[i])).join('| '),
|
|
480
|
+
].join('\n');
|
|
481
|
+
}
|
|
286
482
|
//# sourceMappingURL=packet.js.map
|
package/dist/core/packet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/core/packet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/core/packet.ts"],"names":[],"mappings":"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"}
|
package/dist/core/serial.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SFM
|
|
2
|
+
* SFM 시리얼 포트 통신 모듈
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ghidra 디컴파일 분석 기반 - FUN_140010350 (Open), FUN_140010280 (Close),
|
|
5
5
|
* FUN_140010420 (Read), FUN_140010770 (Write)
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* 시리얼 설정:
|
|
8
8
|
* BaudRate: 115200 (0x1C200)
|
|
9
9
|
* ByteSize: 8
|
|
10
10
|
* Parity: None
|
|
11
11
|
* StopBits: 1
|
|
12
12
|
* FlowControl: RTS/CTS
|
|
13
13
|
*/
|
|
14
|
-
import { SerialPort } from
|
|
14
|
+
import { SerialPort } from "serialport";
|
|
15
15
|
export interface SerialPortInfo {
|
|
16
16
|
path: string;
|
|
17
17
|
manufacturer: string;
|
|
@@ -20,17 +20,17 @@ export interface SerialPortInfo {
|
|
|
20
20
|
productId: string;
|
|
21
21
|
}
|
|
22
22
|
export interface AutoReconnectOptions {
|
|
23
|
-
/**
|
|
23
|
+
/** 자동 재연결 활성화 (기본값: false) */
|
|
24
24
|
enabled: boolean;
|
|
25
|
-
/**
|
|
25
|
+
/** 최대 재시도 횟수 (기본값: 5, 0 = 무제한) */
|
|
26
26
|
maxRetries?: number;
|
|
27
|
-
/**
|
|
27
|
+
/** 재시도 간격 ms (기본값: 2000) */
|
|
28
28
|
interval?: number;
|
|
29
|
-
/**
|
|
29
|
+
/** 재연결 시도 콜백 */
|
|
30
30
|
onRetry?: (attempt: number, maxRetries: number) => void;
|
|
31
|
-
/**
|
|
31
|
+
/** 재연결 성공 콜백 */
|
|
32
32
|
onReconnected?: () => void;
|
|
33
|
-
/**
|
|
33
|
+
/** 재연결 최종 실패 콜백 */
|
|
34
34
|
onFailed?: (error: Error) => void;
|
|
35
35
|
}
|
|
36
36
|
export interface AutoReconnectCallbacks {
|
|
@@ -60,59 +60,69 @@ export declare class SfmSerial {
|
|
|
60
60
|
private _reconnecting;
|
|
61
61
|
private _reconnectTimer;
|
|
62
62
|
constructor(options?: SfmSerialOptions);
|
|
63
|
-
/**
|
|
63
|
+
/** 자동 재연결 옵션 설정 (생성자/내부 사용) */
|
|
64
64
|
setAutoReconnect(options: AutoReconnectOptions | null): void;
|
|
65
|
-
/**
|
|
65
|
+
/** 자동 재연결 콜백만 설정 (기존 enabled/maxRetries/interval 유지) */
|
|
66
66
|
setAutoReconnectCallbacks(callbacks: AutoReconnectCallbacks): void;
|
|
67
|
-
/**
|
|
67
|
+
/** 재연결 진행 중 여부 */
|
|
68
68
|
get isReconnecting(): boolean;
|
|
69
|
-
/**
|
|
69
|
+
/** 연결 해제 콜백 설정 */
|
|
70
70
|
setOnDisconnect(callback: ((error?: Error) => void) | null): void;
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
73
|
-
* (
|
|
72
|
+
* 사용 가능한 시리얼 포트 목록 조회
|
|
73
|
+
* (레지스트리 HARDWARE\DEVICEMAP\SERIALCOMM 대응)
|
|
74
74
|
*/
|
|
75
75
|
static listPorts(): Promise<SerialPortInfo[]>;
|
|
76
76
|
/**
|
|
77
|
-
*
|
|
77
|
+
* 시리얼 포트 열기
|
|
78
78
|
* (FUN_140010350: CreateFileA + SetCommState + SetCommTimeouts)
|
|
79
79
|
*/
|
|
80
80
|
open(path?: string): Promise<void>;
|
|
81
81
|
/**
|
|
82
|
-
*
|
|
82
|
+
* 시리얼 포트 닫기
|
|
83
83
|
* (FUN_140010280: PurgeComm + CloseHandle)
|
|
84
84
|
*/
|
|
85
85
|
close(): Promise<void>;
|
|
86
86
|
/**
|
|
87
|
-
*
|
|
88
|
-
* (FUN_140010770: 64
|
|
87
|
+
* 데이터 쓰기 (청크 분할)
|
|
88
|
+
* (FUN_140010770: 64바이트 청크 WriteFile)
|
|
89
|
+
*
|
|
90
|
+
* 시리얼 포트에 데이터를 한 번에 보내지 않고 64바이트(WRITE_CHUNK_SIZE)씩
|
|
91
|
+
* 쪼개서 전송한다. 각 청크 전송 후 drain()으로 하드웨어 전송 완료를 대기한다.
|
|
92
|
+
*
|
|
93
|
+
* 64바이트 단위로 분할하는 이유:
|
|
94
|
+
* - USB-Serial 변환기(FTDI, CH340 등)의 USB bulk transfer 단위가 64바이트
|
|
95
|
+
* - 시리얼 TX FIFO 버퍼 크기 제한으로 큰 데이터를 한 번에 넣으면 overflow 가능
|
|
96
|
+
*
|
|
97
|
+
* 일반 패킷(13바이트)은 1회로 끝나지만, 템플릿 데이터(지문 등) 전송 시
|
|
98
|
+
* 수백~수천 바이트가 될 수 있어 분할 전송이 필요하다.
|
|
89
99
|
*/
|
|
90
100
|
write(data: Buffer | Uint8Array): Promise<void>;
|
|
91
101
|
/**
|
|
92
|
-
*
|
|
93
|
-
* (FUN_140010420:
|
|
102
|
+
* 데이터 읽기
|
|
103
|
+
* (FUN_140010420: 타임아웃 포함 ReadFile)
|
|
94
104
|
*/
|
|
95
105
|
read(expectedLength: number, timeoutMs?: number): Promise<Buffer>;
|
|
96
106
|
/**
|
|
97
|
-
*
|
|
107
|
+
* 단일 바이트 읽기 (핸드셰이크용)
|
|
98
108
|
*/
|
|
99
109
|
readByte(timeoutMs?: number): Promise<number>;
|
|
100
110
|
/**
|
|
101
|
-
*
|
|
111
|
+
* 특정 문자열까지 읽기 (펌웨어 업그레이드 핸드셰이크용)
|
|
102
112
|
*/
|
|
103
113
|
readUntil(marker: string, timeoutMs?: number): Promise<string>;
|
|
104
114
|
/**
|
|
105
|
-
*
|
|
115
|
+
* RX 버퍼 클리어 (PurgeComm(hFile, 0xA) - PURGE_RXABORT | PURGE_RXCLEAR)
|
|
106
116
|
* (FUN_1400101f0)
|
|
107
117
|
*/
|
|
108
118
|
purgeRX(): Promise<void>;
|
|
109
119
|
/**
|
|
110
|
-
*
|
|
120
|
+
* TX 버퍼 클리어 (PurgeComm(hFile, 0x5) - PURGE_TXABORT | PURGE_TXCLEAR)
|
|
111
121
|
* (FUN_140010230)
|
|
112
122
|
*/
|
|
113
123
|
purgeTX(): Promise<void>;
|
|
114
124
|
/**
|
|
115
|
-
*
|
|
125
|
+
* TX/RX 모두 클리어 (PurgeComm(hFile, 0xF))
|
|
116
126
|
*/
|
|
117
127
|
purgeAll(): Promise<void>;
|
|
118
128
|
private _handleUnexpectedDisconnect;
|