@starak/sim800c 0.0.5 → 0.0.6
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/README.md +2 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +30 -22
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -29,8 +29,9 @@ export declare class GSM extends EventEmitter {
|
|
|
29
29
|
private setPDUMode;
|
|
30
30
|
private setRecipient;
|
|
31
31
|
private setMessage;
|
|
32
|
+
rejectCalls(): Promise<void>;
|
|
32
33
|
sendMessage(number: string, message: string): Promise<void>;
|
|
33
|
-
deleteMessage(
|
|
34
|
+
deleteMessage(msg: GsmMessage): Promise<void>;
|
|
34
35
|
deleteAllMessages(): Promise<void>;
|
|
35
36
|
private Messages;
|
|
36
37
|
getMessages(): Promise<GsmMessage[]>;
|
package/dist/index.js
CHANGED
|
@@ -22,16 +22,27 @@ const events_1 = __importDefault(require("events"));
|
|
|
22
22
|
const serialport_1 = require("serialport");
|
|
23
23
|
const pdu_ts_1 = require("pdu.ts");
|
|
24
24
|
const console_stamp_1 = __importDefault(require("console-stamp"));
|
|
25
|
-
|
|
26
|
-
(
|
|
27
|
-
|
|
25
|
+
const logger_out = new console.Console(process.stdout, process.stderr);
|
|
26
|
+
const logger_in = new console.Console(process.stdout, process.stderr);
|
|
27
|
+
(0, console_stamp_1.default)(logger_out, {
|
|
28
|
+
format: '([<-]).white :debug.red',
|
|
28
29
|
level: process.env.DEBUG_SIM ? 'debug' : 'error',
|
|
29
30
|
tokens: {
|
|
30
31
|
debug: ({ msg }) => msg.replace(/\r\n/g, '\n')
|
|
32
|
+
.replace(/\r/g, '')
|
|
31
33
|
},
|
|
32
34
|
preventDefaultMessage: true
|
|
33
35
|
});
|
|
34
|
-
|
|
36
|
+
(0, console_stamp_1.default)(logger_in, {
|
|
37
|
+
format: '([->]).white :debug.green',
|
|
38
|
+
level: process.env.DEBUG_SIM ? 'debug' : 'error',
|
|
39
|
+
tokens: {
|
|
40
|
+
debug: ({ msg }) => msg.replace(/\r\n/g, '\n')
|
|
41
|
+
.replace(/\r/g, '')
|
|
42
|
+
},
|
|
43
|
+
preventDefaultMessage: true
|
|
44
|
+
});
|
|
45
|
+
logger_in.debug('Debugging is enabled');
|
|
35
46
|
__exportStar(require("serialport"), exports);
|
|
36
47
|
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
37
48
|
class GSM extends events_1.default {
|
|
@@ -60,7 +71,7 @@ class GSM extends events_1.default {
|
|
|
60
71
|
this.emit('ready');
|
|
61
72
|
});
|
|
62
73
|
this.port.on('data', (data) => {
|
|
63
|
-
|
|
74
|
+
logger_in.debug(data.toString());
|
|
64
75
|
this.emit('data', data);
|
|
65
76
|
setImmediate(() => this.onDataHandler(data));
|
|
66
77
|
});
|
|
@@ -90,6 +101,7 @@ class GSM extends events_1.default {
|
|
|
90
101
|
};
|
|
91
102
|
let data = '';
|
|
92
103
|
port.on('data', listener);
|
|
104
|
+
logger_out.debug(command + terminator);
|
|
93
105
|
port.write(`${command}${terminator}`);
|
|
94
106
|
});
|
|
95
107
|
}
|
|
@@ -108,22 +120,23 @@ class GSM extends events_1.default {
|
|
|
108
120
|
async setMessage(message) {
|
|
109
121
|
return this.sendCommand(`${message}`, '\x1a');
|
|
110
122
|
}
|
|
123
|
+
async rejectCalls() {
|
|
124
|
+
return this.sendCommand('AT+GSMBUSY=1');
|
|
125
|
+
}
|
|
111
126
|
async sendMessage(number, message) {
|
|
112
127
|
await this.reset();
|
|
113
128
|
await this.setTextMode();
|
|
114
129
|
await this.setRecipient(number);
|
|
115
130
|
await this.setMessage(message);
|
|
116
131
|
}
|
|
117
|
-
async deleteMessage(
|
|
132
|
+
async deleteMessage(msg) {
|
|
118
133
|
var _a;
|
|
119
|
-
const messages = await this.getMessages();
|
|
120
|
-
const current = messages.find(m => m.index === index);
|
|
121
134
|
let indexes = [];
|
|
122
|
-
if (
|
|
123
|
-
indexes = ((_a =
|
|
135
|
+
if (msg && msg.message.multipart) {
|
|
136
|
+
indexes = ((_a = msg.message.parts_raw) === null || _a === void 0 ? void 0 : _a.map(m => m.index)) || [];
|
|
124
137
|
}
|
|
125
|
-
else if (
|
|
126
|
-
indexes = [index];
|
|
138
|
+
else if (msg) {
|
|
139
|
+
indexes = [msg.index];
|
|
127
140
|
}
|
|
128
141
|
for (const i of indexes) {
|
|
129
142
|
await this.sendCommand(`AT+CMGD=${i}`);
|
|
@@ -137,20 +150,14 @@ class GSM extends events_1.default {
|
|
|
137
150
|
await this.setPDUMode();
|
|
138
151
|
const { port } = this;
|
|
139
152
|
return new Promise((resolve, reject) => {
|
|
140
|
-
let init = false;
|
|
141
153
|
const listener = async (d) => {
|
|
142
154
|
data += d.toString();
|
|
143
155
|
const lines = data.split('\r\n');
|
|
144
156
|
data = lines.pop() || '';
|
|
145
157
|
for (const line of lines) {
|
|
146
158
|
if (line.includes('OK')) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
port.removeListener('data', listener);
|
|
152
|
-
resolve(msgs.map(m => ({ ...m, message: pdu_ts_1.PDUParser.Parse(m.raw) })));
|
|
153
|
-
}
|
|
159
|
+
port.removeListener('data', listener);
|
|
160
|
+
resolve(msgs.map(m => ({ ...m, message: pdu_ts_1.PDUParser.Parse(m.raw) })));
|
|
154
161
|
}
|
|
155
162
|
else if (line.includes('ERROR')) {
|
|
156
163
|
port.removeListener('data', listener);
|
|
@@ -162,7 +169,6 @@ class GSM extends events_1.default {
|
|
|
162
169
|
.map(s => s.replace(/"/g, ''));
|
|
163
170
|
current = { index: +index, state, raw, message: {} };
|
|
164
171
|
msgs.push(current);
|
|
165
|
-
init = true;
|
|
166
172
|
}
|
|
167
173
|
else {
|
|
168
174
|
current.raw += line;
|
|
@@ -171,6 +177,7 @@ class GSM extends events_1.default {
|
|
|
171
177
|
};
|
|
172
178
|
let data = '', msgs = [], current = {};
|
|
173
179
|
port.on('data', listener);
|
|
180
|
+
logger_out.debug('AT+CMGL=4\r');
|
|
174
181
|
port.write('AT+CMGL=4\r');
|
|
175
182
|
});
|
|
176
183
|
}
|
|
@@ -199,9 +206,10 @@ class GSM extends events_1.default {
|
|
|
199
206
|
}).filter(m => m !== undefined);
|
|
200
207
|
}
|
|
201
208
|
async getMessage(index) {
|
|
209
|
+
// TODO: implement AT+CMGR - Read Message
|
|
202
210
|
const messages = await this.getMessages();
|
|
203
211
|
return messages.find(m => m.index === index);
|
|
204
212
|
}
|
|
205
213
|
}
|
|
206
214
|
exports.GSM = GSM;
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBa0M7QUFDbEMsMkNBQXNDO0FBQ3RDLG1DQUE2QztBQUM3QyxrRUFBMEM7QUFHMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZFLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUV0RSxJQUFBLHVCQUFhLEVBQUMsVUFBVSxFQUFFO0lBQ3RCLE1BQU0sRUFBRSx5QkFBeUI7SUFDakMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87SUFDaEQsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO2FBQ3ZDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0tBQzFCO0lBQ0QscUJBQXFCLEVBQUUsSUFBSTtDQUM5QixDQUFDLENBQUM7QUFFSCxJQUFBLHVCQUFhLEVBQUMsU0FBUyxFQUFFO0lBQ3JCLE1BQU0sRUFBRSwyQkFBMkI7SUFDbkMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87SUFDaEQsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFP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
|