cabana/src/workers/message-parser.worker.js

46 lines
1.1 KiB
JavaScript
Raw Normal View History

2017-12-12 19:24:01 -07:00
/* eslint-env worker */
/* eslint-disable no-restricted-globals */
import Sentry from '../logging/Sentry';
import DBC from '../models/can/dbc';
import DbcUtils from '../utils/dbc';
2017-06-30 19:53:31 -06:00
const window = self;
2017-06-13 18:40:05 -06:00
function reparseEntry(entry, address, dbc, canStartTime, prevMsgEntry) {
const data = Buffer.from(entry.hexData, 'hex');
2017-12-12 19:24:01 -07:00
return DbcUtils.parseMessage(
dbc,
entry.time,
address,
data,
canStartTime,
prevMsgEntry
);
2017-06-13 18:40:05 -06:00
}
self.onmessage = function (e) {
2017-12-12 19:24:01 -07:00
const { messages, dbcText, canStartTime } = e.data;
const dbc = new DBC(dbcText);
Object.keys(messages).forEach((messageId) => {
2017-12-12 19:24:01 -07:00
const message = messages[messageId];
for (let i = 0; i < message.entries.length; i++) {
2017-12-12 19:24:01 -07:00
const entry = message.entries[i];
const prevMsgEntry = i > 0 ? message.entries[i - 1] : null;
2017-06-13 18:40:05 -06:00
2017-12-12 19:24:01 -07:00
const { msgEntry } = reparseEntry(
entry,
message.address,
dbc,
canStartTime,
prevMsgEntry
);
2017-12-12 19:24:01 -07:00
message.entries[i] = msgEntry;
}
messages[messageId] = message;
});
2017-06-13 18:40:05 -06:00
2017-12-12 19:24:01 -07:00
self.postMessage(messages);
self.close();
};