diff --git a/apps/readosc/package.json b/apps/readosc/package.json index 7c58005..4390a5e 100644 --- a/apps/readosc/package.json +++ b/apps/readosc/package.json @@ -21,6 +21,7 @@ "license": "MIT", "dependencies": { "@jwetzell/osc": "1.6.0", - "commander": "^14.0.0" + "commander": "^14.0.0", + "slip": "1.0.2" } } diff --git a/apps/readosc/src/main.js b/apps/readosc/src/main.js index 8e5d20e..ca3a5ac 100755 --- a/apps/readosc/src/main.js +++ b/apps/readosc/src/main.js @@ -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)); +} diff --git a/package-lock.json b/package-lock.json index 9239dbe..3270e55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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": {