Subversion Repositories freemyipod

Rev

Rev 427 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 427 Rev 442
Line 168... Line 168...
168
        """
168
        """
169
            Converts quite everything into bool.
169
            Converts quite everything into bool.
170
        """
170
        """
171
        if type(something) == bool:
171
        if type(something) == bool:
172
            return something
172
            return something
-
 
173
        if something is None:
-
 
174
            return False
173
        elif type(something) == int or type(something) == long:
175
        elif type(something) == int or type(something) == long:
174
            return bool(something)
176
            return bool(something)
175
        elif type(something == str):
177
        elif type(something == str):
176
            truelist = ['true', '1', 't', 'y', 'yes']
178
            truelist = ['true', '1', 't', 'y', 'yes']
177
            falselist = ['false', '0', 'f', 'n', 'no']
179
            falselist = ['false', '0', 'f', 'n', 'no']
Line 193... Line 195...
193
        elif type(something) == str:
195
        elif type(something) == str:
194
            try:
196
            try:
195
                return int(something, 16)
197
                return int(something, 16)
196
            except ValueError:
198
            except ValueError:
197
                raise ArgumentTypeError("hexadecimal coded integer", "'"+str(something)+"'")
199
                raise ArgumentTypeError("hexadecimal coded integer", "'"+str(something)+"'")
198
        elif type(something) == NoneType:
200
        elif something is None:
199
            return None
201
            return None
200
        else:
202
        else:
201
            raise ArgumentTypeError("hexadecimal coded integer", "'"+str(something)+"'")
203
            raise ArgumentTypeError("hexadecimal coded integer", "'"+str(something)+"'")
202
    
204
    
203
    @staticmethod
205
    @staticmethod
Line 259... Line 261...
259
        if force: self.logger.info("Powering off forcefully...\n")
261
        if force: self.logger.info("Powering off forcefully...\n")
260
        else: self.logger.info("Powering off...\n")
262
        else: self.logger.info("Powering off...\n")
261
        self.emcore.poweroff(force)
263
        self.emcore.poweroff(force)
262
    
264
    
263
    @command
265
    @command
264
    def uploadfile(self, addr, filename):
266
    def uploadfile(self, filename, addr = None):
265
        """
267
        """
266
            Uploads a file to the device
268
            Uploads a file to the device
267
            <offset>: the address to upload the file to
269
            <filename>: The path to the file
268
            <filename>: the path to the file
270
            [addr]: The address to upload the file to. Allocates a chunk of memory if not given.
269
        """
271
        """
270
        addr = self._hexint(addr)
272
        addr = self._hexint(addr)
271
        try:
273
        try:
272
            f = open(filename, 'rb')
274
            f = open(filename, 'rb')
273
        except IOError:
275
        except IOError:
274
            raise ArgumentError("File not readable. Does it exist?")
276
            raise ArgumentError("File not readable. Does it exist?")
-
 
277
        if addr is not None:
275
        self.logger.info("Writing file '" + filename + \
278
            self.logger.info("Writing file '" + filename + \
276
                         "' to memory at " + self._hex(addr) + "...")
279
                            "' to memory at " + self._hex(addr) + "...\n")
-
 
280
        else:
-
 
281
            self.logger.info("Writing file '" + filename + " to an allocated memory region...\n")
277
        with f:
282
        with f:
-
 
283
            if addr is not None:
278
            self.emcore.write(addr, f.read())
284
                self.emcore.write(addr, f.read())
-
 
285
            else:
-
 
286
                addr = self.emcore.upload(f.read())
-
 
287
            size = f.tell()
279
        f.close()
288
        f.close()
-
 
289
        self.logger.info("Done uploading " + str(size) + " bytes to 0x" + self._hex(addr) + "\n")
280
        self.logger.info("done\n")
290
        return addr, size
281
    
291
    
282
    @command
292
    @command
283
    def downloadfile(self, addr, size, filename):
293
    def downloadfile(self, addr, size, filename):
284
        """
294
        """
285
            Uploads a file to the device
295
            Uploads a file to the device
Line 606... Line 616...
606
                time.sleep(1)
616
                time.sleep(1)
607
            self.logger.info("\n")
617
            self.logger.info("\n")
608
        self.emcore.bootflashwrite(addr_mem, addr_flash, size)
618
        self.emcore.bootflashwrite(addr_mem, addr_flash, size)
609
    
619
    
610
    @command
620
    @command
611
    def runfirmware(self, addr, filename):
621
    def runfirmware(self, targetaddr, filename):
612
        """
622
        """
613
            Uploads the firmware in <filename>
623
            Uploads the firmware in <filename>
614
            to the address at <addr> and executes it.
624
            to an allocated buffer and executes it at <targetaddr>.
615
        """
625
        """
616
        addr = self._hexint(addr)
626
        targetaddr = self._hexint(targetaddr)
617
        self.uploadfile(addr, filename)
627
        addr, size = self.uploadfile(filename)
618
        self.execfirmware(addr)
628
        self.execfirmware(targetaddr, addr, size)
619
    
629
    
620
    @command
630
    @command
621
    def execfirmware(self, addr):
631
    def execfirmware(self, targetaddr, addr, size):
622
        """
632
        """
623
            Executes the firmware at <addr>
633
            Moves the firmware at <addr> with <size> to <targetaddr> and executes it
624
        """
634
        """
625
        addr = self._hexint(addr)
635
        addr = self._hexint(addr)
626
        self.logger.info("Running firmware at "+self._hex(addr)+". Bye.")
636
        self.logger.info("Running firmware at "+self._hex(targetaddr)+". Bye.\n")
627
        self.emcore.execfirmware(addr)
637
        self.emcore.execfirmware(targetaddr, addr, size)
628
    
638
    
629
    @command
639
    @command
630
    def aesencrypt(self, addr, size, keyindex):
640
    def aesencrypt(self, addr, size, keyindex):
631
        """
641
        """
632
            Encrypts a buffer using a hardware key
642
            Encrypts a buffer using a hardware key