cctweaked_drone/lib/etat.lua

49 lines
1.8 KiB
Lua

--------------------------------------------------------------------
-- lib/etat.lua : etat persistant (drone.etat), ecrit par le
-- programme: calibrations, surcharges de parametres, mode.
--------------------------------------------------------------------
local Etat = {}
local DEFAUT = {
mode = "off",
consigneY = nil,
roles = {}, -- nom RSC -> lb|rb|lf|rf|prop_l|prop_r
gimbal = nil, -- { indexTangage, signeTangage, indexRoulis,
-- signeRoulis }
joystick = nil, -- { relais, faces = direction -> face }
rpmHover = nil, -- rpm de sustentation mesure (calib altitude)
pressionHover = nil, -- pression lors de cette mesure
coeffRsc = nil, -- nom RSC -> su/rpm (mesure pendant rscman)
speedoParRole = nil, -- role -> nom du speedometer (calib rsc)
boite = nil, -- { relais, faces = role -> face, signal,
-- rapport } boites de vitesse (une face
-- PAR boite, meme signal sur les 4)
capaciteParNiveau = nil, -- niveau moteur (1..15) -> su
modeMoteur = "onoff", -- "onoff" | "adaptatif" (bouton du moniteur)
calibAltitude = nil, -- calib altitude effectuee
calibInclinaison = nil,
surcharges = {}, -- chemin conf -> valeur (page PARAM)
}
function Etat.charger(journal)
local etat = {}
for cle, valeur in pairs(DEFAUT) do etat[cle] = valeur end
if fs.exists("drone.etat") then
local f = fs.open("drone.etat", "r")
local lu = textutils.unserialize(f.readAll() or "")
f.close()
if lu then
for cle, valeur in pairs(lu) do etat[cle] = valeur end
journal.info("etat restaure (mode " .. tostring(etat.mode) .. ")")
end
end
return etat
end
function Etat.sauver(etat)
local f = fs.open("drone.etat", "w")
f.write(textutils.serialize(etat))
f.close()
end
return Etat