49 lines
1.8 KiB
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
|