add slip decoding to readosc

This commit is contained in:
2025-05-21 20:09:31 -05:00
parent d6883ffae3
commit b1e74c9eae
3 changed files with 36 additions and 24 deletions
+2 -1
View File
@@ -21,6 +21,7 @@
"license": "MIT",
"dependencies": {
"@jwetzell/osc": "1.6.0",
"commander": "^14.0.0"
"commander": "^14.0.0",
"slip": "1.0.2"
}
}
+28 -10
View File
@@ -1,23 +1,37 @@
#!/usr/bin/env node
const { program } = require('commander');
const { program, Option } = require('commander');
const osc = require('@jwetzell/osc');
const packageInfo = require('../package.json');
const slip = require('slip');
program.name(packageInfo.name);
program.version(packageInfo.version);
program.description('simple util to read osc packets from stdin');
program.action(() => {
program.addOption(new Option('--slip', 'slip encode message').default(false));
program.action((options) => {
const slipDecoder = new slip.Decoder({
onMessage: (msg) =>{
const [message, bytesAfterMessage] = osc.messageFromBuffer(msg);
printOSCMessage(message)
},
maxMessageSize: 209715200,
bufferSize: 2048
});
process.stdin.on('data', (data) => {
try {
let remainingBytes = data;
while (remainingBytes.length > 0) {
try {
const [message, bytesAfterMessage] = osc.messageFromBuffer(remainingBytes);
remainingBytes = bytesAfterMessage;
console.log(JSON.stringify(message));
} catch (error) {
console.error({ error: error.toString() });
if (options.slip){
slipDecoder.decode(data)
} else {
let remainingBytes = data;
while (remainingBytes.length > 0) {
try {
const [message, bytesAfterMessage] = osc.messageFromBuffer(remainingBytes);
remainingBytes = bytesAfterMessage;
printOSCMessage(message)
} catch (error) {
console.error({ error: error.toString() });
}
}
}
} catch (error) {
@@ -26,3 +40,7 @@ program.action(() => {
});
});
program.parse();
function printOSCMessage(oscMessage) {
console.log(JSON.stringify(oscMessage));
}
+6 -13
View File
@@ -25,7 +25,7 @@
"version": "0.1.0",
"license": "MIT",
"dependencies": {
"@jwetzell/osc": "0.2.2",
"@jwetzell/osc": "1.6.0",
"commander": "^14.0.0",
"slip": "^1.0.2"
},
@@ -33,27 +33,18 @@
"makeosc": "src/main.js"
}
},
"apps/makeosc/node_modules/@jwetzell/osc": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@jwetzell/osc/-/osc-0.2.2.tgz",
"integrity": "sha512-HobCAMnDDSrKfrMBrF5ySA8fKO8Qjkn2HDKysuV51sHrpXABKJFQt5OemIQgbnSMNWU0kZ0+FF9xRrivHHaDTg=="
},
"apps/readosc": {
"version": "0.2.0",
"license": "MIT",
"dependencies": {
"@jwetzell/osc": "1.0.0",
"commander": "^14.0.0"
"@jwetzell/osc": "1.6.0",
"commander": "^14.0.0",
"slip": "1.0.2"
},
"bin": {
"readosc": "src/main.js"
}
},
"apps/readosc/node_modules/@jwetzell/osc": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@jwetzell/osc/-/osc-1.0.0.tgz",
"integrity": "sha512-242gA8R4k9vBbRJydqoKAG1WiQ9BUO6tFoemuC3eywRt5ns5qrlzIBEIwX0poQyMZdZB7XyzvR5rtbFC5tadKg=="
},
"apps/sendosc": {
"version": "1.0.1",
"license": "MIT",
@@ -1860,6 +1851,8 @@
},
"node_modules/slip": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/slip/-/slip-1.0.2.tgz",
"integrity": "sha512-XrcHe3NAcyD3wO+O4I13RcS4/3AF+S9RvGNj9JhJeS02HyImwD2E3QWLrmn9hBfL+fB6yapagwxRkeyYzhk98g==",
"license": "(MIT OR GPL-2.0)"
},
"node_modules/string-width": {