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", "license": "MIT",
"dependencies": { "dependencies": {
"@jwetzell/osc": "1.6.0", "@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 #!/usr/bin/env node
const { program } = require('commander'); const { program, Option } = require('commander');
const osc = require('@jwetzell/osc'); const osc = require('@jwetzell/osc');
const packageInfo = require('../package.json'); const packageInfo = require('../package.json');
const slip = require('slip');
program.name(packageInfo.name); program.name(packageInfo.name);
program.version(packageInfo.version); program.version(packageInfo.version);
program.description('simple util to read osc packets from stdin'); 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) => { process.stdin.on('data', (data) => {
try { try {
let remainingBytes = data; if (options.slip){
while (remainingBytes.length > 0) { slipDecoder.decode(data)
try { } else {
const [message, bytesAfterMessage] = osc.messageFromBuffer(remainingBytes); let remainingBytes = data;
remainingBytes = bytesAfterMessage; while (remainingBytes.length > 0) {
console.log(JSON.stringify(message)); try {
} catch (error) { const [message, bytesAfterMessage] = osc.messageFromBuffer(remainingBytes);
console.error({ error: error.toString() }); remainingBytes = bytesAfterMessage;
printOSCMessage(message)
} catch (error) {
console.error({ error: error.toString() });
}
} }
} }
} catch (error) { } catch (error) {
@@ -26,3 +40,7 @@ program.action(() => {
}); });
}); });
program.parse(); program.parse();
function printOSCMessage(oscMessage) {
console.log(JSON.stringify(oscMessage));
}
+6 -13
View File
@@ -25,7 +25,7 @@
"version": "0.1.0", "version": "0.1.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@jwetzell/osc": "0.2.2", "@jwetzell/osc": "1.6.0",
"commander": "^14.0.0", "commander": "^14.0.0",
"slip": "^1.0.2" "slip": "^1.0.2"
}, },
@@ -33,27 +33,18 @@
"makeosc": "src/main.js" "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": { "apps/readosc": {
"version": "0.2.0", "version": "0.2.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@jwetzell/osc": "1.0.0", "@jwetzell/osc": "1.6.0",
"commander": "^14.0.0" "commander": "^14.0.0",
"slip": "1.0.2"
}, },
"bin": { "bin": {
"readosc": "src/main.js" "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": { "apps/sendosc": {
"version": "1.0.1", "version": "1.0.1",
"license": "MIT", "license": "MIT",
@@ -1860,6 +1851,8 @@
}, },
"node_modules/slip": { "node_modules/slip": {
"version": "1.0.2", "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)" "license": "(MIT OR GPL-2.0)"
}, },
"node_modules/string-width": { "node_modules/string-width": {