# Dictionary of ROM commands and their names, next state.
command = {
- 0x33: ['Read ROM' , 'GET ROM' ],
- 0x0f: ['Conditional read ROM' , 'GET ROM' ],
- 0xcc: ['Skip ROM' , 'TRANSPORT' ],
- 0x55: ['Match ROM' , 'GET ROM' ],
- 0xf0: ['Search ROM' , 'SEARCH ROM'],
- 0xec: ['Conditional search ROM', 'SEARCH ROM'],
- 0x3c: ['Overdrive skip ROM' , 'TRANSPORT' ],
- 0x69: ['Overdrive match ROM' , 'GET ROM' ],
+ 0x33: ['Read ROM' , 'GET ROM' ],
+ 0x0f: ['Conditional read ROM' , 'GET ROM' ],
+ 0xcc: ['Skip ROM' , 'TRANSPORT' ],
+ 0x55: ['Match ROM' , 'GET ROM' ],
+ 0xf0: ['Search ROM' , 'SEARCH ROM'],
+ 0xec: ['Conditional search ROM' , 'SEARCH ROM'],
+ 0x3c: ['Overdrive skip ROM' , 'TRANSPORT' ],
+ 0x69: ['Overdrive match ROM' , 'GET ROM' ],
+ 0xa5: ['Resume' , 'TRANSPORT' ],
+ 0x96: ['DS2408: Disable Test Mode' , 'GET ROM' ],
}
class Decoder(srd.Decoder):
license = 'gplv2+'
inputs = ['onewire_link']
outputs = ['onewire_network']
+ tags = ['Embedded/industrial']
annotations = (
- ('text', 'Human-readable text'),
+ ('text', 'Text'),
)
def __init__(self):
+ self.reset()
+
+ def reset(self):
self.ss_block = 0
self.es_block = 0
self.state = 'COMMAND'
# Data collector.
def onewire_collect(self, length, val, ss, es):
# Storing the sample this sequence begins with.
- if self.bit_cnt == 1:
+ if self.bit_cnt == 0:
self.ss_block = ss
self.data = self.data & ~(1 << self.bit_cnt) | (val << self.bit_cnt)
self.bit_cnt += 1