mirror of
https://github.com/jwetzell/osc-js.git
synced 2026-08-18 13:33:56 +00:00
add slip decoding to readosc
This commit is contained in:
+28
-10
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user