@starak/sim800c 0.0.19 → 2.0.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 +1 -1
- package/README.md +10 -20
- package/dist/index.d.ts +2 -67
- package/dist/index.js +4 -211
- package/dist/lib/at-serial.d.ts +14 -0
- package/dist/lib/at-serial.js +102 -0
- package/dist/lib/logger.d.ts +11 -0
- package/dist/lib/logger.js +35 -0
- package/dist/lib/sim800c-2.d.ts +15 -0
- package/dist/lib/sim800c-2.js +109 -0
- package/dist/lib/sim800c.d.ts +15 -0
- package/dist/lib/sim800c.js +109 -0
- package/dist/lib/stream.d.ts +7 -0
- package/dist/lib/stream.js +17 -0
- package/dist/lib/utils.d.ts +8 -0
- package/dist/lib/utils.js +94 -0
- package/package.json +7 -4
- package/dist/debug.d.ts +0 -2
- package/dist/debug.js +0 -29
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -10,29 +10,19 @@ $ npm install @starak/sim800c
|
|
|
10
10
|
|
|
11
11
|
### Usage
|
|
12
12
|
```js
|
|
13
|
-
const {
|
|
13
|
+
const {SIM800C} = require('@starak/sim800c');
|
|
14
14
|
|
|
15
15
|
(async () => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
const path = '/dev/serial0';
|
|
17
|
+
|
|
18
|
+
const gsm = new SIM800C({path});
|
|
19
|
+
await gsm.open();
|
|
20
|
+
await gsm.sendMessage('55512345', 'Hello from SIM800C');
|
|
21
|
+
console.log('Message sent');
|
|
22
|
+
gsm.on('newMessage', async (message) => {
|
|
23
|
+
console.log('newMessage', message);
|
|
24
|
+
await gsm.deleteMessage(message.index);
|
|
23
25
|
});
|
|
24
26
|
|
|
25
|
-
if(SIM_PATH) {
|
|
26
|
-
const gsm = new GSM(SIM_PATH);
|
|
27
|
-
await gsm.ready();
|
|
28
|
-
await gsm.sendMessage('55512345', 'Hello from SIM800C');
|
|
29
|
-
console.log('Message sent');
|
|
30
|
-
gsm.on('newMessage', async (message) => {
|
|
31
|
-
console.log('newMessage', message);
|
|
32
|
-
await gsm.deleteMessage(message.index);
|
|
33
|
-
});
|
|
34
|
-
}else{
|
|
35
|
-
throw new Error('No SIM found');
|
|
36
|
-
}
|
|
37
27
|
})();
|
|
38
28
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,68 +1,3 @@
|
|
|
1
|
-
import EventEmitter from "eventemitter3";
|
|
2
|
-
import PQueue from 'p-queue';
|
|
3
|
-
import { SerialPort } from "serialport";
|
|
4
|
-
import { pduMessage } from "pdu.ts";
|
|
5
|
-
interface UDH {
|
|
6
|
-
parts: number;
|
|
7
|
-
current_part: number;
|
|
8
|
-
reference_number: string;
|
|
9
|
-
length: string;
|
|
10
|
-
iei: string;
|
|
11
|
-
}
|
|
12
|
-
interface EpduMessage extends pduMessage {
|
|
13
|
-
udh?: UDH;
|
|
14
|
-
multipart: boolean;
|
|
15
|
-
parts: number;
|
|
16
|
-
parts_raw?: GsmMessage[];
|
|
17
|
-
sender?: string;
|
|
18
|
-
senderType?: number;
|
|
19
|
-
time: Date;
|
|
20
|
-
}
|
|
21
|
-
interface GsmMessage {
|
|
22
|
-
index: number;
|
|
23
|
-
message: EpduMessage;
|
|
24
|
-
raw: string;
|
|
25
|
-
}
|
|
26
|
-
export interface Message {
|
|
27
|
-
index: number;
|
|
28
|
-
parts: number;
|
|
29
|
-
indexes: number[];
|
|
30
|
-
text: string;
|
|
31
|
-
sender: string;
|
|
32
|
-
time: Date;
|
|
33
|
-
}
|
|
34
|
-
interface ParsedPDUMessage {
|
|
35
|
-
index: number;
|
|
36
|
-
message: EpduMessage;
|
|
37
|
-
}
|
|
38
|
-
interface PDUMessage {
|
|
39
|
-
index: number;
|
|
40
|
-
raw: string;
|
|
41
|
-
}
|
|
42
1
|
export * from "serialport";
|
|
43
|
-
export
|
|
44
|
-
|
|
45
|
-
_ready: Promise<void>;
|
|
46
|
-
_sendQueue: PQueue;
|
|
47
|
-
constructor(path: string);
|
|
48
|
-
ready(): Promise<void>;
|
|
49
|
-
private onDataHandler;
|
|
50
|
-
private sendCommand;
|
|
51
|
-
reset(): Promise<void>;
|
|
52
|
-
private setTextMode;
|
|
53
|
-
private setPDUMode;
|
|
54
|
-
private setRecipient;
|
|
55
|
-
private setLength;
|
|
56
|
-
private setMessage;
|
|
57
|
-
rejectCalls(): Promise<void>;
|
|
58
|
-
sendMessageTxt(number: string, message: string): Promise<void>;
|
|
59
|
-
sendMessage(number: string, message: string): Promise<void>;
|
|
60
|
-
sendQueue(number: string, message: string): Promise<void>;
|
|
61
|
-
deleteMessage(msg: Message): Promise<void>;
|
|
62
|
-
deleteAllMessages(): Promise<void>;
|
|
63
|
-
getAllPDUMessages(): Promise<PDUMessage[]>;
|
|
64
|
-
parsePDUMessage(msg: PDUMessage): ParsedPDUMessage;
|
|
65
|
-
getMessages(): Promise<Message[]>;
|
|
66
|
-
getMessage(index: number): Promise<Message>;
|
|
67
|
-
static convertToCleanMessage(message: ParsedPDUMessage): Message;
|
|
68
|
-
}
|
|
2
|
+
export type { Message } from './lib/types';
|
|
3
|
+
export { SIM800C } from "./lib/sim800c";
|
package/dist/index.js
CHANGED
|
@@ -13,216 +13,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
13
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.
|
|
21
|
-
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
22
|
-
const p_queue_1 = __importDefault(require("p-queue"));
|
|
23
|
-
const serialport_1 = require("serialport");
|
|
24
|
-
const pdu_ts_1 = require("pdu.ts");
|
|
25
|
-
const debug_1 = require("./debug");
|
|
26
|
-
// @ts-ignore
|
|
27
|
-
const node_pdu_1 = __importDefault(require("node-pdu"));
|
|
17
|
+
exports.SIM800C = void 0;
|
|
28
18
|
__exportStar(require("serialport"), exports);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this._sendQueue = new p_queue_1.default({ concurrency: 1 });
|
|
33
|
-
this.onDataHandler = async (data) => {
|
|
34
|
-
if (data.includes('+CMTI:')) { // Incoming Message
|
|
35
|
-
const index = data.toString().split(',')[1];
|
|
36
|
-
const message = await this.getMessage(+index);
|
|
37
|
-
if (message) {
|
|
38
|
-
if (message.parts === message.indexes.length) {
|
|
39
|
-
this.emit('newMessage', message);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.log('Error getting incoming message.', data.toString());
|
|
44
|
-
throw new Error('Error getting incoming message.' + data.toString());
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
this.port = new serialport_1.SerialPort({ path: path, baudRate: 115200 });
|
|
49
|
-
this.port.on('open', async () => {
|
|
50
|
-
await this.reset();
|
|
51
|
-
this.emit('ready');
|
|
52
|
-
});
|
|
53
|
-
this.port.on('data', (data) => {
|
|
54
|
-
debug_1.logger_in.debug(data.toString());
|
|
55
|
-
this.emit('data', data);
|
|
56
|
-
setImmediate(() => this.onDataHandler(data));
|
|
57
|
-
});
|
|
58
|
-
this._ready = new Promise((resolve) => {
|
|
59
|
-
this.on('ready', resolve);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
async ready() {
|
|
63
|
-
return this._ready;
|
|
64
|
-
}
|
|
65
|
-
async sendCommand(command, terminator = '\r') {
|
|
66
|
-
const { port } = this;
|
|
67
|
-
return new Promise((resolve, reject) => {
|
|
68
|
-
const listener = async (d) => {
|
|
69
|
-
data += d.toString();
|
|
70
|
-
if (data.includes('OK') || data.includes('>')) {
|
|
71
|
-
port.removeListener('data', listener);
|
|
72
|
-
resolve();
|
|
73
|
-
}
|
|
74
|
-
else if (data.includes('ERROR')) {
|
|
75
|
-
port.removeListener('data', listener);
|
|
76
|
-
reject('error');
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
//console.log('none', command, data);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
let data = '';
|
|
83
|
-
port.on('data', listener);
|
|
84
|
-
debug_1.logger_out.debug(command + terminator);
|
|
85
|
-
port.write(`${command}${terminator}`);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
async reset() {
|
|
89
|
-
return this.sendCommand('ATZ').then(() => this.rejectCalls());
|
|
90
|
-
}
|
|
91
|
-
async setTextMode() {
|
|
92
|
-
return this.sendCommand('AT+CMGF=1');
|
|
93
|
-
}
|
|
94
|
-
async setPDUMode() {
|
|
95
|
-
return this.sendCommand('AT+CMGF=0');
|
|
96
|
-
}
|
|
97
|
-
async setRecipient(number) {
|
|
98
|
-
return this.sendCommand(`AT+CMGS="${number}"`);
|
|
99
|
-
}
|
|
100
|
-
async setLength(length) {
|
|
101
|
-
return this.sendCommand(`AT+CMGS=${length}`);
|
|
102
|
-
}
|
|
103
|
-
async setMessage(message) {
|
|
104
|
-
return this.sendCommand(`${message}`, '\x1a');
|
|
105
|
-
}
|
|
106
|
-
async rejectCalls() {
|
|
107
|
-
return this.sendCommand('AT+GSMBUSY=1');
|
|
108
|
-
}
|
|
109
|
-
async sendMessageTxt(number, message) {
|
|
110
|
-
await this.reset();
|
|
111
|
-
await this.setTextMode();
|
|
112
|
-
await this.setRecipient(number);
|
|
113
|
-
await this.setMessage(message);
|
|
114
|
-
}
|
|
115
|
-
async sendMessage(number, message) {
|
|
116
|
-
let submit = node_pdu_1.default.Submit();
|
|
117
|
-
submit.setAddress(number.replace('+', ''));
|
|
118
|
-
submit.setData(message);
|
|
119
|
-
submit.getDcs().setUseMessageClass(false);
|
|
120
|
-
const parts = submit.getParts();
|
|
121
|
-
await this.reset();
|
|
122
|
-
await this.setPDUMode();
|
|
123
|
-
for (let i = 0; i < parts.length; i++) {
|
|
124
|
-
await this.setLength((parts[i].toString().length / 2) - 1);
|
|
125
|
-
await this.setMessage(parts[i].toString());
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
async sendQueue(number, message) {
|
|
129
|
-
return this._sendQueue.add(() => this.sendMessage(number, message));
|
|
130
|
-
}
|
|
131
|
-
async deleteMessage(msg) {
|
|
132
|
-
if (!msg)
|
|
133
|
-
return;
|
|
134
|
-
for (const i of msg.indexes) {
|
|
135
|
-
await this.sendCommand(`AT+CMGD=${i}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
async deleteAllMessages() {
|
|
139
|
-
return this.sendCommand('AT+CMGD=1,4');
|
|
140
|
-
}
|
|
141
|
-
async getAllPDUMessages() {
|
|
142
|
-
await this.reset();
|
|
143
|
-
await this.setPDUMode();
|
|
144
|
-
const { port } = this;
|
|
145
|
-
let data = '', msgs = [], current = {};
|
|
146
|
-
return new Promise((resolve, reject) => {
|
|
147
|
-
const command = 'AT+CMGL=4\r';
|
|
148
|
-
const listener = async (d) => {
|
|
149
|
-
data += d.toString();
|
|
150
|
-
const lines = data.split('\r\n');
|
|
151
|
-
data = lines.pop() || '';
|
|
152
|
-
for (const line of lines) {
|
|
153
|
-
if (line.includes('OK')) {
|
|
154
|
-
port.removeListener('data', listener);
|
|
155
|
-
resolve(msgs);
|
|
156
|
-
}
|
|
157
|
-
else if (line.includes('ERROR')) {
|
|
158
|
-
port.removeListener('data', listener);
|
|
159
|
-
reject();
|
|
160
|
-
}
|
|
161
|
-
else if (line.startsWith('+CMGL: ')) {
|
|
162
|
-
const [index, , raw] = line.replace(/^\+CMGL:\s/, '')
|
|
163
|
-
.split(',')
|
|
164
|
-
.map(s => s.replace(/"/g, ''));
|
|
165
|
-
current = { index: +index, raw };
|
|
166
|
-
msgs.push(current);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
current.raw += line;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
port.on('data', listener);
|
|
174
|
-
port.write(command);
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
parsePDUMessage(msg) {
|
|
178
|
-
return {
|
|
179
|
-
index: msg.index,
|
|
180
|
-
message: pdu_ts_1.PDUParser.Parse(msg.raw)
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
async getMessages() {
|
|
184
|
-
let messages = (await this.getAllPDUMessages().then(msgs => msgs.map(m => this.parsePDUMessage(m))));
|
|
185
|
-
messages = messages.map(m => {
|
|
186
|
-
if (m.message.udh) {
|
|
187
|
-
if (m.message.udh.current_part === 1) {
|
|
188
|
-
const parts = messages
|
|
189
|
-
.filter(m2 => m2.message.udh)
|
|
190
|
-
.filter(m2 => { var _a, _b; return ((_a = m2.message.udh) === null || _a === void 0 ? void 0 : _a.reference_number) === ((_b = m.message.udh) === null || _b === void 0 ? void 0 : _b.reference_number); })
|
|
191
|
-
.sort((a, b) => { var _a, _b; return (((_a = a.message.udh) === null || _a === void 0 ? void 0 : _a.current_part) || 0) - (((_b = b.message.udh) === null || _b === void 0 ? void 0 : _b.current_part) || 0); });
|
|
192
|
-
return {
|
|
193
|
-
...m,
|
|
194
|
-
message: {
|
|
195
|
-
...m.message,
|
|
196
|
-
text: parts.map(m2 => m2.message.text).join(''),
|
|
197
|
-
multipart: true,
|
|
198
|
-
parts: m.message.udh.parts,
|
|
199
|
-
parts_raw: parts
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
return undefined;
|
|
204
|
-
}
|
|
205
|
-
return { ...m, multipart: false, message: { ...m.message, parts: 1 } };
|
|
206
|
-
}).filter(m => m !== undefined);
|
|
207
|
-
return messages.map(m => GSM.convertToCleanMessage(m));
|
|
208
|
-
}
|
|
209
|
-
async getMessage(index) {
|
|
210
|
-
const messages = await this.getMessages();
|
|
211
|
-
let message = messages.find(m => m.index === index) || messages.find(m => m.indexes.find(m2 => m2 === index));
|
|
212
|
-
return message || undefined;
|
|
213
|
-
}
|
|
214
|
-
static convertToCleanMessage(message) {
|
|
215
|
-
var _a;
|
|
216
|
-
const senderPrefix = message.message.senderType === 91 ? '' : '+';
|
|
217
|
-
return {
|
|
218
|
-
index: message.index,
|
|
219
|
-
parts: message.message.parts,
|
|
220
|
-
indexes: ((_a = message.message.parts_raw) === null || _a === void 0 ? void 0 : _a.map(m => m.index)) || [message.index],
|
|
221
|
-
text: message.message.text,
|
|
222
|
-
sender: senderPrefix + message.message.sender,
|
|
223
|
-
time: message.message.time,
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
exports.GSM = GSM;
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrRUFBeUM7QUFDekMsc0RBQTZCO0FBQzdCLDJDQUFzQztBQUN0QyxtQ0FBNkM7QUFDN0MsbUNBQThDO0FBQzlDLGFBQWE7QUFDYix3REFBMkI7QUE2QzNCLDZDQUEyQjtBQUUzQixNQUFhLEdBQUksU0FBUSx1QkFBWTtJQUtqQyxZQUFZLElBQVk7UUFDcEIsS0FBSyxFQUFFLENBQUM7UUFIWixlQUFVLEdBQVcsSUFBSSxpQkFBTSxDQUFDLEVBQUMsV0FBVyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUF1QjFDLGtCQUFhLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLG1CQUFtQjtnQkFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlDLElBQUksT0FBTyxFQUFFO29CQUNULElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTt3QkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7cUJBQ3BDO2lCQUNKO3FCQUFNO29CQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7aUJBQ3hFO2FBQ0o7UUFDTCxDQUFDLENBQUE7UUFoQ0csSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHVCQUFVLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRTtZQUM1QixNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsaUJBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBaUJPLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBZSxFQUFFLFVBQVUsR0FBRyxJQUFJO1FBQ3hELE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFDcEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsQ0FBUyxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUM7aUJBQ2I7cUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNuQjtxQkFBTTtvQkFDSCxxQ0FBcUM7aUJBQ3hDO1lBQ0wsQ0FBQyxDQUFBO1lBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDMUIsa0JBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFjO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBZTtRQUNwQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxPQUFPLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQWMsRUFBRSxPQUFlO1FBQ3ZELE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYyxFQUFFLE9BQWU7UUFDcEQsSUFBSSxNQUFNLEdBQUcsa0JBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzlDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBYyxFQUFFLE9BQWU7UUFDbEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQVk7UUFDbkMsSUFBRyxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2hCLEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRTtZQUN6QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ25CLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksR0FBaUIsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFnQixDQUFDO1FBRW5FLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUF1QixFQUFFO1lBQ3hELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsQ0FBUyxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUN6QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtvQkFDdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNqQjt5QkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUN0QyxNQUFNLEVBQUUsQ0FBQztxQkFDWjt5QkFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ25DLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQUFBRCxFQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQzs2QkFDaEQsS0FBSyxDQUFDLEdBQUcsQ0FBQzs2QkFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNuQyxPQUFPLEdBQUcsRUFBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLENBQUM7d0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3RCO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDO3FCQUN2QjtpQkFDSjtZQUNMLENBQUMsQ0FBQTtZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQWU7UUFDM0IsT0FBTztZQUNILEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztZQUNoQixPQUFPLEVBQUUsa0JBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztTQUNwQyxDQUFBO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXO1FBQ3BCLElBQUksUUFBUSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNmLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTtvQkFDbEMsTUFBTSxLQUFLLEdBQUcsUUFBUTt5QkFDakIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7eUJBQzVCLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFDLE9BQUEsQ0FBQSxNQUFBLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRywwQ0FBRSxnQkFBZ0IsT0FBSyxNQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRywwQ0FBRSxnQkFBZ0IsQ0FBQSxDQUFBLEVBQUEsQ0FBQzt5QkFDbEYsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLGVBQUMsT0FBQSxDQUFDLENBQUEsTUFBQSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsMENBQUUsWUFBWSxLQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxNQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRywwQ0FBRSxZQUFZLEtBQUksQ0FBQyxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7b0JBQzdGLE9BQU87d0JBQ0gsR0FBRyxDQUFDO3dCQUNKLE9BQU8sRUFBRTs0QkFDTCxHQUFHLENBQUMsQ0FBQyxPQUFPOzRCQUNaLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUMvQyxTQUFTLEVBQUUsSUFBSTs0QkFDZixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSzs0QkFDMUIsU0FBUyxFQUFFLEtBQUs7eUJBQ25CO3FCQUNKLENBQUE7aUJBQ0o7Z0JBQ0QsT0FBTyxTQUFTLENBQUM7YUFDcEI7WUFDRCxPQUFPLEVBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBQyxFQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBaUIsQ0FBQztRQUNwRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFhO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlHLE9BQU8sT0FBa0IsSUFBSSxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxPQUF5Qjs7UUFDbEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNsRSxPQUFPO1lBQ0gsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDNUIsT0FBTyxFQUFFLENBQUEsTUFBQSxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN4RSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQzFCLE1BQU0sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFPO1lBQzlDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUk7U0FDN0IsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQXJORCxrQkFxTkMifQ==
|
|
19
|
+
var sim800c_1 = require("./lib/sim800c");
|
|
20
|
+
Object.defineProperty(exports, "SIM800C", { enumerable: true, get: function () { return sim800c_1.SIM800C; } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkI7QUFFM0IseUNBQXNDO0FBQTlCLGtHQUFBLE9BQU8sT0FBQSJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import EventEmitter from "eventemitter3";
|
|
2
|
+
import { Stream } from "./stream";
|
|
3
|
+
import { SendCommandResponse } from "./types";
|
|
4
|
+
export declare class AtSerial extends EventEmitter {
|
|
5
|
+
private readonly options;
|
|
6
|
+
serialStream: Stream;
|
|
7
|
+
private port;
|
|
8
|
+
private parser;
|
|
9
|
+
private commandQueue;
|
|
10
|
+
constructor(options?: {});
|
|
11
|
+
open(): Promise<void>;
|
|
12
|
+
close(): Promise<void>;
|
|
13
|
+
sendCommand(command: string, terminator?: string, timeout?: number): Promise<SendCommandResponse>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AtSerial = void 0;
|
|
7
|
+
const serialport_1 = require("serialport");
|
|
8
|
+
const parser_readline_1 = require("@serialport/parser-readline");
|
|
9
|
+
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
10
|
+
const p_queue_1 = __importDefault(require("p-queue"));
|
|
11
|
+
const stream_1 = require("./stream");
|
|
12
|
+
const DEFAULT_PORT_OPTIONS = {
|
|
13
|
+
baudRate: 115200,
|
|
14
|
+
dataBits: 8,
|
|
15
|
+
stopBits: 1,
|
|
16
|
+
parity: 'none',
|
|
17
|
+
line_end: '\r\n',
|
|
18
|
+
read_time: 1000,
|
|
19
|
+
path: '',
|
|
20
|
+
};
|
|
21
|
+
class AtSerial extends eventemitter3_1.default {
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
super();
|
|
24
|
+
this.serialStream = new stream_1.Stream();
|
|
25
|
+
this.commandQueue = new p_queue_1.default({ concurrency: 1 });
|
|
26
|
+
this.options = Object.assign({}, DEFAULT_PORT_OPTIONS, options);
|
|
27
|
+
}
|
|
28
|
+
open() {
|
|
29
|
+
return new Promise((resolve, reject) => {
|
|
30
|
+
this.port = new serialport_1.SerialPort(this.options);
|
|
31
|
+
this.parser = new parser_readline_1.ReadlineParser({ delimiter: '\r\n' });
|
|
32
|
+
this.parser.on('data', (data) => {
|
|
33
|
+
this.serialStream.incomming(data + '\n');
|
|
34
|
+
if (/\+CMTI:/.test(data)) { // Incoming Message
|
|
35
|
+
const index = data.split(',')[1];
|
|
36
|
+
this.emit('_incomming_message', index);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
this.port.pipe(this.parser);
|
|
40
|
+
this.port.on('open', () => void resolve());
|
|
41
|
+
this.port.on('error', err => void reject(err));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
close() {
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
(_a = this.port) === null || _a === void 0 ? void 0 : _a.unpipe();
|
|
48
|
+
(_b = this.port) === null || _b === void 0 ? void 0 : _b.close(err => err ? reject(err) : resolve());
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async sendCommand(command, terminator = '\r', timeout = 30000) {
|
|
52
|
+
return this.commandQueue.add(() => new Promise((resolve, reject) => {
|
|
53
|
+
const start = new Date();
|
|
54
|
+
let end;
|
|
55
|
+
const { port, parser } = this;
|
|
56
|
+
const commands = command.split(/\s?>\s?/);
|
|
57
|
+
const terminators = terminator.split(/\s?>\s?/);
|
|
58
|
+
if (!port || !parser) {
|
|
59
|
+
throw new Error('Port not open');
|
|
60
|
+
}
|
|
61
|
+
let commandTimeout;
|
|
62
|
+
let response = [];
|
|
63
|
+
const listener = (chunkB) => {
|
|
64
|
+
const chunk = chunkB.toString();
|
|
65
|
+
response.push(chunk);
|
|
66
|
+
if (chunk.includes('ERROR')) {
|
|
67
|
+
clearTimeout(commandTimeout);
|
|
68
|
+
port.removeListener('data', listener);
|
|
69
|
+
reject(new Error('Command error'));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (chunk.includes('OK')) {
|
|
73
|
+
clearTimeout(commandTimeout);
|
|
74
|
+
port.removeListener('data', listener);
|
|
75
|
+
end = new Date();
|
|
76
|
+
resolve({
|
|
77
|
+
command,
|
|
78
|
+
start,
|
|
79
|
+
end,
|
|
80
|
+
executionTime: end.getTime() - start.getTime(),
|
|
81
|
+
response: response.join('\n'),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
if (chunk.includes('>') && commands.length > 1) {
|
|
85
|
+
const c = `${commands[1]}${terminators[1]}`;
|
|
86
|
+
this.serialStream.outgoing(c);
|
|
87
|
+
port.write(c);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
port.on('data', listener);
|
|
91
|
+
const c = `${commands[0]}${terminators[0]}`;
|
|
92
|
+
this.serialStream.outgoing(c.replace(/\r/g, '\n'));
|
|
93
|
+
port.write(c);
|
|
94
|
+
commandTimeout = setTimeout(() => {
|
|
95
|
+
port.removeListener('data', listener);
|
|
96
|
+
reject(new Error('Command timeout:' + command));
|
|
97
|
+
}, timeout);
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.AtSerial = AtSerial;
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXQtc2VyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9hdC1zZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkNBQXNDO0FBQ3RDLGlFQUF1RTtBQUN2RSxrRUFBeUM7QUFDekMsc0RBQTRCO0FBQzVCLHFDQUFnQztBQUdoQyxNQUFNLG9CQUFvQixHQUFpQjtJQUN2QyxRQUFRLEVBQUcsTUFBTTtJQUNqQixRQUFRLEVBQUcsQ0FBQztJQUNaLFFBQVEsRUFBRyxDQUFDO0lBQ1osTUFBTSxFQUFLLE1BQU07SUFDakIsUUFBUSxFQUFHLE1BQU07SUFDakIsU0FBUyxFQUFFLElBQUk7SUFDZixJQUFJLEVBQU8sRUFBRTtDQUNoQixDQUFDO0FBRUYsTUFBYSxRQUFTLFNBQVEsdUJBQVk7SUFNdEMsWUFBYSxPQUFPLEdBQUcsRUFBRTtRQUNyQixLQUFLLEVBQUUsQ0FBQztRQUxMLGlCQUFZLEdBQUcsSUFBSSxlQUFNLEVBQUUsQ0FBQztRQUczQixpQkFBWSxHQUFVLElBQUksaUJBQUssQ0FBQyxFQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBR3RELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLElBQUk7UUFDUCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSx1QkFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0NBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUks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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Readable, ReadableOptions } from "stream";
|
|
3
|
+
export declare class Logger extends Readable {
|
|
4
|
+
private debug;
|
|
5
|
+
private readonly console;
|
|
6
|
+
constructor(opts: ReadableOptions, debug?: boolean);
|
|
7
|
+
_read(_: number): void;
|
|
8
|
+
incomming(message?: string): void;
|
|
9
|
+
outgoing(message?: string): void;
|
|
10
|
+
log(message?: string): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Logger = void 0;
|
|
7
|
+
const stream_1 = require("stream");
|
|
8
|
+
const console_stamp_1 = __importDefault(require("console-stamp"));
|
|
9
|
+
class Logger extends stream_1.Readable {
|
|
10
|
+
constructor(opts, debug = false) {
|
|
11
|
+
super(opts);
|
|
12
|
+
this.debug = debug;
|
|
13
|
+
this.console = new console.Console(process.stdout, process.stderr);
|
|
14
|
+
(0, console_stamp_1.default)(this.console, {
|
|
15
|
+
format: '(SIM800C).yellow :date(yyyy/mm/dd HH:MM:ss.l).white :label.cyan',
|
|
16
|
+
stdout: process.stdout,
|
|
17
|
+
stderr: process.stderr,
|
|
18
|
+
level: this.debug ? 'debug' : 'info',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
_read(_) {
|
|
22
|
+
// No implementation needed for pushing data manually
|
|
23
|
+
}
|
|
24
|
+
incomming(message = '') {
|
|
25
|
+
this.push(`>> ${message.toString().replace(/ /g, '\u2e31')}`);
|
|
26
|
+
}
|
|
27
|
+
outgoing(message = '') {
|
|
28
|
+
this.push(`<< ${message.replace(/ /g, '\u2e31')}`);
|
|
29
|
+
}
|
|
30
|
+
log(message = '') {
|
|
31
|
+
this.console.debug(message);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.Logger = Logger;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBQWlEO0FBQ2pELGtFQUE4QjtBQUU5QixNQUFhLE1BQU8sU0FBUSxpQkFBUTtJQUVoQyxZQUFZLElBQXFCLEVBQVUsUUFBUSxLQUFLO1FBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUQyQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBRXBELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBRSxDQUFDO1FBQ3JFLElBQUEsdUJBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsTUFBTSxFQUFFLGlFQUFpRTtZQUN6RSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU07U0FDdkMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFTO1FBQ1gscURBQXFEO0lBQ3pELENBQUM7SUFFRCxTQUFTLENBQUMsT0FBTyxHQUFHLEVBQUU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDSjtBQTVCRCx3QkE0QkMifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AtSerial } from "./at-serial";
|
|
2
|
+
import { Message, RawMessagePDU, SIM800COptions } from "./types";
|
|
3
|
+
export declare class SIM800C extends AtSerial {
|
|
4
|
+
private queue;
|
|
5
|
+
constructor(options: SIM800COptions);
|
|
6
|
+
reset(): Promise<void>;
|
|
7
|
+
rejectCalls(): Promise<void>;
|
|
8
|
+
private setPDUMode;
|
|
9
|
+
sendMessage(number: string, message: string): Promise<void>;
|
|
10
|
+
getAllPDUMessages(): Promise<RawMessagePDU[]>;
|
|
11
|
+
getMessages(): Promise<Message[]>;
|
|
12
|
+
getMessage(index: number): Promise<Message>;
|
|
13
|
+
deleteMessage(msg: Message): Promise<void>;
|
|
14
|
+
deleteAllMessages(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SIM800C = void 0;
|
|
7
|
+
const at_serial_1 = require("./at-serial");
|
|
8
|
+
const node_pdu_1 = require("node-pdu");
|
|
9
|
+
const p_queue_1 = __importDefault(require("p-queue"));
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
const console_stamp_1 = __importDefault(require("console-stamp"));
|
|
12
|
+
const logger = new console.Console(process.stdout, process.stderr);
|
|
13
|
+
(0, console_stamp_1.default)(logger, { level: 'warn' });
|
|
14
|
+
const CTRL_Z = '\x1a';
|
|
15
|
+
class SIM800C extends at_serial_1.AtSerial {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
super(options);
|
|
18
|
+
this.queue = new p_queue_1.default({ concurrency: 1 });
|
|
19
|
+
this.on('_incomming_message', async (index) => {
|
|
20
|
+
const message = await this.getMessage(+index);
|
|
21
|
+
if (message) {
|
|
22
|
+
this.emit('message', message);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async reset() {
|
|
27
|
+
const c = await this.sendCommand('ATZ');
|
|
28
|
+
logger.debug(JSON.stringify(c));
|
|
29
|
+
await this.rejectCalls();
|
|
30
|
+
}
|
|
31
|
+
async rejectCalls() {
|
|
32
|
+
const c = await this.sendCommand('AT+GSMBUSY=1');
|
|
33
|
+
logger.debug(JSON.stringify(c));
|
|
34
|
+
}
|
|
35
|
+
async setPDUMode() {
|
|
36
|
+
const c = await this.sendCommand(`AT+CMGF=0`);
|
|
37
|
+
logger.debug(JSON.stringify(c));
|
|
38
|
+
}
|
|
39
|
+
async sendMessage(number, message) {
|
|
40
|
+
return this.queue.add(async () => {
|
|
41
|
+
message += "\u200B"; // Add zero-width space to the end of the message to force unicode as a workaround for the 7-bit bug in node-pdu.
|
|
42
|
+
let submit = new node_pdu_1.Submit(number, message);
|
|
43
|
+
submit.dataCodingScheme.setUseMessageClass(false);
|
|
44
|
+
const parts = submit.getPartStrings();
|
|
45
|
+
await this.reset();
|
|
46
|
+
await this.setPDUMode();
|
|
47
|
+
for (let i = 0; i < parts.length; i++) {
|
|
48
|
+
const pdu = parts[i];
|
|
49
|
+
const smscInfoLength = (parseInt(pdu.substring(0, 2), 16) + 1) * 2;
|
|
50
|
+
const userDataLength = (pdu.length - smscInfoLength) / 2;
|
|
51
|
+
const command = `AT+CMGS=${userDataLength} > ${pdu}`;
|
|
52
|
+
const terminator = `\r > ${CTRL_Z}`;
|
|
53
|
+
const c = await this.sendCommand(command, terminator);
|
|
54
|
+
logger.debug(JSON.stringify(c));
|
|
55
|
+
}
|
|
56
|
+
}).catch(e => {
|
|
57
|
+
throw e;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async getAllPDUMessages() {
|
|
61
|
+
await this.reset();
|
|
62
|
+
await this.setPDUMode();
|
|
63
|
+
const data = await this.sendCommand('AT+CMGL=4');
|
|
64
|
+
logger.debug(JSON.stringify(data));
|
|
65
|
+
const response = data.response.split('\r\n').filter(Boolean).slice(0, -1);
|
|
66
|
+
let messages = [];
|
|
67
|
+
let current = {};
|
|
68
|
+
for (const line of response) {
|
|
69
|
+
if (line.startsWith('+CMGL: ')) {
|
|
70
|
+
const [index] = line.replace(/^\+CMGL:\s/, '').split(',');
|
|
71
|
+
current = { index: +index, raw: '' };
|
|
72
|
+
messages.push(current);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
current.raw += line.replace(/\s/g, '');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return messages;
|
|
79
|
+
}
|
|
80
|
+
async getMessages() {
|
|
81
|
+
return this.queue.add(async () => {
|
|
82
|
+
const rawMessages = await this.getAllPDUMessages();
|
|
83
|
+
const parsedMessages = rawMessages.map(utils_1.parsePDUMessage);
|
|
84
|
+
const processedMessages = (0, utils_1.processMessages)(parsedMessages);
|
|
85
|
+
return processedMessages.map(utils_1.convertToCleanMessage);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async getMessage(index) {
|
|
89
|
+
const messages = await this.getMessages();
|
|
90
|
+
let message = messages.find(m => (m === null || m === void 0 ? void 0 : m.index) === index) || messages.find(m => { var _a; return (_a = m === null || m === void 0 ? void 0 : m.indexes) === null || _a === void 0 ? void 0 : _a.find(m2 => m2 === index); });
|
|
91
|
+
return message || undefined;
|
|
92
|
+
}
|
|
93
|
+
async deleteMessage(msg) {
|
|
94
|
+
return this.queue.add(async () => {
|
|
95
|
+
if (!msg)
|
|
96
|
+
return;
|
|
97
|
+
for (const i of msg.indexes) {
|
|
98
|
+
const c = await this.sendCommand(`AT+CMGD=${i}`);
|
|
99
|
+
logger.debug(JSON.stringify(c));
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
async deleteAllMessages() {
|
|
104
|
+
const c = this.queue.add(async () => this.sendCommand('AT+CMGD=1,4'));
|
|
105
|
+
logger.debug(JSON.stringify(c));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.SIM800C = SIM800C;
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltODAwYy0yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9zaW04MDBjLTIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkNBQXFDO0FBQ3JDLHVDQUFnQztBQUNoQyxzREFBNEI7QUFFNUIsbUNBQWlGO0FBQ2pGLGtFQUErQjtBQUUvQixNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFFLENBQUM7QUFDckUsSUFBQSx1QkFBRSxFQUFFLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFBO0FBQzVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUV0QixNQUFhLE9BQVEsU0FBUSxvQkFBUTtJQUdqQyxZQUFZLE9BQXVCO1FBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhYLFVBQUssR0FBRyxJQUFJLGlCQUFLLENBQUMsRUFBQyxXQUFXLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUl4QyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxJQUFHLE9BQU8sRUFBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNqQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2QsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FB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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AtSerial } from "./at-serial";
|
|
2
|
+
import { Message, RawMessagePDU, SIM800COptions } from "./types";
|
|
3
|
+
export declare class SIM800C extends AtSerial {
|
|
4
|
+
private queue;
|
|
5
|
+
constructor(options: SIM800COptions);
|
|
6
|
+
reset(): Promise<void>;
|
|
7
|
+
rejectCalls(): Promise<void>;
|
|
8
|
+
private setPDUMode;
|
|
9
|
+
sendMessage(number: string, message: string): Promise<void>;
|
|
10
|
+
getAllPDUMessages(): Promise<RawMessagePDU[]>;
|
|
11
|
+
getMessages(): Promise<Message[]>;
|
|
12
|
+
getMessage(index: number): Promise<Message>;
|
|
13
|
+
deleteMessage(msg: Message): Promise<void>;
|
|
14
|
+
deleteAllMessages(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SIM800C = void 0;
|
|
7
|
+
const at_serial_1 = require("./at-serial");
|
|
8
|
+
const node_pdu_1 = require("node-pdu");
|
|
9
|
+
const p_queue_1 = __importDefault(require("p-queue"));
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
const console_stamp_1 = __importDefault(require("console-stamp"));
|
|
12
|
+
const logger = new console.Console(process.stdout, process.stderr);
|
|
13
|
+
const CTRL_Z = '\x1a';
|
|
14
|
+
class SIM800C extends at_serial_1.AtSerial {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
super(options);
|
|
17
|
+
this.queue = new p_queue_1.default({ concurrency: 1 });
|
|
18
|
+
(0, console_stamp_1.default)(logger, { level: options.logLevel || 'warn' });
|
|
19
|
+
this.on('_incomming_message', async (index) => {
|
|
20
|
+
const message = await this.getMessage(+index);
|
|
21
|
+
if (message) {
|
|
22
|
+
this.emit('message', message);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async reset() {
|
|
27
|
+
const c = await this.sendCommand('ATZ');
|
|
28
|
+
logger.debug(JSON.stringify(c));
|
|
29
|
+
await this.rejectCalls();
|
|
30
|
+
}
|
|
31
|
+
async rejectCalls() {
|
|
32
|
+
const c = await this.sendCommand('AT+GSMBUSY=1');
|
|
33
|
+
logger.debug(JSON.stringify(c));
|
|
34
|
+
}
|
|
35
|
+
async setPDUMode() {
|
|
36
|
+
const c = await this.sendCommand(`AT+CMGF=0`);
|
|
37
|
+
logger.debug(JSON.stringify(c));
|
|
38
|
+
}
|
|
39
|
+
async sendMessage(number, message) {
|
|
40
|
+
return this.queue.add(async () => {
|
|
41
|
+
message += "\u200B"; // Add zero-width space to the end of the message to force unicode as a workaround for the 7-bit bug in node-pdu.
|
|
42
|
+
let submit = new node_pdu_1.Submit(number, message);
|
|
43
|
+
submit.dataCodingScheme.setUseMessageClass(false);
|
|
44
|
+
const parts = submit.getPartStrings();
|
|
45
|
+
await this.reset();
|
|
46
|
+
await this.setPDUMode();
|
|
47
|
+
for (let i = 0; i < parts.length; i++) {
|
|
48
|
+
const pdu = parts[i];
|
|
49
|
+
const smscInfoLength = (parseInt(pdu.substring(0, 2), 16) + 1) * 2;
|
|
50
|
+
const userDataLength = (pdu.length - smscInfoLength) / 2;
|
|
51
|
+
const command = `AT+CMGS=${userDataLength} > ${pdu}`;
|
|
52
|
+
const terminator = `\r > ${CTRL_Z}`;
|
|
53
|
+
const c = await this.sendCommand(command, terminator);
|
|
54
|
+
logger.debug(JSON.stringify(c));
|
|
55
|
+
}
|
|
56
|
+
}).catch(e => {
|
|
57
|
+
throw e;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async getAllPDUMessages() {
|
|
61
|
+
await this.reset();
|
|
62
|
+
await this.setPDUMode();
|
|
63
|
+
const data = await this.sendCommand('AT+CMGL=4');
|
|
64
|
+
logger.debug(JSON.stringify(data));
|
|
65
|
+
const response = data.response.split('\r\n').filter(Boolean).slice(0, -1);
|
|
66
|
+
let messages = [];
|
|
67
|
+
let current = {};
|
|
68
|
+
for (const line of response) {
|
|
69
|
+
if (line.startsWith('+CMGL: ')) {
|
|
70
|
+
const [index] = line.replace(/^\+CMGL:\s/, '').split(',');
|
|
71
|
+
current = { index: +index, raw: '' };
|
|
72
|
+
messages.push(current);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
current.raw += line.replace(/\s/g, '');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return messages;
|
|
79
|
+
}
|
|
80
|
+
async getMessages() {
|
|
81
|
+
return this.queue.add(async () => {
|
|
82
|
+
const rawMessages = await this.getAllPDUMessages();
|
|
83
|
+
const parsedMessages = rawMessages.map(utils_1.parsePDUMessage);
|
|
84
|
+
const processedMessages = (0, utils_1.processMessages)(parsedMessages);
|
|
85
|
+
return processedMessages.map(utils_1.convertToCleanMessage);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async getMessage(index) {
|
|
89
|
+
const messages = await this.getMessages();
|
|
90
|
+
let message = messages.find(m => (m === null || m === void 0 ? void 0 : m.index) === index) || messages.find(m => { var _a; return (_a = m === null || m === void 0 ? void 0 : m.indexes) === null || _a === void 0 ? void 0 : _a.find(m2 => m2 === index); });
|
|
91
|
+
return message || undefined;
|
|
92
|
+
}
|
|
93
|
+
async deleteMessage(msg) {
|
|
94
|
+
return this.queue.add(async () => {
|
|
95
|
+
if (!msg)
|
|
96
|
+
return;
|
|
97
|
+
for (const i of msg.indexes) {
|
|
98
|
+
const c = await this.sendCommand(`AT+CMGD=${i}`);
|
|
99
|
+
logger.debug(JSON.stringify(c));
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
async deleteAllMessages() {
|
|
104
|
+
const c = this.queue.add(async () => this.sendCommand('AT+CMGD=1,4'));
|
|
105
|
+
logger.debug(JSON.stringify(c));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.SIM800C = SIM800C;
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltODAwYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2ltODAwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FBcUM7QUFDckMsdUNBQWdDO0FBQ2hDLHNEQUE0QjtBQUU1QixtQ0FBaUY7QUFDakYsa0VBQStCO0FBRS9CLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBRSxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUUsQ0FBQztBQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFFdEIsTUFBYSxPQUFRLFNBQVEsb0JBQVE7SUFHakMsWUFBWSxPQUF1QjtRQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIWCxVQUFLLEdBQUcsSUFBSSxpQkFBSyxDQUFDLEVBQUMsV0FBVyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUFJeEMsSUFBQSx1QkFBRSxFQUFFLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU0sRUFBQyxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsSUFBRyxPQUFPLEVBQUM7Z0JBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDakM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxD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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Stream = void 0;
|
|
4
|
+
const stream_1 = require("stream");
|
|
5
|
+
class Stream extends stream_1.Readable {
|
|
6
|
+
_read(_) {
|
|
7
|
+
// No implementation needed for pushing data manually
|
|
8
|
+
}
|
|
9
|
+
incomming(message = '') {
|
|
10
|
+
this.push(`>> ${message.toString().replace(/ /g, '\u2e31')}`);
|
|
11
|
+
}
|
|
12
|
+
outgoing(message = '') {
|
|
13
|
+
this.push(`<< ${message.replace(/ /g, '\u2e31')}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.Stream = Stream;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9zdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWdDO0FBRWhDLE1BQWEsTUFBTyxTQUFRLGlCQUFRO0lBQ2hDLEtBQUssQ0FBQyxDQUFTO1FBQ1gscURBQXFEO0lBQ3pELENBQUM7SUFDRCxTQUFTLENBQUMsT0FBTyxHQUFHLEVBQUU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsUUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKO0FBVkQsd0JBVUMifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Message, RawMessagePDU, TempMessageParsed } from "./types";
|
|
2
|
+
export declare function convertToCleanMessage(message?: TempMessageParsed): Message;
|
|
3
|
+
export declare function parsePDUMessage(msg: RawMessagePDU): TempMessageParsed;
|
|
4
|
+
export declare function isValidHex(hexString?: string): boolean;
|
|
5
|
+
export declare function getRelatedMessages(currentMessage: TempMessageParsed, allMessages: TempMessageParsed[]): TempMessageParsed[];
|
|
6
|
+
export declare function combineMessages(message: TempMessageParsed, parts: TempMessageParsed[]): TempMessageParsed;
|
|
7
|
+
export declare function processMessage(message: TempMessageParsed, allMessages: TempMessageParsed[]): TempMessageParsed | undefined;
|
|
8
|
+
export declare function processMessages(messages: TempMessageParsed[]): TempMessageParsed[];
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processMessages = exports.processMessage = exports.combineMessages = exports.getRelatedMessages = exports.isValidHex = exports.parsePDUMessage = exports.convertToCleanMessage = void 0;
|
|
4
|
+
const node_pdu_1 = require("node-pdu");
|
|
5
|
+
function convertToCleanMessage(message) {
|
|
6
|
+
var _a;
|
|
7
|
+
if (message) {
|
|
8
|
+
try {
|
|
9
|
+
const senderPrefix = message.message.sender.length < 10 ? '' : '+';
|
|
10
|
+
return {
|
|
11
|
+
index: message.index,
|
|
12
|
+
parts: message.message.parts || 1,
|
|
13
|
+
indexes: ((_a = message.message.parts_raw) === null || _a === void 0 ? void 0 : _a.map(m => m.index)) || [message.index],
|
|
14
|
+
text: message.message.text,
|
|
15
|
+
sender: senderPrefix + message.message.sender,
|
|
16
|
+
time: message.message.time,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
console.error(e, message);
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.convertToCleanMessage = convertToCleanMessage;
|
|
29
|
+
function parsePDUMessage(msg) {
|
|
30
|
+
if (isValidHex(msg.raw)) {
|
|
31
|
+
const pdu = (0, node_pdu_1.parse)(msg.raw);
|
|
32
|
+
return {
|
|
33
|
+
index: msg.index,
|
|
34
|
+
message: {
|
|
35
|
+
...pdu.data.parts[0],
|
|
36
|
+
time: pdu.serviceCenterTimeStamp.getIsoString(),
|
|
37
|
+
sender: pdu.address.phone,
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return {
|
|
43
|
+
error: 'Invalid hex string',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.parsePDUMessage = parsePDUMessage;
|
|
48
|
+
function isValidHex(hexString = '') {
|
|
49
|
+
const regex = /^[0-9A-Fa-f]+$/;
|
|
50
|
+
return regex.test(hexString);
|
|
51
|
+
}
|
|
52
|
+
exports.isValidHex = isValidHex;
|
|
53
|
+
function getRelatedMessages(currentMessage, allMessages) {
|
|
54
|
+
return allMessages
|
|
55
|
+
.filter(msg => { var _a, _b, _c, _d; return ((_b = (_a = msg.message) === null || _a === void 0 ? void 0 : _a.header) === null || _b === void 0 ? void 0 : _b.getPointer()) === ((_d = (_c = currentMessage.message) === null || _c === void 0 ? void 0 : _c.header) === null || _d === void 0 ? void 0 : _d.getPointer()); })
|
|
56
|
+
.sort((a, b) => { var _a, _b, _c, _d; return (((_b = (_a = a.message) === null || _a === void 0 ? void 0 : _a.header) === null || _b === void 0 ? void 0 : _b.getCurrent()) || 0) - (((_d = (_c = b.message) === null || _c === void 0 ? void 0 : _c.header) === null || _d === void 0 ? void 0 : _d.getCurrent()) || 0); });
|
|
57
|
+
}
|
|
58
|
+
exports.getRelatedMessages = getRelatedMessages;
|
|
59
|
+
function combineMessages(message, parts) {
|
|
60
|
+
var _a;
|
|
61
|
+
return {
|
|
62
|
+
...message,
|
|
63
|
+
message: {
|
|
64
|
+
...message.message,
|
|
65
|
+
text: parts.map(part => part === null || part === void 0 ? void 0 : part.message.text).join(''),
|
|
66
|
+
multipart: true,
|
|
67
|
+
parts: (_a = message.message.header) === null || _a === void 0 ? void 0 : _a.getSegments(),
|
|
68
|
+
parts_raw: parts
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
exports.combineMessages = combineMessages;
|
|
73
|
+
function processMessage(message, allMessages) {
|
|
74
|
+
if (!message || message.error || !message.message || !message.message.header) {
|
|
75
|
+
return { ...message, message: { ...message === null || message === void 0 ? void 0 : message.message, multipart: false, parts: 1 } };
|
|
76
|
+
}
|
|
77
|
+
if (message.message.header.getCurrent() === 1) {
|
|
78
|
+
const relatedMessages = getRelatedMessages(message, allMessages);
|
|
79
|
+
if (relatedMessages.length !== message.message.header.getSegments()) {
|
|
80
|
+
// Not all parts are present
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
return combineMessages(message, relatedMessages);
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
exports.processMessage = processMessage;
|
|
88
|
+
function processMessages(messages) {
|
|
89
|
+
return messages
|
|
90
|
+
.map(message => processMessage(message, messages))
|
|
91
|
+
.filter(message => message !== undefined);
|
|
92
|
+
}
|
|
93
|
+
exports.processMessages = processMessages;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVDQUF3QztBQUV4QyxTQUFnQixxQkFBcUIsQ0FBQyxPQUEyQjs7SUFDN0QsSUFBRyxPQUFPLEVBQUU7UUFDUixJQUFJO1lBQ0EsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDbkUsT0FBTztnQkFDSCxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQSxNQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUywwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN4RSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUMxQixNQUFNLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTztnQkFDOUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSTthQUNsQixDQUFDO1NBQ2hCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMxQixPQUFPLEVBQWEsQ0FBQztTQUN4QjtLQUNKO1NBQU07UUFDSCxPQUFPLEVBQWEsQ0FBQztLQUN4QjtBQUNMLENBQUM7QUFuQkQsc0RBbUJDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLEdBQWtCO0lBQzlDLElBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENB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
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starak/sim800c",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Simple library for sending and receiving messages with sim800c",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist/**/*"
|
|
8
8
|
],
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "tsc"
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "nodemon local.ts"
|
|
11
12
|
},
|
|
12
13
|
"author": {
|
|
13
14
|
"name": "Ståle Raknes",
|
|
@@ -22,13 +23,15 @@
|
|
|
22
23
|
"dependencies": {
|
|
23
24
|
"console-stamp": "^3.1.1",
|
|
24
25
|
"eventemitter3": "^5.0.0",
|
|
25
|
-
"node-pdu": "^
|
|
26
|
+
"node-pdu": "^2.0.2",
|
|
26
27
|
"p-queue": "^6.6.2",
|
|
27
|
-
"pdu.ts": "^1.1.4",
|
|
28
28
|
"serialport": "^10.5.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
+
"@starak/sim800c": "^0.0.20",
|
|
31
32
|
"@types/node": "^17.0.21",
|
|
33
|
+
"dotenv": "^16.3.1",
|
|
34
|
+
"nodemon": "^3.0.1",
|
|
32
35
|
"ts-node": "^10.9.1",
|
|
33
36
|
"typescript": "^4.9.5"
|
|
34
37
|
},
|
package/dist/debug.d.ts
DELETED
package/dist/debug.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.logger_in = exports.logger_out = void 0;
|
|
7
|
-
const console_stamp_1 = __importDefault(require("console-stamp"));
|
|
8
|
-
exports.logger_out = new console.Console(process.stdout, process.stderr);
|
|
9
|
-
exports.logger_in = new console.Console(process.stdout, process.stderr);
|
|
10
|
-
(0, console_stamp_1.default)(exports.logger_out, {
|
|
11
|
-
format: '([<-]).white :debug.cyan',
|
|
12
|
-
level: process.env.DEBUG_SIM ? 'debug' : 'error',
|
|
13
|
-
tokens: {
|
|
14
|
-
debug: ({ msg }) => msg.replace(/\r\n/g, '\n')
|
|
15
|
-
.replace(/\r/g, '')
|
|
16
|
-
},
|
|
17
|
-
preventDefaultMessage: true
|
|
18
|
-
});
|
|
19
|
-
(0, console_stamp_1.default)(exports.logger_in, {
|
|
20
|
-
format: '([->]).white :debug.green',
|
|
21
|
-
level: process.env.DEBUG_SIM ? 'debug' : 'error',
|
|
22
|
-
tokens: {
|
|
23
|
-
debug: ({ msg }) => msg.replace(/\r\n/g, '\n')
|
|
24
|
-
.replace(/\r/g, '')
|
|
25
|
-
},
|
|
26
|
-
preventDefaultMessage: true
|
|
27
|
-
});
|
|
28
|
-
exports.logger_in.debug('Debugging is enabled');
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0VBQTBDO0FBRTdCLFFBQUEsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRSxRQUFBLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0UsSUFBQSx1QkFBYSxFQUFDLGtCQUFVLEVBQUU7SUFDdEIsTUFBTSxFQUFFLDBCQUEwQjtJQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztJQUNoRCxNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsQ0FBQyxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7YUFDdkMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7S0FDMUI7SUFDRCxxQkFBcUIsRUFBRSxJQUFJO0NBQzlCLENBQUMsQ0FBQztBQUVILElBQUEsdUJBQWEsRUFBQyxpQkFBUyxFQUFFO0lBQ3JCLE1BQU0sRUFBRSwyQkFBMkI7SUFDbkMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87SUFDaEQsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO2FBQ3ZDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0tBQzFCO0lBQ0QscUJBQXFCLEVBQUUsSUFBSTtDQUM5QixDQUFDLENBQUM7QUFFSCxpQkFBUyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDIn0=
|