Skip to content

Commit 4cd179b

Browse files
committed
add tommost support
1 parent 61dc6d8 commit 4cd179b

File tree

5 files changed

+44
-5
lines changed

5 files changed

+44
-5
lines changed

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"can": [
1515
"kvaser",
1616
"peak",
17-
"zlg"
17+
"zlg",
18+
"toomoss"
1819
]
1920
}
2021
},

src/main/docan/can.ts

+8
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import path from "path";
55
import { ZLG_CAN } from "./zlg";
66
import { KVASER_CAN } from "./kvaser";
77
import { SIMULATE_CAN } from "./simulate";
8+
import { TOOMOSS_CAN } from "./toomoss";
89
import { CanBase, CanBaseInfo } from "../share/can";
910

1011

1112
const libPath = path.dirname(dllLib)
1213
PEAK_TP.loadDllPath(libPath)
1314
ZLG_CAN.loadDllPath(libPath)
1415
KVASER_CAN.loadDllPath(libPath)
16+
TOOMOSS_CAN.loadDllPath(libPath)
1517

1618
export function openCanDevice(canDevice: CanBaseInfo) {
1719
let canBase: CanBase | undefined
@@ -27,6 +29,8 @@ export function openCanDevice(canDevice: CanBaseInfo) {
2729
canBase = new KVASER_CAN(canDevice)
2830
} else if (canDevice.vendor == 'simulate') {
2931
canBase = new SIMULATE_CAN(canDevice)
32+
} else if (canDevice.vendor == 'toomoss') {
33+
canBase = new TOOMOSS_CAN(canDevice)
3034
}
3135

3236
return canBase
@@ -44,6 +48,8 @@ export function getCanVersion(vendor: string) {
4448
return KVASER_CAN.getLibVersion()
4549
} else if (vendor === 'SIMULATE') {
4650
return SIMULATE_CAN.getLibVersion()
51+
} else if (vendor === 'TOOMOSS') {
52+
return TOOMOSS_CAN.getLibVersion()
4753
}
4854
else
4955
// #v-endif
@@ -64,6 +70,8 @@ export function getCanDevices(vendor: string) {
6470
return KVASER_CAN.getValidDevices()
6571
} else if (vendor === 'SIMULATE') {
6672
return SIMULATE_CAN.getValidDevices()
73+
} else if (vendor === 'TOOMOSS') {
74+
return TOOMOSS_CAN.getValidDevices()
6775
}
6876
else
6977
// #v-endif

src/main/docan/toomoss/index.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,10 @@ export class TOOMOSS_CAN extends CanBase {
388388
DLC: data.length,
389389
Flags: (msgType.brs ? 0x01 : 0) | (msgType.canfd ? 0x04 : 0)
390390
}).then((timestamp: number) => {
391-
const ts=getTsUs()-this.startTime
391+
if (this.tsOffset == undefined) {
392+
this.tsOffset = timestamp*10 - (getTsUs() - this.startTime)
393+
}
394+
const ts=timestamp*10-this.tsOffset
392395
const message: CanMessage = {
393396
device: this.info.name,
394397
dir: 'OUT',

src/renderer/src/views/uds/components/config/node/canNode.vue

+21-3
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,15 @@ const configInfo: Record<CanVendor, any> = {
211211
preScaler: false,
212212
freq: false,
213213
zlgSpec: false
214+
},
215+
'toomoss': {
216+
clock: true,
217+
timeSeg1: true,
218+
timeSeg2: true,
219+
sjw: true,
220+
preScaler: true,
221+
freq: true,
222+
zlgSpec: false
214223
}
215224
}
216225
@@ -254,6 +263,11 @@ const clockList = computed(() => {
254263
} else if (props.vendor == 'kvaser') {
255264
return [
256265
{ clock: '80', name: "80" },
266+
{ clock: '40', name: "40" },
267+
];
268+
} else if (props.vendor == 'toomoss') {
269+
return [
270+
257271
{ clock: '40', name: "40" },
258272
];
259273
}
@@ -294,7 +308,7 @@ f_clock=20000000,nom_brp=1,nom_tseg1=14,nom_tseg2=5,nom_sjw=5 sample point = (t
294308
*/
295309
296310
function getBaudrateSP(speed: CanBitrate, index: number) {
297-
if (props.vendor == "peak" || props.vendor == 'kvaser') {
311+
if (props.vendor == "peak" || props.vendor == 'kvaser'||props.vendor == 'toomoss') {
298312
let f_clock = Number(speed.clock || 80) * 1000000;
299313
if (index == 1) {
300314
f_clock = Number(data.value.bitrate.clock || 80) * 1000000;
@@ -354,10 +368,14 @@ const nameCheck = (rule: any, value: any, callback: any) => {
354368
};
355369
356370
const bitrateCheck = (rule: any, value: any, callback: any) => {
357-
if (props.vendor == "peak" || props.vendor == 'kvaser') {
371+
if (props.vendor == "peak" || props.vendor == 'kvaser' || props.vendor == 'toomoss') {
358372
if (data.value.bitrate.clock == undefined) {
359373
callback(new Error("Please select clock"));
360374
}
375+
//must be in clockList
376+
if (!clockList.value.some(item => item.clock == data.value.bitrate.clock)) {
377+
callback(new Error("Please select correct clock"));
378+
}
361379
if ((data.value.bitrate.timeSeg1 + 1) < data.value.bitrate.timeSeg2) {
362380
callback(new Error("normal tseg1 must be greater than tseg2-1"));
363381
}
@@ -402,7 +420,7 @@ const bitrateCheck = (rule: any, value: any, callback: any) => {
402420
callback(new Error("data tseg2 must be between 1-16"));
403421
}
404422
}
405-
if (props.vendor == 'kvaser') {
423+
if (props.vendor == 'kvaser' || props.vendor == 'toomoss') {
406424
const calcFreq = Number(data.value.bitrate.clock || 40) * 1000000 / (data.value.bitrate.preScaler * (data.value.bitrate.timeSeg1 + data.value.bitrate.timeSeg2 + 1));
407425
if (calcFreq != data.value.bitrate.freq) {
408426
callback(new Error(`Please input correct frequency, calculated frequency is ${calcFreq}Hz`));

src/renderer/src/views/uds/components/hardware.vue

+9
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,15 @@ function buildTree() {
292292
}
293293
t.push(simulate)
294294
addSubTree('simulate', simulate)
295+
const toomoss: tree = {
296+
label: 'TOOMOSS',
297+
vendor: 'toomoss',
298+
append: false,
299+
id: 'TOOMOSS',
300+
children: []
301+
}
302+
t.push(toomoss)
303+
addSubTree('toomoss', toomoss)
295304
296305
297306
tData.value = t

0 commit comments

Comments
 (0)