@ntrip/caster
Version:
NTRIP caster
73 lines (72 loc) • 2.76 kB
JavaScript
;
/*
* This file is part of the @ntrip/caster distribution (https://github.com/node-ntrip/caster).
* Copyright (c) 2020 Nebojsa Cvetkovic.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SerialTransport = void 0;
const serialport_1 = __importDefault(require("serialport"));
const transport_1 = require("../transport");
class SerialTransport extends transport_1.SingleConnectionTransport {
constructor(manager, options) {
super(manager, options);
this.options = options;
}
static new(options) {
return (caster) => new SerialTransport(caster, options);
}
open() {
this.serial = new serialport_1.default(this.options.port, { ...this.options.portOptions, autoOpen: false });
new Promise((resolve, reject) => {
this.serial.once('open', resolve);
this.serial.once('error', reject);
}).then(() => {
if (this.options.portOptions.disableRtsCts)
this.serial.set({ dtr: false, rts: false });
try {
this.connect({
type: this.options.type,
mountpoint: this.options.mountpoint,
source: this.options.port,
stream: this.serial
});
this.emit('open');
}
catch (err) {
this.emit('error', err);
}
}).catch((err) => {
this.emit('error', err);
});
this.serial.open();
}
close() {
var _a;
super.close();
(_a = this.serial) === null || _a === void 0 ? void 0 : _a.close(() => this.emit('close'));
}
static list() {
return serialport_1.default.list();
}
get description() {
var _a;
return `serial[baud=${(_a = this.options.portOptions.baudRate) !== null && _a !== void 0 ? _a : 115200}]`;
}
}
exports.SerialTransport = SerialTransport;