-- This script is an example of reading from the CAN bus

-- Load CAN driver1. The first will attach to a protocol of 10, the 2nd to a protocol of 12
-- this allows the script to distinguish packets on two CAN interfaces
local driver1 = CAN:get_device(5)
local driver2 = CAN:get_device2(5)

if not driver1 and not driver2 then
   gcs:send_text(0,"No scripting CAN interfaces found")
   return
end

function show_frame(dnum, frame)
    gcs:send_text(0,string.format("CAN[%u] msg from " .. tostring(frame:id()) .. ": %i, %i, %i, %i, %i, %i, %i, %i", dnum, frame:data(0), frame:data(1), frame:data(2), frame:data(3), frame:data(4), frame:data(5), frame:data(6), frame:data(7)))
end

function update()

   -- see if we got any frames
   if driver1 then
      frame = driver1:read_frame()
      if frame then
         show_frame(1, frame)
      end
   end
   if driver2 then
      frame = driver2:read_frame()
      if frame then
         show_frame(2, frame)
      end
   end

  return update, 10

end

return update()
