Subversion Repositories freemyipod

Rev

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

Rev 176 Rev 177
Line 74... Line 74...
74
        self.lib = Lib()
74
        self.lib = Lib()
75
        self.getpacketsizeinfo()
75
        self.getpacketsizeinfo()
76
    
76
    
77
    @staticmethod
77
    @staticmethod
78
    def _alignsplit(addr, size, blksize, align):
78
    def _alignsplit(addr, size, blksize, align):
-
 
79
        if size <= blksize: return (size, 0, 0)
79
        end = addr + size
80
        end = addr + size
80
        if addr & (align - 1):
81
        if addr & (align - 1):
81
            bodyaddr = (addr + min(size, blksize)) & ~(align - 1)
82
            bodyaddr = (addr + min(size, blksize)) & ~(align - 1)
82
        else: bodyaddr = addr
83
        else: bodyaddr = addr
83
        headsize = bodyaddr - addr
84
        headsize = bodyaddr - addr
Line 153... Line 154...
153
        cout_maxsize = self.lib.dev.packetsizelimit["cout"] - self.lib.headersize
154
        cout_maxsize = self.lib.dev.packetsizelimit["cout"] - self.lib.headersize
154
        dout_maxsize = self.lib.dev.packetsizelimit["dout"]
155
        dout_maxsize = self.lib.dev.packetsizelimit["dout"]
155
        (headsize, bodysize, tailsize) = self._alignsplit(addr, len(data), cout_maxsize, 16)
156
        (headsize, bodysize, tailsize) = self._alignsplit(addr, len(data), cout_maxsize, 16)
156
        offset = 0
157
        offset = 0
157
        if headsize != 0:
158
        if headsize != 0:
158
            self.writemem(addr, headsize)
159
            self.writemem(addr, data[offset:offset+headsize])
159
            offset += headsize
160
            offset += headsize
160
            addr += headsize
161
            addr += headsize
161
        while bodysize > 0:
162
        while bodysize > 0:
162
            if bodysize >= 2 * cout_maxsize:
163
            if bodysize >= 2 * cout_maxsize:
163
                writesize = min(bodysize, dout_maxsize)
164
                writesize = min(bodysize, dout_maxsize)