53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import got from 'got';
|
|
import rfidParser from './rfidParser.js';
|
|
import newPallet from './newPallet.js';
|
|
import debug from '../util/debugStream.js';
|
|
import counter from './counter.js';
|
|
|
|
let interval;
|
|
let counterInterval;
|
|
|
|
export default async(conf, cb) => {
|
|
let rfidbuffer = new Set();
|
|
let rfidbufferExtend = [];
|
|
|
|
const stream = got.stream(`http://${conf.ip}/api/v1/data/stream`);
|
|
|
|
stream
|
|
.on('data', async value => {
|
|
const parsed = await rfidParser(value);
|
|
|
|
if (!parsed.codes.size) return;
|
|
rfidbuffer = new Set([...rfidbuffer, ...parsed.codes]);
|
|
rfidbufferExtend = rfidbufferExtend.concat(parsed.extended);
|
|
|
|
debug({codes: rfidbuffer, extended: rfidbufferExtend}, conf);
|
|
|
|
if (rfidbuffer.size) {
|
|
clearTimeout(interval);
|
|
interval = null;
|
|
interval = setTimeout(createPallet, conf.interval);
|
|
|
|
if (!counterInterval)
|
|
counterInterval = setTimeout(counterIntervalManager, conf.counterInterval);
|
|
}
|
|
})
|
|
.on('error', e => {
|
|
cb(e);
|
|
});
|
|
|
|
function createPallet() {
|
|
clearTimeout(interval);
|
|
|
|
newPallet(rfidbuffer, conf.arcId);
|
|
|
|
rfidbuffer = new Set();
|
|
rfidbufferExtend = [];
|
|
}
|
|
|
|
function counterIntervalManager() {
|
|
counterInterval = null;
|
|
counter(rfidbuffer.size, conf.arcId);
|
|
}
|
|
};
|