Author: titmuss
Date: Thu Feb 14 04:15:01 2008
New Revision: 1950

URL: http://svn.slimdevices.com?rev=1950&root=Jive&view=rev
Log:
Bug: 7114
Description:
Download new firmware directly to flash, don't store it in memory first.


Modified:
    
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
    
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt

Modified: 
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua?rev=1950&root=Jive&r1=1949&r2=1950&view=diff
==============================================================================
--- 
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
 (original)
+++ 
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
 Thu Feb 14 04:15:01 2008
@@ -1,8 +1,3 @@
-
--- FIXME at the moment the upgrade stores the kernel and filesystem
--- images in /tmp before writing to flash. when the bootloader and
--- kernel support safe upgrading the flash should be written to as
--- the images are downloaded.
 
 
 local ipairs, pairs, tonumber, tostring, type = ipairs, pairs, tonumber, 
tostring, type
@@ -70,49 +65,31 @@
                log:warn("parseVersion failed")
                return nil, err
        end
+
+       -- disable VOL+ on boot
+       t, err = self:fw_setenv({ sw7 = "" })
+       if not t then
+               log:warn("fw_setenv failed")
+               return nil, err
+       end
+
+       -- erase flash
+       t, err = self:flashErase(self._zImageExtraVersion)
+       if not t then
+               log:warn("flash kernel failed")
+               return nil, err
+       end
+
+       t, err = self:flashErase("root.cramfs")
+       if not t then
+               log:warn("flash filesystem failed")
+               return nil, err
+       end
                            
        -- stream the firmware, and update the flash
        t, err = self:download(callback)
        if not t then
                log:warn("download Failed")
-               return nil, err
-       end
-
-       callback(false, "UPDATE_VERIFY")
-
-       -- checksum kernel
-       t, err = self:checksum(self._zImageExtraVersion, "/tmp/")
-       if not t then
-               log:warn("file checksum failed")
-               return nil, err
-       end
-
-       -- checksum cramfs
-       t, err = self:checksum("root.cramfs", "/tmp/")
-       if not t then
-               log:warn("file checksum failed")
-               return nil, err
-       end
-
-       callback(false, "UPDATE_WRITE")
-
-       -- disable VOL+ on boot
-       t, err = self:fw_setenv({ sw7 = "" })
-       if not t then
-               log:warn("fw_setenv failed")
-               return nil, err
-       end
-
-       -- write images to flash
-       t, err = self:flash(self._zImageExtraVersion)
-       if not t then
-               log:warn("flash kernel failed")
-               return nil, err
-       end
-
-       t, err = self:flash("root.cramfs")
-       if not t then
-               log:warn("flash filesystem failed")
                return nil, err
        end
 
@@ -159,6 +136,26 @@
 end
 
 
+function processSink(self, prog)
+       local fh, err = io.popen(prog, "w")
+
+       if fh == nil then
+               return function()
+                       return false, err
+               end
+       end
+
+       return function(chunk, err)
+               if chunk then
+                       return fh:write(chunk)
+               else
+                       fh:close()
+                       return false
+               end
+       end
+end
+
+
 -- zip filter sink to process upgrade zip file
 function upgradeSink(self)
        local fhsink = nil
@@ -239,9 +236,10 @@
                                       length = 0
 
                                       -- open file handle
-                                      -- FIXME erase and write flash here
-                                      local fh, err = io.open("/tmp/" .. part, 
"w+")
-                                      fhsink = ltn12.sink.file(fh, err)
+                                       local cmd = "/usr/sbin/nandwrite -qp " 
.. self._mtd[part] .. " -"
+                                       log:warn("flash: ", cmd)
+
+                                       fhsink = self:processSink(cmd)
                               end
 
                               return 1
@@ -446,22 +444,11 @@
 
 
 -- flash the image from tmp file
-function flash(self, part)
+function flashErase(self, part)
        local cmd, proc
 
        -- erase flash
        cmd = "/usr/sbin/flash_eraseall -q " .. self._mtd[part]
-       log:warn("flash: ", cmd)
-
-       proc = Process(jnt, cmd)
-       proc:read(nullProcessSink)
-       while proc:status() ~= "dead" do
-               -- wait for the process to complete
-               Task:yield()
-       end
-
-       -- write flash
-       cmd = "/usr/sbin/nandwrite -qp " .. self._mtd[part] .. " " .. "/tmp/" 
.. part
        log:warn("flash: ", cmd)
 
        proc = Process(jnt, cmd)

Modified: 
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt?rev=1950&root=Jive&r1=1949&r2=1950&view=diff
==============================================================================
--- 
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt
 (original)
+++ 
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt
 Thu Feb 14 04:15:01 2008
@@ -74,14 +74,6 @@
        IT      \nCopia aggiornamento in corso
        NL      \nUpdate wordt gekopieerd
 
-UPDATE_WRITE
-       DE      \nAktualisierung wird installiert
-       EN      \nInstalling Update
-       ES      \nInstalando actualización
-       FR      \nInstallation de la mise à jour
-       IT      \nInstallazione aggiornamento in corso
-       NL      \nUpdate wordt geïnstalleerd
-
 UPDATE_VERIFY
        DE      \nAktualisierung wird geprüft
        EN      \nVerifying Update

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins

Reply via email to