UNPKG

modbus-connect

Version:

Modbus RTU over Web Serial and Node.js SerialPort

59 lines (52 loc) 1.84 kB
// transport/factory.js const logger = require('../logger.js'); async function createTransport(type, options = {}) { logger.setTransportType(type); try { switch (type) { // Creating a Transport for the Node.js Environment case 'node': { const path = options.port || options.path; if (!path) { throw new Error('Missing "port" (or "path") option for node transport'); } const { NodeSerialTransport } = await import('./node-serialport.js'); const rest = { ...options }; delete rest.port; delete rest.path; return new NodeSerialTransport(path, rest); } // Creating a Transport for the Web Environment case 'web': { if (!options.port) { throw new Error('Missing "port" option for web transport'); } const { WebSerialTransport } = await import('./web-serialport.js'); const portInstance = options.port; const rest = { ...options }; delete rest.port; return new WebSerialTransport(portInstance, rest); } // Creating a TCP Transport for the Node Environment case 'tcp': { const { TcpSerialTransport } = await import('./tcp-serialport.js'); const host = options.host; if (!host) { throw new Error('Missing "host" option for tcp transport'); } const rest = { ...options }; delete rest.host; return new TcpSerialTransport(host, rest); } // Unknown or unsupported type default: throw new Error(`Unknown transport type: ${type}`); } } catch (err) { logger.error(`Failed to create transport of type "${type}": ${err.message}`); throw err; } } module.exports = { createTransport }