mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2024-07-01 13:41:23 +02:00
Compare commits
No commits in common. "master" and "0.11.0-a" have entirely different histories.
|
@ -1,13 +1,4 @@
|
|||
Changelog
|
||||
|
||||
# 0.11.0 (12 jul 2017)
|
||||
# 0.11.0-c (10 jul 2017)
|
||||
- fix: Also closing file descriptor after removing current print file (commit 550e151)
|
||||
|
||||
# 0.11.0-b (6 jul 2017)
|
||||
- show id of current print in d3dapi/info/status when printing in 'fetch' mode.
|
||||
- code reuse and cleanup for control, kill and status
|
||||
|
||||
# 0.11.0-a (23 jun 2017)
|
||||
- Added 'fetch' functionality to let the WiFi-Box print from a remote server. This enables the WiFi-Box to print large g-code files. (yeah!)
|
||||
- Added support for the Renkforce RF100 printer.
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.11.0
|
||||
0.11.0-a
|
||||
|
|
|
@ -48,36 +48,6 @@ function M.temperature(request, response)
|
|||
end
|
||||
end
|
||||
|
||||
local function setCurrentPrint(id)
|
||||
local cpfileName = "/tmp/current-print"
|
||||
if id == nil then
|
||||
io.popen('rm ' .. cpfileName):close()
|
||||
return true
|
||||
end
|
||||
|
||||
local cpfile = io.open(cpfileName, 'w+')
|
||||
if cpfile == nil then
|
||||
return false
|
||||
end
|
||||
cpfile:write(id)
|
||||
cpfile:close()
|
||||
return true
|
||||
end
|
||||
|
||||
local function getCurrentPrint()
|
||||
local idfile = io.open('/tmp/current-print')
|
||||
if idfile ~= nil then
|
||||
return idfile:read('*a')
|
||||
end
|
||||
end
|
||||
|
||||
local function stopFetch()
|
||||
log:verbose(MOD_ABBR, "stopping print-fetch and removing start/endgcode")
|
||||
io.popen("killall print-fetch"):close()
|
||||
io.popen("rm /tmp/startcode /tmp/endcode"):close()
|
||||
setCurrentPrint(nil)
|
||||
end
|
||||
|
||||
function M.progress(request, response)
|
||||
local argId = request:get("id")
|
||||
local printer,msg = printerUtils.createPrinterOrFail(argId, response)
|
||||
|
@ -86,7 +56,11 @@ function M.progress(request, response)
|
|||
-- NOTE: despite their names, `currentLine` is still the error indicator and `bufferedLines` the message in such case.
|
||||
local currentLine,bufferedLines,totalLines,bufferSize,maxBufferSize,seqNumber,seqTotal = printer:getProgress()
|
||||
|
||||
local printId = getCurrentPrint()
|
||||
local idfile = io.open('/tmp/currentprint')
|
||||
local printId
|
||||
if idfile ~= nil then
|
||||
printId = idfile:read('*a')
|
||||
end
|
||||
|
||||
|
||||
response:addData('id', argId)
|
||||
|
@ -192,13 +166,14 @@ function M.stop_POST(request, response)
|
|||
local printer,msg = printerUtils.createPrinterOrFail(argId, response)
|
||||
if not printer or not printer:hasSocket() then return end
|
||||
|
||||
stopFetch()
|
||||
|
||||
if(argGcode == nil) then
|
||||
argGcode = ""
|
||||
end
|
||||
local rv,msg = printer:stopPrint(argGcode)
|
||||
|
||||
io.popen("killall print-fetch")
|
||||
io.popen("rm /tmp/currentprint /tmp/startcode /tmp/endcode")
|
||||
|
||||
|
||||
response:addData('id', argId)
|
||||
if rv then
|
||||
|
@ -225,24 +200,32 @@ local function addSequenceNumbering(printer, response)
|
|||
end
|
||||
|
||||
function M.fetch_POST(request, response)
|
||||
if not accessManager.hasControl(request.remoteAddress) then
|
||||
response:setFail("No control access")
|
||||
return
|
||||
else
|
||||
accessManager.setController(request.remoteAddress)
|
||||
end
|
||||
|
||||
local printer,msg = printerUtils.createPrinterOrFail(argId, response)
|
||||
if not printer or not printer:hasSocket() then return end
|
||||
|
||||
local state = printer:getState()
|
||||
if state ~= "idle" then
|
||||
response:setFail("printer is not idle")
|
||||
local controllerIP = accessManager.getController()
|
||||
local hasControl = false
|
||||
if controllerIP == "" then
|
||||
accessManager.setController(request.remoteAddress)
|
||||
hasControl = true
|
||||
elseif controllerIP == request.remoteAddress then
|
||||
hasControl = true
|
||||
end
|
||||
|
||||
if not hasControl then
|
||||
response:setFail("No control access")
|
||||
return
|
||||
end
|
||||
|
||||
local state = printer:getState()
|
||||
if state ~= "idle" then
|
||||
response:setError("printer is not idle")
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
log:verbose(MOD_ABBR, " clearing all gcode for " .. printer:getId())
|
||||
stopFetch()
|
||||
response:addData('gcode_clear',true)
|
||||
local rv,msg = printer:clearGcode()
|
||||
|
||||
if rv == false then
|
||||
|
@ -274,6 +257,7 @@ function M.fetch_POST(request, response)
|
|||
return
|
||||
end
|
||||
endCodeFile:write(endCode)
|
||||
|
||||
end
|
||||
|
||||
local socket = printer:getId()
|
||||
|
@ -291,9 +275,14 @@ function M.fetch_POST(request, response)
|
|||
response:setError("no id supplied")
|
||||
return
|
||||
end
|
||||
setCurrentPrint(id)
|
||||
local cpfile = io.open("/tmp/currentprint", 'w+')
|
||||
if cpfile == nil then
|
||||
response:setError("could not save id")
|
||||
return
|
||||
end
|
||||
cpfile:write(id)
|
||||
cpfile:close()
|
||||
|
||||
log:info(MOD_ABBR, " starting fetch print. id: " .. id .. " server: " .. gcodeServer)
|
||||
io.popen("print-fetch " .. socket .. " " .. gcodeServer .. " " .. id .. gcodeFiles)
|
||||
|
||||
response:setSuccess()
|
||||
|
@ -311,12 +300,20 @@ end
|
|||
-- a fail with a (formal, i.e., parseable) status argument will be returned;
|
||||
-- additionally, current sequence number and total will be returned (both are -1 if they have not been set)
|
||||
function M.print_POST(request, response)
|
||||
if not accessManager.hasControl(request.remoteAddress) then
|
||||
local controllerIP = accessManager.getController()
|
||||
local hasControl = false
|
||||
if controllerIP == "" then
|
||||
accessManager.setController(request.remoteAddress)
|
||||
hasControl = true
|
||||
elseif controllerIP == request.remoteAddress then
|
||||
hasControl = true
|
||||
end
|
||||
|
||||
if not hasControl then
|
||||
response:setFail("No control access")
|
||||
return
|
||||
else
|
||||
accessManager.setController(request.remoteAddress)
|
||||
end
|
||||
|
||||
local argId = request:get("id")
|
||||
local argGcode = request:get("gcode")
|
||||
local argClear = utils.toboolean(request:get("clear"))
|
||||
|
@ -332,8 +329,6 @@ function M.print_POST(request, response)
|
|||
local printer,msg = printerUtils.createPrinterOrFail(argId, response)
|
||||
if not printer or not printer:hasSocket() then return end
|
||||
|
||||
stopFetch()
|
||||
|
||||
response:addData('id', argId)
|
||||
|
||||
if argGcode == nil or argGcode == '' then
|
||||
|
|
Loading…
Reference in New Issue
Block a user