@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.
Files changed (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +479 -0
  3. package/dist/commands/data.d.ts +29 -0
  4. package/dist/commands/data.d.ts.map +1 -0
  5. package/dist/commands/data.js +176 -0
  6. package/dist/commands/data.js.map +1 -0
  7. package/dist/commands/fingerprint.d.ts +132 -0
  8. package/dist/commands/fingerprint.d.ts.map +1 -0
  9. package/dist/commands/fingerprint.js +580 -0
  10. package/dist/commands/fingerprint.js.map +1 -0
  11. package/dist/commands/firmware.d.ts +37 -0
  12. package/dist/commands/firmware.d.ts.map +1 -0
  13. package/dist/commands/firmware.js +152 -0
  14. package/dist/commands/firmware.js.map +1 -0
  15. package/dist/commands/freescan.d.ts +68 -0
  16. package/dist/commands/freescan.d.ts.map +1 -0
  17. package/dist/commands/freescan.js +202 -0
  18. package/dist/commands/freescan.js.map +1 -0
  19. package/dist/commands/index.d.ts +88 -0
  20. package/dist/commands/index.d.ts.map +1 -0
  21. package/dist/commands/index.js +104 -0
  22. package/dist/commands/index.js.map +1 -0
  23. package/dist/commands/system.d.ts +82 -0
  24. package/dist/commands/system.d.ts.map +1 -0
  25. package/dist/commands/system.js +191 -0
  26. package/dist/commands/system.js.map +1 -0
  27. package/dist/constants/crypto.d.ts +11 -0
  28. package/dist/constants/crypto.d.ts.map +1 -0
  29. package/dist/constants/crypto.js +10 -0
  30. package/dist/constants/crypto.js.map +1 -0
  31. package/dist/constants/index.d.ts +6 -0
  32. package/dist/constants/index.d.ts.map +1 -0
  33. package/dist/constants/index.js +4 -0
  34. package/dist/constants/index.js.map +1 -0
  35. package/dist/constants/packet.d.ts +17 -0
  36. package/dist/constants/packet.d.ts.map +1 -0
  37. package/dist/constants/packet.js +17 -0
  38. package/dist/constants/packet.js.map +1 -0
  39. package/dist/constants/protocol.d.ts +653 -0
  40. package/dist/constants/protocol.d.ts.map +1 -0
  41. package/dist/constants/protocol.js +422 -0
  42. package/dist/constants/protocol.js.map +1 -0
  43. package/dist/core/client.d.ts +118 -0
  44. package/dist/core/client.d.ts.map +1 -0
  45. package/dist/core/client.js +320 -0
  46. package/dist/core/client.js.map +1 -0
  47. package/dist/core/crypto.d.ts +86 -0
  48. package/dist/core/crypto.d.ts.map +1 -0
  49. package/dist/core/crypto.js +248 -0
  50. package/dist/core/crypto.js.map +1 -0
  51. package/dist/core/errors.d.ts +25 -0
  52. package/dist/core/errors.d.ts.map +1 -0
  53. package/dist/core/errors.js +66 -0
  54. package/dist/core/errors.js.map +1 -0
  55. package/dist/core/index.d.ts +15 -0
  56. package/dist/core/index.d.ts.map +1 -0
  57. package/dist/core/index.js +10 -0
  58. package/dist/core/index.js.map +1 -0
  59. package/dist/core/packet.d.ts +126 -0
  60. package/dist/core/packet.d.ts.map +1 -0
  61. package/dist/core/packet.js +267 -0
  62. package/dist/core/packet.js.map +1 -0
  63. package/dist/core/serial.d.ts +123 -0
  64. package/dist/core/serial.d.ts.map +1 -0
  65. package/dist/core/serial.js +421 -0
  66. package/dist/core/serial.js.map +1 -0
  67. package/dist/core/tcp.d.ts +58 -0
  68. package/dist/core/tcp.d.ts.map +1 -0
  69. package/dist/core/tcp.js +219 -0
  70. package/dist/core/tcp.js.map +1 -0
  71. package/dist/index.d.ts +19 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +16 -0
  74. package/dist/index.js.map +1 -0
  75. 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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"}