2017-12-12 19:24:01 -07:00
|
|
|
/* eslint-env worker */
|
|
|
|
/* eslint-disable no-restricted-globals */
|
2019-10-07 17:11:53 -06:00
|
|
|
import Sentry from '../logging/Sentry';
|
|
|
|
import DBC from '../models/can/dbc';
|
|
|
|
import DbcUtils from '../utils/dbc';
|
2017-06-30 19:53:31 -06:00
|
|
|
|
2019-10-07 17:11:53 -06:00
|
|
|
const window = self;
|
2017-06-13 18:40:05 -06:00
|
|
|
|
2017-06-23 19:29:31 -06:00
|
|
|
function reparseEntry(entry, address, dbc, canStartTime, prevMsgEntry) {
|
2019-10-07 17:11:53 -06:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2019-10-07 17:11:53 -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);
|
2019-10-07 17:11:53 -06:00
|
|
|
Object.keys(messages).forEach((messageId) => {
|
2017-12-12 19:24:01 -07:00
|
|
|
const message = messages[messageId];
|
2019-10-07 17:11:53 -06:00
|
|
|
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-06-23 19:29:31 -06:00
|
|
|
|
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();
|
|
|
|
};
|