diff --git a/firmware/controllers/lua/examples/man-in-the-middle.txt b/firmware/controllers/lua/examples/man-in-the-middle.txt index 29186fe731..8e3e4083b1 100644 --- a/firmware/controllers/lua/examples/man-in-the-middle.txt +++ b/firmware/controllers/lua/examples/man-in-the-middle.txt @@ -1,11 +1,9 @@ -- sometimes we want to cut a CAN bus and install rusEFI into that cut -- https://en.wikipedia.org/wiki/Man-in-the-middle_attack - -- this controls onCanRx rate as well! setTickRate(300) - ECU_BUS = 1 -- really 'not ECU' TCU_BUS = 2 @@ -36,7 +34,35 @@ function arrayToString(arr) return str end +totalEcuMessages = 0 +totalTcuMessages = 0 + +function printAndDrop(bus, id, dlc, data) + print('Dropping ' ..arrayToString(data)) +end + +function onAnythingFromECU(bus, id, dlc, data) + totalEcuMessages = totalEcuMessages + 1 + txCan(TCU_BUS, id, 0, data) -- relay non-TCU message to TCU +end + +function onAnythingFromTCU(bus, id, dlc, data) + totalTcuMessages = totalTcuMessages + 1 + txCan(ECU_BUS, id, 0, data) -- relay non-ECU message to ECU +end + +-- VAG Motor_1 just as example +-- canRxAdd(ECU_BUS, 0x280, printAndDrop) + +-- last option: unconditional forward of all remaining messages +canRxAddMask(ECU_BUS, 0, 0, onAnythingFromECU) +canRxAddMask(TCU_BUS, 0, 0, onAnythingFromTCU) + +everySecondTimer = Timer.new() function onTick() - -- empty 'onTick' until we make 'onTick' method optional + if everySecondTimer:getElapsedSeconds() > 1 then + everySecondTimer:reset() + print("Total from ECU " .. totalEcuMessages .. " from TCU " .. totalTcuMessages) + end end