- ('bits', 'Bits', (70,)),
+ ('bits', 'Bits', (70, 71)),
('cmd-reply', 'Commands/replies',
tuple(range(0, 63 + 1)) + tuple(range(65, 69 + 1))),
('cmd-token', 'Command tokens', (64,)),
('cmd-reply', 'Commands/replies',
tuple(range(0, 63 + 1)) + tuple(range(65, 69 + 1))),
('cmd-token', 'Command tokens', (64,)),
def putx(self, data):
self.put(self.cmd_ss, self.cmd_es, self.out_ann, data)
def putx(self, data):
self.put(self.cmd_ss, self.cmd_es, self.out_ann, data)
def putb(self, data):
self.put(self.bit_ss, self.bit_es, self.out_ann, data)
def putb(self, data):
self.put(self.bit_ss, self.bit_es, self.out_ann, data)
def tb(byte, bit):
return self.cmd_token_bits[5 - byte][7 - bit]
# Bits[47:47]: Start bit (always 0)
bit, self.bit_ss, self.bit_es = tb(5, 7)[0], tb(5, 7)[1], tb(5, 7)[2]
def tb(byte, bit):
return self.cmd_token_bits[5 - byte][7 - bit]
# Bits[47:47]: Start bit (always 0)
bit, self.bit_ss, self.bit_es = tb(5, 7)[0], tb(5, 7)[1], tb(5, 7)[2]
- self.putb([70, ['Start bit: %d' % bit]])
- if bit != 0:
- # TODO
- self.putb([1, ['Warning: Start bit != 0']])
+ if bit == 0:
+ self.putb([70, ['Start bit: %d' % bit]])
+ else:
+ self.putb([71, ['Start bit: %s (Warning: Must be 0!)' % bit]])
# Bits[46:46]: Transmitter bit (1 == host)
bit, self.bit_ss, self.bit_es = tb(5, 6)[0], tb(5, 6)[1], tb(5, 6)[2]
# Bits[46:46]: Transmitter bit (1 == host)
bit, self.bit_ss, self.bit_es = tb(5, 6)[0], tb(5, 6)[1], tb(5, 6)[2]
- self.putb([70, ['Transmitter bit: %d' % bit]])
- if bit != 1:
- # TODO
- self.putb([1, ['Warning: Transmitter bit != 1']])
+ if bit == 1:
+ self.putb([70, ['Transmitter bit: %d' % bit]])
+ else:
+ self.putb([71, ['Transmitter bit: %d (Warning: Must be 1!)' % bit]])
self.bit_ss, self.bit_es = tb(5, 5)[1], tb(5, 0)[2]
self.putb([70, ['Command: %s%d (%s)' % (s, cmd, cmd_name[cmd])]])
self.bit_ss, self.bit_es = tb(5, 5)[1], tb(5, 0)[2]
self.putb([70, ['Command: %s%d (%s)' % (s, cmd, cmd_name[cmd])]])
self.arg = (t[1] << 24) | (t[2] << 16) | (t[3] << 8) | t[4]
self.bit_ss, self.bit_es = tb(4, 7)[1], tb(1, 0)[2]
self.putb([70, ['Argument: 0x%04x' % self.arg]])
self.arg = (t[1] << 24) | (t[2] << 16) | (t[3] << 8) | t[4]
self.bit_ss, self.bit_es = tb(4, 7)[1], tb(1, 0)[2]
self.putb([70, ['Argument: 0x%04x' % self.arg]])
crc = t[5] >> 1
self.bit_ss, self.bit_es = tb(0, 7)[1], tb(0, 1)[2]
crc = t[5] >> 1
self.bit_ss, self.bit_es = tb(0, 7)[1], tb(0, 1)[2]
# Bits[0:0]: End bit (always 1)
bit, self.bit_ss, self.bit_es = tb(0, 0)[0], tb(0, 0)[1], tb(0, 0)[2]
self.putb([70, ['End bit: %d' % bit]])
# Bits[0:0]: End bit (always 1)
bit, self.bit_ss, self.bit_es = tb(0, 0)[0], tb(0, 0)[1], tb(0, 0)[2]
self.putb([70, ['End bit: %d' % bit]])
- if bit != 1:
- # TODO
- self.putb([1, ['Warning: End bit != 1']])
+ if bit == 1:
+ self.putb([70, ['End bit: %d' % bit]])
+ else:
+ self.putb([71, ['End bit: %d (Warning: Must be 1!)' % bit]])
# Handle command.
if cmd in (0, 1, 9, 16, 17, 41, 49, 55, 59):
self.state = 'HANDLE CMD%d' % cmd
# Handle command.
if cmd in (0, 1, 9, 16, 17, 41, 49, 55, 59):
self.state = 'HANDLE CMD%d' % cmd
+ self.cmd_str = '%s%d (%s)' % (s, cmd, cmd_name[cmd])
+ else:
+ self.state = 'HANDLE CMD999'
+ a = '%s%d: %02x %02x %02x %02x %02x %02x' % ((s, cmd) + tuple(t))
+ self.putx([cmd, [a]])
- self.putb([1, ['HCS bit = %d' % hcs]])
+ self.bit_ss = self.cmd_token_bits[5 - 4][7 - 6][1]
+ self.bit_es = self.cmd_token_bits[5 - 4][7 - 6][2]
+ self.putb([70, ['HCS: %d' % hcs]])
- self.putb([59, ['SD card CRC option: %s' % s]])
+ self.putc(59, 'Turn the SD card CRC option %s' % s)
+ self.state = 'GET RESPONSE R1'
+
+ def handle_cmd999(self):
s = 'handle_cmd%s' % self.state[10:].lower()
handle_cmd = getattr(self, s)
handle_cmd()
s = 'handle_cmd%s' % self.state[10:].lower()
handle_cmd = getattr(self, s)
handle_cmd()
elif self.state.startswith('GET RESPONSE'):
# Ignore stray 0xff bytes, some devices seem to send those!?
if miso == 0xff: # TODO?
elif self.state.startswith('GET RESPONSE'):
# Ignore stray 0xff bytes, some devices seem to send those!?
if miso == 0xff: # TODO?