mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2024-11-17 02:57:56 +01:00
104 lines
2.9 KiB
Lua
104 lines
2.9 KiB
Lua
|
-- NOTE: the module 'detects' command-line invocation by existence of 'arg', so we have to make sure it is not defined.
|
||
|
argStash = arg
|
||
|
arg = nil
|
||
|
local updater = require('script.d3d-updater')
|
||
|
arg = argStash
|
||
|
|
||
|
local log = require('util.logger')
|
||
|
local utils = require('util.utils')
|
||
|
|
||
|
local M = {
|
||
|
isApi = true
|
||
|
}
|
||
|
|
||
|
function M.status(request, response)
|
||
|
updater.setLogger(log)
|
||
|
local status,msg = updater.getStatus(nil, false)
|
||
|
if not status then
|
||
|
response:setFail(msg)
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local canUpdate = updater.compareVersions(status.newestVersion, status.currentVersion) > 0
|
||
|
|
||
|
response:addData('current_version', updater.formatVersion(status.currentVersion))
|
||
|
response:addData('newest_version', updater.formatVersion(status.newestVersion))
|
||
|
--response:addData('current_version', status.currentVersion)
|
||
|
--response:addData('newest_version', status.newestVersion)
|
||
|
response:addData('can_update', canUpdate)
|
||
|
response:addData('state_code', status.stateCode)
|
||
|
response:addData('state_text', status.stateText)
|
||
|
if status.progress then response:addData('progress', status.progress) end
|
||
|
if status.imageSize then response:addData('image_size', status.imageSize) end
|
||
|
response:setSuccess()
|
||
|
end
|
||
|
|
||
|
-- requires: version(string) (major.minor.patch)
|
||
|
-- accepts: clear_gcode(bool, defaults to true) (this is to lower the chance on out-of-memory crashes, but still allows overriding this behaviour)
|
||
|
-- accepts: clear_images(bool, defaults to true) (same rationale as with clear_gcode)
|
||
|
-- note: call this with a long timeout - downloading may take a while (e.g. ~3.3MB with slow internet...)
|
||
|
function M.download_POST(request, response)
|
||
|
local argVersion = request:get("version")
|
||
|
local argClearGcode = utils.toboolean(request:get("clear_gcode"))
|
||
|
local argClearImages = utils.toboolean(request:get("clear_images"))
|
||
|
if argClearGcode == nil then argClearGcode = true end
|
||
|
if argClearImages == nil then argClearImages = true end
|
||
|
|
||
|
if not argVersion then
|
||
|
response:setError("missing version argument")
|
||
|
return
|
||
|
end
|
||
|
|
||
|
updater.setLogger(log)
|
||
|
local rv,msg
|
||
|
|
||
|
if argClearImages then
|
||
|
rv,msg = updater.clear()
|
||
|
if not rv then
|
||
|
response:setFail(msg)
|
||
|
return
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if argClearGcode then
|
||
|
-- TODO
|
||
|
--[[ from api_printer.lua:
|
||
|
log:debug("clearing all gcode for " .. printer:getId())
|
||
|
response:addData('gcode_clear',true)
|
||
|
local rv,msg = printer:clearGcode()
|
||
|
|
||
|
if not rv then
|
||
|
response:setError(msg)
|
||
|
return
|
||
|
end
|
||
|
]]--
|
||
|
end
|
||
|
|
||
|
rv,msg = updater.downloadImageFile(nil, argVersion)
|
||
|
if not rv then
|
||
|
response:setFail(msg)
|
||
|
return
|
||
|
end
|
||
|
|
||
|
response:setSuccess()
|
||
|
end
|
||
|
|
||
|
-- if successful, this call won't return since the device will flash its memory and reboot
|
||
|
function M.install_POST(request, response)
|
||
|
updater.setLogger(log)
|
||
|
-- install
|
||
|
-- cross fingers
|
||
|
response:setSuccess()
|
||
|
end
|
||
|
|
||
|
function M.clear_POST(request, response)
|
||
|
updater.setLogger(log)
|
||
|
local rv,msg = updater.clear()
|
||
|
|
||
|
if rv then response:setSuccess()
|
||
|
else response:setFail(msg)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return M
|