@samlab-corp/sfm-node 0.1.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/LICENSE +21 -0
- package/README.md +479 -0
- package/dist/commands/data.d.ts +29 -0
- package/dist/commands/data.d.ts.map +1 -0
- package/dist/commands/data.js +176 -0
- package/dist/commands/data.js.map +1 -0
- package/dist/commands/fingerprint.d.ts +132 -0
- package/dist/commands/fingerprint.d.ts.map +1 -0
- package/dist/commands/fingerprint.js +580 -0
- package/dist/commands/fingerprint.js.map +1 -0
- package/dist/commands/firmware.d.ts +37 -0
- package/dist/commands/firmware.d.ts.map +1 -0
- package/dist/commands/firmware.js +152 -0
- package/dist/commands/firmware.js.map +1 -0
- package/dist/commands/freescan.d.ts +68 -0
- package/dist/commands/freescan.d.ts.map +1 -0
- package/dist/commands/freescan.js +202 -0
- package/dist/commands/freescan.js.map +1 -0
- package/dist/commands/index.d.ts +88 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +104 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/system.d.ts +82 -0
- package/dist/commands/system.d.ts.map +1 -0
- package/dist/commands/system.js +191 -0
- package/dist/commands/system.js.map +1 -0
- package/dist/constants/crypto.d.ts +11 -0
- package/dist/constants/crypto.d.ts.map +1 -0
- package/dist/constants/crypto.js +10 -0
- package/dist/constants/crypto.js.map +1 -0
- package/dist/constants/index.d.ts +6 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +4 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/packet.d.ts +17 -0
- package/dist/constants/packet.d.ts.map +1 -0
- package/dist/constants/packet.js +17 -0
- package/dist/constants/packet.js.map +1 -0
- package/dist/constants/protocol.d.ts +653 -0
- package/dist/constants/protocol.d.ts.map +1 -0
- package/dist/constants/protocol.js +422 -0
- package/dist/constants/protocol.js.map +1 -0
- package/dist/core/client.d.ts +118 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +320 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/crypto.d.ts +86 -0
- package/dist/core/crypto.d.ts.map +1 -0
- package/dist/core/crypto.js +248 -0
- package/dist/core/crypto.js.map +1 -0
- package/dist/core/errors.d.ts +25 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +66 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/packet.d.ts +126 -0
- package/dist/core/packet.d.ts.map +1 -0
- package/dist/core/packet.js +267 -0
- package/dist/core/packet.js.map +1 -0
- package/dist/core/serial.d.ts +123 -0
- package/dist/core/serial.d.ts.map +1 -0
- package/dist/core/serial.js +421 -0
- package/dist/core/serial.js.map +1 -0
- package/dist/core/tcp.d.ts +58 -0
- package/dist/core/tcp.d.ts.map +1 -0
- package/dist/core/tcp.js +219 -0
- package/dist/core/tcp.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SFM Protocol Manual V3.6.0
|
|
3
|
+
* 프로토콜 레벨 상수 (에러 코드, 플래그, 명령어, 시스템 파라미터)
|
|
4
|
+
*/
|
|
5
|
+
// ─── 에러/응답 코드 (매뉴얼 Section 5.2) ───
|
|
6
|
+
export const SFM_ERROR = {
|
|
7
|
+
SUCCESS: 0x61, // 성공
|
|
8
|
+
SCAN_SUCCESS: 0x62, // 스캔 성공 (중간 응답)
|
|
9
|
+
SCAN_FAIL: 0x63, // 스캔 실패
|
|
10
|
+
NOT_FOUND: 0x69, // 데이터 없음
|
|
11
|
+
NOT_MATCH: 0x6a, // 불일치
|
|
12
|
+
TRY_AGAIN: 0x6b, // 재시도 필요 (이미지 품질 불량 등)
|
|
13
|
+
TIME_OUT: 0x6c, // 시간 초과
|
|
14
|
+
MEM_FULL: 0x6d, // 메모리 가득 참
|
|
15
|
+
EXIST_ID: 0x6e, // 이미 존재하는 ID
|
|
16
|
+
CONTINUE: 0x74, // 데이터 계속 전송 (핑퐁)
|
|
17
|
+
UNSUPPORTED: 0x75, // 지원하지 않는 명령
|
|
18
|
+
};
|
|
19
|
+
// ─── 요청 플래그 (매뉴얼 Section 5.1) ───
|
|
20
|
+
export const SFM_FLAG = {
|
|
21
|
+
NONE: 0x00, // 플래그 없음
|
|
22
|
+
CHECK_ID: 0x70, // ID 중복 확인
|
|
23
|
+
ADD_NEW: 0x71, // 기존 ID에 지문 추가
|
|
24
|
+
AUTO_ID: 0x79, // ID 자동 할당
|
|
25
|
+
CHECK_FINGER: 0x84, // 지문 중복 확인
|
|
26
|
+
};
|
|
27
|
+
// ─── 통신 레벨 에러 (내부 사용) ───
|
|
28
|
+
export const COMM_ERROR = {
|
|
29
|
+
SUCCESS: 0,
|
|
30
|
+
PACKET_FORMAT_ERROR: -3,
|
|
31
|
+
INVALID_PACKET_SIZE: -4,
|
|
32
|
+
WRITE_TIMEOUT: -5,
|
|
33
|
+
READ_TIMEOUT: -6,
|
|
34
|
+
CHECKSUM_MISMATCH: -7,
|
|
35
|
+
PROBE_TIMEOUT: -102,
|
|
36
|
+
MEMORY_ALLOC_FAILED: -200,
|
|
37
|
+
INVALID_FILE_SIZE: -202,
|
|
38
|
+
INVALID_FIRMWARE_HEADER: -203,
|
|
39
|
+
SECURE_PACKET_TIMEOUT: -305,
|
|
40
|
+
SECURE_CODE_MISMATCH: -501,
|
|
41
|
+
};
|
|
42
|
+
// ─── 명령어 코드 (매뉴얼 Section 4) ───
|
|
43
|
+
export const SFM_CMD = {
|
|
44
|
+
// 4.1 시스템 설정 (System Configuration)
|
|
45
|
+
SW: 0x01, // 시스템 파라미터 쓰기
|
|
46
|
+
SF: 0x02, // 시스템 파라미터 저장 (Flash)
|
|
47
|
+
SR: 0x03, // 시스템 파라미터 읽기
|
|
48
|
+
SS: 0x04, // 시스템 상태 확인
|
|
49
|
+
RS: 0xd0, // 모듈 리셋
|
|
50
|
+
SDB: 0xd4, // 데이터베이스 저장 (SFM6000/Slim)
|
|
51
|
+
LDB: 0xd3, // 데이터베이스 로드 (SFM6000/Slim)
|
|
52
|
+
// 4.2 등록 (Enroll)
|
|
53
|
+
ES: 0x05, // 스캔하여 등록
|
|
54
|
+
ESA: 0x70, // 관리자 인증 후 스캔 등록
|
|
55
|
+
EI: 0x06, // 이미지로 등록
|
|
56
|
+
EIX: 0x80, // 이미지로 등록 (확장 프로토콜)
|
|
57
|
+
ET: 0x07, // 템플릿으로 등록
|
|
58
|
+
ETX: 0x87, // 템플릿으로 등록 (확장 프로토콜)
|
|
59
|
+
// 4.3 인증 (Verify - 1:1)
|
|
60
|
+
VS: 0x08, // 스캔하여 검증
|
|
61
|
+
VI: 0x09, // 이미지로 검증
|
|
62
|
+
VIX: 0x82, // 이미지로 검증 (확장 프로토콜)
|
|
63
|
+
VT: 0x10, // 템플릿으로 검증
|
|
64
|
+
VH: 0x22, // 호스트 템플릿으로 스캔 검증
|
|
65
|
+
// 4.4 식별 (Identify - 1:N)
|
|
66
|
+
IS: 0x11, // 스캔하여 식별
|
|
67
|
+
II: 0x12, // 이미지로 식별
|
|
68
|
+
IIX: 0x81, // 이미지로 식별 (확장 프로토콜)
|
|
69
|
+
IT: 0x13, // 템플릿으로 식별
|
|
70
|
+
// 4.5 삭제 (Delete)
|
|
71
|
+
DA: 0x17, // 전체 템플릿 삭제
|
|
72
|
+
DT: 0x16, // 특정 템플릿 삭제
|
|
73
|
+
DS: 0x1e, // 스캔하여 삭제
|
|
74
|
+
// 4.6 템플릿 및 데이터 관리
|
|
75
|
+
LT: 0x18, // 사용자 ID 목록 조회
|
|
76
|
+
LTX: 0x86, // 사용자 ID 목록 조회 (확장)
|
|
77
|
+
RI: 0x20, // 스캔된 이미지 읽기
|
|
78
|
+
RIX: 0x84, // 스캔된 이미지 읽기 (확장)
|
|
79
|
+
SI: 0x15, // 이미지 스캔
|
|
80
|
+
SIX: 0x83, // 이미지 스캔 (확장)
|
|
81
|
+
RT: 0x14, // 템플릿 읽기
|
|
82
|
+
RTX: 0x89, // 템플릿 읽기 (확장)
|
|
83
|
+
ST: 0x21, // 템플릿 스캔 (저장 안 함)
|
|
84
|
+
// 4.7 보안 및 기타
|
|
85
|
+
KW: 0x34, // 암호화 키 쓰기
|
|
86
|
+
AW: 0x65, // 관리자 권한 설정
|
|
87
|
+
AR: 0x66, // 관리자 권한 읽기
|
|
88
|
+
ABL: 0xf3, // 블랙리스트 추가
|
|
89
|
+
DBL: 0xf4, // 블랙리스트 삭제
|
|
90
|
+
PKE: 0x2a, // 공개 키 교환 (SFM6000/Slim)
|
|
91
|
+
};
|
|
92
|
+
// ─── 시스템 파라미터 (ID + Alias 매핑, 매뉴얼 Section 3) ───
|
|
93
|
+
export const SFM_PARAM = {
|
|
94
|
+
/** 입력 대기 시간 */
|
|
95
|
+
TIMEOUT: {
|
|
96
|
+
id: 0x62,
|
|
97
|
+
options: [
|
|
98
|
+
{ value: 0x30, alias: "INFINITE" },
|
|
99
|
+
{ value: 0x31, alias: "1S" },
|
|
100
|
+
{ value: 0x32, alias: "2S" },
|
|
101
|
+
{ value: 0x33, alias: "3S" },
|
|
102
|
+
{ value: 0x34, alias: "4S" },
|
|
103
|
+
{ value: 0x35, alias: "5S" },
|
|
104
|
+
{ value: 0x3a, alias: "10S" },
|
|
105
|
+
{ value: 0x3f, alias: "15S" },
|
|
106
|
+
{ value: 0x44, alias: "20S" },
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
/** 템플릿 크기 */
|
|
110
|
+
TEMPLATE_SIZE: { id: 0x64 },
|
|
111
|
+
/** 등록 모드 */
|
|
112
|
+
ENROLL_MODE: {
|
|
113
|
+
id: 0x65,
|
|
114
|
+
options: [
|
|
115
|
+
{ value: 0x30, alias: "SCAN1" },
|
|
116
|
+
{ value: 0x31, alias: "SCAN2_MERGE" },
|
|
117
|
+
{ value: 0x41, alias: "SCAN2_DUAL" },
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
/** 보안 등급 (FAR) */
|
|
121
|
+
SECURITY_LEVEL: {
|
|
122
|
+
id: 0x66,
|
|
123
|
+
options: [
|
|
124
|
+
{ value: 0x32, alias: "LOW" },
|
|
125
|
+
{ value: 0x33, alias: "NORMAL" },
|
|
126
|
+
{ value: 0x34, alias: "HIGH" },
|
|
127
|
+
{ value: 0x35, alias: "HIGHEST" },
|
|
128
|
+
{ value: 0x50, alias: "AUTO_NORMAL" },
|
|
129
|
+
{ value: 0x51, alias: "AUTO_SECURE" },
|
|
130
|
+
{ value: 0x52, alias: "AUTO_MORE_SECURE" },
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
/** 암호화 모드 */
|
|
134
|
+
ENCRYPTION_MODE: {
|
|
135
|
+
id: 0x67,
|
|
136
|
+
options: [
|
|
137
|
+
{ value: 0x30, alias: "OFF" },
|
|
138
|
+
{ value: 0x31, alias: "ON" },
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
/** 센서 타입 */
|
|
142
|
+
SENSOR_TYPE: {
|
|
143
|
+
id: 0x68,
|
|
144
|
+
options: [
|
|
145
|
+
{ value: 0x31, alias: "FC" },
|
|
146
|
+
{ value: 0x33, alias: "OPTICAL" },
|
|
147
|
+
{ value: 0x34, alias: "TC" },
|
|
148
|
+
{ value: 0x38, alias: "OC" },
|
|
149
|
+
{ value: 0x39, alias: "OL" },
|
|
150
|
+
{ value: 0x3b, alias: "FOH02" },
|
|
151
|
+
{ value: 0x3c, alias: "TS4" },
|
|
152
|
+
],
|
|
153
|
+
},
|
|
154
|
+
/** 이미지 전송 포맷 */
|
|
155
|
+
IMAGE_FORMAT: {
|
|
156
|
+
id: 0x6c,
|
|
157
|
+
options: [
|
|
158
|
+
{ value: 0x30, alias: "RAW_GRAY" },
|
|
159
|
+
{ value: 0x31, alias: "BINARY" },
|
|
160
|
+
{ value: 0x32, alias: "GRAY_4BIT" },
|
|
161
|
+
{ value: 0x33, alias: "WSQ" },
|
|
162
|
+
],
|
|
163
|
+
},
|
|
164
|
+
/** 모듈 ID */
|
|
165
|
+
MODULE_ID: { id: 0x6d },
|
|
166
|
+
/** 펌웨어 버전 */
|
|
167
|
+
FIRMWARE_VERSION: { id: 0x6e },
|
|
168
|
+
/** 시리얼 넘버 */
|
|
169
|
+
SERIAL_NUMBER: { id: 0x6f },
|
|
170
|
+
/** 통신 속도 */
|
|
171
|
+
BAUDRATE: {
|
|
172
|
+
id: 0x71,
|
|
173
|
+
options: [
|
|
174
|
+
{ value: 0x31, alias: "9600" },
|
|
175
|
+
{ value: 0x32, alias: "19200" },
|
|
176
|
+
{ value: 0x33, alias: "38400" },
|
|
177
|
+
{ value: 0x34, alias: "57600" },
|
|
178
|
+
{ value: 0x35, alias: "115200" },
|
|
179
|
+
{ value: 0x36, alias: "230400" },
|
|
180
|
+
{ value: 0x37, alias: "460800" },
|
|
181
|
+
{ value: 0x38, alias: "921600" },
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
/** 보조 통신 속도 */
|
|
185
|
+
BAUDRATE2: { id: 0x72 },
|
|
186
|
+
/** 등록된 지문 수 */
|
|
187
|
+
ENROLLED_FINGER: { id: 0x73 },
|
|
188
|
+
/** 등록 가능한 지문 수 */
|
|
189
|
+
AVAILABLE_FINGER: { id: 0x74 },
|
|
190
|
+
/** SCAN_SUCCESS 응답 전송 */
|
|
191
|
+
SEND_SCAN_SUCCESS: {
|
|
192
|
+
id: 0x75,
|
|
193
|
+
options: [
|
|
194
|
+
{ value: 0x30, alias: "OFF" },
|
|
195
|
+
{ value: 0x31, alias: "ON" },
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
/** 패킷 교환 형식 */
|
|
199
|
+
ASCII_PACKET: {
|
|
200
|
+
id: 0x76,
|
|
201
|
+
options: [
|
|
202
|
+
{ value: 0x30, alias: "HEX" },
|
|
203
|
+
{ value: 0x31, alias: "ASCII" },
|
|
204
|
+
],
|
|
205
|
+
},
|
|
206
|
+
/** 센서 이미지 회전 */
|
|
207
|
+
ROTATE_IMAGE: {
|
|
208
|
+
id: 0x77,
|
|
209
|
+
options: [
|
|
210
|
+
{ value: 0x30, alias: "NORMAL" },
|
|
211
|
+
{ value: 0x31, alias: "FLIP" },
|
|
212
|
+
],
|
|
213
|
+
},
|
|
214
|
+
/** 매칭 허용 회전 각도 */
|
|
215
|
+
ROTATION: {
|
|
216
|
+
id: 0x78,
|
|
217
|
+
options: [
|
|
218
|
+
{ value: 0x31, alias: "DEG15" },
|
|
219
|
+
{ value: 0x32, alias: "DEG30" },
|
|
220
|
+
{ value: 0x33, alias: "DEG45" },
|
|
221
|
+
{ value: 0x34, alias: "DEG60" },
|
|
222
|
+
{ value: 0x35, alias: "DEG75" },
|
|
223
|
+
{ value: 0x36, alias: "DEG90" },
|
|
224
|
+
],
|
|
225
|
+
},
|
|
226
|
+
/** 센서 감도 */
|
|
227
|
+
SENSITIVITY: {
|
|
228
|
+
id: 0x80,
|
|
229
|
+
options: [
|
|
230
|
+
{ value: 0x30, alias: "LV0" },
|
|
231
|
+
{ value: 0x31, alias: "LV1" },
|
|
232
|
+
{ value: 0x32, alias: "LV2" },
|
|
233
|
+
{ value: 0x33, alias: "LV3" },
|
|
234
|
+
{ value: 0x34, alias: "LV4" },
|
|
235
|
+
{ value: 0x35, alias: "LV5" },
|
|
236
|
+
{ value: 0x36, alias: "LV6" },
|
|
237
|
+
{ value: 0x37, alias: "LV7" },
|
|
238
|
+
],
|
|
239
|
+
},
|
|
240
|
+
/** 이미지 품질 기준 */
|
|
241
|
+
IMAGE_QUALITY: {
|
|
242
|
+
id: 0x81,
|
|
243
|
+
options: [
|
|
244
|
+
{ value: 0x30, alias: "WEAK" },
|
|
245
|
+
{ value: 0x31, alias: "MODERATE" },
|
|
246
|
+
{ value: 0x32, alias: "STRONG" },
|
|
247
|
+
{ value: 0x33, alias: "STRONGEST" },
|
|
248
|
+
],
|
|
249
|
+
},
|
|
250
|
+
/** GPIO/FreeScan 자동 응답 */
|
|
251
|
+
AUTO_RESPONSE: {
|
|
252
|
+
id: 0x82,
|
|
253
|
+
options: [
|
|
254
|
+
{ value: 0x30, alias: "OFF" },
|
|
255
|
+
{ value: 0x31, alias: "HOST" },
|
|
256
|
+
{ value: 0x32, alias: "AUX" },
|
|
257
|
+
{ value: 0x33, alias: "BOTH" },
|
|
258
|
+
],
|
|
259
|
+
},
|
|
260
|
+
/** 네트워크 통신 모드 */
|
|
261
|
+
NETWORK_MODE: {
|
|
262
|
+
id: 0x83,
|
|
263
|
+
options: [
|
|
264
|
+
{ value: 0x30, alias: "SINGLE" },
|
|
265
|
+
{ value: 0x31, alias: "NETWORK" },
|
|
266
|
+
],
|
|
267
|
+
},
|
|
268
|
+
/** 유휴 상태 자동 스캔 */
|
|
269
|
+
FREE_SCAN: {
|
|
270
|
+
id: 0x84,
|
|
271
|
+
options: [
|
|
272
|
+
{ value: 0x30, alias: "OFF" },
|
|
273
|
+
{ value: 0x32, alias: "ON" },
|
|
274
|
+
],
|
|
275
|
+
},
|
|
276
|
+
/** 임시 등록 모드 */
|
|
277
|
+
PROVISIONAL_ENROLL: {
|
|
278
|
+
id: 0x85,
|
|
279
|
+
options: [
|
|
280
|
+
{ value: 0x30, alias: "PERMANENT" },
|
|
281
|
+
{ value: 0x31, alias: "TEMPORARY" },
|
|
282
|
+
],
|
|
283
|
+
},
|
|
284
|
+
/** DB 비어있을 때 인증 결과 */
|
|
285
|
+
PASS_WHEN_EMPTY: {
|
|
286
|
+
id: 0x86,
|
|
287
|
+
options: [
|
|
288
|
+
{ value: 0x30, alias: "FAIL" },
|
|
289
|
+
{ value: 0x31, alias: "PASS" },
|
|
290
|
+
],
|
|
291
|
+
},
|
|
292
|
+
/** 응답 딜레이 */
|
|
293
|
+
RESPONSE_DELAY: {
|
|
294
|
+
id: 0x87,
|
|
295
|
+
options: [
|
|
296
|
+
{ value: 0x30, alias: "NONE" },
|
|
297
|
+
{ value: 0x31, alias: "20MS" },
|
|
298
|
+
{ value: 0x32, alias: "40MS" },
|
|
299
|
+
{ value: 0x33, alias: "60MS" },
|
|
300
|
+
{ value: 0x34, alias: "80MS" },
|
|
301
|
+
{ value: 0x35, alias: "100MS" },
|
|
302
|
+
{ value: 0x3a, alias: "200MS" },
|
|
303
|
+
],
|
|
304
|
+
},
|
|
305
|
+
/** 매칭 타임아웃 */
|
|
306
|
+
MATCHING_TIMEOUT: {
|
|
307
|
+
id: 0x88,
|
|
308
|
+
options: [
|
|
309
|
+
{ value: 0x30, alias: "INFINITE" },
|
|
310
|
+
{ value: 0x31, alias: "1S" },
|
|
311
|
+
{ value: 0x33, alias: "3S" },
|
|
312
|
+
{ value: 0x35, alias: "5S" },
|
|
313
|
+
{ value: 0x3a, alias: "10S" },
|
|
314
|
+
{ value: 0x44, alias: "20S" },
|
|
315
|
+
],
|
|
316
|
+
},
|
|
317
|
+
/** 빌드 넘버 */
|
|
318
|
+
BUILD_NUMBER: { id: 0x89 },
|
|
319
|
+
/** 등록 시 지문 이동 거리 */
|
|
320
|
+
ENROLL_DISPLACEMENT: {
|
|
321
|
+
id: 0x8a,
|
|
322
|
+
options: [
|
|
323
|
+
{ value: 0x30, alias: "NONE" },
|
|
324
|
+
{ value: 0x31, alias: "1MM" },
|
|
325
|
+
{ value: 0x33, alias: "3MM" },
|
|
326
|
+
{ value: 0x35, alias: "5MM" },
|
|
327
|
+
{ value: 0x3a, alias: "10MM" },
|
|
328
|
+
],
|
|
329
|
+
},
|
|
330
|
+
/** 조명 환경 */
|
|
331
|
+
LIGHTING_CONDITION: {
|
|
332
|
+
id: 0x90,
|
|
333
|
+
options: [
|
|
334
|
+
{ value: 0x30, alias: "OUTDOOR" },
|
|
335
|
+
{ value: 0x31, alias: "INDOOR" },
|
|
336
|
+
],
|
|
337
|
+
},
|
|
338
|
+
/** Free Scan 연속 인식 딜레이 */
|
|
339
|
+
FREE_SCAN_DELAY: {
|
|
340
|
+
id: 0x91,
|
|
341
|
+
options: [
|
|
342
|
+
{ value: 0x30, alias: "NONE" },
|
|
343
|
+
{ value: 0x31, alias: "1S" },
|
|
344
|
+
{ value: 0x32, alias: "2S" },
|
|
345
|
+
{ value: 0x33, alias: "3S" },
|
|
346
|
+
{ value: 0x35, alias: "5S" },
|
|
347
|
+
{ value: 0x3a, alias: "10S" },
|
|
348
|
+
],
|
|
349
|
+
},
|
|
350
|
+
/** 1:N 매칭 속도 향상 */
|
|
351
|
+
FAST_MODE: {
|
|
352
|
+
id: 0x93,
|
|
353
|
+
options: [
|
|
354
|
+
{ value: 0x30, alias: "OFF" },
|
|
355
|
+
{ value: 0x31, alias: "LV1" },
|
|
356
|
+
{ value: 0x32, alias: "LV2" },
|
|
357
|
+
{ value: 0x33, alias: "LV3" },
|
|
358
|
+
{ value: 0x34, alias: "LV4" },
|
|
359
|
+
{ value: 0x35, alias: "FASTEST" },
|
|
360
|
+
{ value: 0x36, alias: "AUTO" },
|
|
361
|
+
],
|
|
362
|
+
},
|
|
363
|
+
/** 워치독 타이머 */
|
|
364
|
+
WATCHDOG: {
|
|
365
|
+
id: 0x94,
|
|
366
|
+
options: [
|
|
367
|
+
{ value: 0x30, alias: "OFF" },
|
|
368
|
+
{ value: 0x31, alias: "ON" },
|
|
369
|
+
],
|
|
370
|
+
},
|
|
371
|
+
/** 템플릿 타입 */
|
|
372
|
+
TEMPLATE_TYPE: {
|
|
373
|
+
id: 0x96,
|
|
374
|
+
options: [
|
|
375
|
+
{ value: 0x30, alias: "SUPREMA" },
|
|
376
|
+
{ value: 0x31, alias: "ISO" },
|
|
377
|
+
{ value: 0x32, alias: "ANSI" },
|
|
378
|
+
],
|
|
379
|
+
},
|
|
380
|
+
/** 개인정보 보호 모드 */
|
|
381
|
+
ENHANCED_PRIVACY: {
|
|
382
|
+
id: 0x97,
|
|
383
|
+
options: [
|
|
384
|
+
{ value: 0x30, alias: "OFF" },
|
|
385
|
+
{ value: 0x31, alias: "ON" },
|
|
386
|
+
],
|
|
387
|
+
},
|
|
388
|
+
/** 위조 지문 감지 */
|
|
389
|
+
FAKE_FINGER_DETECTION: {
|
|
390
|
+
id: 0x98,
|
|
391
|
+
options: [
|
|
392
|
+
{ value: 0x30, alias: "OFF" },
|
|
393
|
+
{ value: 0x31, alias: "WEAK" },
|
|
394
|
+
{ value: 0x32, alias: "NORMAL" },
|
|
395
|
+
{ value: 0x33, alias: "STRONG" },
|
|
396
|
+
],
|
|
397
|
+
},
|
|
398
|
+
/** 잔류 지문 감지 */
|
|
399
|
+
CHECK_LATENT_FINGERPRINT: {
|
|
400
|
+
id: 0x9a,
|
|
401
|
+
options: [
|
|
402
|
+
{ value: 0x30, alias: "ENROLL_ONLY" },
|
|
403
|
+
{ value: 0x31, alias: "NEVER" },
|
|
404
|
+
{ value: 0x32, alias: "ALWAYS" },
|
|
405
|
+
],
|
|
406
|
+
},
|
|
407
|
+
/** 전압 경고 임계값 */
|
|
408
|
+
VOLTAGE_WARNING: { id: 0x9b },
|
|
409
|
+
/** 자동 전원 차단 타임아웃 */
|
|
410
|
+
POWER_OFF: { id: 0x9c },
|
|
411
|
+
};
|
|
412
|
+
/** alias 문자열 → hex value 변환 */
|
|
413
|
+
export function resolveParamAlias(key, alias) {
|
|
414
|
+
const def = SFM_PARAM[key];
|
|
415
|
+
const opt = def.options.find((o) => o.alias === alias);
|
|
416
|
+
if (!opt)
|
|
417
|
+
throw new Error(`Unknown alias "${alias}" for param "${key}"`);
|
|
418
|
+
return opt.value;
|
|
419
|
+
}
|
|
420
|
+
// ─── 기타 ───
|
|
421
|
+
export const FIRMWARE_MAGIC = 0x1f2f3f4f;
|
|
422
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/constants/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SFM Protocol Manual V3.6.0 Serial Communication Client
|
|
3
|
+
*
|
|
4
|
+
* Provides packet protocol, AES256 encryption, multi-packet transfer,
|
|
5
|
+
* and firmware upgrade functionality.
|
|
6
|
+
*/
|
|
7
|
+
import { SfmSerial } from "./serial";
|
|
8
|
+
import { SfmCrypto } from "./crypto";
|
|
9
|
+
import type { NormalPacketResult, NetworkPacketResult } from "./packet";
|
|
10
|
+
import type { SecureRecvPacketResult } from "./crypto";
|
|
11
|
+
import type { EncryptionMode } from "../constants";
|
|
12
|
+
type PacketResult = NormalPacketResult | NetworkPacketResult | SecureRecvPacketResult;
|
|
13
|
+
export interface SfmClientOptions {
|
|
14
|
+
portPath?: string;
|
|
15
|
+
baudRate?: number;
|
|
16
|
+
encryptionKey?: Buffer | string;
|
|
17
|
+
iv?: Buffer | string;
|
|
18
|
+
secureCode?: Buffer | string;
|
|
19
|
+
encryptionMode?: EncryptionMode;
|
|
20
|
+
secureMode?: boolean;
|
|
21
|
+
debug?: boolean;
|
|
22
|
+
networkMode?: boolean;
|
|
23
|
+
terminalId?: number;
|
|
24
|
+
hexAsciiMode?: boolean;
|
|
25
|
+
commandTimeout?: number;
|
|
26
|
+
readTimeout?: number;
|
|
27
|
+
autoReconnect?: import("./serial").AutoReconnectOptions;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* SFM Unified Client
|
|
31
|
+
*/
|
|
32
|
+
export declare class SfmClient {
|
|
33
|
+
serial: SfmSerial;
|
|
34
|
+
crypto: SfmCrypto;
|
|
35
|
+
portPath: string | undefined;
|
|
36
|
+
secureMode: boolean;
|
|
37
|
+
debug: boolean;
|
|
38
|
+
networkMode: boolean;
|
|
39
|
+
terminalId: number;
|
|
40
|
+
hexAsciiMode: boolean;
|
|
41
|
+
commandTimeout: number;
|
|
42
|
+
readTimeout: number;
|
|
43
|
+
private _onDisconnect;
|
|
44
|
+
constructor(options?: SfmClientOptions);
|
|
45
|
+
/** Set disconnect callback */
|
|
46
|
+
setOnDisconnect(callback: ((error?: Error) => void) | null): void;
|
|
47
|
+
/** Set auto-reconnect options (delegates to serial layer) */
|
|
48
|
+
setAutoReconnect(options: import("./serial").AutoReconnectOptions | null): void;
|
|
49
|
+
/** Set auto-reconnect callbacks only */
|
|
50
|
+
setAutoReconnectCallbacks(callbacks: import("./serial").AutoReconnectCallbacks): void;
|
|
51
|
+
/** Whether reconnection is in progress */
|
|
52
|
+
get isReconnecting(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Connect to device
|
|
55
|
+
*/
|
|
56
|
+
connect(portPath?: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Disconnect from device
|
|
59
|
+
*/
|
|
60
|
+
disconnect(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Send command (SFM Packet Protocol)
|
|
63
|
+
*/
|
|
64
|
+
sendCommand(command: number, param?: number, size?: number, flag?: number): Promise<PacketResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Send network command (15-byte packet, RS422/485)
|
|
67
|
+
*/
|
|
68
|
+
sendNetworkCommand(command: number, param?: number, size?: number, flag?: number): Promise<NetworkPacketResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Receive response (used in multi-packet protocol)
|
|
71
|
+
*/
|
|
72
|
+
receiveResponse(timeoutMs?: number): Promise<PacketResult>;
|
|
73
|
+
/**
|
|
74
|
+
* Send secure command (AES256 encrypted, 35-byte packet)
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
private _sendSecureCommand;
|
|
78
|
+
/**
|
|
79
|
+
* Switch secure mode
|
|
80
|
+
*/
|
|
81
|
+
setSecureMode(enabled: boolean, options?: {
|
|
82
|
+
key?: Buffer | string;
|
|
83
|
+
iv?: Buffer | string;
|
|
84
|
+
secureCode?: Buffer | string;
|
|
85
|
+
mode?: EncryptionMode;
|
|
86
|
+
}): void;
|
|
87
|
+
/**
|
|
88
|
+
* Switch network protocol mode (RS422/485)
|
|
89
|
+
*/
|
|
90
|
+
setNetworkMode(enabled: boolean, terminalId?: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* Write packet (supports Hex-ASCII mode)
|
|
93
|
+
* @internal
|
|
94
|
+
*/
|
|
95
|
+
_writePacket(data: Buffer): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Read packet (supports Hex-ASCII mode)
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
_readPacket(size: number, timeoutMs?: number): Promise<Buffer>;
|
|
101
|
+
/**
|
|
102
|
+
* Read packet after scanning for start byte
|
|
103
|
+
* @internal
|
|
104
|
+
*/
|
|
105
|
+
_readWithStartByteScan(packetSize: number, packetType: "normal" | "network" | "secure", timeoutMs?: number): Promise<Buffer>;
|
|
106
|
+
/**
|
|
107
|
+
* Calculate read timeout (based on data size)
|
|
108
|
+
* @internal
|
|
109
|
+
*/
|
|
110
|
+
_getReadTimeout(dataSize: number): number;
|
|
111
|
+
/**
|
|
112
|
+
* Calculate write timeout (based on data size)
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
_getWriteTimeout(dataSize: number): number;
|
|
116
|
+
}
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|