-------------------------------------------------------------------- -- 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