-- Example of checking and reporting on geo-fence breach

local breach_lookup = {
  [1] = "Maximim altitude",
  [2] = "Circle",
  [4] = "Polygon",
  [8] = "Minimum altitude"
}

-- Lookup brach type bitmask and return the names of any breached fences
local function get_breach_names(breaches)
  local msg = ""
  for bitmaks, name in pairs(breach_lookup) do
    if (breaches & bitmaks) ~= 0 then
      -- And + delimiter between types if more than one
      if (string.len(msg) > 0) then
        msg = msg .. " + "
      end
      msg = msg .. name
    end
  end

  return msg
end

function update()

  local breaches = fence:get_breaches()
  if breaches ~= 0 then
    -- Time passed since fence breach
    local breach_time = millis() - fence:get_breach_time()

    gcs:send_text(0, string.format("Breached: %s fence, outside for %0.2f seconds", get_breach_names(breaches), breach_time:tofloat() * 0.001))
  end

  return update, 1000
end

return update()