## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
##
import sigrokdecode as srd
# 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):
- api_version = 2
+ api_version = 3
id = 'onewire_network'
name = '1-Wire network layer'
longname = '1-Wire serial communication bus (network layer)'
license = 'gplv2+'
inputs = ['onewire_link']
outputs = ['onewire_network']
+ tags = ['Embedded/industrial']
annotations = (
('text', 'Human-readable 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