From 605a791f6340355bce11509ce556af252f526474 Mon Sep 17 00:00:00 2001 From: J T Date: Thu, 23 Oct 2025 05:36:19 -0700 Subject: [PATCH 1/4] reduce depends --- kissTNC.js | 34 ++++++++++++++++++++++------------ package.json | 1 - 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/kissTNC.js b/kissTNC.js index d12b0f4..77b80a7 100644 --- a/kissTNC.js +++ b/kissTNC.js @@ -1,6 +1,6 @@ var util = require("util"); var events = require("events"); -var SerialPort = require("serialport").SerialPort; +//var SerialPort = require("serialport").SerialPort; var ax25 = require("./index.js"); var kissTNC = function(args) { @@ -10,6 +10,7 @@ var kissTNC = function(args) { var properties = { 'serialPort' : 0, + 'activePort' : 0, 'baudRate' : 0, 'txDelay' : 50, 'persistence' : 63, @@ -163,6 +164,7 @@ var kissTNC = function(args) { this.serialPort = args.serialPort; this.baudRate = args.baudRate; + this.serialHandle = args.serialHandle var dataBuffer = []; @@ -181,18 +183,22 @@ function _appendBuffer(buffer1, buffer2) { return tmp; }; - var sendFrame = function(command, data) { + var sendFrame = (command, data, port=null)=>{ //if(!(data instanceof Uint8Array)) // throw "ax25.kissTNC: Invalid send data"; /*data.unshift(command); data.unshift(ax25.kissDefs.FEND); data.push(ax25.kissDefs.FEND);*/ + if(port==null){ + port = properites.activePort + } + let front = new Uint8Array([ax25.kissDefs.FEND, command]) let back = new Uint8Array([ax25.kissDefs.FEND]) let finalData = _appendBuffer(front, _appendBuffer(data, back)) - serialHandle.write( + this.serialHandle.write( finalData, function(err, result) { if(err) @@ -203,7 +209,7 @@ function _appendBuffer(buffer1, buffer2) { ); } - var dataHandler = function(data) { + var dataHandler = (data) => { var str = ""; var escaped = false; for(var d = 0; d < data.length; d++) { @@ -218,7 +224,11 @@ function _appendBuffer(buffer1, buffer2) { if(escaped || data[d] != ax25.kissDefs.FEND) dataBuffer.push(data[d]); if(!escaped && data[d] == ax25.kissDefs.FEND && dataBuffer.length > 1) { - self.emit("frame", dataBuffer.slice(1)); + self.emit("frame", { + port: (dataBuffer[0] >> 4) | 0xf, + command: dataBuffer[0] | 0xf, + data: dataBuffer.slice(1) + }); dataBuffer = []; } if(escaped) @@ -226,21 +236,21 @@ function _appendBuffer(buffer1, buffer2) { } } - var serialHandle = new SerialPort( + /*var serialHandle = new SerialPort( { path: properties.serialPort, 'baudRate' : properties.baudRate } - ); + );*/ - serialHandle.on( + this.serialHandle.on( "error", function(err) { self.emit("error", "kissTNC: Serial port error: " + err); } ); - serialHandle.on( + this.serialHandle.on( "open", function() { for(var a in args) { @@ -260,14 +270,14 @@ function _appendBuffer(buffer1, buffer2) { } ); - serialHandle.on( + this.serialHandle.on( "close", function() { self.emit("closed"); } ); - serialHandle.on( + this.serialHandle.on( "data", function(data) { dataHandler(data); @@ -289,7 +299,7 @@ function _appendBuffer(buffer1, buffer2) { } this.close = function() { - serialHandle.close(); + this.serialHandle.close(); } } diff --git a/package.json b/package.json index 506b818..89b8d6a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "url" : "https://github.com/echicken/node-ax25.git" }, "dependencies" : { - "serialport" : "^13.0.0" }, "engines" : { "node" : ">= 0.10.24" From 68086d06ef0842262b9c7ae0f7223b39a4d9a29d Mon Sep 17 00:00:00 2001 From: J T Date: Thu, 23 Oct 2025 06:04:20 -0700 Subject: [PATCH 2/4] detect client mode --- kissTNC.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/kissTNC.js b/kissTNC.js index 77b80a7..38d288f 100644 --- a/kissTNC.js +++ b/kissTNC.js @@ -209,9 +209,15 @@ function _appendBuffer(buffer1, buffer2) { ); } - var dataHandler = (data) => { + var dataHandler = (data=null) => { var str = ""; var escaped = false; + + if(!data && this.serialHandle.readBytes){ + let value = this.serialHandle.readBytes() + data = value + } + for(var d = 0; d < data.length; d++) { if(data[d] == ax25.kissDefs.FESC) { escaped = true; @@ -279,7 +285,7 @@ function _appendBuffer(buffer1, buffer2) { this.serialHandle.on( "data", - function(data) { + (data)=> { dataHandler(data); } ); From ca27b8d6b407e60305dac27d33da3b2309d3b4ba Mon Sep 17 00:00:00 2001 From: J T Date: Thu, 23 Oct 2025 06:06:42 -0700 Subject: [PATCH 3/4] typo --- kissTNC.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kissTNC.js b/kissTNC.js index 38d288f..b5d7c97 100644 --- a/kissTNC.js +++ b/kissTNC.js @@ -191,7 +191,7 @@ function _appendBuffer(buffer1, buffer2) { data.push(ax25.kissDefs.FEND);*/ if(port==null){ - port = properites.activePort + port = properties.activePort } let front = new Uint8Array([ax25.kissDefs.FEND, command]) From 22e74f878282eef800d2a81aa2176365a1d0f237 Mon Sep 17 00:00:00 2001 From: J T Date: Thu, 23 Oct 2025 06:32:39 -0700 Subject: [PATCH 4/4] incorrect bitmasking --- kissTNC.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kissTNC.js b/kissTNC.js index b5d7c97..29062ce 100644 --- a/kissTNC.js +++ b/kissTNC.js @@ -231,8 +231,8 @@ function _appendBuffer(buffer1, buffer2) { dataBuffer.push(data[d]); if(!escaped && data[d] == ax25.kissDefs.FEND && dataBuffer.length > 1) { self.emit("frame", { - port: (dataBuffer[0] >> 4) | 0xf, - command: dataBuffer[0] | 0xf, + port: (dataBuffer[0] >> 4) & 0xf, + command: dataBuffer[0] & 0xf, data: dataBuffer.slice(1) }); dataBuffer = [];