@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 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/core/crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SFM Protocol Manual V3.6.0 Error Helper Functions
|
|
3
|
+
*/
|
|
4
|
+
export { SFM_ERROR, SFM_FLAG, COMM_ERROR, FIRMWARE_MAGIC } from "../constants";
|
|
5
|
+
/**
|
|
6
|
+
* Convert SFM error code to message
|
|
7
|
+
*/
|
|
8
|
+
export declare function getSfmErrorMessage(code: number): string;
|
|
9
|
+
/**
|
|
10
|
+
* Convert communication error code to message
|
|
11
|
+
*/
|
|
12
|
+
export declare function getCommErrorMessage(code: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Check if SFM response is success
|
|
15
|
+
*/
|
|
16
|
+
export declare function isSfmSuccess(flag: number): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Check if SFM response is retryable error
|
|
19
|
+
*/
|
|
20
|
+
export declare function isSfmRetryable(flag: number): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Check if it's a communication-level error (negative = error)
|
|
23
|
+
*/
|
|
24
|
+
export declare function isCommError(code: number): boolean;
|
|
25
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+B/E;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SFM Protocol Manual V3.6.0 Error Helper Functions
|
|
3
|
+
*/
|
|
4
|
+
import { SFM_ERROR, COMM_ERROR } from "../constants";
|
|
5
|
+
// Backward-compatible re-export
|
|
6
|
+
export { SFM_ERROR, SFM_FLAG, COMM_ERROR, FIRMWARE_MAGIC } from "../constants";
|
|
7
|
+
// SFM error code → message mapping
|
|
8
|
+
const SFM_ERROR_MESSAGES = {
|
|
9
|
+
[SFM_ERROR.SUCCESS]: "Success",
|
|
10
|
+
[SFM_ERROR.SCAN_SUCCESS]: "Scan success",
|
|
11
|
+
[SFM_ERROR.SCAN_FAIL]: "Scan failed",
|
|
12
|
+
[SFM_ERROR.NOT_FOUND]: "Not found",
|
|
13
|
+
[SFM_ERROR.NOT_MATCH]: "Not matched",
|
|
14
|
+
[SFM_ERROR.TRY_AGAIN]: "Try again",
|
|
15
|
+
[SFM_ERROR.TIME_OUT]: "Timeout",
|
|
16
|
+
[SFM_ERROR.MEM_FULL]: "Memory full",
|
|
17
|
+
[SFM_ERROR.EXIST_ID]: "ID already exists",
|
|
18
|
+
[SFM_ERROR.UNSUPPORTED]: "Unsupported command",
|
|
19
|
+
};
|
|
20
|
+
const COMM_ERROR_MESSAGES = {
|
|
21
|
+
[COMM_ERROR.SUCCESS]: "Success",
|
|
22
|
+
[COMM_ERROR.PACKET_FORMAT_ERROR]: "Packet format error",
|
|
23
|
+
[COMM_ERROR.INVALID_PACKET_SIZE]: "Invalid packet size",
|
|
24
|
+
[COMM_ERROR.WRITE_TIMEOUT]: "Write timeout",
|
|
25
|
+
[COMM_ERROR.READ_TIMEOUT]: "Read timeout",
|
|
26
|
+
[COMM_ERROR.CHECKSUM_MISMATCH]: "Checksum mismatch",
|
|
27
|
+
[COMM_ERROR.PROBE_TIMEOUT]: "Probe timeout",
|
|
28
|
+
[COMM_ERROR.MEMORY_ALLOC_FAILED]: "Memory allocation failed",
|
|
29
|
+
[COMM_ERROR.INVALID_FILE_SIZE]: "Invalid file size",
|
|
30
|
+
[COMM_ERROR.INVALID_FIRMWARE_HEADER]: "Invalid firmware header",
|
|
31
|
+
[COMM_ERROR.SECURE_PACKET_TIMEOUT]: "Secure packet timeout",
|
|
32
|
+
[COMM_ERROR.SECURE_CODE_MISMATCH]: "Secure code mismatch",
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Convert SFM error code to message
|
|
36
|
+
*/
|
|
37
|
+
export function getSfmErrorMessage(code) {
|
|
38
|
+
return (SFM_ERROR_MESSAGES[code] || `Unknown SFM error (0x${code.toString(16)})`);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Convert communication error code to message
|
|
42
|
+
*/
|
|
43
|
+
export function getCommErrorMessage(code) {
|
|
44
|
+
return COMM_ERROR_MESSAGES[code] || `Unknown comm error (${code})`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if SFM response is success
|
|
48
|
+
*/
|
|
49
|
+
export function isSfmSuccess(flag) {
|
|
50
|
+
return flag === SFM_ERROR.SUCCESS;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if SFM response is retryable error
|
|
54
|
+
*/
|
|
55
|
+
export function isSfmRetryable(flag) {
|
|
56
|
+
return (flag === SFM_ERROR.TRY_AGAIN ||
|
|
57
|
+
flag === SFM_ERROR.SCAN_FAIL ||
|
|
58
|
+
flag === SFM_ERROR.TIME_OUT);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if it's a communication-level error (negative = error)
|
|
62
|
+
*/
|
|
63
|
+
export function isCommError(code) {
|
|
64
|
+
return code < 0;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErD,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/E,mCAAmC;AACnC,MAAM,kBAAkB,GAA2B;IACjD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS;IAC9B,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,cAAc;IACxC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,aAAa;IACpC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,WAAW;IAClC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,aAAa;IACpC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,WAAW;IAClC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS;IAC/B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa;IACnC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,mBAAmB;IACzC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,qBAAqB;CAC/C,CAAC;AAEF,MAAM,mBAAmB,GAA2B;IAClD,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS;IAC/B,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,qBAAqB;IACvD,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,qBAAqB;IACvD,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,eAAe;IAC3C,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,cAAc;IACzC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,mBAAmB;IACnD,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,eAAe;IAC3C,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,0BAA0B;IAC5D,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,mBAAmB;IACnD,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,yBAAyB;IAC/D,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,uBAAuB;IAC3D,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,sBAAsB;CAC1D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CACL,kBAAkB,CAAC,IAAI,CAAC,IAAI,wBAAwB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CACzE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,uBAAuB,IAAI,GAAG,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,CACL,IAAI,KAAK,SAAS,CAAC,SAAS;QAC5B,IAAI,KAAK,SAAS,CAAC,SAAS;QAC5B,IAAI,KAAK,SAAS,CAAC,QAAQ,CAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,GAAG,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Module - Hardware Communication Foundation
|
|
3
|
+
*/
|
|
4
|
+
export { SfmClient } from './client';
|
|
5
|
+
export type { SfmClientOptions } from './client';
|
|
6
|
+
export { SfmSerial } from './serial';
|
|
7
|
+
export type { SerialPortInfo, SfmSerialOptions } from './serial';
|
|
8
|
+
export { SfmTcp } from './tcp';
|
|
9
|
+
export type { SfmTcpOptions } from './tcp';
|
|
10
|
+
export { SfmCrypto } from './crypto';
|
|
11
|
+
export type { SfmCryptoOptions, SecureRecvPacketResult } from './crypto';
|
|
12
|
+
export { getSfmErrorMessage, getCommErrorMessage, isSfmSuccess, isSfmRetryable, isCommError } from './errors';
|
|
13
|
+
export { calcChecksum, calcChecksum16, buildNormalPacket, buildNetworkPacket, buildDataPacket, parseNormalPacket, parseNetworkPacket, parseDataPacket, packetToHex, isValidStartByte, scanForStartByte, encodeHexAscii, decodeHexAscii, } from './packet';
|
|
14
|
+
export type { PacketType, NormalPacketResult, NetworkPacketResult, DataPacketResult } from './packet';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9G,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Module - Hardware Communication Foundation
|
|
3
|
+
*/
|
|
4
|
+
export { SfmClient } from './client';
|
|
5
|
+
export { SfmSerial } from './serial';
|
|
6
|
+
export { SfmTcp } from './tcp';
|
|
7
|
+
export { SfmCrypto } from './crypto';
|
|
8
|
+
export { getSfmErrorMessage, getCommErrorMessage, isSfmSuccess, isSfmRetryable, isCommError } from './errors';
|
|
9
|
+
export { calcChecksum, calcChecksum16, buildNormalPacket, buildNetworkPacket, buildDataPacket, parseNormalPacket, parseNetworkPacket, parseDataPacket, packetToHex, isValidStartByte, scanForStartByte, encodeHexAscii, decodeHexAscii, } from './packet';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9G,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Suprema SFM Series Packet Protocol V3.6.0
|
|
3
|
+
*
|
|
4
|
+
* [Normal Packet Structure - 13 bytes]
|
|
5
|
+
* Byte 0: Start Code (0x40)
|
|
6
|
+
* Byte 1: Command
|
|
7
|
+
* Byte 2-5: Param (4 bytes, little-endian) - User ID or system parameter value
|
|
8
|
+
* Byte 6-9: Size (4 bytes, little-endian) - Size of following binary data
|
|
9
|
+
* Byte 10: Flag/Error - Flag on request, Error Code on response
|
|
10
|
+
* Byte 11: Checksum - Lower byte of sum of bytes 0~10
|
|
11
|
+
* Byte 12: End Code (0x0A)
|
|
12
|
+
*
|
|
13
|
+
* [Network Packet Structure - 15 bytes (RS422/485)]
|
|
14
|
+
* Byte 0: Start Code (0x41)
|
|
15
|
+
* Byte 1-2: Terminal ID (2 bytes, little-endian)
|
|
16
|
+
* Byte 3: Command
|
|
17
|
+
* Byte 4-7: Param (4 bytes, little-endian)
|
|
18
|
+
* Byte 8-11: Size (4 bytes, little-endian)
|
|
19
|
+
* Byte 12: Flag/Error
|
|
20
|
+
* Byte 13: Checksum - Lower byte of sum of bytes 0~12
|
|
21
|
+
* Byte 14: End Code (0x0A)
|
|
22
|
+
*
|
|
23
|
+
* [Secure Packet Structure - 35 bytes]
|
|
24
|
+
* Byte 0: 0x50 (Send) / 0x51 (Receive)
|
|
25
|
+
* Byte 1-32: AES256 encrypted data (32 bytes)
|
|
26
|
+
* Byte 33: Checksum
|
|
27
|
+
* Byte 34: 0x0A (End)
|
|
28
|
+
*
|
|
29
|
+
* [Data Transfer Packet - Variable length]
|
|
30
|
+
* Byte 0-3: Total length (little-endian uint32)
|
|
31
|
+
* Byte 4+: Payload data
|
|
32
|
+
* Last 2: 16-bit checksum (little-endian)
|
|
33
|
+
*/
|
|
34
|
+
export { START_CODE, END_CODE, PACKET_SIZE } from '../constants';
|
|
35
|
+
export type PacketType = 'normal' | 'network' | 'secure';
|
|
36
|
+
export interface NormalPacketResult {
|
|
37
|
+
valid: boolean;
|
|
38
|
+
startCode?: number;
|
|
39
|
+
command?: number;
|
|
40
|
+
param?: number;
|
|
41
|
+
size?: number;
|
|
42
|
+
flag?: number;
|
|
43
|
+
checksum?: number;
|
|
44
|
+
expectedChecksum?: number;
|
|
45
|
+
endCode?: number;
|
|
46
|
+
_raw?: Buffer;
|
|
47
|
+
error: string | null;
|
|
48
|
+
}
|
|
49
|
+
export interface NetworkPacketResult {
|
|
50
|
+
valid: boolean;
|
|
51
|
+
startCode?: number;
|
|
52
|
+
terminalId?: number;
|
|
53
|
+
command?: number;
|
|
54
|
+
param?: number;
|
|
55
|
+
size?: number;
|
|
56
|
+
flag?: number;
|
|
57
|
+
checksum?: number;
|
|
58
|
+
expectedChecksum?: number;
|
|
59
|
+
endCode?: number;
|
|
60
|
+
error: string | null;
|
|
61
|
+
}
|
|
62
|
+
export interface DataPacketResult {
|
|
63
|
+
valid: boolean;
|
|
64
|
+
totalLength?: number;
|
|
65
|
+
payload?: Buffer;
|
|
66
|
+
checksum?: number;
|
|
67
|
+
expectedChecksum?: number;
|
|
68
|
+
error: string | null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Calculate checksum
|
|
72
|
+
* Sum of byte array & 0xFF
|
|
73
|
+
*/
|
|
74
|
+
export declare function calcChecksum(data: Buffer | Uint8Array, length?: number): number;
|
|
75
|
+
/**
|
|
76
|
+
* Calculate 16-bit checksum (for data transfer packets)
|
|
77
|
+
*/
|
|
78
|
+
export declare function calcChecksum16(data: Buffer | Uint8Array): number;
|
|
79
|
+
/**
|
|
80
|
+
* Build normal packet (13 bytes)
|
|
81
|
+
* [Start(0x40)] [Command] [Param LE 4B] [Size LE 4B] [Flag] [Checksum] [End(0x0A)]
|
|
82
|
+
*/
|
|
83
|
+
export declare function buildNormalPacket(command: number, param?: number, size?: number, flag?: number): Buffer;
|
|
84
|
+
/**
|
|
85
|
+
* Build network packet (15 bytes, RS422/485)
|
|
86
|
+
* [Start(0x41)] [TermID LE 2B] [Command] [Param LE 4B] [Size LE 4B] [Flag] [Checksum] [End(0x0A)]
|
|
87
|
+
*/
|
|
88
|
+
export declare function buildNetworkPacket(command: number, terminalId?: number, param?: number, size?: number, flag?: number): Buffer;
|
|
89
|
+
/**
|
|
90
|
+
* Build data transfer packet (variable length)
|
|
91
|
+
* [4-byte length LE] [N-byte data] [2-byte checksum LE]
|
|
92
|
+
*/
|
|
93
|
+
export declare function buildDataPacket(data: Buffer | Uint8Array): Buffer;
|
|
94
|
+
/**
|
|
95
|
+
* Parse normal packet (13 bytes)
|
|
96
|
+
*/
|
|
97
|
+
export declare function parseNormalPacket(data: Buffer | Uint8Array): NormalPacketResult;
|
|
98
|
+
/**
|
|
99
|
+
* Parse network packet (15 bytes)
|
|
100
|
+
*/
|
|
101
|
+
export declare function parseNetworkPacket(data: Buffer | Uint8Array): NetworkPacketResult;
|
|
102
|
+
/**
|
|
103
|
+
* Parse data transfer packet
|
|
104
|
+
*/
|
|
105
|
+
export declare function parseDataPacket(data: Buffer | Uint8Array): DataPacketResult;
|
|
106
|
+
/**
|
|
107
|
+
* Convert packet to hex string (for debugging)
|
|
108
|
+
*/
|
|
109
|
+
export declare function packetToHex(data: Buffer | Uint8Array): string;
|
|
110
|
+
/**
|
|
111
|
+
* Validate start byte
|
|
112
|
+
*/
|
|
113
|
+
export declare function isValidStartByte(byte: number, type?: PacketType): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Find valid start byte position in buffer
|
|
116
|
+
*/
|
|
117
|
+
export declare function scanForStartByte(buffer: Buffer, type?: PacketType, offset?: number): number;
|
|
118
|
+
/**
|
|
119
|
+
* Binary → Hex-ASCII encoding
|
|
120
|
+
*/
|
|
121
|
+
export declare function encodeHexAscii(data: Buffer | Uint8Array): Buffer;
|
|
122
|
+
/**
|
|
123
|
+
* Hex-ASCII → Binary decoding
|
|
124
|
+
*/
|
|
125
|
+
export declare function decodeHexAscii(data: Buffer | Uint8Array): Buffer;
|
|
126
|
+
//# sourceMappingURL=packet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../../src/core/packet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Suprema SFM Series Packet Protocol V3.6.0
|
|
3
|
+
*
|
|
4
|
+
* [Normal Packet Structure - 13 bytes]
|
|
5
|
+
* Byte 0: Start Code (0x40)
|
|
6
|
+
* Byte 1: Command
|
|
7
|
+
* Byte 2-5: Param (4 bytes, little-endian) - User ID or system parameter value
|
|
8
|
+
* Byte 6-9: Size (4 bytes, little-endian) - Size of following binary data
|
|
9
|
+
* Byte 10: Flag/Error - Flag on request, Error Code on response
|
|
10
|
+
* Byte 11: Checksum - Lower byte of sum of bytes 0~10
|
|
11
|
+
* Byte 12: End Code (0x0A)
|
|
12
|
+
*
|
|
13
|
+
* [Network Packet Structure - 15 bytes (RS422/485)]
|
|
14
|
+
* Byte 0: Start Code (0x41)
|
|
15
|
+
* Byte 1-2: Terminal ID (2 bytes, little-endian)
|
|
16
|
+
* Byte 3: Command
|
|
17
|
+
* Byte 4-7: Param (4 bytes, little-endian)
|
|
18
|
+
* Byte 8-11: Size (4 bytes, little-endian)
|
|
19
|
+
* Byte 12: Flag/Error
|
|
20
|
+
* Byte 13: Checksum - Lower byte of sum of bytes 0~12
|
|
21
|
+
* Byte 14: End Code (0x0A)
|
|
22
|
+
*
|
|
23
|
+
* [Secure Packet Structure - 35 bytes]
|
|
24
|
+
* Byte 0: 0x50 (Send) / 0x51 (Receive)
|
|
25
|
+
* Byte 1-32: AES256 encrypted data (32 bytes)
|
|
26
|
+
* Byte 33: Checksum
|
|
27
|
+
* Byte 34: 0x0A (End)
|
|
28
|
+
*
|
|
29
|
+
* [Data Transfer Packet - Variable length]
|
|
30
|
+
* Byte 0-3: Total length (little-endian uint32)
|
|
31
|
+
* Byte 4+: Payload data
|
|
32
|
+
* Last 2: 16-bit checksum (little-endian)
|
|
33
|
+
*/
|
|
34
|
+
import { START_CODE, END_CODE, PACKET_SIZE } from '../constants';
|
|
35
|
+
// Backward-compatible re-export
|
|
36
|
+
export { START_CODE, END_CODE, PACKET_SIZE } from '../constants';
|
|
37
|
+
/**
|
|
38
|
+
* Calculate checksum
|
|
39
|
+
* Sum of byte array & 0xFF
|
|
40
|
+
*/
|
|
41
|
+
export function calcChecksum(data, length) {
|
|
42
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
43
|
+
const len = Math.min(length || buf.length, buf.length);
|
|
44
|
+
let sum = 0;
|
|
45
|
+
for (let i = 0; i < len; i++) {
|
|
46
|
+
sum += buf[i];
|
|
47
|
+
}
|
|
48
|
+
return sum & 0xFF;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calculate 16-bit checksum (for data transfer packets)
|
|
52
|
+
*/
|
|
53
|
+
export function calcChecksum16(data) {
|
|
54
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
55
|
+
let sum = 0;
|
|
56
|
+
for (let i = 0; i < buf.length; i++) {
|
|
57
|
+
sum += buf[i];
|
|
58
|
+
}
|
|
59
|
+
return sum & 0xFFFF;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Build normal packet (13 bytes)
|
|
63
|
+
* [Start(0x40)] [Command] [Param LE 4B] [Size LE 4B] [Flag] [Checksum] [End(0x0A)]
|
|
64
|
+
*/
|
|
65
|
+
export function buildNormalPacket(command, param = 0, size = 0, flag = 0) {
|
|
66
|
+
const packet = Buffer.alloc(PACKET_SIZE.NORMAL);
|
|
67
|
+
packet[0] = START_CODE.NORMAL; // Start Code
|
|
68
|
+
packet[1] = command; // Command
|
|
69
|
+
packet.writeUInt32LE(param >>> 0, 2); // Param (4 bytes)
|
|
70
|
+
packet.writeUInt32LE(size >>> 0, 6); // Size (4 bytes)
|
|
71
|
+
packet[10] = flag; // Flag/Error
|
|
72
|
+
// Checksum: sum of bytes 0~10 & 0xFF
|
|
73
|
+
packet[11] = calcChecksum(packet, 11);
|
|
74
|
+
packet[12] = END_CODE; // End Code
|
|
75
|
+
return packet;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Build network packet (15 bytes, RS422/485)
|
|
79
|
+
* [Start(0x41)] [TermID LE 2B] [Command] [Param LE 4B] [Size LE 4B] [Flag] [Checksum] [End(0x0A)]
|
|
80
|
+
*/
|
|
81
|
+
export function buildNetworkPacket(command, terminalId = 0, param = 0, size = 0, flag = 0) {
|
|
82
|
+
const packet = Buffer.alloc(PACKET_SIZE.NETWORK);
|
|
83
|
+
packet[0] = START_CODE.NETWORK; // Start Code (0x41)
|
|
84
|
+
packet.writeUInt16LE(terminalId, 1); // Terminal ID (2 bytes)
|
|
85
|
+
packet[3] = command; // Command
|
|
86
|
+
packet.writeUInt32LE(param >>> 0, 4); // Param (4 bytes)
|
|
87
|
+
packet.writeUInt32LE(size >>> 0, 8); // Size (4 bytes)
|
|
88
|
+
packet[12] = flag; // Flag/Error
|
|
89
|
+
// Checksum: sum of bytes 0~12 & 0xFF
|
|
90
|
+
packet[13] = calcChecksum(packet, 13);
|
|
91
|
+
packet[14] = END_CODE; // End Code
|
|
92
|
+
return packet;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build data transfer packet (variable length)
|
|
96
|
+
* [4-byte length LE] [N-byte data] [2-byte checksum LE]
|
|
97
|
+
*/
|
|
98
|
+
export function buildDataPacket(data) {
|
|
99
|
+
const dataBuf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
100
|
+
const totalLen = dataBuf.length + 6;
|
|
101
|
+
const packet = Buffer.alloc(totalLen);
|
|
102
|
+
packet.writeUInt32LE(totalLen, 0);
|
|
103
|
+
dataBuf.copy(packet, 4);
|
|
104
|
+
const checksum = calcChecksum16(dataBuf);
|
|
105
|
+
packet.writeUInt16LE(checksum, 4 + dataBuf.length);
|
|
106
|
+
return packet;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Parse normal packet (13 bytes)
|
|
110
|
+
*/
|
|
111
|
+
export function parseNormalPacket(data) {
|
|
112
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
113
|
+
if (buf.length < PACKET_SIZE.NORMAL) {
|
|
114
|
+
return { valid: false, error: 'Insufficient packet size' };
|
|
115
|
+
}
|
|
116
|
+
const startCode = buf[0];
|
|
117
|
+
const command = buf[1];
|
|
118
|
+
const param = buf.readUInt32LE(2);
|
|
119
|
+
const size = buf.readUInt32LE(6);
|
|
120
|
+
const flag = buf[10];
|
|
121
|
+
const checksum = buf[11];
|
|
122
|
+
const endCode = buf[12];
|
|
123
|
+
const expected = calcChecksum(buf, 11);
|
|
124
|
+
const valid = checksum === expected && startCode === START_CODE.NORMAL && endCode === END_CODE;
|
|
125
|
+
let error = null;
|
|
126
|
+
if (!valid) {
|
|
127
|
+
if (checksum !== expected) {
|
|
128
|
+
error = `Checksum mismatch: got=0x${checksum.toString(16)}, expected=0x${expected.toString(16)}`;
|
|
129
|
+
}
|
|
130
|
+
else if (startCode !== START_CODE.NORMAL) {
|
|
131
|
+
error = `Invalid Start Code: 0x${startCode.toString(16)}`;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
error = `Invalid End Code: 0x${endCode.toString(16)}`;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
valid,
|
|
139
|
+
startCode,
|
|
140
|
+
command,
|
|
141
|
+
param,
|
|
142
|
+
size,
|
|
143
|
+
flag,
|
|
144
|
+
checksum,
|
|
145
|
+
expectedChecksum: expected,
|
|
146
|
+
endCode,
|
|
147
|
+
_raw: buf.subarray(0, PACKET_SIZE.NORMAL),
|
|
148
|
+
error,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Parse network packet (15 bytes)
|
|
153
|
+
*/
|
|
154
|
+
export function parseNetworkPacket(data) {
|
|
155
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
156
|
+
if (buf.length < PACKET_SIZE.NETWORK) {
|
|
157
|
+
return { valid: false, error: 'Insufficient packet size' };
|
|
158
|
+
}
|
|
159
|
+
const startCode = buf[0];
|
|
160
|
+
const terminalId = buf.readUInt16LE(1);
|
|
161
|
+
const command = buf[3];
|
|
162
|
+
const param = buf.readUInt32LE(4);
|
|
163
|
+
const size = buf.readUInt32LE(8);
|
|
164
|
+
const flag = buf[12];
|
|
165
|
+
const checksum = buf[13];
|
|
166
|
+
const endCode = buf[14];
|
|
167
|
+
const expected = calcChecksum(buf, 13);
|
|
168
|
+
const valid = checksum === expected && startCode === START_CODE.NETWORK && endCode === END_CODE;
|
|
169
|
+
let error = null;
|
|
170
|
+
if (!valid) {
|
|
171
|
+
if (checksum !== expected) {
|
|
172
|
+
error = `Checksum mismatch: got=0x${checksum.toString(16)}, expected=0x${expected.toString(16)}`;
|
|
173
|
+
}
|
|
174
|
+
else if (startCode !== START_CODE.NETWORK) {
|
|
175
|
+
error = `Invalid Start Code: 0x${startCode.toString(16)}`;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
error = `Invalid End Code: 0x${endCode.toString(16)}`;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
valid,
|
|
183
|
+
startCode,
|
|
184
|
+
terminalId,
|
|
185
|
+
command,
|
|
186
|
+
param,
|
|
187
|
+
size,
|
|
188
|
+
flag,
|
|
189
|
+
checksum,
|
|
190
|
+
expectedChecksum: expected,
|
|
191
|
+
endCode,
|
|
192
|
+
error,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Parse data transfer packet
|
|
197
|
+
*/
|
|
198
|
+
export function parseDataPacket(data) {
|
|
199
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
200
|
+
if (buf.length < 6) {
|
|
201
|
+
return { valid: false, error: 'Insufficient packet size' };
|
|
202
|
+
}
|
|
203
|
+
const totalLen = buf.readUInt32LE(0);
|
|
204
|
+
if (buf.length < totalLen) {
|
|
205
|
+
return { valid: false, error: `Incomplete packet: expected=${totalLen}, got=${buf.length}` };
|
|
206
|
+
}
|
|
207
|
+
const dataLen = totalLen - 6;
|
|
208
|
+
const payload = buf.subarray(4, 4 + dataLen);
|
|
209
|
+
const receivedChecksum = buf.readUInt16LE(4 + dataLen);
|
|
210
|
+
const expectedChecksum = calcChecksum16(payload);
|
|
211
|
+
return {
|
|
212
|
+
valid: receivedChecksum === expectedChecksum,
|
|
213
|
+
totalLength: totalLen,
|
|
214
|
+
payload: Buffer.from(payload),
|
|
215
|
+
checksum: receivedChecksum,
|
|
216
|
+
expectedChecksum,
|
|
217
|
+
error: receivedChecksum !== expectedChecksum ? 'Checksum mismatch' : null,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Convert packet to hex string (for debugging)
|
|
222
|
+
*/
|
|
223
|
+
export function packetToHex(data) {
|
|
224
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
225
|
+
return buf.toString('hex').toUpperCase().replace(/(.{2})/g, '$1 ').trim();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Validate start byte
|
|
229
|
+
*/
|
|
230
|
+
export function isValidStartByte(byte, type = 'normal') {
|
|
231
|
+
switch (type) {
|
|
232
|
+
case 'normal':
|
|
233
|
+
return byte === START_CODE.NORMAL;
|
|
234
|
+
case 'network':
|
|
235
|
+
return byte === START_CODE.NETWORK;
|
|
236
|
+
case 'secure':
|
|
237
|
+
return byte === START_CODE.SECURE_SEND || byte === START_CODE.SECURE_RECV;
|
|
238
|
+
default:
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Find valid start byte position in buffer
|
|
244
|
+
*/
|
|
245
|
+
export function scanForStartByte(buffer, type = 'normal', offset = 0) {
|
|
246
|
+
for (let i = offset; i < buffer.length; i++) {
|
|
247
|
+
if (isValidStartByte(buffer[i], type)) {
|
|
248
|
+
return i;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return -1;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Binary → Hex-ASCII encoding
|
|
255
|
+
*/
|
|
256
|
+
export function encodeHexAscii(data) {
|
|
257
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
258
|
+
return Buffer.from(buf.toString('hex').toUpperCase(), 'ascii');
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Hex-ASCII → Binary decoding
|
|
262
|
+
*/
|
|
263
|
+
export function decodeHexAscii(data) {
|
|
264
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
265
|
+
return Buffer.from(buf.toString('ascii'), 'hex');
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=packet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/core/packet.ts"],"names":[],"mappings":"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"}
|