mirror of
https://github.com/pellepl/spiffs.git
synced 2025-07-04 09:38:18 +08:00
API change: In Python, we don't need to pass around buffer sizes.
This commit is contained in:
30
py/spiffs.py
30
py/spiffs.py
@ -160,7 +160,7 @@ class Spiffs(object):
|
|||||||
def _on_write(self, addr, size, src):
|
def _on_write(self, addr, size, src):
|
||||||
#print "on_write",addr,size
|
#print "on_write",addr,size
|
||||||
data = [chr(src[i]) for i in range(size)]
|
data = [chr(src[i]) for i in range(size)]
|
||||||
self.on_write(addr, size, data)
|
self.on_write(addr, data)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@_error_print_traceback
|
@_error_print_traceback
|
||||||
@ -177,9 +177,9 @@ class Spiffs(object):
|
|||||||
print "base on_read",addr,size
|
print "base on_read",addr,size
|
||||||
return '\xff'*size
|
return '\xff'*size
|
||||||
|
|
||||||
def on_write(self, addr, size, data):
|
def on_write(self, addr, data):
|
||||||
"Subclass me!"
|
"Subclass me!"
|
||||||
print "base on_write",addr,size
|
print "base on_write",addr,len(data)
|
||||||
|
|
||||||
def on_erase(self, addr, size):
|
def on_erase(self, addr, size):
|
||||||
"Subclass me!"
|
"Subclass me!"
|
||||||
@ -295,22 +295,22 @@ class SpiffsFile(object):
|
|||||||
class SpiffsCharsBack(Spiffs):
|
class SpiffsCharsBack(Spiffs):
|
||||||
"list-of-chars as block device"
|
"list-of-chars as block device"
|
||||||
|
|
||||||
def __init__(self, chars):
|
def __init__(self, chars, *args, **kwargs):
|
||||||
self.chars = chars
|
self.chars = chars
|
||||||
super(SpiffsCharsBack, self).__init__(len(chars))
|
super(SpiffsCharsBack, self).__init__(len(chars), *args, **kwargs)
|
||||||
|
|
||||||
def on_read(self, addr, size):
|
def on_read(self, addr, size):
|
||||||
return ''.join(self.chars[addr:addr+size])
|
return ''.join(self.chars[addr:addr+size])
|
||||||
|
|
||||||
def on_write(self, addr, size, data):
|
def on_write(self, addr, data):
|
||||||
was_data = self.chars[addr:addr+size]
|
was_data = self.chars[addr:addr+len(data)]
|
||||||
is_data = []
|
is_data = []
|
||||||
|
|
||||||
for was,new in zip(was_data,data):
|
for was,new in zip(was_data,data):
|
||||||
now = ord(was) & ord(new)
|
now = ord(was) & ord(new)
|
||||||
is_data.append(chr(now))
|
is_data.append(chr(now))
|
||||||
|
|
||||||
self.chars[addr:addr+size] = is_data
|
self.chars[addr:addr+len(data)] = is_data
|
||||||
|
|
||||||
def on_erase(self, addr, size):
|
def on_erase(self, addr, size):
|
||||||
self.chars[addr:addr+size] = ['\xff'] * size
|
self.chars[addr:addr+size] = ['\xff'] * size
|
||||||
@ -326,9 +326,9 @@ class SpiffsFileBack(Spiffs):
|
|||||||
self.back_fd.seek(addr)
|
self.back_fd.seek(addr)
|
||||||
return self.back_fd.read(size)
|
return self.back_fd.read(size)
|
||||||
|
|
||||||
def on_write(self, addr, size, data):
|
def on_write(self, addr, data):
|
||||||
self.back_fd.seek(addr)
|
self.back_fd.seek(addr)
|
||||||
was_data = self.back_fd.read(size)
|
was_data = self.back_fd.read(len(data))
|
||||||
is_data = []
|
is_data = []
|
||||||
|
|
||||||
for was,new in zip(was_data,data):
|
for was,new in zip(was_data,data):
|
||||||
@ -358,13 +358,13 @@ def _destructive_tests(spiffs_mount):
|
|||||||
print "erased ok"
|
print "erased ok"
|
||||||
|
|
||||||
data = ''.join(chr(x & 0xff) for x in range(size))
|
data = ''.join(chr(x & 0xff) for x in range(size))
|
||||||
s.on_write(addr,size,data)
|
s.on_write(addr,data)
|
||||||
readback = s.on_read(addr,size)
|
readback = s.on_read(addr,size)
|
||||||
assert readback==data
|
assert readback==data
|
||||||
print "wrote ok"
|
print "wrote ok"
|
||||||
|
|
||||||
data2 = '\0'*10
|
data2 = '\0'*10
|
||||||
s.on_write(addr+10,len(data2),data2)
|
s.on_write(addr+10,data2)
|
||||||
readback = s.on_read(addr,size)
|
readback = s.on_read(addr,size)
|
||||||
assert readback[20:]==data[20:]
|
assert readback[20:]==data[20:]
|
||||||
assert readback[:10]==data[:10]
|
assert readback[:10]==data[:10]
|
||||||
@ -372,15 +372,15 @@ def _destructive_tests(spiffs_mount):
|
|||||||
assert readback[10:20]==data2
|
assert readback[10:20]==data2
|
||||||
print "part write ok"
|
print "part write ok"
|
||||||
|
|
||||||
s.on_write(addr+size, size, data)
|
s.on_write(addr+size, data)
|
||||||
s.on_erase(addr,size)
|
s.on_erase(addr,size)
|
||||||
readback = s.on_read(addr+size,size)
|
readback = s.on_read(addr+size,size)
|
||||||
assert readback==data
|
assert readback==data
|
||||||
print "erase bounded ok"
|
print "erase bounded ok"
|
||||||
|
|
||||||
s.on_write(addr,size,data)
|
s.on_write(addr, data)
|
||||||
data2 = ''.join(chr(0xff^ord(c)) for c in data)
|
data2 = ''.join(chr(0xff^ord(c)) for c in data)
|
||||||
s.on_write(addr,size,data2)
|
s.on_write(addr, data2)
|
||||||
readback = s.on_read(addr,size)
|
readback = s.on_read(addr,size)
|
||||||
assert readback=='\0'*size
|
assert readback=='\0'*size
|
||||||
print "AND ok"
|
print "AND ok"
|
||||||
|
Reference in New Issue
Block a user