diff --git a/TODO.md b/TODO.md index 7a6edd3..f663b2e 100644 --- a/TODO.md +++ b/TODO.md @@ -1,16 +1,79 @@ -## te doen voor werkend prototype +- chroma kleur +- size() mag alleen getallen voor export? +- fullscreen via osc + +- animata +(- lijstje vakantie: spuitbus deo, kortingsbon Bever (tentje kopen?), Schotland pakken, andere tas ohm?) +(- issue aanmaken voor clementine: + * mogelijk gerelateerd aan unicode (volgens lahwran op irc) + * mogelijk gerelateerd: + * mp3 niet opnemen in issue maar aanbieden voor download op persoonlijke aanvraag + * crash log: + * bestand uit het album dat het wss veroorzaakt: +) + +## te doen voor werkend prototype (beta testers) +- (testen) server logging +- (testen/verder implementeren) stopknop +- volgorde chunks (en vaker voorkomen?): elke chunk naar los bestand en op het laatst samenvoegen +- (client) autopreheat wanneer er een printer aanwezig is +- (fw) temp gcode pad veranderen naar device-specifiek (i.e. /tmp/UltiFi/ttyACM?/combined.gc) +- (fw) bij (her)initialisatie printer altijd alle state weggooien (i.e. /dev/UtliFi/ttyACM?) +- client feedback + * voor ontwikkeling: debugoverlay + * vaker op 'print' drukken moet niet kunnen (knop disablen en op basis van polling (isPrinting?) status up-to-date houden) + -> maar! de firmware moet geen nieuwe printopdrachten accepteren wanneer er al een print bezig is + * temperatuurindicatie (alleen wanneer temperatuuruitlezing via api mogelijk is) -> dus ook indicatie van draaiende printserver +- (misschien?) verticale shape aanpassen +- preheaten voor het starten van een print + * (fw) wachten op targettemperatuur - 20 graden (hoe om te gaan met afkoelen?) + * (client) in config bij temperatuurinstelling: opmerking dat de printer gaat printen vanaf lagere temperatuur (bv. -20) + +## te den voor final release +- start/end-codes configureerbaar maken (via los endpoint) (duplicate) +- printerlijst opvragen + * data: per printer: {id, path, type} +- gcode: printer busy rapporteren vanaf moment dat gcode wordt verzameld, niet pas bij begin printen (of gcode verzamelen per remote host?) +- op wiki over openwrt/osx svn checkout veranderen naar git clone +- image met alles erin + * in postinst op kastje: ook wifibox start doen (enable doet dat niet) (ook voor ultifi) + * firewall net wordt nog niet aangemaakt in 'Y'-mode +- nadenken over loggen (procedure voor testers hoe ze problemen kunnen rapporteren zodat wij ze kunnen reproduceren) + * verzamelen+zippen van logread output (of uci system.@system[0].log_file?) + /tmp/wifibox.conf + printserver log +- na /network/disassociate is wifi uitgeschakeld -> kan geen macadres opvragen -> openap bv. 2x nodig om weer goed macadres te vinden +- client: netwerkkeuze toevoegen? +- herstart van uhttpd en reboot uitstellen tot na sturen van response (closure queue in response.lua) +- consistentie REST API +- code documenteren +- codedocs uitwerken naar apidocs +- optie voor loggen toevoegen aan printmanager +- AP en client tegelijk (VAP / multi-ssid?) + * toegang altijd via AP, clientmode alleen voor updaten en internet ook via kastje (dan moet wel de portalmodus uit) + * dns forward: list 'dhcp_option' '6,10.0.0.1,192.168.178.1' () - auto-update (zowel package als geheel image; <- kijken hoe luci dat doet) -- tekenen op redelijke subset van apparaten (wat hebben beta-testers?) -- printen (printserver; via dirpad gcode/commando's sturen en uitlezen via voortgangsbestand; zoals UltiFi; REST reageert op rq met poll-url in data waar voortgang te volgen is…eindigt met 'done') +- serieel: + * 115k2? -> Peter zei iets over instabiele connectie op 250k? + * fallback lijkt niet te werken (zelfde probleem als bij poort opnieuw openen?) + * mss helpt arduino reset triggeren om port opnieuw te kunnen openen? + * 3e manier baudrate zetten? +- initscript testen (lijkt vaker dan eens te worden uitgevoerd) +- printerExists: ook nagaan of basispad ultifi bestaat? + ## NU MEE BEZIG +- in AP mode, things like 'somewhere.org/asdsfd' still results in 'Not found' +- behalve /dev/ttyACM* kan het voor FTDI dus ook /dev/ttyUSB* zijn +- config API: anders inrichten (misschien toch 1 key per keer instellen zodat response 'fail' kan zijn?) + - auto-update - source-url in Makefile aanpassen (type aanpassen naar git en dan direct naar github repo) - toevoegen aan /etc/opkg.conf via files in image: `src/gz wifibox http://doodle3d.com/static/wifibox-packages` - of lokaal: `src/gz wifibox file:///tmp/wifibox-packages` - - (info) feed update-script: /Volumes/openwrt-image-10gb/update-feed-dir.sh - - (info) package-url: - - (info) image-url: + - (info) feed update-script: /extra/create-packages-dir.sh + uitvoeren vanuit pad waar wifibox_packages terecht moet komen (bv. ~/Sites) + - (info) package-url: + - (info) image-url: + - later: printerprofielen - API: api/info/currentVersion @@ -23,10 +86,16 @@ - (ref) - (ref) - waar moeten debugvlaggen etc naartoe? (run_flags.lua?) -- require vars checken op conflicten - in package postinst: hostname van kastje instellen op wifibox (met mac?) +- tijdens openwrt make: + '* satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-ath9k-common: + '* kmod-crypto-hash * - wiki bijwerken (links, structuur, API) +- ook in wiki, luadoc installeren: + * !! (beter vervangen door?) + * ongeveer volgens , maar! : + * luasocket apart installeren met `sudo luarocks install https://raw.github.com/diegonehab/luasocket/master/luasocket-scm-0.rockspec` - Code documenteren - Lua programmeerstijl? (enkele quotes gebruiken behalve voor i18n) - zoals het nu werkt wordt het lastig om een hiërarchische api te ondersteunen zoals dit: @@ -45,8 +114,10 @@ - menuconfig: enabled Kernel Modules -> USB Support -> usb-kmod-serial -> …ftdi - enabled luafilesystem, luasocket (luaposix results in a build error) - - +- over baud rates: - versies toevoegen als eerste padelement? +- overig leesvoer + * # TODO (new functionality) @@ -106,6 +177,7 @@ However, sometimes wlan0 disappears (happened after trying to associate with non-existing network)...why? - protect dump function against reference loops (see , json also handles this well) - relocatabilty of package (take root prefix into consideration everywhere) +- openap vanuit assocmode gaf tenminste 1x nil in getMacAddress (daarna niet meer) # Logos @@ -132,3 +204,57 @@ Check +- toch anders plannen, meer rekening houden met onvoorspelbaarheden (aka subtaken) + * zie de 2 dagen voor geplande betarelease…dat lukte niet omdat er meer mankracht nodig was, veel dingen extra tijd kostten (bv gcode maken en sercomm), en eindeloos veel kleine 'hejadatmoetooknogeven'-dingen (die in de 'x2' van de planning moeten vallen maar eerder 'x5' oid lijken)…en dan nog blijft het documenteren liggen +- te weinig gedaan: daily standups -> planning aanpassen +- meer continuïteit nodig? +- meer tijd… +- duidelijker kunnen volgen wat gepland is en wat echt gebeurd (icm met standups) diff --git a/src/conf_defaults.lua b/src/conf_defaults.lua index de41551..7b3ef94 100644 --- a/src/conf_defaults.lua +++ b/src/conf_defaults.lua @@ -107,7 +107,7 @@ M.printer_useSubLayers = { M.printer_firstLayerSlow = { default = true, type = 'bool', - description = 'Print the first layer slowly to get a more stable start', + description = 'Print the first layer slowly to get a more stable start' } M.printer_autoWarmUp = { diff --git a/src/rest/api/api_printer.lua b/src/rest/api/api_printer.lua index fb5719f..dfc3529 100644 --- a/src/rest/api/api_printer.lua +++ b/src/rest/api/api_printer.lua @@ -94,6 +94,23 @@ local function printGcodeFile(printerPath) return true end +--UNTESTED +-- assumes printerPath exists, returns true if successful, false if command file already exists and is non-empty (i.e. printer busy), +-- nil+err if file could not be opened +local function stopGcodeFile(printerPath) + local cmdPath = printerPath .. '/' .. COMMAND_FILE + local cmdf,msg = io.open(cmdPath, 'a+') -- 'a+' is important, do not overwrite current contents in any case + + if not cmdf then return nil,msg end + if utils.fileSize(cmdf) > 0 then return false end + + log:debug("stopping print of gcode") + cmdf:write('(CANCELFILE') + cmdf:close() + + return true +end + local function isBusy(printerPath) local cmdPath = printerPath .. '/' .. COMMAND_FILE @@ -183,6 +200,24 @@ function M.heatup_POST(request, response) end end +--UNTESTED +--requires id(int) +function M.stop_POST(request, response) + local argId,devpath,ultipath = getPrinterDataOrFail(request, response) + if argId == nil then return end + + rv,msg = stopGcodeFile(ultipath) + + if rv then + response:setSuccess() + elseif rv == false then + response:setFail("printer is busy") + else + response:setError("could not send gcode") + response:addData('msg', msg) + end +end + --requires id(int), gcode(string) --accepts: first(bool) (chunks will be concatenated but output file will be cleared first if this argument is true) --accepts: last(bool) (chunks will be concatenated and only when this argument is true will printing be started)