72 values[i*8 + j] =
"%d" % ((valbyte & (1 << position)) >> position)
87 @
request(
"GET",
"memory/byte/*")
92 for i
in range(len(byteValues)):
93 values[i] =
"0x%02X" % byteValues[i]
103 @
request(
"GET",
"memory/bytes/%(bounds)s")
106 (start, stop) = bounds.split(
",")
111 for i
in range(start, stop):
112 values[i] =
"0x%02X" % byteValues[i - start]
120 @
request(
"GET",
"memory/word/*")
133 @
request(
"GET",
"memory/long/*")
145 @
request(
"GET",
"memory/bit/count")
150 @
request(
"GET",
"memory/byte/count")
155 @
request(
"GET",
"memory/word/count")
160 @
request(
"GET",
"memory/long/count")
165 @
request(
"GET",
"memory/bit/%(address)s")
168 address =
toint(address)
172 @
request(
"POST",
"memory/bit/%(address)s/%(value)s")
175 address =
toint(address)
182 @
request(
"GET",
"memory/byte/%(address)s")
185 address =
toint(address)
189 @
request(
"POST",
"memory/byte/%(address)s/%(value)s")
192 address =
toint(address)
199 @
request(
"GET",
"memory/word/%(address)s")
202 address =
toint(address)
206 @
request(
"POST",
"memory/word/%(address)s/%(value)s")
209 address =
toint(address)
216 @
request(
"GET",
"memory/long/%(address)s")
219 address =
toint(address)
223 @
request(
"POST",
"memory/long/%(address)s/%(value)s")
226 address =
toint(address)
243 raise ValueError(
"Stop address must be >= start address")
244 for i
in range(start, stop):
250 stop = start + len(byteValues)
253 for byte
in byteValues:
262 raise NotImplementedError
265 raise NotImplementedError
270 byteAddress, rawPosition = divmod(address, 8)
271 bitPosition = 7 - rawPosition
275 byteAddress, rawPosition = divmod(address, 8)
276 bitPosition = 7 - rawPosition
277 changeMask = 1 << bitPosition
280 byteValue |= changeMask
282 byteValue &= ~changeMask
288 return (byte0 << 8) + byte1
291 byte0 = (value >> 8) & 0xFF
301 return (byte0 << 24) + (byte1 << 16) + (byte2 << 8) + byte3
304 byte0 = (value >> 24) & 0xFF
305 byte1 = (value >> 16) & 0xFF
306 byte2 = (value >> 8) & 0xFF
317 if not 0 <= address < self.
byteCount() * 8:
318 raise ValueError(
"Bit address [%d] out of range [%d..%d]" % (address, 0, (self.
byteCount() * 8) - 1))
321 if not value
in range(2):
322 raise ValueError(
"Bit value [%d] out of range [0..1]" % value)
326 raise ValueError(
"Byte address [%d] out of range [%d..%d]" % (address, 0, self.
byteCount() - 1))
330 raise ValueError(
"Stop byte address [%d] out of range [%d..%d]" % (address, 0, self.
byteCount()))
333 if not value
in range(0x00,0xFF + 1):
334 raise ValueError(
"Byte value [0x%02X] out of range [0x%02X..0x%02X]" % (value, 0x00,0xFF))
338 raise ValueError(
"Word address [%d] out of range [%d..%d]" % (address, 0, (self.
wordCount() - 1)))
341 if not value
in range(0x00,0xFFFF + 1):
342 raise ValueError(
"Word value [0x%04X] out of range [0x%04X..0x%04X]" % (value, 0x00,0xFFFF))
346 raise ValueError(
"Long address [%d] out of range [%d..%d]" % (address, 0, (self.
longCount() - 1)))
349 if not value
in range(0x00,0xFFFFFFFF + 1):
350 raise ValueError(
"Long value [0x%08X] out of range [0x%08X..0x%08X]" % (value, 0x00,0xFFFFFFFF))
356 DRIVERS[
"filememory"] = [
"PICKLEFILE"]
357 DRIVERS[
"at24"] = [
"EE24BASIC",
"EE24X32",
"EE24X64",
"EE24X128",
"EE24X256",
"EE24X512",
"EE24X1024_2"]