Add initial set of PD tests. origin/master
authorUwe Hermann <uwe@hermann-uwe.de>
Mon, 1 Sep 2014 16:23:54 +0000 (18:23 +0200)
committerUwe Hermann <uwe@hermann-uwe.de>
Mon, 1 Sep 2014 16:23:54 +0000 (18:23 +0200)
This is a slightly modified version of the PD test suite that was part
of libsigrokdecode previously.

66 files changed:
.gitignore [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.ac [new file with mode: 0644]
decoder/pdtest [new file with mode: 0755]
decoder/runtc.c [new file with mode: 0644]
decoder/test/can/test.conf [new file with mode: 0644]
decoder/test/dcf77/test.conf [new file with mode: 0644]
decoder/test/edid/samsung_le46b620r3p_fields.output [new file with mode: 0644]
decoder/test/edid/samsung_le46b620r3p_sections.output [new file with mode: 0644]
decoder/test/edid/samsung_syncmaster245b.output [new file with mode: 0644]
decoder/test/edid/test.conf [new file with mode: 0644]
decoder/test/guess_bitrate/test.conf [new file with mode: 0644]
decoder/test/i2c/gigabyte_6vle_vxl_i2c.output [new file with mode: 0644]
decoder/test/i2c/gigabyte_6vle_vxl_i2c.python [new file with mode: 0644]
decoder/test/i2c/rtc_ds1307_200khz.output [new file with mode: 0644]
decoder/test/i2c/rtc_ds1307_200khz.python [new file with mode: 0644]
decoder/test/i2c/rtc_ds1307_200khz_data_read.output [new file with mode: 0644]
decoder/test/i2c/rtc_ds1307_200khz_data_write.output [new file with mode: 0644]
decoder/test/i2c/test.conf [new file with mode: 0644]
decoder/test/i2c/xfp_address_read.binary [new file with mode: 0644]
decoder/test/i2c/xfp_address_write.binary [new file with mode: 0644]
decoder/test/i2c/xfp_data_read.binary [new file with mode: 0644]
decoder/test/i2c/xfp_data_write.binary [new file with mode: 0644]
decoder/test/i2s/test.conf [new file with mode: 0644]
decoder/test/ir_nec/test.conf [new file with mode: 0644]
decoder/test/ir_rc5/test.conf [new file with mode: 0644]
decoder/test/mx25lxx05d/probe.output [new file with mode: 0644]
decoder/test/mx25lxx05d/test.conf [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_activate_cmd.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_activate_warning.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_communication_rx.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_communication_tx.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_excess_bytes_warning.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_misc_cmd.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_misc_register.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_misc_tx_data.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_misc_warning.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_missing_bytes_warning.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_no_command_register.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_rx.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_unknown_command_warning.output [new file with mode: 0644]
decoder/test/nrf24l01/nrf24l01_unknown_register_warning.output [new file with mode: 0644]
decoder/test/nrf24l01/test.conf [new file with mode: 0644]
decoder/test/onewire_link/test.conf [new file with mode: 0644]
decoder/test/spi/atmega32_00_miso.output [new file with mode: 0644]
decoder/test/spi/atmega32_00_mosi.output [new file with mode: 0644]
decoder/test/spi/mx25l1605d_probe.output [new file with mode: 0644]
decoder/test/spi/mx25l1605d_probe_miso.output [new file with mode: 0644]
decoder/test/spi/mx25l1605d_probe_mosi.output [new file with mode: 0644]
decoder/test/spi/spi_count_miso_lsb.output [new file with mode: 0644]
decoder/test/spi/spi_count_miso_msb.output [new file with mode: 0644]
decoder/test/spi/spi_count_mosi_lsb.output [new file with mode: 0644]
decoder/test/spi/spi_count_mosi_msb.output [new file with mode: 0644]
decoder/test/spi/test.conf [new file with mode: 0644]
decoder/test/uart/test.conf [new file with mode: 0644]
decoder/test/uart/trekstor.output [new file with mode: 0644]
decoder/test/uart/trekstor_bin_rx.output [new file with mode: 0644]
decoder/test/uart/trekstor_bin_tx.output [new file with mode: 0644]
decoder/test/uart/trekstor_rx.output [new file with mode: 0644]
decoder/test/uart/trekstor_tx.output [new file with mode: 0644]
decoder/test/usb_signalling/test.conf [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..79b0b99
--- /dev/null
@@ -0,0 +1,30 @@
+# autotools cruft
+aclocal.m4
+autom4te.cache/
+compile
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+missing
+ChangeLog
+INSTALL
+decoder/runtc
+
+# recursive autoconf leftovers
+.deps
+Makefile
+Makefile.in
+.dirstamp
+
+# build leftovers
+*~
+*.o
+*.a
+*.lo
+*.la
+.libs/
+decoder/test/*/__pycache__/
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..afb6e7d
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,11 @@
+-------------------------------------------------------------------------------
+AUTHORS
+-------------------------------------------------------------------------------
+
+Please check the source code files and/or git history and/or ChangeLog for
+a list of all authors and contributors.
+
+The PD tests in the decoder/ subdirectory were initially added to the
+libsigrokdecode repository (and later moved to the sigrok-test repo).
+Check the libsigrokdecode repo for the history before the move.
+
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..dc0e3cc
--- /dev/null
@@ -0,0 +1,31 @@
+##
+## This file is part of the sigrok-test project.
+##
+## Copyright (C) 2014 Uwe Hermann <uwe@hermann-uwe.de>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## 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
+##
+
+noinst_PROGRAMS = decoder/runtc
+
+decoder_runtc_SOURCES = decoder/runtc.c
+decoder_runtc_CPPFLAGS = -DDECODERS_DIR='"$(DECODERS_DIR)"'
+
+MAINTAINERCLEANFILES = ChangeLog
+
+.PHONY: ChangeLog
+ChangeLog:
+       git --git-dir $(top_srcdir)/.git log > ChangeLog || touch ChangeLog
+
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..1de4783
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,5 @@
+0.1.0 (yyyy-mm-dd)
+------------------
+
+ * Initial release.
+
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..2f9d9aa
--- /dev/null
+++ b/README
@@ -0,0 +1,84 @@
+-------------------------------------------------------------------------------
+README
+-------------------------------------------------------------------------------
+
+The sigrok project aims at creating a portable, cross-platform,
+Free/Libre/Open-Source signal analysis software suite that supports various
+device types (such as logic analyzers, oscilloscopes, multimeters, and more).
+
+sigrok-test is a collection of various tools and files for testing sigrok.
+
+
+Status
+------
+
+Work in progress.
+
+Distro packagers should NOT package this!
+
+
+Requirements
+------------
+
+ - git
+ - gcc
+ - make
+ - autoconf >= 2.63
+ - automake >= 1.11
+ - pkg-config >= 0.22
+ - libglib >= 2.24.0
+ - Python >= 3.2
+ - libsigrok >= 0.3.0
+ - libsigrokdecode >= 0.3.0
+ - python3-coverage
+
+
+Building and usage
+------------------
+
+Assumption: libsigrok and libsigrokdecode are installed in $HOME/sr.
+If they are in a standard location instead, you don't need the
+PKG_CONFIG_PATH and LD_LIBRARY_PATH below.
+
+In order to get the sigrok-test source code and build it, run:
+
+ $ git clone git://sigrok.org/sigrok-test
+ $ cd sigrok-test
+ $ PKG_CONFIG_PATH=$HOME/sr/lib/pkgconfig ./configure \
+       --with-decodersdir=/path/to/decoders
+ $ make
+
+This will test the decoders located at /path/to/decoders:
+
+ $ LD_LIBRARY_PATH=$HOME/sr/lib ./decoder/test/pdtest -r -v -a
+
+
+Copyright and license
+---------------------
+
+sigrok-test contains various tools that are licensed under different terms.
+
+Some are licensed under the terms of the GNU GPL version 2 (or later),
+others under the terms of the GNU GPL version 3 (or later).
+
+Please see the individual source files for the full list of copyright holders
+and the license that applies to the respective tool.
+
+
+Mailing list
+------------
+
+ https://lists.sourceforge.net/lists/listinfo/sigrok-devel
+
+
+IRC
+---
+
+You can find the sigrok developers in the #sigrok IRC channel on Freenode.
+
+
+Website
+-------
+
+ http://sigrok.org
+
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..194375d
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+##
+## This file is part of the sigrok-test project.
+##
+## Copyright (C) 2014 Uwe Hermann <uwe@hermann-uwe.de>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## 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
+##
+
+echo "Generating build system..."
+aclocal || exit 1
+automake --add-missing --copy || exit 1
+autoconf || exit 1
+
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..1877559
--- /dev/null
@@ -0,0 +1,131 @@
+##
+## This file is part of the sigrok-test project.
+##
+## Copyright (C) 2010 Bert Vermeulen <bert@biot.com>
+## Copyright (C) 2014 Uwe Hermann <uwe@hermann-uwe.de>
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## 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, see <http://www.gnu.org/licenses/>.
+##
+
+# We require at least autoconf 2.63 (AC_INIT format changed there).
+AC_PREREQ([2.63])
+
+AC_INIT([sigrok-test], [0.1.0], [sigrok-devel@lists.sourceforge.net],
+       [sigrok-test], [http://www.sigrok.org])
+
+# We require at least automake 1.11 (needed for 'silent rules').
+AM_INIT_AUTOMAKE([1.11 -Wall -Werror subdir-objects check-news])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+# Enable more compiler warnings.
+AM_CFLAGS="$AM_CFLAGS -Wall -Wextra -Wmissing-prototypes"
+
+# Checks for programs.
+AC_PROG_CC
+
+# Required for per-target flags or subdir-objects with C sources.
+AM_PROG_CC_C_O
+
+# Initialize pkg-config.
+# We require at least 0.22, as "Requires.private" behaviour changed there.
+PKG_PROG_PKG_CONFIG([0.22])
+
+AC_ARG_WITH(decodersdir,
+       AC_HELP_STRING([--with-decodersdir=path],
+       [specify decodersdir [default=DATAROOTDIR/libsigrokdecode/decoders]]),
+       [DECODERS_DIR=$withval], [DECODERS_DIR=$datadir/libsigrokdecode/decoders])
+
+# Checks for libraries.
+
+# libglib-2.0 is always needed.
+AM_PATH_GLIB_2_0([2.24.0],
+       [AM_CFLAGS="$AM_CFLAGS $GLIB_CFLAGS"; LIBS="$LIBS $GLIB_LIBS"])
+
+# Python 3 is always needed.
+# Note: We need to try a few different variants, since some systems have a
+# python3.pc file, others have a python-3.3.pc file, and so on.
+# See also: http://sigrok.org/wiki/Libsigrokdecode/Python
+CPPFLAGS_PYTHON=""
+LDFLAGS_PYTHON=""
+pyver="none"
+PKG_CHECK_MODULES([python3], [python3 >= 3.2],
+       [pyver=`$PKG_CONFIG --modversion python3`;
+       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python3_CFLAGS";
+       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python3_LIBS"],
+[PKG_CHECK_MODULES([python34], [python-3.4 >= 3.4],
+       [pyver=`$PKG_CONFIG --modversion python-3.4`;
+       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python34_CFLAGS";
+       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python34_LIBS"],
+[PKG_CHECK_MODULES([python33], [python-3.3 >= 3.3],
+       [pyver=`$PKG_CONFIG --modversion python-3.3`;
+       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python33_CFLAGS";
+       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python33_LIBS"],
+[PKG_CHECK_MODULES([python32], [python-3.2 >= 3.2],
+       [pyver=`$PKG_CONFIG --modversion python-3.2`;
+       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python32_CFLAGS";
+       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python32_LIBS"],
+)])])])
+AM_CFLAGS="$AM_CFLAGS $CPPFLAGS_PYTHON"
+AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS_PYTHON"
+
+# libsigrok is always needed.
+PKG_CHECK_MODULES([libsigrok], [libsigrok >= 0.3.0],
+       [AM_CFLAGS="$AM_CFLAGS $libsigrok_CFLAGS";
+       LIBS="$LIBS $libsigrok_LIBS"])
+
+# libsigrokdecode is always needed.
+PKG_CHECK_MODULES([libsigrokdecode], [libsigrokdecode >= 0.3.0],
+       [AM_CFLAGS="$AM_CFLAGS $libsigrokdecode_CFLAGS";
+       LIBS="$LIBS $libsigrokdecode_LIBS"])
+
+# Checks for header files.
+AC_CHECK_HEADER([sys/resource.h])
+
+AC_SUBST(DECODERS_DIR)
+AC_SUBST(MAKEFLAGS, '--no-print-directory')
+AC_SUBST(AM_LIBTOOLFLAGS, '--silent')
+
+AC_SUBST(AM_CFLAGS)
+AC_SUBST(AM_LDFLAGS)
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
+
+echo
+echo "sigrok-test configuration summary:"
+echo
+echo "  - Package version (major.minor.micro): 0.1.0"
+echo "  - Prefix: $prefix"
+echo
+echo "Detected libraries:"
+echo
+
+if test "x$pyver" = "xnone"; then
+       echo "  - (REQUIRED) python >= 3.2: no"
+else
+       echo "  - (REQUIRED) python >= 3.2: yes ($pyver)"
+fi
+
+# Note: This only works for libs with pkg-config integration.
+for lib in "glib-2.0 >= 2.24.0" "libsigrok >= 0.3.0" "libsigrokdecode >= 0.3.0"; do
+       optional="REQUIRED"
+       if `$PKG_CONFIG --exists $lib`; then
+               ver=`$PKG_CONFIG --modversion $lib`
+               answer="yes ($ver)"
+       else
+               answer="no"
+       fi
+       echo "  - ($optional) $lib: $answer"
+done
diff --git a/decoder/pdtest b/decoder/pdtest
new file mode 100755 (executable)
index 0000000..fa72934
--- /dev/null
@@ -0,0 +1,574 @@
+#!/usr/bin/env python3
+##
+## This file is part of the sigrok-test project.
+##
+## Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## 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, see <http://www.gnu.org/licenses/>.
+##
+
+import os
+import sys
+import re
+from getopt import getopt
+from tempfile import mkstemp
+from subprocess import Popen, PIPE
+from difflib import Differ
+from hashlib import md5
+from shutil import copy
+
+DEBUG = 0
+VERBOSE = False
+
+
+class E_syntax(Exception):
+    pass
+class E_badline(Exception):
+    pass
+
+def INFO(msg, end='\n'):
+    if VERBOSE:
+        print(msg, end=end)
+        sys.stdout.flush()
+
+
+def DBG(msg):
+    if DEBUG:
+        print(msg)
+
+
+def ERR(msg):
+    print(msg, file=sys.stderr)
+
+
+def usage(msg=None):
+    if msg:
+        print(msg.strip() + '\n')
+    print("""Usage: testpd [-dvarslR] [test, ...]
+  -d  Turn on debugging
+  -v  Verbose
+  -a  All tests
+  -l  List all tests
+  -s  Show test(s)
+  -r  Run test(s)
+  -f  Fix failed test(s)
+  -c  Report decoder code coverage
+  -R <directory>  Save test reports to <directory>
+  <test>  Protocol decoder name ("i2c") and optionally test name ("i2c/icc")""")
+    sys.exit()
+
+
+def check_tclist(tc):
+    if 'pdlist' not in tc or not tc['pdlist']:
+        return("No protocol decoders")
+    if 'input' not in tc or not tc['input']:
+        return("No input")
+    if 'output' not in tc or not tc['output']:
+        return("No output")
+    for op in tc['output']:
+        if 'match' not in op:
+            return("No match in output")
+
+    return None
+
+
+def parse_testfile(path, pd, tc, op_type, op_class):
+    DBG("Opening '%s'" % path)
+    tclist = []
+    for line in open(path).read().split('\n'):
+        try:
+            line = line.strip()
+            if len(line) == 0 or line[0] == "#":
+                continue
+            f = line.split()
+            if not tclist and f[0] != "test":
+                # That can't be good.
+                raise E_badline
+            key = f.pop(0)
+            if key == 'test':
+                if len(f) != 1:
+                    raise E_syntax
+                # new testcase
+                tclist.append({
+                    'pd': pd,
+                    'name': f[0],
+                    'pdlist': [],
+                    'output': [],
+                })
+            elif key == 'protocol-decoder':
+                if len(f) < 1:
+                    raise E_syntax
+                pd_spec = {
+                    'name': f.pop(0),
+                    'channels': [],
+                    'options': [],
+                }
+                while len(f):
+                    if len(f) == 1:
+                        # Always needs <key> <value>
+                        raise E_syntax
+                    a, b = f[:2]
+                    f = f[2:]
+                    if '=' not in b:
+                        raise E_syntax
+                    opt, val = b.split('=')
+                    if a == 'channel':
+                        try:
+                            val = int(val)
+                        except:
+                            raise E_syntax
+                        pd_spec['channels'].append([opt, val])
+                    elif a == 'option':
+                        pd_spec['options'].append([opt, val])
+                    else:
+                        raise E_syntax
+                tclist[-1]['pdlist'].append(pd_spec)
+            elif key == 'stack':
+                if len(f) < 2:
+                    raise E_syntax
+                tclist[-1]['stack'] = f
+            elif key == 'input':
+                if len(f) != 1:
+                    raise E_syntax
+                tclist[-1]['input'] = f[0]
+            elif key == 'output':
+                op_spec = {
+                    'pd': f.pop(0),
+                    'type': f.pop(0),
+                }
+                while len(f):
+                    if len(f) == 1:
+                        # Always needs <key> <value>
+                        raise E_syntax
+                    a, b = f[:2]
+                    f = f[2:]
+                    if a == 'class':
+                        op_spec['class'] = b
+                    elif a == 'match':
+                        op_spec['match'] = b
+                    else:
+                        raise E_syntax
+                tclist[-1]['output'].append(op_spec)
+            else:
+                raise E_badline
+        except E_badline as e:
+            ERR("Invalid syntax in %s: line '%s'" % (path, line))
+            return []
+        except E_syntax as e:
+            ERR("Unable to parse %s: unknown line '%s'" % (path, line))
+            return []
+
+    # If a specific testcase was requested, keep only that one.
+    if tc is not None:
+        target_tc = None
+        for t in tclist:
+            if t['name'] == tc:
+                target_tc = t
+                break
+        # ...and a specific output type
+        if op_type is not None:
+            target_oplist = []
+            for op in target_tc['output']:
+                if op['type'] == op_type:
+                    # ...and a specific output class
+                    if op_class is None or ('class' in op and op['class'] == op_class):
+                        target_oplist.append(op)
+                        DBG("match on [%s]" % str(op))
+            target_tc['output'] = target_oplist
+        if target_tc is None:
+            tclist = []
+        else:
+            tclist = [target_tc]
+    for t in tclist:
+        error = check_tclist(t)
+        if error:
+            ERR("Error in %s: %s" % (path, error))
+            return []
+
+    return tclist
+
+
+def get_tests(testnames):
+    tests = {}
+    for testspec in testnames:
+        # Optional testspec in the form pd/testcase/type/class
+        tc = op_type = op_class = None
+        ts = testspec.strip("/").split("/")
+        pd = ts.pop(0)
+        tests[pd] = []
+        if ts:
+            tc = ts.pop(0)
+        if ts:
+            op_type = ts.pop(0)
+        if ts:
+            op_class = ts.pop(0)
+        path = os.path.join(tests_dir, pd)
+        if not os.path.isdir(path):
+            # User specified non-existent PD
+            raise Exception("%s not found." % path)
+        path = os.path.join(tests_dir, pd, "test.conf")
+        if not os.path.exists(path):
+            # PD doesn't have any tests yet
+            continue
+        tests[pd].append(parse_testfile(path, pd, tc, op_type, op_class))
+
+    return tests
+
+
+def diff_text(f1, f2):
+    t1 = open(f1).readlines()
+    t2 = open(f2).readlines()
+    diff = []
+    d = Differ()
+    for line in d.compare(t1, t2):
+        if line[:2] in ('- ', '+ '):
+            diff.append(line.strip())
+
+    return diff
+
+
+def compare_binary(f1, f2):
+    h1 = md5()
+    h1.update(open(f1, 'rb').read())
+    h2 = md5()
+    h2.update(open(f2, 'rb').read())
+    if h1.digest() == h2.digest():
+        result = None
+    else:
+        result = ["Binary output does not match."]
+
+    return result
+
+
+# runtc's stdout can have lines like:
+# coverage: lines=161 missed=2 coverage=99%
+def parse_stats(text):
+    stats = {}
+    for line in text.strip().split('\n'):
+        fields = line.split()
+        key = fields.pop(0).strip(':')
+        if key not in stats:
+            stats[key] = []
+        stats[key].append({})
+        for f in fields:
+            k, v = f.split('=')
+            stats[key][-1][k] = v
+
+    return stats
+
+
+# take result set of all tests in a PD, and summarize which lines
+# were not covered by any of the tests.
+def coverage_sum(cvglist):
+    lines = 0
+    missed = 0
+    missed_lines = {}
+    for record in cvglist:
+        lines = int(record['lines'])
+        missed += int(record['missed'])
+        if 'missed_lines' not in record:
+            continue
+        for linespec in record['missed_lines'].split(','):
+            if linespec not in missed_lines:
+                missed_lines[linespec] = 1
+            else:
+                missed_lines[linespec] += 1
+
+    # keep only those lines that didn't show up in every non-summary record
+    final_missed = []
+    for linespec in missed_lines:
+        if missed_lines[linespec] != len(cvglist):
+            continue
+        final_missed.append(linespec)
+
+    return lines, final_missed
+
+
+def run_tests(tests, fix=False):
+    errors = 0
+    results = []
+    cmd = [os.path.join(runtc_dir, 'runtc')]
+    if opt_coverage:
+        fd, coverage = mkstemp()
+        os.close(fd)
+        cmd.extend(['-c', coverage])
+    else:
+        coverage = None
+    for pd in sorted(tests.keys()):
+        pd_cvg = []
+        for tclist in tests[pd]:
+            for tc in tclist:
+                args = cmd[:]
+                if DEBUG > 1:
+                    args.append('-d')
+                # Set up PD stack for this test.
+                for spd in tc['pdlist']:
+                    args.extend(['-P', spd['name']])
+                    for label, channel in spd['channels']:
+                        args.extend(['-p', "%s=%d" % (label, channel)])
+                    for option, value in spd['options']:
+                        args.extend(['-o', "%s=%s" % (option, value)])
+                args.extend(['-i', os.path.join(dumps_dir, tc['input'])])
+                for op in tc['output']:
+                    name = "%s/%s/%s" % (pd, tc['name'], op['type'])
+                    opargs = ['-O', "%s:%s" % (op['pd'], op['type'])]
+                    if 'class' in op:
+                        opargs[-1] += ":%s" % op['class']
+                        name += "/%s" % op['class']
+                    if VERBOSE:
+                        dots = '.' * (60 - len(name) - 2)
+                        INFO("%s %s " % (name, dots), end='')
+                    results.append({
+                        'testcase': name,
+                    })
+                    try:
+                        fd, outfile = mkstemp()
+                        os.close(fd)
+                        opargs.extend(['-f', outfile])
+                        DBG("Running %s" % (' '.join(args + opargs)))
+                        p = Popen(args + opargs, stdout=PIPE, stderr=PIPE)
+                        stdout, stderr = p.communicate()
+                        if stdout:
+                            # statistics and coverage data on stdout
+                            results[-1].update(parse_stats(stdout.decode('utf-8')))
+                        if stderr:
+                            results[-1]['error'] = stderr.decode('utf-8').strip()
+                            errors += 1
+                        elif p.returncode != 0:
+                            # runtc indicated an error, but didn't output a
+                            # message on stderr about it
+                            results[-1]['error'] = "Unknown error: runtc %d" % p.returncode
+                        if 'error' not in results[-1]:
+                            matchfile = os.path.join(tests_dir, op['pd'], op['match'])
+                            DBG("Comparing with %s" % matchfile)
+                            try:
+                                diff = diff_error = None
+                                if op['type'] in ('annotation', 'python'):
+                                    diff = diff_text(matchfile, outfile)
+                                elif op['type'] == 'binary':
+                                    diff = compare_binary(matchfile, outfile)
+                                else:
+                                    diff = ["Unsupported output type '%s'." % op['type']]
+                            except Exception as e:
+                                diff_error = e
+                            if fix:
+                                if diff or diff_error:
+                                    copy(outfile, matchfile)
+                                    DBG("Wrote %s" % matchfile)
+                            else:
+                                if diff:
+                                    results[-1]['diff'] = diff
+                                elif diff_error is not None:
+                                    raise diff_error
+                    except Exception as e:
+                        results[-1]['error'] = str(e)
+                    finally:
+                        if coverage:
+                            results[-1]['coverage_report'] = coverage
+                        os.unlink(outfile)
+                    if op['type'] == 'exception' and 'error' in results[-1]:
+                        # filter out the exception we were looking for
+                        reg = "^Error: srd: %s:" % op['match']
+                        if re.match(reg, results[-1]['error']):
+                            # found it, not an error
+                            results[-1].pop('error')
+                    if VERBOSE:
+                        if 'diff' in results[-1]:
+                            INFO("Output mismatch")
+                        elif 'error' in results[-1]:
+                            error = results[-1]['error']
+                            if len(error) > 20:
+                                error = error[:17] + '...'
+                            INFO(error)
+                        elif 'coverage' in results[-1]:
+                            # report coverage of this PD
+                            for record in results[-1]['coverage']:
+                                # but not others used in the stack
+                                # as part of the test.
+                                if record['scope'] == pd:
+                                    INFO(record['coverage'])
+                                    break
+                        else:
+                            INFO("OK")
+                    gen_report(results[-1])
+                    if coverage:
+                        os.unlink(coverage)
+                        # only keep track of coverage records for this PD,
+                        # not others in the stack just used for testing.
+                        for cvg in results[-1]['coverage']:
+                            if cvg['scope'] == pd:
+                                pd_cvg.append(cvg)
+        if opt_coverage and len(pd_cvg) > 1:
+            # report total coverage of this PD, across all the tests
+            # that were done on it.
+            total_lines, missed_lines = coverage_sum(pd_cvg)
+            pd_coverage = 100 - (float(len(missed_lines)) / total_lines * 100)
+            if VERBOSE:
+                dots = '.' * (54 - len(pd) - 2)
+                INFO("%s total %s %d%%" % (pd, dots, pd_coverage))
+            if report_dir:
+                # generate a missing lines list across all the files in
+                # the PD
+                files = {}
+                for entry in missed_lines:
+                    filename, line = entry.split(':')
+                    if filename not in files:
+                        files[filename] = []
+                    files[filename].append(line)
+                text = ''
+                for filename in sorted(files.keys()):
+                    line_list = ','.join(sorted(files[filename], key=int))
+                    text += "%s: %s\n" % (filename, line_list)
+                open(os.path.join(report_dir, pd + "_total"), 'w').write(text)
+
+
+    return results, errors
+
+
+def gen_report(result):
+    out = []
+    if 'error' in result:
+        out.append("Error:")
+        out.append(result['error'])
+        out.append('')
+    if 'diff' in result:
+        out.append("Test output mismatch:")
+        out.extend(result['diff'])
+        out.append('')
+    if 'coverage_report' in result:
+        out.append(open(result['coverage_report'], 'r').read())
+        out.append('')
+
+    if out:
+        text = "Testcase: %s\n" % result['testcase']
+        text += '\n'.join(out)
+    else:
+        return
+
+    if report_dir:
+        filename = result['testcase'].replace('/', '_')
+        open(os.path.join(report_dir, filename), 'w').write(text)
+    else:
+        print(text)
+
+
+def show_tests(tests):
+    for pd in sorted(tests.keys()):
+        for tclist in tests[pd]:
+            for tc in tclist:
+                print("Testcase: %s/%s" % (tc['pd'], tc['name']))
+                for pd in tc['pdlist']:
+                    print("  Protocol decoder: %s" % pd['name'])
+                    for label, channel in pd['channels']:
+                        print("    Channel %s=%d" % (label, channel))
+                    for option, value in pd['options']:
+                        print("    Option %s=%d" % (option, value))
+                if 'stack' in tc:
+                    print("  Stack: %s" % ' '.join(tc['stack']))
+                print("  Input: %s" % tc['input'])
+                for op in tc['output']:
+                    print("  Output:\n    Protocol decoder: %s" % op['pd'])
+                    print("    Type: %s" % op['type'])
+                    if 'class' in op:
+                        print("    Class: %s" % op['class'])
+                    print("    Match: %s" % op['match'])
+            print()
+
+
+def list_tests(tests):
+    for pd in sorted(tests.keys()):
+        for tclist in tests[pd]:
+            for tc in tclist:
+                for op in tc['output']:
+                    line = "%s/%s/%s" % (tc['pd'], tc['name'], op['type'])
+                    if 'class' in op:
+                        line += "/%s" % op['class']
+                    print(line)
+
+
+#
+# main
+#
+
+# project root
+runtc_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
+base_dir = os.path.abspath(os.path.join(os.curdir, runtc_dir, os.path.pardir))
+dumps_dir = os.path.abspath(os.path.join(base_dir, os.path.pardir, 'sigrok-dumps'))
+tests_dir = os.path.abspath(os.path.join(runtc_dir, 'test'))
+
+if len(sys.argv) == 1:
+    usage()
+
+opt_all = opt_run = opt_show = opt_list = opt_fix = opt_coverage = False
+report_dir = None
+opts, args = getopt(sys.argv[1:], "dvarslfcR:S:")
+for opt, arg in opts:
+    if opt == '-d':
+        DEBUG += 1
+    if opt == '-v':
+        VERBOSE = True
+    elif opt == '-a':
+        opt_all = True
+    elif opt == '-r':
+        opt_run = True
+    elif opt == '-s':
+        opt_show = True
+    elif opt == '-l':
+        opt_list = True
+    elif opt == '-f':
+        opt_fix = True
+    elif opt == '-c':
+        opt_coverage = True
+    elif opt == '-R':
+        report_dir = arg
+    elif opt == '-S':
+        dumps_dir = arg
+
+if opt_run and opt_show:
+    usage("Use either -s or -r, not both.")
+if args and opt_all:
+    usage("Specify either -a or tests, not both.")
+if report_dir is not None and not os.path.isdir(report_dir):
+    usage("%s is not a directory" % report_dir)
+
+ret = 0
+try:
+    if args:
+        testlist = get_tests(args)
+    elif opt_all:
+        testlist = get_tests(os.listdir(tests_dir))
+    else:
+        usage("Specify either -a or tests.")
+
+    if opt_run:
+        if not os.path.isdir(dumps_dir):
+            ERR("Could not find sigrok-dumps repository at %s" % dumps_dir)
+            sys.exit(1)
+        results, errors = run_tests(testlist, fix=opt_fix)
+        ret = errors
+    elif opt_show:
+        show_tests(testlist)
+    elif opt_list:
+        list_tests(testlist)
+    elif opt_fix:
+        run_tests(testlist, fix=True)
+    else:
+        usage()
+except Exception as e:
+    print("Error: %s" % str(e))
+    if DEBUG:
+        raise
+
+sys.exit(ret)
+
diff --git a/decoder/runtc.c b/decoder/runtc.c
new file mode 100644 (file)
index 0000000..364e43f
--- /dev/null
@@ -0,0 +1,838 @@
+/*
+ * This file is part of the sigrok-test project.
+ *
+ * Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <Python.h>
+#include <libsigrokdecode/libsigrokdecode.h>
+#include <libsigrok/libsigrok.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <dirent.h>
+#include <glib.h>
+#ifdef __LINUX__
+#include <sched.h>
+#endif
+
+int debug = FALSE;
+int statistics = FALSE;
+char *coverage_report;
+
+struct channel {
+       char *name;
+       int channel;
+};
+
+struct option {
+       char *key;
+       GVariant *value;
+};
+
+struct pd {
+       char *name;
+       GSList *channels;
+       GSList *options;
+};
+
+struct output {
+       char *pd;
+       int type;
+       char *class;
+       int class_idx;
+       char *outfile;
+       int outfd;
+};
+
+struct cvg {
+       int num_lines;
+       int num_missed;
+       float coverage;
+       GSList *missed_lines;
+};
+
+struct cvg *get_mod_cov(PyObject *py_cov, char *module_name);
+void cvg_add(struct cvg *dst, struct cvg *src);
+struct cvg *cvg_new(void);
+gboolean find_missed_line(struct cvg *cvg, char *linespec);
+
+static void logmsg(char *prefix, FILE *out, const char *format, va_list args)
+{
+       if (prefix)
+               fprintf(out, "%s", prefix);
+       vfprintf(out, format, args);
+       fprintf(out, "\n");
+}
+
+static void DBG(const char *format, ...)
+{
+       va_list args;
+
+       if (!debug)
+               return;
+       va_start(args, format);
+       logmsg("DBG: runtc: ", stdout, format, args);
+       va_end(args);
+}
+
+static void ERR(const char *format, ...)
+{
+       va_list args;
+
+       va_start(args, format);
+       logmsg("Error: ", stderr, format, args);
+       va_end(args);
+}
+
+static int sr_log(void *cb_data, int loglevel, const char *format, va_list args)
+{
+       (void)cb_data;
+
+       if (loglevel == SR_LOG_ERR || loglevel == SR_LOG_WARN)
+               logmsg("Error: sr: ", stderr, format, args);
+       else if (debug)
+               logmsg("DBG: sr: ", stdout, format, args);
+
+       return SRD_OK;
+}
+
+static int srd_log(void *cb_data, int loglevel, const char *format, va_list args)
+{
+       (void)cb_data;
+
+       if (loglevel == SRD_LOG_ERR || loglevel == SRD_LOG_WARN)
+               logmsg("Error: srd: ", stderr, format, args);
+       else if (debug)
+               logmsg("DBG: srd: ", stdout, format, args);
+
+       return SRD_OK;
+}
+
+static void usage(char *msg)
+{
+       if (msg)
+               fprintf(stderr, "%s\n", msg);
+
+       printf("Usage: runtc [-dPpoiOf]\n");
+       printf("  -d  Debug\n");
+       printf("  -P  <protocol decoder>\n");
+       printf("  -p  <channelname=channelnum> (optional)\n");
+       printf("  -o  <channeloption=value> (optional)\n");
+       printf("  -i <input file>\n");
+       printf("  -O <output-pd:output-type[:output-class]>\n");
+       printf("  -f <output file> (optional)\n");
+       printf("  -c <coverage report> (optional)\n");
+       exit(msg ? 1 : 0);
+
+}
+
+/* This is a neutered version of libsigrokdecode's py_str_as_str(). It
+ * does no error checking, but then the only strings it processes are
+ * generated by Python's repr(), so are known good. */
+static char *py_str_as_str(const PyObject *py_str)
+{
+       PyObject *py_encstr;
+       char *str, *outstr;
+
+       py_encstr = PyUnicode_AsEncodedString((PyObject *)py_str, "utf-8", NULL);
+       str = PyBytes_AS_STRING(py_encstr);
+       outstr = g_strdup(str);
+       Py_DecRef(py_encstr);
+
+       return outstr;
+}
+
+static void srd_cb_py(struct srd_proto_data *pdata, void *cb_data)
+{
+       struct output *op;
+       PyObject *pydata, *pyrepr;
+       GString *out;
+       char *s;
+
+       DBG("Python output from %s", pdata->pdo->di->inst_id);
+       op = cb_data;
+       pydata = pdata->data;
+       DBG("ptr %p", pydata);
+
+       if (strcmp(pdata->pdo->di->inst_id, op->pd))
+               /* This is not the PD selected for output. */
+               return;
+
+       if (!(pyrepr = PyObject_Repr(pydata))) {
+               ERR("Invalid Python object.");
+               return;
+       }
+       s = py_str_as_str(pyrepr);
+       Py_DecRef(pyrepr);
+
+       /* Output format for testing is '<ss>-<es> <inst-id>: <repr>\n'. */
+       out = g_string_sized_new(128);
+       g_string_printf(out, "%" PRIu64 "-%" PRIu64 " %s: %s\n",
+                       pdata->start_sample, pdata->end_sample,
+                       pdata->pdo->di->inst_id, s);
+       g_free(s);
+       if (write(op->outfd, out->str, out->len) == -1)
+               ERR("SRD_OUTPUT_PYTHON callback write failure!");
+       DBG("wrote '%s'", out->str);
+       g_string_free(out, TRUE);
+
+}
+
+static void srd_cb_bin(struct srd_proto_data *pdata, void *cb_data)
+{
+       struct srd_proto_data_binary *pdb;
+       struct output *op;
+       GString *out;
+       unsigned int i;
+
+       DBG("Binary output from %s", pdata->pdo->di->inst_id);
+       op = cb_data;
+       pdb = pdata->data;
+
+       if (strcmp(pdata->pdo->di->inst_id, op->pd))
+               /* This is not the PD selected for output. */
+               return;
+
+       if (op->class_idx != -1 && op->class_idx != pdb->bin_class)
+               /*
+                * This output takes a specific binary class,
+                * but not the one that just came in.
+                */
+               return;
+
+       out = g_string_sized_new(128);
+       g_string_printf(out, "%" PRIu64 "-%" PRIu64 " %s:",
+                       pdata->start_sample, pdata->end_sample,
+                       pdata->pdo->di->inst_id);
+       for (i = 0; i < pdb->size; i++) {
+               g_string_append_printf(out, " %.2x", pdb->data[i]);
+       }
+       g_string_append(out, "\n");
+       if (write(op->outfd, out->str, out->len) == -1)
+               ERR("SRD_OUTPUT_BINARY callback write failure!");
+
+}
+
+static void srd_cb_ann(struct srd_proto_data *pdata, void *cb_data)
+{
+       struct srd_decoder *dec;
+       struct srd_proto_data_annotation *pda;
+       struct output *op;
+       GString *line;
+       int i;
+       char **dec_ann;
+
+       DBG("Annotation output from %s", pdata->pdo->di->inst_id);
+       op = cb_data;
+       pda = pdata->data;
+       dec = pdata->pdo->di->decoder;
+       if (strcmp(pdata->pdo->di->inst_id, op->pd))
+               /* This is not the PD selected for output. */
+               return;
+
+       if (op->class_idx != -1 && op->class_idx != pda->ann_format)
+               /*
+                * This output takes a specific annotation class,
+                * but not the one that just came in.
+                */
+               return;
+
+       dec_ann = g_slist_nth_data(dec->annotations, pda->ann_format);
+       line = g_string_sized_new(256);
+       g_string_printf(line, "%" PRIu64 "-%" PRIu64 " %s: %s:",
+                       pdata->start_sample, pdata->end_sample,
+                       pdata->pdo->di->inst_id, dec_ann[0]);
+       for (i = 0; pda->ann_text[i]; i++)
+               g_string_append_printf(line, " \"%s\"", pda->ann_text[i]);
+       g_string_append(line, "\n");
+       if (write(op->outfd, line->str, line->len) == -1)
+               ERR("SRD_OUTPUT_ANN callback write failure!");
+       g_string_free(line, TRUE);
+
+}
+
+static void sr_cb(const struct sr_dev_inst *sdi,
+               const struct sr_datafeed_packet *packet, void *cb_data)
+{
+       const struct sr_datafeed_logic *logic;
+       struct srd_session *sess;
+       GVariant *gvar;
+       uint64_t samplerate;
+       int num_samples;
+       static int samplecnt = 0;
+
+       sess = cb_data;
+
+       switch (packet->type) {
+       case SR_DF_HEADER:
+               DBG("Received SR_DF_HEADER");
+               if (sr_config_get(sdi->driver, sdi, NULL, SR_CONF_SAMPLERATE,
+                               &gvar) != SR_OK) {
+                       ERR("Getting samplerate failed");
+                       break;
+               }
+               samplerate = g_variant_get_uint64(gvar);
+               g_variant_unref(gvar);
+               if (srd_session_metadata_set(sess, SRD_CONF_SAMPLERATE,
+                               g_variant_new_uint64(samplerate)) != SRD_OK) {
+                       ERR("Setting samplerate failed");
+                       break;
+               }
+               if (srd_session_start(sess) != SRD_OK) {
+                       ERR("Session start failed");
+                       break;
+               }
+               break;
+       case SR_DF_LOGIC:
+               logic = packet->payload;
+               num_samples = logic->length / logic->unitsize;
+               DBG("Received SR_DF_LOGIC: %d samples", num_samples);
+               srd_session_send(sess, samplecnt, samplecnt + num_samples,
+                               logic->data, logic->length);
+               samplecnt += logic->length / logic->unitsize;
+               break;
+       case SR_DF_END:
+               DBG("Received SR_DF_END");
+               break;
+       }
+
+}
+
+static int run_testcase(char *infile, GSList *pdlist, struct output *op)
+{
+       struct srd_session *sess;
+       struct srd_decoder *dec;
+       struct srd_decoder_inst *di, *prev_di;
+       srd_pd_output_callback cb;
+       struct pd *pd;
+       struct channel *channel;
+       struct option *option;
+       GVariant *gvar;
+       GHashTable *channels, *opts;
+       GSList *pdl, *l;
+       int idx;
+       int max_channel;
+       char **decoder_class;
+       struct sr_session *sr_sess;
+
+       if (op->outfile) {
+               if ((op->outfd = open(op->outfile, O_CREAT|O_WRONLY, 0600)) == -1) {
+                       ERR("Unable to open %s for writing: %s", op->outfile,
+                                       strerror(errno));
+                       return FALSE;
+               }
+       }
+
+       if (sr_session_load(infile, &sr_sess) != SR_OK)
+               return FALSE;
+
+       if (srd_session_new(&sess) != SRD_OK)
+               return FALSE;
+       sr_session_datafeed_callback_add(sr_sess, sr_cb, sess);
+       switch (op->type) {
+       case SRD_OUTPUT_ANN:
+               cb = srd_cb_ann;
+               break;
+       case SRD_OUTPUT_BINARY:
+               cb = srd_cb_bin;
+               break;
+       case SRD_OUTPUT_PYTHON:
+               cb = srd_cb_py;
+               break;
+       default:
+               return FALSE;
+       }
+       srd_pd_output_callback_add(sess, op->type, cb, op);
+
+       prev_di = NULL;
+       pd = NULL;
+       for (pdl = pdlist; pdl; pdl = pdl->next) {
+               pd = pdl->data;
+               if (srd_decoder_load(pd->name) != SRD_OK)
+                       return FALSE;
+
+               /* Instantiate decoder and pass in options. */
+               opts = g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
+                               (GDestroyNotify)g_variant_unref);
+               for (l = pd->options; l; l = l->next) {
+                       option = l->data;
+                       g_hash_table_insert(opts, option->key, option->value);
+               }
+               if (!(di = srd_inst_new(sess, pd->name, opts)))
+                       return FALSE;
+               g_hash_table_destroy(opts);
+
+               /* Map channels. */
+               if (pd->channels) {
+                       channels = g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
+                                       (GDestroyNotify)g_variant_unref);
+                       max_channel = 0;
+                       for (l = pd->channels; l; l = l->next) {
+                               channel = l->data;
+                               if (channel->channel > max_channel)
+                                       max_channel = channel->channel;
+                               gvar = g_variant_new_int32(channel->channel);
+                               g_variant_ref_sink(gvar);
+                               g_hash_table_insert(channels, channel->name, gvar);
+                       }
+                       if (srd_inst_channel_set_all(di, channels,
+                                       (max_channel + 8) / 8) != SRD_OK)
+                               return FALSE;
+                       g_hash_table_destroy(channels);
+               }
+
+               /* If this is not the first decoder in the list, stack it
+                * on top of the previous one. */
+               if (prev_di) {
+                       if (srd_inst_stack(sess, prev_di, di) != SRD_OK) {
+                               ERR("Failed to stack decoder instances.");
+                               return FALSE;
+                       }
+               }
+               prev_di = di;
+       }
+
+       /* Resolve top decoder's class index, so we can match. */
+       dec = srd_decoder_get_by_id(pd->name);
+       if (op->class) {
+               if (op->type == SRD_OUTPUT_ANN)
+                       l = dec->annotations;
+               else if (op->type == SRD_OUTPUT_BINARY)
+                       l = dec->binary;
+               else
+                       /* Only annotations and binary can have a class. */
+                       return FALSE;
+               idx = 0;
+               while (l) {
+                       decoder_class = l->data;
+                       if (!strcmp(decoder_class[0], op->class)) {
+                               op->class_idx = idx;
+                               break;
+                       } else
+                               idx++;
+                       l = l->next;
+               }
+               if (op->class_idx == -1) {
+                       ERR("Output class '%s' not found in decoder %s.",
+                                       op->class, pd->name);
+                       return FALSE;
+               } else
+                       DBG("Class %s index is %d", op->class, op->class_idx);
+       }
+
+       sr_session_start(sr_sess);
+       sr_session_run(sr_sess);
+       sr_session_stop(sr_sess);
+
+       srd_session_destroy(sess);
+
+       if (op->outfile)
+               close(op->outfd);
+
+       return TRUE;
+}
+
+static PyObject *start_coverage(GSList *pdlist)
+{
+       PyObject *py_mod, *py_pdlist, *py_pd, *py_func, *py_args, *py_kwargs, *py_cov;
+       GSList *l;
+       struct pd *pd;
+
+       DBG("Starting coverage.");
+
+       if (!(py_mod = PyImport_ImportModule("coverage")))
+               return NULL;
+
+       if (!(py_pdlist = PyList_New(0)))
+               return NULL;
+       for (l = pdlist; l; l = l->next) {
+               pd = l->data;
+               py_pd = PyUnicode_FromFormat("*/%s/*.py", pd->name);
+               if (PyList_Append(py_pdlist, py_pd) < 0)
+                       return NULL;
+               Py_DecRef(py_pd);
+       }
+       if (!(py_func = PyObject_GetAttrString(py_mod, "coverage")))
+               return NULL;
+       if (!(py_args = PyTuple_New(0)))
+               return NULL;
+       if (!(py_kwargs = Py_BuildValue("{sO}", "include", py_pdlist)))
+               return NULL;
+       if (!(py_cov = PyObject_Call(py_func, py_args, py_kwargs)))
+               return NULL;
+       if (!(PyObject_CallMethod(py_cov, "start", NULL)))
+               return NULL;
+       Py_DecRef(py_pdlist);
+       Py_DecRef(py_args);
+       Py_DecRef(py_kwargs);
+       Py_DecRef(py_func);
+
+       return py_cov;
+}
+
+struct cvg *get_mod_cov(PyObject *py_cov, char *module_name)
+{
+       PyObject *py_mod, *py_pathlist, *py_path, *py_func, *py_pd;
+       PyObject *py_result, *py_missed, *py_item;
+       DIR *d;
+       struct dirent *de;
+       struct cvg *cvg_mod;
+       int num_lines, num_missed, linenum, i, j;
+       char *path, *linespec;
+
+       if (!(py_mod = PyImport_ImportModule(module_name)))
+               return NULL;
+
+       cvg_mod = NULL;
+       py_pathlist = PyObject_GetAttrString(py_mod, "__path__");
+       for (i = 0; i < PyList_Size(py_pathlist); i++) {
+               py_path = PyList_GetItem(py_pathlist, i);
+        PyUnicode_FSConverter(PyList_GetItem(py_pathlist, i), &py_path);
+               path = PyBytes_AS_STRING(py_path);
+               if (!(d = opendir(path))) {
+                       ERR("Invalid module path '%s'", path);
+                       return NULL;
+               }
+               while ((de = readdir(d))) {
+                       if (strncmp(de->d_name + strlen(de->d_name) - 3, ".py", 3))
+                               continue;
+
+                       if (!(py_func = PyObject_GetAttrString(py_cov, "analysis2")))
+                               return NULL;
+                       if (!(py_pd = PyUnicode_FromFormat("%s/%s", path, de->d_name)))
+                               return NULL;
+                       if (!(py_result = PyObject_CallFunction(py_func, "O", py_pd)))
+                               return NULL;
+                       Py_DecRef(py_pd);
+                       Py_DecRef(py_func);
+
+                       if (!cvg_mod)
+                               cvg_mod = cvg_new();
+                       if (PyTuple_Size(py_result) != 5) {
+                               ERR("Invalid result from coverage of '%s/%s'", path, de->d_name);
+                               return NULL;
+                       }
+                       num_lines = PyList_Size(PyTuple_GetItem(py_result, 1));
+                       py_missed = PyTuple_GetItem(py_result, 3);
+                       num_missed = PyList_Size(py_missed);
+                       cvg_mod->num_lines += num_lines;
+                       cvg_mod->num_missed += num_missed;
+                       for (j = 0; j < num_missed; j++) {
+                               py_item = PyList_GetItem(py_missed, j);
+                               linenum = PyLong_AsLong(py_item);
+                               linespec = g_strdup_printf("%s/%s:%d", module_name,
+                                               de->d_name, linenum);
+                               cvg_mod->missed_lines = g_slist_append(cvg_mod->missed_lines, linespec);
+                       }
+                       DBG("Coverage for %s/%s: %d lines, %d missed.",
+                                       module_name, de->d_name, num_lines, num_missed);
+                       Py_DecRef(py_result);
+               }
+       }
+       if (cvg_mod->num_lines)
+               cvg_mod->coverage = 100 - ((float)cvg_mod->num_missed / (float)cvg_mod->num_lines * 100);
+
+       Py_DecRef(py_mod);
+       Py_DecRef(py_path);
+
+       return cvg_mod;
+}
+
+struct cvg *cvg_new(void)
+{
+       struct cvg *cvg;
+
+       cvg = calloc(1, sizeof(struct cvg));
+
+       return cvg;
+}
+
+gboolean find_missed_line(struct cvg *cvg, char *linespec)
+{
+       GSList *l;
+
+       for (l = cvg->missed_lines; l; l = l->next)
+               if (!strcmp(l->data, linespec))
+                       return TRUE;
+
+       return FALSE;
+}
+
+void cvg_add(struct cvg *dst, struct cvg *src)
+{
+       GSList *l;
+       char *linespec;
+
+       dst->num_lines += src->num_lines;
+       dst->num_missed += src->num_missed;
+       for (l = src->missed_lines; l; l = l->next) {
+               linespec = l->data;
+               if (!find_missed_line(dst, linespec))
+                       dst->missed_lines = g_slist_append(dst->missed_lines, linespec);
+       }
+
+}
+
+static int report_coverage(PyObject *py_cov, GSList *pdlist)
+{
+       PyObject *py_func, *py_mod, *py_args, *py_kwargs, *py_outfile, *py_pct;
+       GSList *l, *ml;
+       struct pd *pd;
+       struct cvg *cvg_mod, *cvg_all;
+       float total_coverage;
+       int lines, missed, cnt;
+
+       DBG("Making coverage report.");
+
+       /* Get coverage for each module in the stack. */
+       lines = missed = 0;
+       cvg_all = cvg_new();
+       for (cnt = 0, l = pdlist; l; l = l->next, cnt++) {
+               pd = l->data;
+               if (!(cvg_mod = get_mod_cov(py_cov, pd->name)))
+                       return FALSE;
+               printf("coverage: scope=%s coverage=%.0f%% lines=%d missed=%d "
+                               "missed_lines=", pd->name, cvg_mod->coverage,
+                               cvg_mod->num_lines, cvg_mod->num_missed);
+               for (ml = cvg_mod->missed_lines; ml; ml = ml->next) {
+                       if (ml != cvg_mod->missed_lines)
+                               printf(",");
+                       printf("%s", (char *)ml->data);
+               }
+               printf("\n");
+               lines += cvg_mod->num_lines;
+               missed += cvg_mod->num_missed;
+               cvg_add(cvg_all, cvg_mod);
+               DBG("Coverage for module %s: %d lines, %d missed", pd->name,
+                               cvg_mod->num_lines, cvg_mod->num_missed);
+       }
+       lines /= cnt;
+       missed /= cnt;
+       total_coverage = 100 - ((float)missed / (float)lines * 100);
+
+       /* Machine-readable stats on stdout. */
+       printf("coverage: scope=all coverage=%.0f%% lines=%d missed=%d\n",
+                       total_coverage, cvg_all->num_lines, cvg_all->num_missed);
+
+       /* Write text report to file. */
+       /* io.open(coverage_report, "w") */
+       if (!(py_mod = PyImport_ImportModule("io")))
+               return FALSE;
+       if (!(py_func = PyObject_GetAttrString(py_mod, "open")))
+               return FALSE;
+       if (!(py_args = PyTuple_New(0)))
+               return FALSE;
+       if (!(py_kwargs = Py_BuildValue("{ssss}", "file", coverage_report,
+                       "mode", "w")))
+               return FALSE;
+       if (!(py_outfile = PyObject_Call(py_func, py_args, py_kwargs)))
+               return FALSE;
+       Py_DecRef(py_kwargs);
+       Py_DecRef(py_func);
+
+       /* py_cov.report(file=py_outfile) */
+       if (!(py_func = PyObject_GetAttrString(py_cov, "report")))
+               return FALSE;
+       if (!(py_kwargs = Py_BuildValue("{sO}", "file", py_outfile)))
+               return FALSE;
+       if (!(py_pct = PyObject_Call(py_func, py_args, py_kwargs)))
+               return FALSE;
+       Py_DecRef(py_pct);
+       Py_DecRef(py_kwargs);
+       Py_DecRef(py_func);
+
+       /* py_outfile.close() */
+       if (!(py_func = PyObject_GetAttrString(py_outfile, "close")))
+               return FALSE;
+       if (!PyObject_Call(py_func, py_args, NULL))
+               return FALSE;
+       Py_DecRef(py_outfile);
+       Py_DecRef(py_func);
+       Py_DecRef(py_args);
+       Py_DecRef(py_mod);
+
+       return TRUE;
+}
+
+int main(int argc, char **argv)
+{
+       struct sr_context *ctx;
+       PyObject *coverage;
+       GSList *pdlist;
+       struct pd *pd;
+       struct channel *channel;
+       struct option *option;
+       struct output *op;
+       int ret, c;
+       char *opt_infile, **kv, **opstr;
+
+       op = malloc(sizeof(struct output));
+       op->pd = NULL;
+       op->type = -1;
+       op->class = NULL;
+       op->class_idx = -1;
+       op->outfd = 1;
+
+       pdlist = NULL;
+       opt_infile = NULL;
+       pd = NULL;
+       coverage = NULL;
+       while ((c = getopt(argc, argv, "dP:p:o:i:O:f:c:S")) != -1) {
+               switch (c) {
+               case 'd':
+                       debug = TRUE;
+                       break;
+               case 'P':
+                       pd = g_malloc(sizeof(struct pd));
+                       pd->name = g_strdup(optarg);
+                       pd->channels = pd->options = NULL;
+                       pdlist = g_slist_append(pdlist, pd);
+                       break;
+               case 'p':
+               case 'o':
+                       if (g_slist_length(pdlist) == 0) {
+                               /* No previous -P. */
+                               ERR("Syntax error at '%s'", optarg);
+                               usage(NULL);
+                       }
+                       kv = g_strsplit(optarg, "=", 0);
+                       if (!kv[0] || (!kv[1] || kv[2])) {
+                               /* Need x=y. */
+                               ERR("Syntax error at '%s'", optarg);
+                               g_strfreev(kv);
+                               usage(NULL);
+                       }
+                       if (c == 'p') {
+                               channel = malloc(sizeof(struct channel));
+                               channel->name = g_strdup(kv[0]);
+                               channel->channel = strtoul(kv[1], 0, 10);
+                               /* Apply to last PD. */
+                               pd->channels = g_slist_append(pd->channels, channel);
+                       } else {
+                               option = malloc(sizeof(struct option));
+                               option->key = g_strdup(kv[0]);
+                               option->value = g_variant_new_string(kv[1]);
+                g_variant_ref_sink(option->value);
+                               /* Apply to last PD. */
+                               pd->options = g_slist_append(pd->options, option);
+                       }
+                       break;
+               case 'i':
+                       opt_infile = optarg;
+                       break;
+               case 'O':
+                       opstr = g_strsplit(optarg, ":", 0);
+                       if (!opstr[0] || !opstr[1]) {
+                               /* Need at least abc:def. */
+                               ERR("Syntax error at '%s'", optarg);
+                               g_strfreev(opstr);
+                               usage(NULL);
+                       }
+                       op->pd = g_strdup(opstr[0]);
+                       if (!strcmp(opstr[1], "annotation"))
+                               op->type = SRD_OUTPUT_ANN;
+                       else if (!strcmp(opstr[1], "binary"))
+                               op->type = SRD_OUTPUT_BINARY;
+                       else if (!strcmp(opstr[1], "python"))
+                               op->type = SRD_OUTPUT_PYTHON;
+                       else if (!strcmp(opstr[1], "exception"))
+                               /* Doesn't matter, we just need it to bomb out. */
+                               op->type = SRD_OUTPUT_PYTHON;
+                       else {
+                               ERR("Unknown output type '%s'", opstr[1]);
+                               g_strfreev(opstr);
+                               usage(NULL);
+                       }
+                       if (opstr[2])
+                               op->class = g_strdup(opstr[2]);
+                       g_strfreev(opstr);
+                       break;
+               case 'f':
+                       op->outfile = g_strdup(optarg);
+                       op->outfd = -1;
+                       break;
+               case 'c':
+                       coverage_report = optarg;
+                       break;
+               case 'S':
+                       statistics = TRUE;
+                       break;
+               default:
+                       usage(NULL);
+               }
+       }
+       if (argc > optind)
+               usage(NULL);
+       if (g_slist_length(pdlist) == 0)
+               usage(NULL);
+       if (!opt_infile)
+               usage(NULL);
+       if (!op->pd || op->type == -1)
+               usage(NULL);
+
+       sr_log_callback_set(sr_log, NULL);
+       if (sr_init(&ctx) != SR_OK)
+               return 1;
+
+       srd_log_callback_set(srd_log, NULL);
+       if (srd_init(DECODERS_DIR) != SRD_OK)
+               return 1;
+
+       if (coverage_report) {
+               if (!(coverage = start_coverage(pdlist))) {
+                       DBG("Failed to start coverage.");
+                       if (PyErr_Occurred()) {
+                               PyErr_PrintEx(0);
+                               PyErr_Clear();
+                       }
+               }
+       }
+
+       ret = 0;
+       if (!run_testcase(opt_infile, pdlist, op))
+               ret = 1;
+
+       if (coverage) {
+               DBG("Stopping coverage.");
+
+               if (!(PyObject_CallMethod(coverage, "stop", NULL)))
+                       ERR("Failed to stop coverage.");
+               else if (!(report_coverage(coverage, pdlist)))
+                       ERR("Failed to make coverage report.");
+               else
+                       DBG("Coverage report in %s", coverage_report);
+
+               if (PyErr_Occurred()) {
+                       PyErr_PrintEx(0);
+                       PyErr_Clear();
+               }
+               Py_DecRef(coverage);
+       }
+
+       srd_exit();
+       sr_exit(ctx);
+
+       return ret;
+}
diff --git a/decoder/test/can/test.conf b/decoder/test/can/test.conf
new file mode 100644 (file)
index 0000000..cebcb17
--- /dev/null
@@ -0,0 +1,5 @@
+test exception_samplerate
+       protocol-decoder can
+       input misc/no-samplerate.sr
+       output can exception match SamplerateError
+
diff --git a/decoder/test/dcf77/test.conf b/decoder/test/dcf77/test.conf
new file mode 100644 (file)
index 0000000..95c2c81
--- /dev/null
@@ -0,0 +1,5 @@
+test exception_samplerate
+       protocol-decoder dcf77
+       input misc/no-samplerate.sr
+       output dcf77 exception match SamplerateError
+
diff --git a/decoder/test/edid/samsung_le46b620r3p_fields.output b/decoder/test/edid/samsung_le46b620r3p_fields.output
new file mode 100644 (file)
index 0000000..5490376
--- /dev/null
@@ -0,0 +1,49 @@
+6170-6497 edid: fields: "EDID header"
+6558-7289 edid: fields: "SAM (Samsung Electric Company)"
+7351-8068 edid: fields: "Product 0x0508"
+8129-9620 edid: fields: "Serial 0"
+9682-10499 edid: fields: "Manufactured week 48, 2008"
+11006-11333 edid: fields: "EDID version: 1.3"
+11394-11721 edid: fields: "Signal level standard: 01"
+11394-11721 edid: fields: "Supported syncs: separate syncs"
+11782-12500 edid: fields: "Physical size: 88x50cm"
+12561-12888 edid: fields: "Gamma: 2.20"
+12950-13279 edid: fields: "DPMS support: active off"
+12950-13279 edid: fields: "Display type: RGB color"
+12950-13279 edid: fields: "Generalized timing formula: not supported"
+13339-17165 edid: fields: "Chromacity red: X 0.640, Y 0.330"
+13339-17165 edid: fields: "Chromacity green: X 0.297, Y 0.598"
+13339-17165 edid: fields: "Chromacity blue: X 0.150, Y 0.060"
+13339-17165 edid: fields: "Chromacity white: X 0.312, Y 0.328"
+17226-18329 edid: fields: "Supported establised modes: 720x400@70Hz, 640x480@60Hz, 640x480@67Hz, 640x480@72Hz, 640x480@75Hz, 800x600@60Hz, 800x600@72Hz, 800x600@75Hz, 832x624@75Hz, 1024x768@60Hz, 1024x768@70Hz, 1024x768@75Hz, 1280x1024@75Hz, 1152x870@75Hz"
+18390-19494 edid: fields: "Supported standard modes: 1152x864@75Hz, 1280x800@60Hz, 1280x960@60Hz, 1280x1024@60Hz, 1440x900@60Hz, 1440x900@75Hz, 1680x1050@60Hz"
+24618-25336 edid: fields: "Pixel clock: 148.50 MHz"
+25397-26500 edid: fields: "Horizontal active: 1920"
+25785-26500 edid: fields: "Horizontal blanking: 280"
+26561-27673 edid: fields: "Vertical active: 1080"
+26951-27673 edid: fields: "Vertical blanking: 45"
+27735-29226 edid: fields: "Horizontal sync offset: 88"
+28123-29226 edid: fields: "Horizontal sync pulse width: 44"
+28511-29226 edid: fields: "Vertical sync offset: 4"
+28511-29226 edid: fields: "Vertical sync pulse width: 5"
+29287-30400 edid: fields: "Physical size: 886x498mm"
+31238-31563 edid: fields: "Flags: sync type digital separate (Vsync polarity positive, Hsync polarity positive)"
+31626-32345 edid: fields: "Pixel clock: 85.50 MHz"
+32408-33516 edid: fields: "Horizontal active: 1360"
+32796-33516 edid: fields: "Horizontal blanking: 432"
+33577-34686 edid: fields: "Vertical active: 768"
+33965-34686 edid: fields: "Vertical blanking: 27"
+34747-36239 edid: fields: "Horizontal sync offset: 64"
+35135-36239 edid: fields: "Horizontal sync pulse width: 112"
+35523-36239 edid: fields: "Vertical sync offset: 3"
+35523-36239 edid: fields: "Vertical sync pulse width: 6"
+36300-37414 edid: fields: "Physical size: 886x498mm"
+38252-38579 edid: fields: "Flags: sync type digital separate (Vsync polarity positive, Hsync polarity positive)"
+40594-40921 edid: fields: "Minimum vertical rate: 60Hz"
+40982-41309 edid: fields: "Maximum vertical rate: 75Hz"
+41370-41697 edid: fields: "Minimum horizontal rate: 30kHz"
+41758-42088 edid: fields: "Maximum horizontal rate: 81kHz"
+42149-42474 edid: fields: "Maximum pixel clock: 150MHz"
+45645-52606 edid: fields: "Model name: SAMSUNG"
+52667-52994 edid: fields: "Extensions present: 0"
+53055-53382 edid: fields: "Checksum: 155 (OK)"
diff --git a/decoder/test/edid/samsung_le46b620r3p_sections.output b/decoder/test/edid/samsung_le46b620r3p_sections.output
new file mode 100644 (file)
index 0000000..c3dee64
--- /dev/null
@@ -0,0 +1,3 @@
+24618-31951 edid: sections: "Preferred timing descriptor"
+31626-38967 edid: sections: "Detailed timing descriptor"
+38640-45584 edid: sections: "Monitor range limits"
diff --git a/decoder/test/edid/samsung_syncmaster245b.output b/decoder/test/edid/samsung_syncmaster245b.output
new file mode 100644 (file)
index 0000000..fbbb2ae
--- /dev/null
@@ -0,0 +1,41 @@
+6226-6555 edid: fields: "EDID header"
+6615-7330 edid: fields: "SAM (Samsung Electric Company)"
+7392-8107 edid: fields: "Product 0x02b5"
+8168-9658 edid: fields: "Serial HU24"
+9721-10442 edid: fields: "Manufactured week 1, 2008"
+10892-11217 edid: fields: "EDID version: 1.3"
+11280-11606 edid: fields: "Signal level standard: 00"
+11280-11606 edid: fields: "Supported syncs: separate syncs, composite syncs, sync on green"
+11667-12382 edid: fields: "Physical size: 52x32cm"
+12443-12771 edid: fields: "Gamma: 2.60"
+12832-13157 edid: fields: "DPMS support: active off"
+12832-13157 edid: fields: "Display type: RGB color"
+12832-13157 edid: fields: "Generalized timing formula: not supported"
+13220-17040 edid: fields: "Chromacity red: X 0.653, Y 0.337"
+13220-17040 edid: fields: "Chromacity green: X 0.293, Y 0.605"
+13220-17040 edid: fields: "Chromacity blue: X 0.144, Y 0.075"
+13220-17040 edid: fields: "Chromacity white: X 0.312, Y 0.328"
+17101-18203 edid: fields: "Supported establised modes: 720x400@70Hz, 640x480@60Hz, 640x480@67Hz, 640x480@72Hz, 640x480@75Hz, 800x600@56Hz, 800x600@60Hz, 800x600@72Hz, 800x600@75Hz, 832x624@75Hz, 1024x768@60Hz, 1024x768@70Hz, 1024x768@75Hz, 1280x1024@75Hz, 1152x870@75Hz"
+18264-19367 edid: fields: "Supported standard modes: 1600x1200@60Hz, 1280x1024@60Hz, 1280x960@60Hz, 1152x864@75Hz"
+24470-31780 edid: sections: "Preferred timing descriptor"
+24470-25185 edid: fields: "Pixel clock: 154.00 MHz"
+25246-26348 edid: fields: "Horizontal active: 1920"
+25634-26348 edid: fields: "Horizontal blanking: 160"
+26409-27511 edid: fields: "Vertical active: 1200"
+26798-27511 edid: fields: "Vertical blanking: 35"
+27574-29065 edid: fields: "Horizontal sync offset: 48"
+27961-29065 edid: fields: "Horizontal sync pulse width: 32"
+28349-29065 edid: fields: "Vertical sync offset: 3"
+28349-29065 edid: fields: "Vertical sync pulse width: 6"
+29126-30228 edid: fields: "Physical size: 518x324mm"
+31066-31391 edid: fields: "Flags: sync type digital separate (Vsync polarity negative, Hsync polarity positive)"
+31454-38375 edid: sections: "Monitor range limits"
+33393-33720 edid: fields: "Minimum vertical rate: 56Hz"
+33781-34108 edid: fields: "Maximum vertical rate: 75Hz"
+34169-34496 edid: fields: "Minimum horizontal rate: 30kHz"
+34557-34884 edid: fields: "Maximum horizontal rate: 81kHz"
+34945-35271 edid: fields: "Maximum pixel clock: 170MHz"
+38436-45359 edid: fields: "Model name: SyncMaster"
+45420-52348 edid: fields: "Serial number: HS1Q102936"
+52409-52736 edid: fields: "Extensions present: 0"
+52797-53122 edid: fields: "Checksum: 64 (OK)"
diff --git a/decoder/test/edid/test.conf b/decoder/test/edid/test.conf
new file mode 100644 (file)
index 0000000..cd6c127
--- /dev/null
@@ -0,0 +1,15 @@
+test tv
+       protocol-decoder i2c channel scl=0 channel sda=1
+       protocol-decoder edid
+       stack i2c edid
+       input i2c/edid/samsung_le46b620r3p.sr
+       output edid annotation class fields match samsung_le46b620r3p_fields.output
+       output edid annotation class sections match samsung_le46b620r3p_sections.output
+
+test lcd
+       protocol-decoder i2c channel scl=0 channel sda=1
+       protocol-decoder edid
+       stack i2c edid
+       input i2c/edid/samsung_syncmaster245b.sr
+       output edid annotation match samsung_syncmaster245b.output
+
diff --git a/decoder/test/guess_bitrate/test.conf b/decoder/test/guess_bitrate/test.conf
new file mode 100644 (file)
index 0000000..2f7e2d6
--- /dev/null
@@ -0,0 +1,5 @@
+test exception_samplerate
+       protocol-decoder guess_bitrate
+       input misc/no-samplerate.sr
+       output guess_bitrate exception match SamplerateError
+
diff --git a/decoder/test/i2c/gigabyte_6vle_vxl_i2c.output b/decoder/test/i2c/gigabyte_6vle_vxl_i2c.output
new file mode 100644 (file)
index 0000000..59bc0f6
--- /dev/null
@@ -0,0 +1,603 @@
+3670527-3670527 i2c: start: "Start" "S"
+3671478-3671600 i2c: bit: "0"
+3671356-3671478 i2c: bit: "0"
+3671234-3671356 i2c: bit: "0"
+3671112-3671234 i2c: bit: "0"
+3670989-3671112 i2c: bit: "0"
+3670867-3670989 i2c: bit: "1"
+3670745-3670867 i2c: bit: "0"
+3670623-3670745 i2c: bit: "1"
+3671478-3671600 i2c: address-write: "Write" "Wr" "W"
+3670623-3671478 i2c: address-write: "Address write: 50" "AW: 50" "50"
+3671600-3671722 i2c: ack: "ACK" "A"
+3672577-3672699 i2c: bit: "1"
+3672455-3672577 i2c: bit: "1"
+3672333-3672455 i2c: bit: "0"
+3672211-3672333 i2c: bit: "1"
+3672089-3672211 i2c: bit: "1"
+3671966-3672089 i2c: bit: "0"
+3671844-3671966 i2c: bit: "0"
+3671722-3671844 i2c: bit: "0"
+3671722-3672699 i2c: data-write: "Data write: 1B" "DW: 1B" "1B"
+3672699-3672821 i2c: ack: "ACK" "A"
+3672881-3672881 i2c: repeat-start: "Start repeat" "Sr"
+3673826-3673948 i2c: bit: "1"
+3673704-3673826 i2c: bit: "0"
+3673582-3673704 i2c: bit: "0"
+3673460-3673582 i2c: bit: "0"
+3673338-3673460 i2c: bit: "0"
+3673216-3673338 i2c: bit: "1"
+3673093-3673216 i2c: bit: "0"
+3672971-3673093 i2c: bit: "1"
+3673826-3673948 i2c: address-read: "Read" "Rd" "R"
+3672971-3673826 i2c: address-read: "Address read: 50" "AR: 50" "50"
+3673948-3674070 i2c: ack: "ACK" "A"
+3674925-3675047 i2c: bit: "0"
+3674803-3674925 i2c: bit: "0"
+3674681-3674803 i2c: bit: "0"
+3674559-3674681 i2c: bit: "0"
+3674437-3674559 i2c: bit: "1"
+3674315-3674437 i2c: bit: "0"
+3674193-3674315 i2c: bit: "1"
+3674070-3674193 i2c: bit: "0"
+3674070-3675047 i2c: data-read: "Data read: 50" "DR: 50" "50"
+3675081-3675203 i2c: nack: "NACK" "N"
+3675231-3675231 i2c: stop: "Stop" "P"
+3675596-3675596 i2c: start: "Start" "S"
+3676546-3676668 i2c: bit: "0"
+3676424-3676546 i2c: bit: "0"
+3676302-3676424 i2c: bit: "0"
+3676180-3676302 i2c: bit: "0"
+3676058-3676180 i2c: bit: "0"
+3675936-3676058 i2c: bit: "1"
+3675814-3675936 i2c: bit: "0"
+3675691-3675814 i2c: bit: "1"
+3676546-3676668 i2c: address-write: "Write" "Wr" "W"
+3675691-3676546 i2c: address-write: "Address write: 50" "AW: 50" "50"
+3676669-3676791 i2c: ack: "ACK" "A"
+3677646-3677768 i2c: bit: "0"
+3677524-3677646 i2c: bit: "1"
+3677401-3677524 i2c: bit: "1"
+3677279-3677401 i2c: bit: "1"
+3677157-3677279 i2c: bit: "1"
+3677035-3677157 i2c: bit: "0"
+3676913-3677035 i2c: bit: "0"
+3676791-3676913 i2c: bit: "0"
+3676791-3677768 i2c: data-write: "Data write: 1E" "DW: 1E" "1E"
+3677768-3677890 i2c: ack: "ACK" "A"
+3677950-3677950 i2c: repeat-start: "Start repeat" "Sr"
+3678895-3679017 i2c: bit: "1"
+3678773-3678895 i2c: bit: "0"
+3678650-3678773 i2c: bit: "0"
+3678528-3678650 i2c: bit: "0"
+3678406-3678528 i2c: bit: "0"
+3678284-3678406 i2c: bit: "1"
+3678162-3678284 i2c: bit: "0"
+3678040-3678162 i2c: bit: "1"
+3678895-3679017 i2c: address-read: "Read" "Rd" "R"
+3678040-3678895 i2c: address-read: "Address read: 50" "AR: 50" "50"
+3679017-3679139 i2c: ack: "ACK" "A"
+3679994-3680116 i2c: bit: "1"
+3679872-3679994 i2c: bit: "0"
+3679750-3679872 i2c: bit: "1"
+3679628-3679750 i2c: bit: "1"
+3679505-3679628 i2c: bit: "0"
+3679383-3679505 i2c: bit: "1"
+3679261-3679383 i2c: bit: "0"
+3679139-3679261 i2c: bit: "0"
+3679139-3680116 i2c: data-read: "Data read: 2D" "DR: 2D" "2D"
+3680149-3680271 i2c: nack: "NACK" "N"
+3680299-3680299 i2c: stop: "Stop" "P"
+3680665-3680665 i2c: start: "Start" "S"
+3681615-3681737 i2c: bit: "0"
+3681493-3681615 i2c: bit: "0"
+3681371-3681493 i2c: bit: "0"
+3681249-3681371 i2c: bit: "0"
+3681126-3681249 i2c: bit: "0"
+3681004-3681126 i2c: bit: "1"
+3680882-3681004 i2c: bit: "0"
+3680760-3680882 i2c: bit: "1"
+3681615-3681737 i2c: address-write: "Write" "Wr" "W"
+3680760-3681615 i2c: address-write: "Address write: 50" "AW: 50" "50"
+3681737-3681859 i2c: ack: "ACK" "A"
+3682714-3682836 i2c: bit: "1"
+3682592-3682714 i2c: bit: "0"
+3682470-3682592 i2c: bit: "1"
+3682348-3682470 i2c: bit: "1"
+3682226-3682348 i2c: bit: "1"
+3682103-3682226 i2c: bit: "0"
+3681981-3682103 i2c: bit: "0"
+3681859-3681981 i2c: bit: "0"
+3681859-3682836 i2c: data-write: "Data write: 1D" "DW: 1D" "1D"
+3682836-3682958 i2c: ack: "ACK" "A"
+3683018-3683018 i2c: repeat-start: "Start repeat" "Sr"
+3683963-3684085 i2c: bit: "1"
+3683841-3683963 i2c: bit: "0"
+3683719-3683841 i2c: bit: "0"
+3683597-3683719 i2c: bit: "0"
+3683475-3683597 i2c: bit: "0"
+3683353-3683475 i2c: bit: "1"
+3683230-3683353 i2c: bit: "0"
+3683108-3683230 i2c: bit: "1"
+3683963-3684085 i2c: address-read: "Read" "Rd" "R"
+3683108-3683963 i2c: address-read: "Address read: 50" "AR: 50" "50"
+3684085-3684207 i2c: ack: "ACK" "A"
+3685062-3685184 i2c: bit: "0"
+3684940-3685062 i2c: bit: "0"
+3684818-3684940 i2c: bit: "0"
+3684696-3684818 i2c: bit: "0"
+3684574-3684696 i2c: bit: "1"
+3684452-3684574 i2c: bit: "0"
+3684330-3684452 i2c: bit: "1"
+3684208-3684330 i2c: bit: "0"
+3684208-3685184 i2c: data-read: "Data read: 50" "DR: 50" "50"
+3685218-3685340 i2c: nack: "NACK" "N"
+3685368-3685368 i2c: stop: "Stop" "P"
+3700267-3700267 i2c: start: "Start" "S"
+3701217-3701339 i2c: bit: "0"
+3701095-3701217 i2c: bit: "1"
+3700973-3701095 i2c: bit: "0"
+3700851-3700973 i2c: bit: "0"
+3700729-3700851 i2c: bit: "1"
+3700607-3700729 i2c: bit: "0"
+3700485-3700607 i2c: bit: "1"
+3700363-3700485 i2c: bit: "1"
+3701217-3701339 i2c: address-write: "Write" "Wr" "W"
+3700363-3701217 i2c: address-write: "Address write: 69" "AW: 69" "69"
+3701340-3701462 i2c: ack: "ACK" "A"
+3702317-3702440 i2c: bit: "0"
+3702194-3702317 i2c: bit: "0"
+3702072-3702194 i2c: bit: "0"
+3701950-3702072 i2c: bit: "0"
+3701828-3701950 i2c: bit: "0"
+3701706-3701828 i2c: bit: "0"
+3701584-3701706 i2c: bit: "0"
+3701462-3701584 i2c: bit: "0"
+3701462-3702440 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3702439-3702562 i2c: ack: "ACK" "A"
+3702621-3702621 i2c: repeat-start: "Start repeat" "Sr"
+3703566-3703688 i2c: bit: "1"
+3703444-3703566 i2c: bit: "1"
+3703321-3703444 i2c: bit: "0"
+3703199-3703321 i2c: bit: "0"
+3703077-3703199 i2c: bit: "1"
+3702955-3703077 i2c: bit: "0"
+3702833-3702955 i2c: bit: "1"
+3702711-3702833 i2c: bit: "1"
+3703566-3703688 i2c: address-read: "Read" "Rd" "R"
+3702711-3703566 i2c: address-read: "Address read: 69" "AR: 69" "69"
+3703688-3703810 i2c: ack: "ACK" "A"
+3704665-3704787 i2c: bit: "1"
+3704543-3704665 i2c: bit: "1"
+3704421-3704543 i2c: bit: "1"
+3704298-3704421 i2c: bit: "1"
+3704176-3704298 i2c: bit: "0"
+3704054-3704176 i2c: bit: "0"
+3703932-3704054 i2c: bit: "0"
+3703810-3703932 i2c: bit: "0"
+3703810-3704787 i2c: data-read: "Data read: 0F" "DR: 0F" "0F"
+3704787-3704909 i2c: ack: "ACK" "A"
+3705764-3705886 i2c: bit: "0"
+3705642-3705764 i2c: bit: "1"
+3705520-3705642 i2c: bit: "1"
+3705398-3705520 i2c: bit: "0"
+3705276-3705398 i2c: bit: "0"
+3705153-3705276 i2c: bit: "0"
+3705031-3705153 i2c: bit: "0"
+3704909-3705031 i2c: bit: "0"
+3704909-3705886 i2c: data-read: "Data read: 06" "DR: 06" "06"
+3705886-3706008 i2c: ack: "ACK" "A"
+3706863-3706985 i2c: bit: "1"
+3706741-3706863 i2c: bit: "1"
+3706619-3706741 i2c: bit: "1"
+3706497-3706619 i2c: bit: "1"
+3706375-3706497 i2c: bit: "1"
+3706253-3706375 i2c: bit: "1"
+3706130-3706253 i2c: bit: "1"
+3706008-3706130 i2c: bit: "1"
+3706008-3706985 i2c: data-read: "Data read: FF" "DR: FF" "FF"
+3706985-3707107 i2c: ack: "ACK" "A"
+3707962-3708084 i2c: bit: "1"
+3707840-3707962 i2c: bit: "1"
+3707718-3707840 i2c: bit: "1"
+3707596-3707718 i2c: bit: "1"
+3707474-3707596 i2c: bit: "1"
+3707352-3707474 i2c: bit: "1"
+3707230-3707352 i2c: bit: "1"
+3707108-3707230 i2c: bit: "1"
+3707108-3708084 i2c: data-read: "Data read: FF" "DR: FF" "FF"
+3708085-3708207 i2c: ack: "ACK" "A"
+3709062-3709184 i2c: bit: "1"
+3708940-3709062 i2c: bit: "1"
+3708817-3708940 i2c: bit: "1"
+3708695-3708817 i2c: bit: "1"
+3708573-3708695 i2c: bit: "1"
+3708451-3708573 i2c: bit: "1"
+3708329-3708451 i2c: bit: "1"
+3708207-3708329 i2c: bit: "1"
+3708207-3709184 i2c: data-read: "Data read: FF" "DR: FF" "FF"
+3709184-3709306 i2c: ack: "ACK" "A"
+3710161-3710283 i2c: bit: "1"
+3710039-3710161 i2c: bit: "1"
+3709917-3710039 i2c: bit: "1"
+3709794-3709917 i2c: bit: "1"
+3709672-3709794 i2c: bit: "1"
+3709550-3709672 i2c: bit: "1"
+3709428-3709550 i2c: bit: "1"
+3709306-3709428 i2c: bit: "1"
+3709306-3710283 i2c: data-read: "Data read: FF" "DR: FF" "FF"
+3710283-3710405 i2c: ack: "ACK" "A"
+3711260-3711382 i2c: bit: "1"
+3711138-3711260 i2c: bit: "1"
+3711016-3711138 i2c: bit: "1"
+3710894-3711016 i2c: bit: "1"
+3710772-3710894 i2c: bit: "1"
+3710649-3710772 i2c: bit: "1"
+3710527-3710649 i2c: bit: "1"
+3710405-3710527 i2c: bit: "1"
+3710405-3711382 i2c: data-read: "Data read: FF" "DR: FF" "FF"
+3711382-3711504 i2c: ack: "ACK" "A"
+3712359-3712481 i2c: bit: "1"
+3712237-3712359 i2c: bit: "0"
+3712115-3712237 i2c: bit: "0"
+3711993-3712115 i2c: bit: "0"
+3711871-3711993 i2c: bit: "1"
+3711749-3711871 i2c: bit: "0"
+3711626-3711749 i2c: bit: "1"
+3711504-3711626 i2c: bit: "0"
+3711504-3712481 i2c: data-read: "Data read: 51" "DR: 51" "51"
+3712481-3712603 i2c: ack: "ACK" "A"
+3713458-3713580 i2c: bit: "0"
+3713336-3713458 i2c: bit: "1"
+3713214-3713336 i2c: bit: "1"
+3713092-3713214 i2c: bit: "0"
+3712970-3713092 i2c: bit: "0"
+3712848-3712970 i2c: bit: "0"
+3712726-3712848 i2c: bit: "0"
+3712604-3712726 i2c: bit: "1"
+3712604-3713580 i2c: data-read: "Data read: 86" "DR: 86" "86"
+3713581-3713703 i2c: ack: "ACK" "A"
+3714558-3714680 i2c: bit: "1"
+3714436-3714558 i2c: bit: "1"
+3714313-3714436 i2c: bit: "1"
+3714191-3714313 i2c: bit: "1"
+3714069-3714191 i2c: bit: "0"
+3713947-3714069 i2c: bit: "0"
+3713825-3713947 i2c: bit: "0"
+3713703-3713825 i2c: bit: "0"
+3713703-3714680 i2c: data-read: "Data read: 0F" "DR: 0F" "0F"
+3714680-3714802 i2c: ack: "ACK" "A"
+3715657-3715779 i2c: bit: "0"
+3715535-3715657 i2c: bit: "0"
+3715413-3715535 i2c: bit: "0"
+3715290-3715413 i2c: bit: "1"
+3715168-3715290 i2c: bit: "0"
+3715046-3715168 i2c: bit: "0"
+3714924-3715046 i2c: bit: "0"
+3714802-3714924 i2c: bit: "0"
+3714802-3715779 i2c: data-read: "Data read: 08" "DR: 08" "08"
+3715779-3715901 i2c: ack: "ACK" "A"
+3716756-3716878 i2c: bit: "1"
+3716634-3716756 i2c: bit: "0"
+3716512-3716634 i2c: bit: "0"
+3716390-3716512 i2c: bit: "0"
+3716268-3716390 i2c: bit: "0"
+3716145-3716268 i2c: bit: "0"
+3716023-3716145 i2c: bit: "0"
+3715901-3716023 i2c: bit: "0"
+3715901-3716878 i2c: data-read: "Data read: 01" "DR: 01" "01"
+3716878-3717000 i2c: ack: "ACK" "A"
+3717855-3717977 i2c: bit: "0"
+3717733-3717855 i2c: bit: "0"
+3717611-3717733 i2c: bit: "0"
+3717489-3717611 i2c: bit: "1"
+3717367-3717489 i2c: bit: "0"
+3717245-3717367 i2c: bit: "0"
+3717122-3717245 i2c: bit: "0"
+3717000-3717122 i2c: bit: "1"
+3717000-3717977 i2c: data-read: "Data read: 88" "DR: 88" "88"
+3717977-3718099 i2c: ack: "ACK" "A"
+3718954-3719076 i2c: bit: "0"
+3718832-3718954 i2c: bit: "1"
+3718710-3718832 i2c: bit: "1"
+3718588-3718710 i2c: bit: "1"
+3718466-3718588 i2c: bit: "0"
+3718344-3718466 i2c: bit: "0"
+3718222-3718344 i2c: bit: "0"
+3718100-3718222 i2c: bit: "0"
+3718100-3719076 i2c: data-read: "Data read: 0E" "DR: 0E" "0E"
+3719077-3719199 i2c: ack: "ACK" "A"
+3720054-3720176 i2c: bit: "1"
+3719932-3720054 i2c: bit: "0"
+3719809-3719932 i2c: bit: "1"
+3719687-3719809 i2c: bit: "0"
+3719565-3719687 i2c: bit: "0"
+3719443-3719565 i2c: bit: "1"
+3719321-3719443 i2c: bit: "1"
+3719199-3719321 i2c: bit: "1"
+3719199-3720176 i2c: data-read: "Data read: E5" "DR: E5" "E5"
+3720176-3720298 i2c: ack: "ACK" "A"
+3721153-3721275 i2c: bit: "1"
+3721031-3721153 i2c: bit: "1"
+3720909-3721031 i2c: bit: "1"
+3720786-3720909 i2c: bit: "0"
+3720664-3720786 i2c: bit: "1"
+3720542-3720664 i2c: bit: "1"
+3720420-3720542 i2c: bit: "1"
+3720298-3720420 i2c: bit: "1"
+3720298-3721275 i2c: data-read: "Data read: F7" "DR: F7" "F7"
+3721308-3721430 i2c: nack: "NACK" "N"
+3721458-3721458 i2c: stop: "Stop" "P"
+3825148-3825148 i2c: start: "Start" "S"
+3826099-3826221 i2c: bit: "0"
+3825977-3826099 i2c: bit: "1"
+3825854-3825977 i2c: bit: "0"
+3825732-3825854 i2c: bit: "0"
+3825610-3825732 i2c: bit: "1"
+3825488-3825610 i2c: bit: "0"
+3825366-3825488 i2c: bit: "1"
+3825244-3825366 i2c: bit: "1"
+3826099-3826221 i2c: address-write: "Write" "Wr" "W"
+3825244-3826099 i2c: address-write: "Address write: 69" "AW: 69" "69"
+3826221-3826343 i2c: ack: "ACK" "A"
+3827198-3827320 i2c: bit: "0"
+3827076-3827198 i2c: bit: "0"
+3826954-3827076 i2c: bit: "0"
+3826832-3826954 i2c: bit: "0"
+3826709-3826832 i2c: bit: "0"
+3826587-3826709 i2c: bit: "0"
+3826465-3826587 i2c: bit: "0"
+3826343-3826465 i2c: bit: "0"
+3826343-3827320 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3827320-3827442 i2c: ack: "ACK" "A"
+3828297-3828419 i2c: bit: "0"
+3828175-3828297 i2c: bit: "0"
+3828053-3828175 i2c: bit: "0"
+3827931-3828053 i2c: bit: "1"
+3827809-3827931 i2c: bit: "1"
+3827686-3827809 i2c: bit: "0"
+3827564-3827686 i2c: bit: "0"
+3827442-3827564 i2c: bit: "0"
+3827442-3828419 i2c: data-write: "Data write: 18" "DW: 18" "18"
+3828419-3828541 i2c: ack: "ACK" "A"
+3829396-3829518 i2c: bit: "0"
+3829274-3829396 i2c: bit: "1"
+3829152-3829274 i2c: bit: "1"
+3829030-3829152 i2c: bit: "1"
+3828908-3829030 i2c: bit: "0"
+3828786-3828908 i2c: bit: "1"
+3828664-3828786 i2c: bit: "0"
+3828541-3828664 i2c: bit: "1"
+3828541-3829518 i2c: data-write: "Data write: AE" "DW: AE" "AE"
+3829518-3829640 i2c: ack: "ACK" "A"
+3830496-3830619 i2c: bit: "1"
+3830373-3830496 i2c: bit: "1"
+3830251-3830373 i2c: bit: "1"
+3830129-3830251 i2c: bit: "1"
+3830007-3830129 i2c: bit: "1"
+3829885-3830007 i2c: bit: "1"
+3829763-3829885 i2c: bit: "1"
+3829641-3829763 i2c: bit: "1"
+3829641-3830619 i2c: data-write: "Data write: FF" "DW: FF" "FF"
+3830618-3830741 i2c: ack: "ACK" "A"
+3831595-3831717 i2c: bit: "1"
+3831473-3831595 i2c: bit: "1"
+3831350-3831473 i2c: bit: "1"
+3831228-3831350 i2c: bit: "1"
+3831106-3831228 i2c: bit: "0"
+3830984-3831106 i2c: bit: "1"
+3830862-3830984 i2c: bit: "1"
+3830740-3830862 i2c: bit: "1"
+3830740-3831717 i2c: data-write: "Data write: EF" "DW: EF" "EF"
+3831717-3831839 i2c: ack: "ACK" "A"
+3832694-3832816 i2c: bit: "1"
+3832572-3832694 i2c: bit: "1"
+3832450-3832572 i2c: bit: "0"
+3832328-3832450 i2c: bit: "1"
+3832205-3832328 i2c: bit: "1"
+3832083-3832205 i2c: bit: "1"
+3831961-3832083 i2c: bit: "1"
+3831839-3831961 i2c: bit: "1"
+3831839-3832816 i2c: data-write: "Data write: FB" "DW: FB" "FB"
+3832816-3832938 i2c: ack: "ACK" "A"
+3833793-3833915 i2c: bit: "1"
+3833671-3833793 i2c: bit: "1"
+3833549-3833671 i2c: bit: "1"
+3833427-3833549 i2c: bit: "1"
+3833305-3833427 i2c: bit: "0"
+3833182-3833305 i2c: bit: "0"
+3833060-3833182 i2c: bit: "0"
+3832938-3833060 i2c: bit: "0"
+3832938-3833915 i2c: data-write: "Data write: 0F" "DW: 0F" "0F"
+3833915-3834037 i2c: ack: "ACK" "A"
+3834892-3835014 i2c: bit: "0"
+3834770-3834892 i2c: bit: "0"
+3834648-3834770 i2c: bit: "0"
+3834526-3834648 i2c: bit: "0"
+3834404-3834526 i2c: bit: "0"
+3834282-3834404 i2c: bit: "0"
+3834160-3834282 i2c: bit: "1"
+3834037-3834160 i2c: bit: "1"
+3834037-3835014 i2c: data-write: "Data write: C0" "DW: C0" "C0"
+3835014-3835136 i2c: ack: "ACK" "A"
+3835992-3836115 i2c: bit: "1"
+3835869-3835992 i2c: bit: "0"
+3835747-3835869 i2c: bit: "0"
+3835625-3835747 i2c: bit: "0"
+3835503-3835625 i2c: bit: "1"
+3835381-3835503 i2c: bit: "1"
+3835259-3835381 i2c: bit: "1"
+3835137-3835259 i2c: bit: "1"
+3835137-3836115 i2c: data-write: "Data write: F1" "DW: F1" "F1"
+3836114-3836237 i2c: ack: "ACK" "A"
+3837091-3837213 i2c: bit: "1"
+3836969-3837091 i2c: bit: "1"
+3836846-3836969 i2c: bit: "1"
+3836724-3836846 i2c: bit: "0"
+3836602-3836724 i2c: bit: "1"
+3836480-3836602 i2c: bit: "0"
+3836358-3836480 i2c: bit: "0"
+3836236-3836358 i2c: bit: "0"
+3836236-3837213 i2c: data-write: "Data write: 17" "DW: 17" "17"
+3837213-3837335 i2c: ack: "ACK" "A"
+3838190-3838312 i2c: bit: "0"
+3838068-3838190 i2c: bit: "0"
+3837946-3838068 i2c: bit: "0"
+3837824-3837946 i2c: bit: "1"
+3837701-3837824 i2c: bit: "1"
+3837579-3837701 i2c: bit: "0"
+3837457-3837579 i2c: bit: "0"
+3837335-3837457 i2c: bit: "0"
+3837335-3838312 i2c: data-write: "Data write: 18" "DW: 18" "18"
+3838312-3838434 i2c: ack: "ACK" "A"
+3839289-3839411 i2c: bit: "0"
+3839167-3839289 i2c: bit: "0"
+3839045-3839167 i2c: bit: "0"
+3838923-3839045 i2c: bit: "0"
+3838801-3838923 i2c: bit: "1"
+3838678-3838801 i2c: bit: "0"
+3838556-3838678 i2c: bit: "0"
+3838434-3838556 i2c: bit: "0"
+3838434-3839411 i2c: data-write: "Data write: 10" "DW: 10" "10"
+3839411-3839533 i2c: ack: "ACK" "A"
+3840388-3840510 i2c: bit: "0"
+3840266-3840388 i2c: bit: "1"
+3840144-3840266 i2c: bit: "0"
+3840022-3840144 i2c: bit: "1"
+3839900-3840022 i2c: bit: "1"
+3839778-3839900 i2c: bit: "1"
+3839656-3839778 i2c: bit: "1"
+3839533-3839656 i2c: bit: "0"
+3839533-3840510 i2c: data-write: "Data write: 7A" "DW: 7A" "7A"
+3840510-3840632 i2c: ack: "ACK" "A"
+3841488-3841611 i2c: bit: "0"
+3841365-3841488 i2c: bit: "0"
+3841243-3841365 i2c: bit: "1"
+3841121-3841243 i2c: bit: "1"
+3840999-3841121 i2c: bit: "0"
+3840877-3840999 i2c: bit: "0"
+3840755-3840877 i2c: bit: "0"
+3840633-3840755 i2c: bit: "1"
+3840633-3841611 i2c: data-write: "Data write: 8C" "DW: 8C" "8C"
+3841610-3841733 i2c: ack: "ACK" "A"
+3842587-3842709 i2c: bit: "1"
+3842465-3842587 i2c: bit: "0"
+3842342-3842465 i2c: bit: "0"
+3842220-3842342 i2c: bit: "0"
+3842098-3842220 i2c: bit: "0"
+3841976-3842098 i2c: bit: "0"
+3841854-3841976 i2c: bit: "0"
+3841732-3841854 i2c: bit: "1"
+3841732-3842709 i2c: data-write: "Data write: 81" "DW: 81" "81"
+3842709-3842831 i2c: ack: "ACK" "A"
+3843686-3843808 i2c: bit: "1"
+3843564-3843686 i2c: bit: "1"
+3843442-3843564 i2c: bit: "1"
+3843320-3843442 i2c: bit: "1"
+3843197-3843320 i2c: bit: "1"
+3843075-3843197 i2c: bit: "0"
+3842953-3843075 i2c: bit: "0"
+3842831-3842953 i2c: bit: "0"
+3842831-3843808 i2c: data-write: "Data write: 1F" "DW: 1F" "1F"
+3843808-3843930 i2c: ack: "ACK" "A"
+3844785-3844907 i2c: bit: "0"
+3844663-3844785 i2c: bit: "0"
+3844541-3844663 i2c: bit: "0"
+3844419-3844541 i2c: bit: "1"
+3844297-3844419 i2c: bit: "1"
+3844174-3844297 i2c: bit: "0"
+3844052-3844174 i2c: bit: "0"
+3843930-3844052 i2c: bit: "0"
+3843930-3844907 i2c: data-write: "Data write: 18" "DW: 18" "18"
+3844907-3845029 i2c: ack: "ACK" "A"
+3845884-3846006 i2c: bit: "0"
+3845762-3845884 i2c: bit: "0"
+3845640-3845762 i2c: bit: "0"
+3845518-3845640 i2c: bit: "0"
+3845396-3845518 i2c: bit: "0"
+3845274-3845396 i2c: bit: "0"
+3845152-3845274 i2c: bit: "0"
+3845029-3845152 i2c: bit: "0"
+3845029-3846006 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3846006-3846128 i2c: ack: "ACK" "A"
+3846984-3847107 i2c: bit: "0"
+3846861-3846984 i2c: bit: "0"
+3846739-3846861 i2c: bit: "0"
+3846617-3846739 i2c: bit: "0"
+3846495-3846617 i2c: bit: "0"
+3846373-3846495 i2c: bit: "0"
+3846251-3846373 i2c: bit: "0"
+3846129-3846251 i2c: bit: "0"
+3846129-3847107 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3847106-3847229 i2c: ack: "ACK" "A"
+3848083-3848205 i2c: bit: "0"
+3847961-3848083 i2c: bit: "0"
+3847838-3847961 i2c: bit: "0"
+3847716-3847838 i2c: bit: "0"
+3847594-3847716 i2c: bit: "0"
+3847472-3847594 i2c: bit: "0"
+3847350-3847472 i2c: bit: "0"
+3847228-3847350 i2c: bit: "0"
+3847228-3848205 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3848205-3848327 i2c: ack: "ACK" "A"
+3849182-3849304 i2c: bit: "0"
+3849060-3849182 i2c: bit: "0"
+3848938-3849060 i2c: bit: "0"
+3848816-3848938 i2c: bit: "0"
+3848693-3848816 i2c: bit: "0"
+3848571-3848693 i2c: bit: "0"
+3848449-3848571 i2c: bit: "0"
+3848327-3848449 i2c: bit: "0"
+3848327-3849304 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3849304-3849426 i2c: ack: "ACK" "A"
+3850281-3850403 i2c: bit: "0"
+3850159-3850281 i2c: bit: "0"
+3850037-3850159 i2c: bit: "0"
+3849915-3850037 i2c: bit: "0"
+3849793-3849915 i2c: bit: "0"
+3849670-3849793 i2c: bit: "0"
+3849548-3849670 i2c: bit: "0"
+3849426-3849548 i2c: bit: "0"
+3849426-3850403 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3850403-3850525 i2c: ack: "ACK" "A"
+3851380-3851502 i2c: bit: "0"
+3851258-3851380 i2c: bit: "0"
+3851136-3851258 i2c: bit: "0"
+3851014-3851136 i2c: bit: "0"
+3850892-3851014 i2c: bit: "0"
+3850770-3850892 i2c: bit: "0"
+3850648-3850770 i2c: bit: "0"
+3850525-3850648 i2c: bit: "0"
+3850525-3851502 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3851502-3851624 i2c: ack: "ACK" "A"
+3852480-3852603 i2c: bit: "0"
+3852357-3852480 i2c: bit: "0"
+3852235-3852357 i2c: bit: "0"
+3852113-3852235 i2c: bit: "0"
+3851991-3852113 i2c: bit: "0"
+3851869-3851991 i2c: bit: "0"
+3851747-3851869 i2c: bit: "0"
+3851625-3851747 i2c: bit: "0"
+3851625-3852603 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3852602-3852725 i2c: ack: "ACK" "A"
+3853579-3853701 i2c: bit: "0"
+3853457-3853579 i2c: bit: "0"
+3853334-3853457 i2c: bit: "0"
+3853212-3853334 i2c: bit: "0"
+3853090-3853212 i2c: bit: "0"
+3852968-3853090 i2c: bit: "0"
+3852846-3852968 i2c: bit: "0"
+3852724-3852846 i2c: bit: "0"
+3852724-3853701 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3853701-3853823 i2c: ack: "ACK" "A"
+3854678-3854800 i2c: bit: "0"
+3854556-3854678 i2c: bit: "0"
+3854434-3854556 i2c: bit: "0"
+3854312-3854434 i2c: bit: "0"
+3854189-3854312 i2c: bit: "0"
+3854067-3854189 i2c: bit: "0"
+3853945-3854067 i2c: bit: "0"
+3853823-3853945 i2c: bit: "0"
+3853823-3854800 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3854800-3854922 i2c: ack: "ACK" "A"
+3854950-3854950 i2c: stop: "Stop" "P"
diff --git a/decoder/test/i2c/gigabyte_6vle_vxl_i2c.python b/decoder/test/i2c/gigabyte_6vle_vxl_i2c.python
new file mode 100644 (file)
index 0000000..609ba09
--- /dev/null
@@ -0,0 +1,188 @@
+3670527-3670527 i2c: ['START', None]
+3670623-3671600 i2c: ['BITS', [[0, 3671478, 3671600], [0, 3671356, 3671478], [0, 3671234, 3671356], [0, 3671112, 3671234], [0, 3670989, 3671112], [1, 3670867, 3670989], [0, 3670745, 3670867], [1, 3670623, 3670745]]]
+3670623-3671600 i2c: ['ADDRESS WRITE', 80]
+3671600-3671722 i2c: ['ACK', None]
+3671722-3672699 i2c: ['BITS', [[1, 3672577, 3672699], [1, 3672455, 3672577], [0, 3672333, 3672455], [1, 3672211, 3672333], [1, 3672089, 3672211], [0, 3671966, 3672089], [0, 3671844, 3671966], [0, 3671722, 3671844]]]
+3671722-3672699 i2c: ['DATA WRITE', 27]
+3672699-3672821 i2c: ['ACK', None]
+3672881-3672881 i2c: ['START REPEAT', None]
+3672971-3673948 i2c: ['BITS', [[1, 3673826, 3673948], [0, 3673704, 3673826], [0, 3673582, 3673704], [0, 3673460, 3673582], [0, 3673338, 3673460], [1, 3673216, 3673338], [0, 3673093, 3673216], [1, 3672971, 3673093]]]
+3672971-3673948 i2c: ['ADDRESS READ', 80]
+3673948-3674070 i2c: ['ACK', None]
+3674070-3675047 i2c: ['BITS', [[0, 3674925, 3675047], [0, 3674803, 3674925], [0, 3674681, 3674803], [0, 3674559, 3674681], [1, 3674437, 3674559], [0, 3674315, 3674437], [1, 3674193, 3674315], [0, 3674070, 3674193]]]
+3674070-3675047 i2c: ['DATA READ', 80]
+3675081-3675203 i2c: ['NACK', None]
+3675231-3675231 i2c: ['STOP', None]
+3675596-3675596 i2c: ['START', None]
+3675691-3676668 i2c: ['BITS', [[0, 3676546, 3676668], [0, 3676424, 3676546], [0, 3676302, 3676424], [0, 3676180, 3676302], [0, 3676058, 3676180], [1, 3675936, 3676058], [0, 3675814, 3675936], [1, 3675691, 3675814]]]
+3675691-3676668 i2c: ['ADDRESS WRITE', 80]
+3676669-3676791 i2c: ['ACK', None]
+3676791-3677768 i2c: ['BITS', [[0, 3677646, 3677768], [1, 3677524, 3677646], [1, 3677401, 3677524], [1, 3677279, 3677401], [1, 3677157, 3677279], [0, 3677035, 3677157], [0, 3676913, 3677035], [0, 3676791, 3676913]]]
+3676791-3677768 i2c: ['DATA WRITE', 30]
+3677768-3677890 i2c: ['ACK', None]
+3677950-3677950 i2c: ['START REPEAT', None]
+3678040-3679017 i2c: ['BITS', [[1, 3678895, 3679017], [0, 3678773, 3678895], [0, 3678650, 3678773], [0, 3678528, 3678650], [0, 3678406, 3678528], [1, 3678284, 3678406], [0, 3678162, 3678284], [1, 3678040, 3678162]]]
+3678040-3679017 i2c: ['ADDRESS READ', 80]
+3679017-3679139 i2c: ['ACK', None]
+3679139-3680116 i2c: ['BITS', [[1, 3679994, 3680116], [0, 3679872, 3679994], [1, 3679750, 3679872], [1, 3679628, 3679750], [0, 3679505, 3679628], [1, 3679383, 3679505], [0, 3679261, 3679383], [0, 3679139, 3679261]]]
+3679139-3680116 i2c: ['DATA READ', 45]
+3680149-3680271 i2c: ['NACK', None]
+3680299-3680299 i2c: ['STOP', None]
+3680665-3680665 i2c: ['START', None]
+3680760-3681737 i2c: ['BITS', [[0, 3681615, 3681737], [0, 3681493, 3681615], [0, 3681371, 3681493], [0, 3681249, 3681371], [0, 3681126, 3681249], [1, 3681004, 3681126], [0, 3680882, 3681004], [1, 3680760, 3680882]]]
+3680760-3681737 i2c: ['ADDRESS WRITE', 80]
+3681737-3681859 i2c: ['ACK', None]
+3681859-3682836 i2c: ['BITS', [[1, 3682714, 3682836], [0, 3682592, 3682714], [1, 3682470, 3682592], [1, 3682348, 3682470], [1, 3682226, 3682348], [0, 3682103, 3682226], [0, 3681981, 3682103], [0, 3681859, 3681981]]]
+3681859-3682836 i2c: ['DATA WRITE', 29]
+3682836-3682958 i2c: ['ACK', None]
+3683018-3683018 i2c: ['START REPEAT', None]
+3683108-3684085 i2c: ['BITS', [[1, 3683963, 3684085], [0, 3683841, 3683963], [0, 3683719, 3683841], [0, 3683597, 3683719], [0, 3683475, 3683597], [1, 3683353, 3683475], [0, 3683230, 3683353], [1, 3683108, 3683230]]]
+3683108-3684085 i2c: ['ADDRESS READ', 80]
+3684085-3684207 i2c: ['ACK', None]
+3684208-3685184 i2c: ['BITS', [[0, 3685062, 3685184], [0, 3684940, 3685062], [0, 3684818, 3684940], [0, 3684696, 3684818], [1, 3684574, 3684696], [0, 3684452, 3684574], [1, 3684330, 3684452], [0, 3684208, 3684330]]]
+3684208-3685184 i2c: ['DATA READ', 80]
+3685218-3685340 i2c: ['NACK', None]
+3685368-3685368 i2c: ['STOP', None]
+3700267-3700267 i2c: ['START', None]
+3700363-3701339 i2c: ['BITS', [[0, 3701217, 3701339], [1, 3701095, 3701217], [0, 3700973, 3701095], [0, 3700851, 3700973], [1, 3700729, 3700851], [0, 3700607, 3700729], [1, 3700485, 3700607], [1, 3700363, 3700485]]]
+3700363-3701339 i2c: ['ADDRESS WRITE', 105]
+3701340-3701462 i2c: ['ACK', None]
+3701462-3702440 i2c: ['BITS', [[0, 3702317, 3702440], [0, 3702194, 3702317], [0, 3702072, 3702194], [0, 3701950, 3702072], [0, 3701828, 3701950], [0, 3701706, 3701828], [0, 3701584, 3701706], [0, 3701462, 3701584]]]
+3701462-3702440 i2c: ['DATA WRITE', 0]
+3702439-3702562 i2c: ['ACK', None]
+3702621-3702621 i2c: ['START REPEAT', None]
+3702711-3703688 i2c: ['BITS', [[1, 3703566, 3703688], [1, 3703444, 3703566], [0, 3703321, 3703444], [0, 3703199, 3703321], [1, 3703077, 3703199], [0, 3702955, 3703077], [1, 3702833, 3702955], [1, 3702711, 3702833]]]
+3702711-3703688 i2c: ['ADDRESS READ', 105]
+3703688-3703810 i2c: ['ACK', None]
+3703810-3704787 i2c: ['BITS', [[1, 3704665, 3704787], [1, 3704543, 3704665], [1, 3704421, 3704543], [1, 3704298, 3704421], [0, 3704176, 3704298], [0, 3704054, 3704176], [0, 3703932, 3704054], [0, 3703810, 3703932]]]
+3703810-3704787 i2c: ['DATA READ', 15]
+3704787-3704909 i2c: ['ACK', None]
+3704909-3705886 i2c: ['BITS', [[0, 3705764, 3705886], [1, 3705642, 3705764], [1, 3705520, 3705642], [0, 3705398, 3705520], [0, 3705276, 3705398], [0, 3705153, 3705276], [0, 3705031, 3705153], [0, 3704909, 3705031]]]
+3704909-3705886 i2c: ['DATA READ', 6]
+3705886-3706008 i2c: ['ACK', None]
+3706008-3706985 i2c: ['BITS', [[1, 3706863, 3706985], [1, 3706741, 3706863], [1, 3706619, 3706741], [1, 3706497, 3706619], [1, 3706375, 3706497], [1, 3706253, 3706375], [1, 3706130, 3706253], [1, 3706008, 3706130]]]
+3706008-3706985 i2c: ['DATA READ', 255]
+3706985-3707107 i2c: ['ACK', None]
+3707108-3708084 i2c: ['BITS', [[1, 3707962, 3708084], [1, 3707840, 3707962], [1, 3707718, 3707840], [1, 3707596, 3707718], [1, 3707474, 3707596], [1, 3707352, 3707474], [1, 3707230, 3707352], [1, 3707108, 3707230]]]
+3707108-3708084 i2c: ['DATA READ', 255]
+3708085-3708207 i2c: ['ACK', None]
+3708207-3709184 i2c: ['BITS', [[1, 3709062, 3709184], [1, 3708940, 3709062], [1, 3708817, 3708940], [1, 3708695, 3708817], [1, 3708573, 3708695], [1, 3708451, 3708573], [1, 3708329, 3708451], [1, 3708207, 3708329]]]
+3708207-3709184 i2c: ['DATA READ', 255]
+3709184-3709306 i2c: ['ACK', None]
+3709306-3710283 i2c: ['BITS', [[1, 3710161, 3710283], [1, 3710039, 3710161], [1, 3709917, 3710039], [1, 3709794, 3709917], [1, 3709672, 3709794], [1, 3709550, 3709672], [1, 3709428, 3709550], [1, 3709306, 3709428]]]
+3709306-3710283 i2c: ['DATA READ', 255]
+3710283-3710405 i2c: ['ACK', None]
+3710405-3711382 i2c: ['BITS', [[1, 3711260, 3711382], [1, 3711138, 3711260], [1, 3711016, 3711138], [1, 3710894, 3711016], [1, 3710772, 3710894], [1, 3710649, 3710772], [1, 3710527, 3710649], [1, 3710405, 3710527]]]
+3710405-3711382 i2c: ['DATA READ', 255]
+3711382-3711504 i2c: ['ACK', None]
+3711504-3712481 i2c: ['BITS', [[1, 3712359, 3712481], [0, 3712237, 3712359], [0, 3712115, 3712237], [0, 3711993, 3712115], [1, 3711871, 3711993], [0, 3711749, 3711871], [1, 3711626, 3711749], [0, 3711504, 3711626]]]
+3711504-3712481 i2c: ['DATA READ', 81]
+3712481-3712603 i2c: ['ACK', None]
+3712604-3713580 i2c: ['BITS', [[0, 3713458, 3713580], [1, 3713336, 3713458], [1, 3713214, 3713336], [0, 3713092, 3713214], [0, 3712970, 3713092], [0, 3712848, 3712970], [0, 3712726, 3712848], [1, 3712604, 3712726]]]
+3712604-3713580 i2c: ['DATA READ', 134]
+3713581-3713703 i2c: ['ACK', None]
+3713703-3714680 i2c: ['BITS', [[1, 3714558, 3714680], [1, 3714436, 3714558], [1, 3714313, 3714436], [1, 3714191, 3714313], [0, 3714069, 3714191], [0, 3713947, 3714069], [0, 3713825, 3713947], [0, 3713703, 3713825]]]
+3713703-3714680 i2c: ['DATA READ', 15]
+3714680-3714802 i2c: ['ACK', None]
+3714802-3715779 i2c: ['BITS', [[0, 3715657, 3715779], [0, 3715535, 3715657], [0, 3715413, 3715535], [1, 3715290, 3715413], [0, 3715168, 3715290], [0, 3715046, 3715168], [0, 3714924, 3715046], [0, 3714802, 3714924]]]
+3714802-3715779 i2c: ['DATA READ', 8]
+3715779-3715901 i2c: ['ACK', None]
+3715901-3716878 i2c: ['BITS', [[1, 3716756, 3716878], [0, 3716634, 3716756], [0, 3716512, 3716634], [0, 3716390, 3716512], [0, 3716268, 3716390], [0, 3716145, 3716268], [0, 3716023, 3716145], [0, 3715901, 3716023]]]
+3715901-3716878 i2c: ['DATA READ', 1]
+3716878-3717000 i2c: ['ACK', None]
+3717000-3717977 i2c: ['BITS', [[0, 3717855, 3717977], [0, 3717733, 3717855], [0, 3717611, 3717733], [1, 3717489, 3717611], [0, 3717367, 3717489], [0, 3717245, 3717367], [0, 3717122, 3717245], [1, 3717000, 3717122]]]
+3717000-3717977 i2c: ['DATA READ', 136]
+3717977-3718099 i2c: ['ACK', None]
+3718100-3719076 i2c: ['BITS', [[0, 3718954, 3719076], [1, 3718832, 3718954], [1, 3718710, 3718832], [1, 3718588, 3718710], [0, 3718466, 3718588], [0, 3718344, 3718466], [0, 3718222, 3718344], [0, 3718100, 3718222]]]
+3718100-3719076 i2c: ['DATA READ', 14]
+3719077-3719199 i2c: ['ACK', None]
+3719199-3720176 i2c: ['BITS', [[1, 3720054, 3720176], [0, 3719932, 3720054], [1, 3719809, 3719932], [0, 3719687, 3719809], [0, 3719565, 3719687], [1, 3719443, 3719565], [1, 3719321, 3719443], [1, 3719199, 3719321]]]
+3719199-3720176 i2c: ['DATA READ', 229]
+3720176-3720298 i2c: ['ACK', None]
+3720298-3721275 i2c: ['BITS', [[1, 3721153, 3721275], [1, 3721031, 3721153], [1, 3720909, 3721031], [0, 3720786, 3720909], [1, 3720664, 3720786], [1, 3720542, 3720664], [1, 3720420, 3720542], [1, 3720298, 3720420]]]
+3720298-3721275 i2c: ['DATA READ', 247]
+3721308-3721430 i2c: ['NACK', None]
+3721458-3721458 i2c: ['STOP', None]
+3825148-3825148 i2c: ['START', None]
+3825244-3826221 i2c: ['BITS', [[0, 3826099, 3826221], [1, 3825977, 3826099], [0, 3825854, 3825977], [0, 3825732, 3825854], [1, 3825610, 3825732], [0, 3825488, 3825610], [1, 3825366, 3825488], [1, 3825244, 3825366]]]
+3825244-3826221 i2c: ['ADDRESS WRITE', 105]
+3826221-3826343 i2c: ['ACK', None]
+3826343-3827320 i2c: ['BITS', [[0, 3827198, 3827320], [0, 3827076, 3827198], [0, 3826954, 3827076], [0, 3826832, 3826954], [0, 3826709, 3826832], [0, 3826587, 3826709], [0, 3826465, 3826587], [0, 3826343, 3826465]]]
+3826343-3827320 i2c: ['DATA WRITE', 0]
+3827320-3827442 i2c: ['ACK', None]
+3827442-3828419 i2c: ['BITS', [[0, 3828297, 3828419], [0, 3828175, 3828297], [0, 3828053, 3828175], [1, 3827931, 3828053], [1, 3827809, 3827931], [0, 3827686, 3827809], [0, 3827564, 3827686], [0, 3827442, 3827564]]]
+3827442-3828419 i2c: ['DATA WRITE', 24]
+3828419-3828541 i2c: ['ACK', None]
+3828541-3829518 i2c: ['BITS', [[0, 3829396, 3829518], [1, 3829274, 3829396], [1, 3829152, 3829274], [1, 3829030, 3829152], [0, 3828908, 3829030], [1, 3828786, 3828908], [0, 3828664, 3828786], [1, 3828541, 3828664]]]
+3828541-3829518 i2c: ['DATA WRITE', 174]
+3829518-3829640 i2c: ['ACK', None]
+3829641-3830619 i2c: ['BITS', [[1, 3830496, 3830619], [1, 3830373, 3830496], [1, 3830251, 3830373], [1, 3830129, 3830251], [1, 3830007, 3830129], [1, 3829885, 3830007], [1, 3829763, 3829885], [1, 3829641, 3829763]]]
+3829641-3830619 i2c: ['DATA WRITE', 255]
+3830618-3830741 i2c: ['ACK', None]
+3830740-3831717 i2c: ['BITS', [[1, 3831595, 3831717], [1, 3831473, 3831595], [1, 3831350, 3831473], [1, 3831228, 3831350], [0, 3831106, 3831228], [1, 3830984, 3831106], [1, 3830862, 3830984], [1, 3830740, 3830862]]]
+3830740-3831717 i2c: ['DATA WRITE', 239]
+3831717-3831839 i2c: ['ACK', None]
+3831839-3832816 i2c: ['BITS', [[1, 3832694, 3832816], [1, 3832572, 3832694], [0, 3832450, 3832572], [1, 3832328, 3832450], [1, 3832205, 3832328], [1, 3832083, 3832205], [1, 3831961, 3832083], [1, 3831839, 3831961]]]
+3831839-3832816 i2c: ['DATA WRITE', 251]
+3832816-3832938 i2c: ['ACK', None]
+3832938-3833915 i2c: ['BITS', [[1, 3833793, 3833915], [1, 3833671, 3833793], [1, 3833549, 3833671], [1, 3833427, 3833549], [0, 3833305, 3833427], [0, 3833182, 3833305], [0, 3833060, 3833182], [0, 3832938, 3833060]]]
+3832938-3833915 i2c: ['DATA WRITE', 15]
+3833915-3834037 i2c: ['ACK', None]
+3834037-3835014 i2c: ['BITS', [[0, 3834892, 3835014], [0, 3834770, 3834892], [0, 3834648, 3834770], [0, 3834526, 3834648], [0, 3834404, 3834526], [0, 3834282, 3834404], [1, 3834160, 3834282], [1, 3834037, 3834160]]]
+3834037-3835014 i2c: ['DATA WRITE', 192]
+3835014-3835136 i2c: ['ACK', None]
+3835137-3836115 i2c: ['BITS', [[1, 3835992, 3836115], [0, 3835869, 3835992], [0, 3835747, 3835869], [0, 3835625, 3835747], [1, 3835503, 3835625], [1, 3835381, 3835503], [1, 3835259, 3835381], [1, 3835137, 3835259]]]
+3835137-3836115 i2c: ['DATA WRITE', 241]
+3836114-3836237 i2c: ['ACK', None]
+3836236-3837213 i2c: ['BITS', [[1, 3837091, 3837213], [1, 3836969, 3837091], [1, 3836846, 3836969], [0, 3836724, 3836846], [1, 3836602, 3836724], [0, 3836480, 3836602], [0, 3836358, 3836480], [0, 3836236, 3836358]]]
+3836236-3837213 i2c: ['DATA WRITE', 23]
+3837213-3837335 i2c: ['ACK', None]
+3837335-3838312 i2c: ['BITS', [[0, 3838190, 3838312], [0, 3838068, 3838190], [0, 3837946, 3838068], [1, 3837824, 3837946], [1, 3837701, 3837824], [0, 3837579, 3837701], [0, 3837457, 3837579], [0, 3837335, 3837457]]]
+3837335-3838312 i2c: ['DATA WRITE', 24]
+3838312-3838434 i2c: ['ACK', None]
+3838434-3839411 i2c: ['BITS', [[0, 3839289, 3839411], [0, 3839167, 3839289], [0, 3839045, 3839167], [0, 3838923, 3839045], [1, 3838801, 3838923], [0, 3838678, 3838801], [0, 3838556, 3838678], [0, 3838434, 3838556]]]
+3838434-3839411 i2c: ['DATA WRITE', 16]
+3839411-3839533 i2c: ['ACK', None]
+3839533-3840510 i2c: ['BITS', [[0, 3840388, 3840510], [1, 3840266, 3840388], [0, 3840144, 3840266], [1, 3840022, 3840144], [1, 3839900, 3840022], [1, 3839778, 3839900], [1, 3839656, 3839778], [0, 3839533, 3839656]]]
+3839533-3840510 i2c: ['DATA WRITE', 122]
+3840510-3840632 i2c: ['ACK', None]
+3840633-3841611 i2c: ['BITS', [[0, 3841488, 3841611], [0, 3841365, 3841488], [1, 3841243, 3841365], [1, 3841121, 3841243], [0, 3840999, 3841121], [0, 3840877, 3840999], [0, 3840755, 3840877], [1, 3840633, 3840755]]]
+3840633-3841611 i2c: ['DATA WRITE', 140]
+3841610-3841733 i2c: ['ACK', None]
+3841732-3842709 i2c: ['BITS', [[1, 3842587, 3842709], [0, 3842465, 3842587], [0, 3842342, 3842465], [0, 3842220, 3842342], [0, 3842098, 3842220], [0, 3841976, 3842098], [0, 3841854, 3841976], [1, 3841732, 3841854]]]
+3841732-3842709 i2c: ['DATA WRITE', 129]
+3842709-3842831 i2c: ['ACK', None]
+3842831-3843808 i2c: ['BITS', [[1, 3843686, 3843808], [1, 3843564, 3843686], [1, 3843442, 3843564], [1, 3843320, 3843442], [1, 3843197, 3843320], [0, 3843075, 3843197], [0, 3842953, 3843075], [0, 3842831, 3842953]]]
+3842831-3843808 i2c: ['DATA WRITE', 31]
+3843808-3843930 i2c: ['ACK', None]
+3843930-3844907 i2c: ['BITS', [[0, 3844785, 3844907], [0, 3844663, 3844785], [0, 3844541, 3844663], [1, 3844419, 3844541], [1, 3844297, 3844419], [0, 3844174, 3844297], [0, 3844052, 3844174], [0, 3843930, 3844052]]]
+3843930-3844907 i2c: ['DATA WRITE', 24]
+3844907-3845029 i2c: ['ACK', None]
+3845029-3846006 i2c: ['BITS', [[0, 3845884, 3846006], [0, 3845762, 3845884], [0, 3845640, 3845762], [0, 3845518, 3845640], [0, 3845396, 3845518], [0, 3845274, 3845396], [0, 3845152, 3845274], [0, 3845029, 3845152]]]
+3845029-3846006 i2c: ['DATA WRITE', 0]
+3846006-3846128 i2c: ['ACK', None]
+3846129-3847107 i2c: ['BITS', [[0, 3846984, 3847107], [0, 3846861, 3846984], [0, 3846739, 3846861], [0, 3846617, 3846739], [0, 3846495, 3846617], [0, 3846373, 3846495], [0, 3846251, 3846373], [0, 3846129, 3846251]]]
+3846129-3847107 i2c: ['DATA WRITE', 0]
+3847106-3847229 i2c: ['ACK', None]
+3847228-3848205 i2c: ['BITS', [[0, 3848083, 3848205], [0, 3847961, 3848083], [0, 3847838, 3847961], [0, 3847716, 3847838], [0, 3847594, 3847716], [0, 3847472, 3847594], [0, 3847350, 3847472], [0, 3847228, 3847350]]]
+3847228-3848205 i2c: ['DATA WRITE', 0]
+3848205-3848327 i2c: ['ACK', None]
+3848327-3849304 i2c: ['BITS', [[0, 3849182, 3849304], [0, 3849060, 3849182], [0, 3848938, 3849060], [0, 3848816, 3848938], [0, 3848693, 3848816], [0, 3848571, 3848693], [0, 3848449, 3848571], [0, 3848327, 3848449]]]
+3848327-3849304 i2c: ['DATA WRITE', 0]
+3849304-3849426 i2c: ['ACK', None]
+3849426-3850403 i2c: ['BITS', [[0, 3850281, 3850403], [0, 3850159, 3850281], [0, 3850037, 3850159], [0, 3849915, 3850037], [0, 3849793, 3849915], [0, 3849670, 3849793], [0, 3849548, 3849670], [0, 3849426, 3849548]]]
+3849426-3850403 i2c: ['DATA WRITE', 0]
+3850403-3850525 i2c: ['ACK', None]
+3850525-3851502 i2c: ['BITS', [[0, 3851380, 3851502], [0, 3851258, 3851380], [0, 3851136, 3851258], [0, 3851014, 3851136], [0, 3850892, 3851014], [0, 3850770, 3850892], [0, 3850648, 3850770], [0, 3850525, 3850648]]]
+3850525-3851502 i2c: ['DATA WRITE', 0]
+3851502-3851624 i2c: ['ACK', None]
+3851625-3852603 i2c: ['BITS', [[0, 3852480, 3852603], [0, 3852357, 3852480], [0, 3852235, 3852357], [0, 3852113, 3852235], [0, 3851991, 3852113], [0, 3851869, 3851991], [0, 3851747, 3851869], [0, 3851625, 3851747]]]
+3851625-3852603 i2c: ['DATA WRITE', 0]
+3852602-3852725 i2c: ['ACK', None]
+3852724-3853701 i2c: ['BITS', [[0, 3853579, 3853701], [0, 3853457, 3853579], [0, 3853334, 3853457], [0, 3853212, 3853334], [0, 3853090, 3853212], [0, 3852968, 3853090], [0, 3852846, 3852968], [0, 3852724, 3852846]]]
+3852724-3853701 i2c: ['DATA WRITE', 0]
+3853701-3853823 i2c: ['ACK', None]
+3853823-3854800 i2c: ['BITS', [[0, 3854678, 3854800], [0, 3854556, 3854678], [0, 3854434, 3854556], [0, 3854312, 3854434], [0, 3854189, 3854312], [0, 3854067, 3854189], [0, 3853945, 3854067], [0, 3853823, 3853945]]]
+3853823-3854800 i2c: ['DATA WRITE', 0]
+3854800-3854922 i2c: ['ACK', None]
+3854950-3854950 i2c: ['STOP', None]
diff --git a/decoder/test/i2c/rtc_ds1307_200khz.output b/decoder/test/i2c/rtc_ds1307_200khz.output
new file mode 100644 (file)
index 0000000..f0695fb
--- /dev/null
@@ -0,0 +1,828 @@
+0-0 i2c: start: "Start" "S"
+16-18 i2c: bit: "0"
+14-16 i2c: bit: "0"
+12-14 i2c: bit: "0"
+10-12 i2c: bit: "0"
+8-10 i2c: bit: "1"
+6-8 i2c: bit: "0"
+4-6 i2c: bit: "1"
+2-4 i2c: bit: "1"
+16-18 i2c: address-write: "Write" "Wr" "W"
+2-16 i2c: address-write: "Address write: 68" "AW: 68" "68"
+18-20 i2c: ack: "ACK" "A"
+39-41 i2c: bit: "0"
+37-39 i2c: bit: "0"
+35-37 i2c: bit: "0"
+33-35 i2c: bit: "0"
+31-33 i2c: bit: "0"
+29-31 i2c: bit: "0"
+27-29 i2c: bit: "0"
+25-27 i2c: bit: "0"
+25-41 i2c: data-write: "Data write: 00" "DW: 00" "00"
+41-43 i2c: ack: "ACK" "A"
+57-59 i2c: bit: "0"
+55-57 i2c: bit: "0"
+53-55 i2c: bit: "0"
+51-53 i2c: bit: "0"
+49-51 i2c: bit: "1"
+47-49 i2c: bit: "1"
+45-47 i2c: bit: "0"
+43-45 i2c: bit: "0"
+43-59 i2c: data-write: "Data write: 30" "DW: 30" "30"
+59-61 i2c: ack: "ACK" "A"
+75-77 i2c: bit: "1"
+73-75 i2c: bit: "0"
+71-73 i2c: bit: "1"
+69-71 i2c: bit: "0"
+67-69 i2c: bit: "1"
+65-67 i2c: bit: "1"
+63-65 i2c: bit: "0"
+61-63 i2c: bit: "0"
+61-77 i2c: data-write: "Data write: 35" "DW: 35" "35"
+77-79 i2c: ack: "ACK" "A"
+93-95 i2c: bit: "1"
+91-93 i2c: bit: "1"
+89-91 i2c: bit: "0"
+87-89 i2c: bit: "0"
+85-87 i2c: bit: "0"
+83-85 i2c: bit: "1"
+81-83 i2c: bit: "0"
+79-81 i2c: bit: "0"
+79-95 i2c: data-write: "Data write: 23" "DW: 23" "23"
+95-97 i2c: ack: "ACK" "A"
+111-113 i2c: bit: "1"
+109-111 i2c: bit: "0"
+107-109 i2c: bit: "0"
+105-107 i2c: bit: "0"
+103-105 i2c: bit: "0"
+101-103 i2c: bit: "0"
+99-101 i2c: bit: "0"
+97-99 i2c: bit: "0"
+97-113 i2c: data-write: "Data write: 01" "DW: 01" "01"
+113-115 i2c: ack: "ACK" "A"
+129-131 i2c: bit: "0"
+127-129 i2c: bit: "0"
+125-127 i2c: bit: "0"
+123-125 i2c: bit: "0"
+121-123 i2c: bit: "1"
+119-121 i2c: bit: "0"
+117-119 i2c: bit: "0"
+115-117 i2c: bit: "0"
+115-131 i2c: data-write: "Data write: 10" "DW: 10" "10"
+131-133 i2c: ack: "ACK" "A"
+147-149 i2c: bit: "1"
+145-147 i2c: bit: "1"
+143-145 i2c: bit: "0"
+141-143 i2c: bit: "0"
+139-141 i2c: bit: "0"
+137-139 i2c: bit: "0"
+135-137 i2c: bit: "0"
+133-135 i2c: bit: "0"
+133-149 i2c: data-write: "Data write: 03" "DW: 03" "03"
+149-151 i2c: ack: "ACK" "A"
+165-167 i2c: bit: "1"
+163-165 i2c: bit: "1"
+161-163 i2c: bit: "0"
+159-161 i2c: bit: "0"
+157-159 i2c: bit: "1"
+155-157 i2c: bit: "0"
+153-155 i2c: bit: "0"
+151-153 i2c: bit: "0"
+151-167 i2c: data-write: "Data write: 13" "DW: 13" "13"
+167-169 i2c: ack: "ACK" "A"
+171-171 i2c: stop: "Stop" "P"
+253-253 i2c: start: "Start" "S"
+269-271 i2c: bit: "0"
+267-269 i2c: bit: "0"
+265-267 i2c: bit: "0"
+263-265 i2c: bit: "0"
+261-263 i2c: bit: "1"
+259-261 i2c: bit: "0"
+257-259 i2c: bit: "1"
+255-257 i2c: bit: "1"
+269-271 i2c: address-write: "Write" "Wr" "W"
+255-269 i2c: address-write: "Address write: 68" "AW: 68" "68"
+271-273 i2c: ack: "ACK" "A"
+287-289 i2c: bit: "0"
+285-287 i2c: bit: "0"
+283-285 i2c: bit: "0"
+281-283 i2c: bit: "0"
+279-281 i2c: bit: "0"
+277-279 i2c: bit: "0"
+275-277 i2c: bit: "0"
+273-275 i2c: bit: "0"
+273-289 i2c: data-write: "Data write: 00" "DW: 00" "00"
+289-291 i2c: ack: "ACK" "A"
+323-323 i2c: repeat-start: "Start repeat" "Sr"
+339-341 i2c: bit: "1"
+337-339 i2c: bit: "0"
+335-337 i2c: bit: "0"
+333-335 i2c: bit: "0"
+331-333 i2c: bit: "1"
+329-331 i2c: bit: "0"
+327-329 i2c: bit: "1"
+325-327 i2c: bit: "1"
+339-341 i2c: address-read: "Read" "Rd" "R"
+325-339 i2c: address-read: "Address read: 68" "AR: 68" "68"
+341-343 i2c: ack: "ACK" "A"
+357-359 i2c: bit: "0"
+355-357 i2c: bit: "0"
+353-355 i2c: bit: "0"
+351-353 i2c: bit: "0"
+349-351 i2c: bit: "1"
+347-349 i2c: bit: "1"
+345-347 i2c: bit: "0"
+343-345 i2c: bit: "0"
+343-359 i2c: data-read: "Data read: 30" "DR: 30" "30"
+359-361 i2c: ack: "ACK" "A"
+375-377 i2c: bit: "1"
+373-375 i2c: bit: "0"
+371-373 i2c: bit: "1"
+369-371 i2c: bit: "0"
+367-369 i2c: bit: "1"
+365-367 i2c: bit: "1"
+363-365 i2c: bit: "0"
+361-363 i2c: bit: "0"
+361-377 i2c: data-read: "Data read: 35" "DR: 35" "35"
+377-379 i2c: ack: "ACK" "A"
+393-395 i2c: bit: "1"
+391-393 i2c: bit: "1"
+389-391 i2c: bit: "0"
+387-389 i2c: bit: "0"
+385-387 i2c: bit: "0"
+383-385 i2c: bit: "1"
+381-383 i2c: bit: "0"
+379-381 i2c: bit: "0"
+379-395 i2c: data-read: "Data read: 23" "DR: 23" "23"
+395-397 i2c: ack: "ACK" "A"
+411-413 i2c: bit: "1"
+409-411 i2c: bit: "0"
+407-409 i2c: bit: "0"
+405-407 i2c: bit: "0"
+403-405 i2c: bit: "0"
+401-403 i2c: bit: "0"
+399-401 i2c: bit: "0"
+397-399 i2c: bit: "0"
+397-413 i2c: data-read: "Data read: 01" "DR: 01" "01"
+413-415 i2c: ack: "ACK" "A"
+429-431 i2c: bit: "0"
+427-429 i2c: bit: "0"
+425-427 i2c: bit: "0"
+423-425 i2c: bit: "0"
+421-423 i2c: bit: "1"
+419-421 i2c: bit: "0"
+417-419 i2c: bit: "0"
+415-417 i2c: bit: "0"
+415-431 i2c: data-read: "Data read: 10" "DR: 10" "10"
+431-433 i2c: ack: "ACK" "A"
+447-449 i2c: bit: "1"
+445-447 i2c: bit: "1"
+443-445 i2c: bit: "0"
+441-443 i2c: bit: "0"
+439-441 i2c: bit: "0"
+437-439 i2c: bit: "0"
+435-437 i2c: bit: "0"
+433-435 i2c: bit: "0"
+433-449 i2c: data-read: "Data read: 03" "DR: 03" "03"
+449-451 i2c: ack: "ACK" "A"
+465-467 i2c: bit: "1"
+463-465 i2c: bit: "1"
+461-463 i2c: bit: "0"
+459-461 i2c: bit: "0"
+457-459 i2c: bit: "1"
+455-457 i2c: bit: "0"
+453-455 i2c: bit: "0"
+451-453 i2c: bit: "0"
+451-467 i2c: data-read: "Data read: 13" "DR: 13" "13"
+467-469 i2c: nack: "NACK" "N"
+471-471 i2c: stop: "Stop" "P"
+3548-3548 i2c: start: "Start" "S"
+3564-3566 i2c: bit: "0"
+3562-3564 i2c: bit: "0"
+3560-3562 i2c: bit: "0"
+3558-3560 i2c: bit: "0"
+3556-3558 i2c: bit: "1"
+3554-3556 i2c: bit: "0"
+3552-3554 i2c: bit: "1"
+3550-3552 i2c: bit: "1"
+3564-3566 i2c: address-write: "Write" "Wr" "W"
+3550-3564 i2c: address-write: "Address write: 68" "AW: 68" "68"
+3566-3568 i2c: ack: "ACK" "A"
+3582-3584 i2c: bit: "0"
+3580-3582 i2c: bit: "0"
+3578-3580 i2c: bit: "0"
+3576-3578 i2c: bit: "0"
+3574-3576 i2c: bit: "0"
+3572-3574 i2c: bit: "0"
+3570-3572 i2c: bit: "0"
+3568-3570 i2c: bit: "0"
+3568-3584 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3584-3586 i2c: ack: "ACK" "A"
+3608-3608 i2c: repeat-start: "Start repeat" "Sr"
+3624-3626 i2c: bit: "1"
+3622-3624 i2c: bit: "0"
+3620-3622 i2c: bit: "0"
+3618-3620 i2c: bit: "0"
+3616-3618 i2c: bit: "1"
+3614-3616 i2c: bit: "0"
+3612-3614 i2c: bit: "1"
+3610-3612 i2c: bit: "1"
+3624-3626 i2c: address-read: "Read" "Rd" "R"
+3610-3624 i2c: address-read: "Address read: 68" "AR: 68" "68"
+3626-3628 i2c: ack: "ACK" "A"
+3642-3644 i2c: bit: "0"
+3640-3642 i2c: bit: "0"
+3638-3640 i2c: bit: "0"
+3636-3638 i2c: bit: "0"
+3634-3636 i2c: bit: "1"
+3632-3634 i2c: bit: "1"
+3630-3632 i2c: bit: "0"
+3628-3630 i2c: bit: "0"
+3628-3644 i2c: data-read: "Data read: 30" "DR: 30" "30"
+3644-3646 i2c: ack: "ACK" "A"
+3660-3662 i2c: bit: "1"
+3658-3660 i2c: bit: "0"
+3656-3658 i2c: bit: "1"
+3654-3656 i2c: bit: "0"
+3652-3654 i2c: bit: "1"
+3650-3652 i2c: bit: "1"
+3648-3650 i2c: bit: "0"
+3646-3648 i2c: bit: "0"
+3646-3662 i2c: data-read: "Data read: 35" "DR: 35" "35"
+3662-3664 i2c: ack: "ACK" "A"
+3678-3680 i2c: bit: "1"
+3676-3678 i2c: bit: "1"
+3674-3676 i2c: bit: "0"
+3672-3674 i2c: bit: "0"
+3670-3672 i2c: bit: "0"
+3668-3670 i2c: bit: "1"
+3666-3668 i2c: bit: "0"
+3664-3666 i2c: bit: "0"
+3664-3680 i2c: data-read: "Data read: 23" "DR: 23" "23"
+3680-3682 i2c: ack: "ACK" "A"
+3696-3698 i2c: bit: "1"
+3694-3696 i2c: bit: "0"
+3692-3694 i2c: bit: "0"
+3690-3692 i2c: bit: "0"
+3688-3690 i2c: bit: "0"
+3686-3688 i2c: bit: "0"
+3684-3686 i2c: bit: "0"
+3682-3684 i2c: bit: "0"
+3682-3698 i2c: data-read: "Data read: 01" "DR: 01" "01"
+3698-3700 i2c: ack: "ACK" "A"
+3714-3716 i2c: bit: "0"
+3712-3714 i2c: bit: "0"
+3710-3712 i2c: bit: "0"
+3708-3710 i2c: bit: "0"
+3706-3708 i2c: bit: "1"
+3704-3706 i2c: bit: "0"
+3702-3704 i2c: bit: "0"
+3700-3702 i2c: bit: "0"
+3700-3716 i2c: data-read: "Data read: 10" "DR: 10" "10"
+3716-3718 i2c: ack: "ACK" "A"
+3732-3734 i2c: bit: "1"
+3730-3732 i2c: bit: "1"
+3728-3730 i2c: bit: "0"
+3726-3728 i2c: bit: "0"
+3724-3726 i2c: bit: "0"
+3722-3724 i2c: bit: "0"
+3720-3722 i2c: bit: "0"
+3718-3720 i2c: bit: "0"
+3718-3734 i2c: data-read: "Data read: 03" "DR: 03" "03"
+3734-3736 i2c: ack: "ACK" "A"
+3750-3752 i2c: bit: "1"
+3748-3750 i2c: bit: "1"
+3746-3748 i2c: bit: "0"
+3744-3746 i2c: bit: "0"
+3742-3744 i2c: bit: "1"
+3740-3742 i2c: bit: "0"
+3738-3740 i2c: bit: "0"
+3736-3738 i2c: bit: "0"
+3736-3752 i2c: data-read: "Data read: 13" "DR: 13" "13"
+3752-3754 i2c: nack: "NACK" "N"
+3756-3756 i2c: stop: "Stop" "P"
+7470-7470 i2c: start: "Start" "S"
+7486-7488 i2c: bit: "0"
+7484-7486 i2c: bit: "0"
+7482-7484 i2c: bit: "0"
+7480-7482 i2c: bit: "0"
+7478-7480 i2c: bit: "1"
+7476-7478 i2c: bit: "0"
+7474-7476 i2c: bit: "1"
+7472-7474 i2c: bit: "1"
+7486-7488 i2c: address-write: "Write" "Wr" "W"
+7472-7486 i2c: address-write: "Address write: 68" "AW: 68" "68"
+7488-7490 i2c: ack: "ACK" "A"
+7504-7506 i2c: bit: "0"
+7502-7504 i2c: bit: "0"
+7500-7502 i2c: bit: "0"
+7498-7500 i2c: bit: "0"
+7496-7498 i2c: bit: "0"
+7494-7496 i2c: bit: "0"
+7492-7494 i2c: bit: "0"
+7490-7492 i2c: bit: "0"
+7490-7506 i2c: data-write: "Data write: 00" "DW: 00" "00"
+7506-7508 i2c: ack: "ACK" "A"
+7529-7529 i2c: repeat-start: "Start repeat" "Sr"
+7545-7547 i2c: bit: "1"
+7543-7545 i2c: bit: "0"
+7541-7543 i2c: bit: "0"
+7539-7541 i2c: bit: "0"
+7537-7539 i2c: bit: "1"
+7535-7537 i2c: bit: "0"
+7533-7535 i2c: bit: "1"
+7531-7533 i2c: bit: "1"
+7545-7547 i2c: address-read: "Read" "Rd" "R"
+7531-7545 i2c: address-read: "Address read: 68" "AR: 68" "68"
+7547-7549 i2c: ack: "ACK" "A"
+7563-7565 i2c: bit: "0"
+7561-7563 i2c: bit: "0"
+7559-7561 i2c: bit: "0"
+7557-7559 i2c: bit: "0"
+7555-7557 i2c: bit: "1"
+7553-7555 i2c: bit: "1"
+7551-7553 i2c: bit: "0"
+7549-7551 i2c: bit: "0"
+7549-7565 i2c: data-read: "Data read: 30" "DR: 30" "30"
+7565-7567 i2c: ack: "ACK" "A"
+7581-7583 i2c: bit: "1"
+7579-7581 i2c: bit: "0"
+7577-7579 i2c: bit: "1"
+7575-7577 i2c: bit: "0"
+7573-7575 i2c: bit: "1"
+7571-7573 i2c: bit: "1"
+7569-7571 i2c: bit: "0"
+7567-7569 i2c: bit: "0"
+7567-7583 i2c: data-read: "Data read: 35" "DR: 35" "35"
+7583-7585 i2c: ack: "ACK" "A"
+7599-7601 i2c: bit: "1"
+7597-7599 i2c: bit: "1"
+7595-7597 i2c: bit: "0"
+7593-7595 i2c: bit: "0"
+7591-7593 i2c: bit: "0"
+7589-7591 i2c: bit: "1"
+7587-7589 i2c: bit: "0"
+7585-7587 i2c: bit: "0"
+7585-7601 i2c: data-read: "Data read: 23" "DR: 23" "23"
+7601-7603 i2c: ack: "ACK" "A"
+7617-7619 i2c: bit: "1"
+7615-7617 i2c: bit: "0"
+7613-7615 i2c: bit: "0"
+7611-7613 i2c: bit: "0"
+7609-7611 i2c: bit: "0"
+7607-7609 i2c: bit: "0"
+7605-7607 i2c: bit: "0"
+7603-7605 i2c: bit: "0"
+7603-7619 i2c: data-read: "Data read: 01" "DR: 01" "01"
+7619-7621 i2c: ack: "ACK" "A"
+7635-7637 i2c: bit: "0"
+7633-7635 i2c: bit: "0"
+7631-7633 i2c: bit: "0"
+7629-7631 i2c: bit: "0"
+7627-7629 i2c: bit: "1"
+7625-7627 i2c: bit: "0"
+7623-7625 i2c: bit: "0"
+7621-7623 i2c: bit: "0"
+7621-7637 i2c: data-read: "Data read: 10" "DR: 10" "10"
+7637-7639 i2c: ack: "ACK" "A"
+7653-7655 i2c: bit: "1"
+7651-7653 i2c: bit: "1"
+7649-7651 i2c: bit: "0"
+7647-7649 i2c: bit: "0"
+7645-7647 i2c: bit: "0"
+7643-7645 i2c: bit: "0"
+7641-7643 i2c: bit: "0"
+7639-7641 i2c: bit: "0"
+7639-7655 i2c: data-read: "Data read: 03" "DR: 03" "03"
+7655-7657 i2c: ack: "ACK" "A"
+7671-7673 i2c: bit: "1"
+7669-7671 i2c: bit: "1"
+7667-7669 i2c: bit: "0"
+7665-7667 i2c: bit: "0"
+7663-7665 i2c: bit: "1"
+7661-7663 i2c: bit: "0"
+7659-7661 i2c: bit: "0"
+7657-7659 i2c: bit: "0"
+7657-7673 i2c: data-read: "Data read: 13" "DR: 13" "13"
+7673-7675 i2c: nack: "NACK" "N"
+7677-7677 i2c: stop: "Stop" "P"
+11405-11405 i2c: start: "Start" "S"
+11422-11424 i2c: bit: "0"
+11420-11422 i2c: bit: "0"
+11418-11420 i2c: bit: "0"
+11416-11418 i2c: bit: "0"
+11414-11416 i2c: bit: "1"
+11412-11414 i2c: bit: "0"
+11410-11412 i2c: bit: "1"
+11408-11410 i2c: bit: "1"
+11422-11424 i2c: address-write: "Write" "Wr" "W"
+11408-11422 i2c: address-write: "Address write: 68" "AW: 68" "68"
+11424-11426 i2c: ack: "ACK" "A"
+11440-11442 i2c: bit: "0"
+11438-11440 i2c: bit: "0"
+11436-11438 i2c: bit: "0"
+11434-11436 i2c: bit: "0"
+11432-11434 i2c: bit: "0"
+11430-11432 i2c: bit: "0"
+11428-11430 i2c: bit: "0"
+11426-11428 i2c: bit: "0"
+11426-11442 i2c: data-write: "Data write: 00" "DW: 00" "00"
+11442-11444 i2c: ack: "ACK" "A"
+11466-11466 i2c: repeat-start: "Start repeat" "Sr"
+11482-11484 i2c: bit: "1"
+11480-11482 i2c: bit: "0"
+11478-11480 i2c: bit: "0"
+11476-11478 i2c: bit: "0"
+11474-11476 i2c: bit: "1"
+11472-11474 i2c: bit: "0"
+11470-11472 i2c: bit: "1"
+11468-11470 i2c: bit: "1"
+11482-11484 i2c: address-read: "Read" "Rd" "R"
+11468-11482 i2c: address-read: "Address read: 68" "AR: 68" "68"
+11484-11486 i2c: ack: "ACK" "A"
+11500-11502 i2c: bit: "0"
+11498-11500 i2c: bit: "0"
+11496-11498 i2c: bit: "0"
+11494-11496 i2c: bit: "0"
+11492-11494 i2c: bit: "1"
+11490-11492 i2c: bit: "1"
+11488-11490 i2c: bit: "0"
+11486-11488 i2c: bit: "0"
+11486-11502 i2c: data-read: "Data read: 30" "DR: 30" "30"
+11502-11504 i2c: ack: "ACK" "A"
+11518-11520 i2c: bit: "1"
+11516-11518 i2c: bit: "0"
+11514-11516 i2c: bit: "1"
+11512-11514 i2c: bit: "0"
+11510-11512 i2c: bit: "1"
+11508-11510 i2c: bit: "1"
+11506-11508 i2c: bit: "0"
+11504-11506 i2c: bit: "0"
+11504-11520 i2c: data-read: "Data read: 35" "DR: 35" "35"
+11520-11522 i2c: ack: "ACK" "A"
+11536-11538 i2c: bit: "1"
+11534-11536 i2c: bit: "1"
+11532-11534 i2c: bit: "0"
+11530-11532 i2c: bit: "0"
+11528-11530 i2c: bit: "0"
+11526-11528 i2c: bit: "1"
+11524-11526 i2c: bit: "0"
+11522-11524 i2c: bit: "0"
+11522-11538 i2c: data-read: "Data read: 23" "DR: 23" "23"
+11538-11540 i2c: ack: "ACK" "A"
+11554-11556 i2c: bit: "1"
+11552-11554 i2c: bit: "0"
+11550-11552 i2c: bit: "0"
+11548-11550 i2c: bit: "0"
+11546-11548 i2c: bit: "0"
+11544-11546 i2c: bit: "0"
+11542-11544 i2c: bit: "0"
+11540-11542 i2c: bit: "0"
+11540-11556 i2c: data-read: "Data read: 01" "DR: 01" "01"
+11556-11558 i2c: ack: "ACK" "A"
+11572-11574 i2c: bit: "0"
+11570-11572 i2c: bit: "0"
+11568-11570 i2c: bit: "0"
+11566-11568 i2c: bit: "0"
+11564-11566 i2c: bit: "1"
+11562-11564 i2c: bit: "0"
+11560-11562 i2c: bit: "0"
+11558-11560 i2c: bit: "0"
+11558-11574 i2c: data-read: "Data read: 10" "DR: 10" "10"
+11574-11576 i2c: ack: "ACK" "A"
+11590-11592 i2c: bit: "1"
+11588-11590 i2c: bit: "1"
+11586-11588 i2c: bit: "0"
+11584-11586 i2c: bit: "0"
+11582-11584 i2c: bit: "0"
+11580-11582 i2c: bit: "0"
+11578-11580 i2c: bit: "0"
+11576-11578 i2c: bit: "0"
+11576-11592 i2c: data-read: "Data read: 03" "DR: 03" "03"
+11592-11594 i2c: ack: "ACK" "A"
+11608-11610 i2c: bit: "1"
+11606-11608 i2c: bit: "1"
+11604-11606 i2c: bit: "0"
+11602-11604 i2c: bit: "0"
+11600-11602 i2c: bit: "1"
+11598-11600 i2c: bit: "0"
+11596-11598 i2c: bit: "0"
+11594-11596 i2c: bit: "0"
+11594-11610 i2c: data-read: "Data read: 13" "DR: 13" "13"
+11610-11612 i2c: nack: "NACK" "N"
+11614-11614 i2c: stop: "Stop" "P"
+15332-15332 i2c: start: "Start" "S"
+15348-15350 i2c: bit: "0"
+15346-15348 i2c: bit: "0"
+15344-15346 i2c: bit: "0"
+15342-15344 i2c: bit: "0"
+15340-15342 i2c: bit: "1"
+15338-15340 i2c: bit: "0"
+15336-15338 i2c: bit: "1"
+15334-15336 i2c: bit: "1"
+15348-15350 i2c: address-write: "Write" "Wr" "W"
+15334-15348 i2c: address-write: "Address write: 68" "AW: 68" "68"
+15350-15352 i2c: ack: "ACK" "A"
+15366-15368 i2c: bit: "0"
+15364-15366 i2c: bit: "0"
+15362-15364 i2c: bit: "0"
+15360-15362 i2c: bit: "0"
+15358-15360 i2c: bit: "0"
+15356-15358 i2c: bit: "0"
+15354-15356 i2c: bit: "0"
+15352-15354 i2c: bit: "0"
+15352-15368 i2c: data-write: "Data write: 00" "DW: 00" "00"
+15368-15370 i2c: ack: "ACK" "A"
+15400-15400 i2c: repeat-start: "Start repeat" "Sr"
+15416-15418 i2c: bit: "1"
+15414-15416 i2c: bit: "0"
+15412-15414 i2c: bit: "0"
+15410-15412 i2c: bit: "0"
+15408-15410 i2c: bit: "1"
+15406-15408 i2c: bit: "0"
+15404-15406 i2c: bit: "1"
+15402-15404 i2c: bit: "1"
+15416-15418 i2c: address-read: "Read" "Rd" "R"
+15402-15416 i2c: address-read: "Address read: 68" "AR: 68" "68"
+15418-15420 i2c: ack: "ACK" "A"
+15434-15436 i2c: bit: "0"
+15432-15434 i2c: bit: "0"
+15430-15432 i2c: bit: "0"
+15428-15430 i2c: bit: "0"
+15426-15428 i2c: bit: "1"
+15424-15426 i2c: bit: "1"
+15422-15424 i2c: bit: "0"
+15420-15422 i2c: bit: "0"
+15420-15436 i2c: data-read: "Data read: 30" "DR: 30" "30"
+15436-15438 i2c: ack: "ACK" "A"
+15452-15454 i2c: bit: "1"
+15450-15452 i2c: bit: "0"
+15448-15450 i2c: bit: "1"
+15446-15448 i2c: bit: "0"
+15444-15446 i2c: bit: "1"
+15442-15444 i2c: bit: "1"
+15440-15442 i2c: bit: "0"
+15438-15440 i2c: bit: "0"
+15438-15454 i2c: data-read: "Data read: 35" "DR: 35" "35"
+15454-15456 i2c: ack: "ACK" "A"
+15470-15472 i2c: bit: "1"
+15468-15470 i2c: bit: "1"
+15466-15468 i2c: bit: "0"
+15464-15466 i2c: bit: "0"
+15462-15464 i2c: bit: "0"
+15460-15462 i2c: bit: "1"
+15458-15460 i2c: bit: "0"
+15456-15458 i2c: bit: "0"
+15456-15472 i2c: data-read: "Data read: 23" "DR: 23" "23"
+15472-15474 i2c: ack: "ACK" "A"
+15488-15490 i2c: bit: "1"
+15486-15488 i2c: bit: "0"
+15484-15486 i2c: bit: "0"
+15482-15484 i2c: bit: "0"
+15480-15482 i2c: bit: "0"
+15478-15480 i2c: bit: "0"
+15476-15478 i2c: bit: "0"
+15474-15476 i2c: bit: "0"
+15474-15490 i2c: data-read: "Data read: 01" "DR: 01" "01"
+15490-15492 i2c: ack: "ACK" "A"
+15506-15508 i2c: bit: "0"
+15504-15506 i2c: bit: "0"
+15502-15504 i2c: bit: "0"
+15500-15502 i2c: bit: "0"
+15498-15500 i2c: bit: "1"
+15496-15498 i2c: bit: "0"
+15494-15496 i2c: bit: "0"
+15492-15494 i2c: bit: "0"
+15492-15508 i2c: data-read: "Data read: 10" "DR: 10" "10"
+15508-15510 i2c: ack: "ACK" "A"
+15524-15526 i2c: bit: "1"
+15522-15524 i2c: bit: "1"
+15520-15522 i2c: bit: "0"
+15518-15520 i2c: bit: "0"
+15516-15518 i2c: bit: "0"
+15514-15516 i2c: bit: "0"
+15512-15514 i2c: bit: "0"
+15510-15512 i2c: bit: "0"
+15510-15526 i2c: data-read: "Data read: 03" "DR: 03" "03"
+15526-15528 i2c: ack: "ACK" "A"
+15542-15544 i2c: bit: "1"
+15540-15542 i2c: bit: "1"
+15538-15540 i2c: bit: "0"
+15536-15538 i2c: bit: "0"
+15534-15536 i2c: bit: "1"
+15532-15534 i2c: bit: "0"
+15530-15532 i2c: bit: "0"
+15528-15530 i2c: bit: "0"
+15528-15544 i2c: data-read: "Data read: 13" "DR: 13" "13"
+15544-15546 i2c: nack: "NACK" "N"
+15548-15548 i2c: stop: "Stop" "P"
+19253-19253 i2c: start: "Start" "S"
+19269-19271 i2c: bit: "0"
+19267-19269 i2c: bit: "0"
+19265-19267 i2c: bit: "0"
+19263-19265 i2c: bit: "0"
+19261-19263 i2c: bit: "1"
+19259-19261 i2c: bit: "0"
+19257-19259 i2c: bit: "1"
+19255-19257 i2c: bit: "1"
+19269-19271 i2c: address-write: "Write" "Wr" "W"
+19255-19269 i2c: address-write: "Address write: 68" "AW: 68" "68"
+19271-19273 i2c: ack: "ACK" "A"
+19288-19290 i2c: bit: "0"
+19286-19288 i2c: bit: "0"
+19284-19286 i2c: bit: "0"
+19282-19284 i2c: bit: "0"
+19280-19282 i2c: bit: "0"
+19278-19280 i2c: bit: "0"
+19276-19278 i2c: bit: "0"
+19274-19276 i2c: bit: "0"
+19274-19290 i2c: data-write: "Data write: 00" "DW: 00" "00"
+19290-19292 i2c: ack: "ACK" "A"
+19359-19359 i2c: repeat-start: "Start repeat" "Sr"
+19375-19377 i2c: bit: "1"
+19373-19375 i2c: bit: "0"
+19371-19373 i2c: bit: "0"
+19369-19371 i2c: bit: "0"
+19367-19369 i2c: bit: "1"
+19365-19367 i2c: bit: "0"
+19363-19365 i2c: bit: "1"
+19361-19363 i2c: bit: "1"
+19375-19377 i2c: address-read: "Read" "Rd" "R"
+19361-19375 i2c: address-read: "Address read: 68" "AR: 68" "68"
+19377-19379 i2c: ack: "ACK" "A"
+19393-19395 i2c: bit: "0"
+19391-19393 i2c: bit: "0"
+19389-19391 i2c: bit: "0"
+19387-19389 i2c: bit: "0"
+19385-19387 i2c: bit: "1"
+19383-19385 i2c: bit: "1"
+19381-19383 i2c: bit: "0"
+19379-19381 i2c: bit: "0"
+19379-19395 i2c: data-read: "Data read: 30" "DR: 30" "30"
+19395-19397 i2c: ack: "ACK" "A"
+19411-19413 i2c: bit: "1"
+19409-19411 i2c: bit: "0"
+19407-19409 i2c: bit: "1"
+19405-19407 i2c: bit: "0"
+19403-19405 i2c: bit: "1"
+19401-19403 i2c: bit: "1"
+19399-19401 i2c: bit: "0"
+19397-19399 i2c: bit: "0"
+19397-19413 i2c: data-read: "Data read: 35" "DR: 35" "35"
+19413-19415 i2c: ack: "ACK" "A"
+19429-19431 i2c: bit: "1"
+19427-19429 i2c: bit: "1"
+19425-19427 i2c: bit: "0"
+19423-19425 i2c: bit: "0"
+19421-19423 i2c: bit: "0"
+19419-19421 i2c: bit: "1"
+19417-19419 i2c: bit: "0"
+19415-19417 i2c: bit: "0"
+19415-19431 i2c: data-read: "Data read: 23" "DR: 23" "23"
+19431-19433 i2c: ack: "ACK" "A"
+19447-19449 i2c: bit: "1"
+19445-19447 i2c: bit: "0"
+19443-19445 i2c: bit: "0"
+19441-19443 i2c: bit: "0"
+19439-19441 i2c: bit: "0"
+19437-19439 i2c: bit: "0"
+19435-19437 i2c: bit: "0"
+19433-19435 i2c: bit: "0"
+19433-19449 i2c: data-read: "Data read: 01" "DR: 01" "01"
+19449-19451 i2c: ack: "ACK" "A"
+19465-19467 i2c: bit: "0"
+19463-19465 i2c: bit: "0"
+19461-19463 i2c: bit: "0"
+19459-19461 i2c: bit: "0"
+19457-19459 i2c: bit: "1"
+19455-19457 i2c: bit: "0"
+19453-19455 i2c: bit: "0"
+19451-19453 i2c: bit: "0"
+19451-19467 i2c: data-read: "Data read: 10" "DR: 10" "10"
+19467-19469 i2c: ack: "ACK" "A"
+19483-19485 i2c: bit: "1"
+19481-19483 i2c: bit: "1"
+19479-19481 i2c: bit: "0"
+19477-19479 i2c: bit: "0"
+19475-19477 i2c: bit: "0"
+19473-19475 i2c: bit: "0"
+19471-19473 i2c: bit: "0"
+19469-19471 i2c: bit: "0"
+19469-19485 i2c: data-read: "Data read: 03" "DR: 03" "03"
+19485-19487 i2c: ack: "ACK" "A"
+19501-19503 i2c: bit: "1"
+19499-19501 i2c: bit: "1"
+19497-19499 i2c: bit: "0"
+19495-19497 i2c: bit: "0"
+19493-19495 i2c: bit: "1"
+19491-19493 i2c: bit: "0"
+19489-19491 i2c: bit: "0"
+19487-19489 i2c: bit: "0"
+19487-19503 i2c: data-read: "Data read: 13" "DR: 13" "13"
+19503-19505 i2c: nack: "NACK" "N"
+19507-19507 i2c: stop: "Stop" "P"
+23211-23211 i2c: start: "Start" "S"
+23228-23230 i2c: bit: "0"
+23226-23228 i2c: bit: "0"
+23224-23226 i2c: bit: "0"
+23222-23224 i2c: bit: "0"
+23220-23222 i2c: bit: "1"
+23218-23220 i2c: bit: "0"
+23216-23218 i2c: bit: "1"
+23214-23216 i2c: bit: "1"
+23228-23230 i2c: address-write: "Write" "Wr" "W"
+23214-23228 i2c: address-write: "Address write: 68" "AW: 68" "68"
+23230-23232 i2c: ack: "ACK" "A"
+23279-23281 i2c: bit: "0"
+23277-23279 i2c: bit: "0"
+23275-23277 i2c: bit: "0"
+23273-23275 i2c: bit: "0"
+23271-23273 i2c: bit: "0"
+23269-23271 i2c: bit: "0"
+23267-23269 i2c: bit: "0"
+23265-23267 i2c: bit: "0"
+23265-23281 i2c: data-write: "Data write: 00" "DW: 00" "00"
+23281-23283 i2c: ack: "ACK" "A"
+23299-23299 i2c: repeat-start: "Start repeat" "Sr"
+23315-23317 i2c: bit: "1"
+23313-23315 i2c: bit: "0"
+23311-23313 i2c: bit: "0"
+23309-23311 i2c: bit: "0"
+23307-23309 i2c: bit: "1"
+23305-23307 i2c: bit: "0"
+23303-23305 i2c: bit: "1"
+23301-23303 i2c: bit: "1"
+23315-23317 i2c: address-read: "Read" "Rd" "R"
+23301-23315 i2c: address-read: "Address read: 68" "AR: 68" "68"
+23317-23319 i2c: ack: "ACK" "A"
+23333-23335 i2c: bit: "0"
+23331-23333 i2c: bit: "0"
+23329-23331 i2c: bit: "0"
+23327-23329 i2c: bit: "0"
+23325-23327 i2c: bit: "1"
+23323-23325 i2c: bit: "1"
+23321-23323 i2c: bit: "0"
+23319-23321 i2c: bit: "0"
+23319-23335 i2c: data-read: "Data read: 30" "DR: 30" "30"
+23335-23337 i2c: ack: "ACK" "A"
+23351-23353 i2c: bit: "1"
+23349-23351 i2c: bit: "0"
+23347-23349 i2c: bit: "1"
+23345-23347 i2c: bit: "0"
+23343-23345 i2c: bit: "1"
+23341-23343 i2c: bit: "1"
+23339-23341 i2c: bit: "0"
+23337-23339 i2c: bit: "0"
+23337-23353 i2c: data-read: "Data read: 35" "DR: 35" "35"
+23353-23355 i2c: ack: "ACK" "A"
+23369-23371 i2c: bit: "1"
+23367-23369 i2c: bit: "1"
+23365-23367 i2c: bit: "0"
+23363-23365 i2c: bit: "0"
+23361-23363 i2c: bit: "0"
+23359-23361 i2c: bit: "1"
+23357-23359 i2c: bit: "0"
+23355-23357 i2c: bit: "0"
+23355-23371 i2c: data-read: "Data read: 23" "DR: 23" "23"
+23371-23373 i2c: ack: "ACK" "A"
+23387-23389 i2c: bit: "1"
+23385-23387 i2c: bit: "0"
+23383-23385 i2c: bit: "0"
+23381-23383 i2c: bit: "0"
+23379-23381 i2c: bit: "0"
+23377-23379 i2c: bit: "0"
+23375-23377 i2c: bit: "0"
+23373-23375 i2c: bit: "0"
+23373-23389 i2c: data-read: "Data read: 01" "DR: 01" "01"
+23389-23391 i2c: ack: "ACK" "A"
+23405-23407 i2c: bit: "0"
+23403-23405 i2c: bit: "0"
+23401-23403 i2c: bit: "0"
+23399-23401 i2c: bit: "0"
+23397-23399 i2c: bit: "1"
+23395-23397 i2c: bit: "0"
+23393-23395 i2c: bit: "0"
+23391-23393 i2c: bit: "0"
+23391-23407 i2c: data-read: "Data read: 10" "DR: 10" "10"
+23407-23409 i2c: ack: "ACK" "A"
+23423-23425 i2c: bit: "1"
+23421-23423 i2c: bit: "1"
+23419-23421 i2c: bit: "0"
+23417-23419 i2c: bit: "0"
+23415-23417 i2c: bit: "0"
+23413-23415 i2c: bit: "0"
+23411-23413 i2c: bit: "0"
+23409-23411 i2c: bit: "0"
+23409-23425 i2c: data-read: "Data read: 03" "DR: 03" "03"
+23425-23427 i2c: ack: "ACK" "A"
+23441-23443 i2c: bit: "1"
+23439-23441 i2c: bit: "1"
+23437-23439 i2c: bit: "0"
+23435-23437 i2c: bit: "0"
+23433-23435 i2c: bit: "1"
+23431-23433 i2c: bit: "0"
+23429-23431 i2c: bit: "0"
+23427-23429 i2c: bit: "0"
+23427-23443 i2c: data-read: "Data read: 13" "DR: 13" "13"
+23443-23445 i2c: nack: "NACK" "N"
+23447-23447 i2c: stop: "Stop" "P"
diff --git a/decoder/test/i2c/rtc_ds1307_200khz.python b/decoder/test/i2c/rtc_ds1307_200khz.python
new file mode 100644 (file)
index 0000000..93744da
--- /dev/null
@@ -0,0 +1,260 @@
+0-0 i2c: ['START', None]
+2-18 i2c: ['BITS', [[0, 16, 18], [0, 14, 16], [0, 12, 14], [0, 10, 12], [1, 8, 10], [0, 6, 8], [1, 4, 6], [1, 2, 4]]]
+2-18 i2c: ['ADDRESS WRITE', 104]
+18-20 i2c: ['ACK', None]
+25-41 i2c: ['BITS', [[0, 39, 41], [0, 37, 39], [0, 35, 37], [0, 33, 35], [0, 31, 33], [0, 29, 31], [0, 27, 29], [0, 25, 27]]]
+25-41 i2c: ['DATA WRITE', 0]
+41-43 i2c: ['ACK', None]
+43-59 i2c: ['BITS', [[0, 57, 59], [0, 55, 57], [0, 53, 55], [0, 51, 53], [1, 49, 51], [1, 47, 49], [0, 45, 47], [0, 43, 45]]]
+43-59 i2c: ['DATA WRITE', 48]
+59-61 i2c: ['ACK', None]
+61-77 i2c: ['BITS', [[1, 75, 77], [0, 73, 75], [1, 71, 73], [0, 69, 71], [1, 67, 69], [1, 65, 67], [0, 63, 65], [0, 61, 63]]]
+61-77 i2c: ['DATA WRITE', 53]
+77-79 i2c: ['ACK', None]
+79-95 i2c: ['BITS', [[1, 93, 95], [1, 91, 93], [0, 89, 91], [0, 87, 89], [0, 85, 87], [1, 83, 85], [0, 81, 83], [0, 79, 81]]]
+79-95 i2c: ['DATA WRITE', 35]
+95-97 i2c: ['ACK', None]
+97-113 i2c: ['BITS', [[1, 111, 113], [0, 109, 111], [0, 107, 109], [0, 105, 107], [0, 103, 105], [0, 101, 103], [0, 99, 101], [0, 97, 99]]]
+97-113 i2c: ['DATA WRITE', 1]
+113-115 i2c: ['ACK', None]
+115-131 i2c: ['BITS', [[0, 129, 131], [0, 127, 129], [0, 125, 127], [0, 123, 125], [1, 121, 123], [0, 119, 121], [0, 117, 119], [0, 115, 117]]]
+115-131 i2c: ['DATA WRITE', 16]
+131-133 i2c: ['ACK', None]
+133-149 i2c: ['BITS', [[1, 147, 149], [1, 145, 147], [0, 143, 145], [0, 141, 143], [0, 139, 141], [0, 137, 139], [0, 135, 137], [0, 133, 135]]]
+133-149 i2c: ['DATA WRITE', 3]
+149-151 i2c: ['ACK', None]
+151-167 i2c: ['BITS', [[1, 165, 167], [1, 163, 165], [0, 161, 163], [0, 159, 161], [1, 157, 159], [0, 155, 157], [0, 153, 155], [0, 151, 153]]]
+151-167 i2c: ['DATA WRITE', 19]
+167-169 i2c: ['ACK', None]
+171-171 i2c: ['STOP', None]
+253-253 i2c: ['START', None]
+255-271 i2c: ['BITS', [[0, 269, 271], [0, 267, 269], [0, 265, 267], [0, 263, 265], [1, 261, 263], [0, 259, 261], [1, 257, 259], [1, 255, 257]]]
+255-271 i2c: ['ADDRESS WRITE', 104]
+271-273 i2c: ['ACK', None]
+273-289 i2c: ['BITS', [[0, 287, 289], [0, 285, 287], [0, 283, 285], [0, 281, 283], [0, 279, 281], [0, 277, 279], [0, 275, 277], [0, 273, 275]]]
+273-289 i2c: ['DATA WRITE', 0]
+289-291 i2c: ['ACK', None]
+323-323 i2c: ['START REPEAT', None]
+325-341 i2c: ['BITS', [[1, 339, 341], [0, 337, 339], [0, 335, 337], [0, 333, 335], [1, 331, 333], [0, 329, 331], [1, 327, 329], [1, 325, 327]]]
+325-341 i2c: ['ADDRESS READ', 104]
+341-343 i2c: ['ACK', None]
+343-359 i2c: ['BITS', [[0, 357, 359], [0, 355, 357], [0, 353, 355], [0, 351, 353], [1, 349, 351], [1, 347, 349], [0, 345, 347], [0, 343, 345]]]
+343-359 i2c: ['DATA READ', 48]
+359-361 i2c: ['ACK', None]
+361-377 i2c: ['BITS', [[1, 375, 377], [0, 373, 375], [1, 371, 373], [0, 369, 371], [1, 367, 369], [1, 365, 367], [0, 363, 365], [0, 361, 363]]]
+361-377 i2c: ['DATA READ', 53]
+377-379 i2c: ['ACK', None]
+379-395 i2c: ['BITS', [[1, 393, 395], [1, 391, 393], [0, 389, 391], [0, 387, 389], [0, 385, 387], [1, 383, 385], [0, 381, 383], [0, 379, 381]]]
+379-395 i2c: ['DATA READ', 35]
+395-397 i2c: ['ACK', None]
+397-413 i2c: ['BITS', [[1, 411, 413], [0, 409, 411], [0, 407, 409], [0, 405, 407], [0, 403, 405], [0, 401, 403], [0, 399, 401], [0, 397, 399]]]
+397-413 i2c: ['DATA READ', 1]
+413-415 i2c: ['ACK', None]
+415-431 i2c: ['BITS', [[0, 429, 431], [0, 427, 429], [0, 425, 427], [0, 423, 425], [1, 421, 423], [0, 419, 421], [0, 417, 419], [0, 415, 417]]]
+415-431 i2c: ['DATA READ', 16]
+431-433 i2c: ['ACK', None]
+433-449 i2c: ['BITS', [[1, 447, 449], [1, 445, 447], [0, 443, 445], [0, 441, 443], [0, 439, 441], [0, 437, 439], [0, 435, 437], [0, 433, 435]]]
+433-449 i2c: ['DATA READ', 3]
+449-451 i2c: ['ACK', None]
+451-467 i2c: ['BITS', [[1, 465, 467], [1, 463, 465], [0, 461, 463], [0, 459, 461], [1, 457, 459], [0, 455, 457], [0, 453, 455], [0, 451, 453]]]
+451-467 i2c: ['DATA READ', 19]
+467-469 i2c: ['NACK', None]
+471-471 i2c: ['STOP', None]
+3548-3548 i2c: ['START', None]
+3550-3566 i2c: ['BITS', [[0, 3564, 3566], [0, 3562, 3564], [0, 3560, 3562], [0, 3558, 3560], [1, 3556, 3558], [0, 3554, 3556], [1, 3552, 3554], [1, 3550, 3552]]]
+3550-3566 i2c: ['ADDRESS WRITE', 104]
+3566-3568 i2c: ['ACK', None]
+3568-3584 i2c: ['BITS', [[0, 3582, 3584], [0, 3580, 3582], [0, 3578, 3580], [0, 3576, 3578], [0, 3574, 3576], [0, 3572, 3574], [0, 3570, 3572], [0, 3568, 3570]]]
+3568-3584 i2c: ['DATA WRITE', 0]
+3584-3586 i2c: ['ACK', None]
+3608-3608 i2c: ['START REPEAT', None]
+3610-3626 i2c: ['BITS', [[1, 3624, 3626], [0, 3622, 3624], [0, 3620, 3622], [0, 3618, 3620], [1, 3616, 3618], [0, 3614, 3616], [1, 3612, 3614], [1, 3610, 3612]]]
+3610-3626 i2c: ['ADDRESS READ', 104]
+3626-3628 i2c: ['ACK', None]
+3628-3644 i2c: ['BITS', [[0, 3642, 3644], [0, 3640, 3642], [0, 3638, 3640], [0, 3636, 3638], [1, 3634, 3636], [1, 3632, 3634], [0, 3630, 3632], [0, 3628, 3630]]]
+3628-3644 i2c: ['DATA READ', 48]
+3644-3646 i2c: ['ACK', None]
+3646-3662 i2c: ['BITS', [[1, 3660, 3662], [0, 3658, 3660], [1, 3656, 3658], [0, 3654, 3656], [1, 3652, 3654], [1, 3650, 3652], [0, 3648, 3650], [0, 3646, 3648]]]
+3646-3662 i2c: ['DATA READ', 53]
+3662-3664 i2c: ['ACK', None]
+3664-3680 i2c: ['BITS', [[1, 3678, 3680], [1, 3676, 3678], [0, 3674, 3676], [0, 3672, 3674], [0, 3670, 3672], [1, 3668, 3670], [0, 3666, 3668], [0, 3664, 3666]]]
+3664-3680 i2c: ['DATA READ', 35]
+3680-3682 i2c: ['ACK', None]
+3682-3698 i2c: ['BITS', [[1, 3696, 3698], [0, 3694, 3696], [0, 3692, 3694], [0, 3690, 3692], [0, 3688, 3690], [0, 3686, 3688], [0, 3684, 3686], [0, 3682, 3684]]]
+3682-3698 i2c: ['DATA READ', 1]
+3698-3700 i2c: ['ACK', None]
+3700-3716 i2c: ['BITS', [[0, 3714, 3716], [0, 3712, 3714], [0, 3710, 3712], [0, 3708, 3710], [1, 3706, 3708], [0, 3704, 3706], [0, 3702, 3704], [0, 3700, 3702]]]
+3700-3716 i2c: ['DATA READ', 16]
+3716-3718 i2c: ['ACK', None]
+3718-3734 i2c: ['BITS', [[1, 3732, 3734], [1, 3730, 3732], [0, 3728, 3730], [0, 3726, 3728], [0, 3724, 3726], [0, 3722, 3724], [0, 3720, 3722], [0, 3718, 3720]]]
+3718-3734 i2c: ['DATA READ', 3]
+3734-3736 i2c: ['ACK', None]
+3736-3752 i2c: ['BITS', [[1, 3750, 3752], [1, 3748, 3750], [0, 3746, 3748], [0, 3744, 3746], [1, 3742, 3744], [0, 3740, 3742], [0, 3738, 3740], [0, 3736, 3738]]]
+3736-3752 i2c: ['DATA READ', 19]
+3752-3754 i2c: ['NACK', None]
+3756-3756 i2c: ['STOP', None]
+7470-7470 i2c: ['START', None]
+7472-7488 i2c: ['BITS', [[0, 7486, 7488], [0, 7484, 7486], [0, 7482, 7484], [0, 7480, 7482], [1, 7478, 7480], [0, 7476, 7478], [1, 7474, 7476], [1, 7472, 7474]]]
+7472-7488 i2c: ['ADDRESS WRITE', 104]
+7488-7490 i2c: ['ACK', None]
+7490-7506 i2c: ['BITS', [[0, 7504, 7506], [0, 7502, 7504], [0, 7500, 7502], [0, 7498, 7500], [0, 7496, 7498], [0, 7494, 7496], [0, 7492, 7494], [0, 7490, 7492]]]
+7490-7506 i2c: ['DATA WRITE', 0]
+7506-7508 i2c: ['ACK', None]
+7529-7529 i2c: ['START REPEAT', None]
+7531-7547 i2c: ['BITS', [[1, 7545, 7547], [0, 7543, 7545], [0, 7541, 7543], [0, 7539, 7541], [1, 7537, 7539], [0, 7535, 7537], [1, 7533, 7535], [1, 7531, 7533]]]
+7531-7547 i2c: ['ADDRESS READ', 104]
+7547-7549 i2c: ['ACK', None]
+7549-7565 i2c: ['BITS', [[0, 7563, 7565], [0, 7561, 7563], [0, 7559, 7561], [0, 7557, 7559], [1, 7555, 7557], [1, 7553, 7555], [0, 7551, 7553], [0, 7549, 7551]]]
+7549-7565 i2c: ['DATA READ', 48]
+7565-7567 i2c: ['ACK', None]
+7567-7583 i2c: ['BITS', [[1, 7581, 7583], [0, 7579, 7581], [1, 7577, 7579], [0, 7575, 7577], [1, 7573, 7575], [1, 7571, 7573], [0, 7569, 7571], [0, 7567, 7569]]]
+7567-7583 i2c: ['DATA READ', 53]
+7583-7585 i2c: ['ACK', None]
+7585-7601 i2c: ['BITS', [[1, 7599, 7601], [1, 7597, 7599], [0, 7595, 7597], [0, 7593, 7595], [0, 7591, 7593], [1, 7589, 7591], [0, 7587, 7589], [0, 7585, 7587]]]
+7585-7601 i2c: ['DATA READ', 35]
+7601-7603 i2c: ['ACK', None]
+7603-7619 i2c: ['BITS', [[1, 7617, 7619], [0, 7615, 7617], [0, 7613, 7615], [0, 7611, 7613], [0, 7609, 7611], [0, 7607, 7609], [0, 7605, 7607], [0, 7603, 7605]]]
+7603-7619 i2c: ['DATA READ', 1]
+7619-7621 i2c: ['ACK', None]
+7621-7637 i2c: ['BITS', [[0, 7635, 7637], [0, 7633, 7635], [0, 7631, 7633], [0, 7629, 7631], [1, 7627, 7629], [0, 7625, 7627], [0, 7623, 7625], [0, 7621, 7623]]]
+7621-7637 i2c: ['DATA READ', 16]
+7637-7639 i2c: ['ACK', None]
+7639-7655 i2c: ['BITS', [[1, 7653, 7655], [1, 7651, 7653], [0, 7649, 7651], [0, 7647, 7649], [0, 7645, 7647], [0, 7643, 7645], [0, 7641, 7643], [0, 7639, 7641]]]
+7639-7655 i2c: ['DATA READ', 3]
+7655-7657 i2c: ['ACK', None]
+7657-7673 i2c: ['BITS', [[1, 7671, 7673], [1, 7669, 7671], [0, 7667, 7669], [0, 7665, 7667], [1, 7663, 7665], [0, 7661, 7663], [0, 7659, 7661], [0, 7657, 7659]]]
+7657-7673 i2c: ['DATA READ', 19]
+7673-7675 i2c: ['NACK', None]
+7677-7677 i2c: ['STOP', None]
+11405-11405 i2c: ['START', None]
+11408-11424 i2c: ['BITS', [[0, 11422, 11424], [0, 11420, 11422], [0, 11418, 11420], [0, 11416, 11418], [1, 11414, 11416], [0, 11412, 11414], [1, 11410, 11412], [1, 11408, 11410]]]
+11408-11424 i2c: ['ADDRESS WRITE', 104]
+11424-11426 i2c: ['ACK', None]
+11426-11442 i2c: ['BITS', [[0, 11440, 11442], [0, 11438, 11440], [0, 11436, 11438], [0, 11434, 11436], [0, 11432, 11434], [0, 11430, 11432], [0, 11428, 11430], [0, 11426, 11428]]]
+11426-11442 i2c: ['DATA WRITE', 0]
+11442-11444 i2c: ['ACK', None]
+11466-11466 i2c: ['START REPEAT', None]
+11468-11484 i2c: ['BITS', [[1, 11482, 11484], [0, 11480, 11482], [0, 11478, 11480], [0, 11476, 11478], [1, 11474, 11476], [0, 11472, 11474], [1, 11470, 11472], [1, 11468, 11470]]]
+11468-11484 i2c: ['ADDRESS READ', 104]
+11484-11486 i2c: ['ACK', None]
+11486-11502 i2c: ['BITS', [[0, 11500, 11502], [0, 11498, 11500], [0, 11496, 11498], [0, 11494, 11496], [1, 11492, 11494], [1, 11490, 11492], [0, 11488, 11490], [0, 11486, 11488]]]
+11486-11502 i2c: ['DATA READ', 48]
+11502-11504 i2c: ['ACK', None]
+11504-11520 i2c: ['BITS', [[1, 11518, 11520], [0, 11516, 11518], [1, 11514, 11516], [0, 11512, 11514], [1, 11510, 11512], [1, 11508, 11510], [0, 11506, 11508], [0, 11504, 11506]]]
+11504-11520 i2c: ['DATA READ', 53]
+11520-11522 i2c: ['ACK', None]
+11522-11538 i2c: ['BITS', [[1, 11536, 11538], [1, 11534, 11536], [0, 11532, 11534], [0, 11530, 11532], [0, 11528, 11530], [1, 11526, 11528], [0, 11524, 11526], [0, 11522, 11524]]]
+11522-11538 i2c: ['DATA READ', 35]
+11538-11540 i2c: ['ACK', None]
+11540-11556 i2c: ['BITS', [[1, 11554, 11556], [0, 11552, 11554], [0, 11550, 11552], [0, 11548, 11550], [0, 11546, 11548], [0, 11544, 11546], [0, 11542, 11544], [0, 11540, 11542]]]
+11540-11556 i2c: ['DATA READ', 1]
+11556-11558 i2c: ['ACK', None]
+11558-11574 i2c: ['BITS', [[0, 11572, 11574], [0, 11570, 11572], [0, 11568, 11570], [0, 11566, 11568], [1, 11564, 11566], [0, 11562, 11564], [0, 11560, 11562], [0, 11558, 11560]]]
+11558-11574 i2c: ['DATA READ', 16]
+11574-11576 i2c: ['ACK', None]
+11576-11592 i2c: ['BITS', [[1, 11590, 11592], [1, 11588, 11590], [0, 11586, 11588], [0, 11584, 11586], [0, 11582, 11584], [0, 11580, 11582], [0, 11578, 11580], [0, 11576, 11578]]]
+11576-11592 i2c: ['DATA READ', 3]
+11592-11594 i2c: ['ACK', None]
+11594-11610 i2c: ['BITS', [[1, 11608, 11610], [1, 11606, 11608], [0, 11604, 11606], [0, 11602, 11604], [1, 11600, 11602], [0, 11598, 11600], [0, 11596, 11598], [0, 11594, 11596]]]
+11594-11610 i2c: ['DATA READ', 19]
+11610-11612 i2c: ['NACK', None]
+11614-11614 i2c: ['STOP', None]
+15332-15332 i2c: ['START', None]
+15334-15350 i2c: ['BITS', [[0, 15348, 15350], [0, 15346, 15348], [0, 15344, 15346], [0, 15342, 15344], [1, 15340, 15342], [0, 15338, 15340], [1, 15336, 15338], [1, 15334, 15336]]]
+15334-15350 i2c: ['ADDRESS WRITE', 104]
+15350-15352 i2c: ['ACK', None]
+15352-15368 i2c: ['BITS', [[0, 15366, 15368], [0, 15364, 15366], [0, 15362, 15364], [0, 15360, 15362], [0, 15358, 15360], [0, 15356, 15358], [0, 15354, 15356], [0, 15352, 15354]]]
+15352-15368 i2c: ['DATA WRITE', 0]
+15368-15370 i2c: ['ACK', None]
+15400-15400 i2c: ['START REPEAT', None]
+15402-15418 i2c: ['BITS', [[1, 15416, 15418], [0, 15414, 15416], [0, 15412, 15414], [0, 15410, 15412], [1, 15408, 15410], [0, 15406, 15408], [1, 15404, 15406], [1, 15402, 15404]]]
+15402-15418 i2c: ['ADDRESS READ', 104]
+15418-15420 i2c: ['ACK', None]
+15420-15436 i2c: ['BITS', [[0, 15434, 15436], [0, 15432, 15434], [0, 15430, 15432], [0, 15428, 15430], [1, 15426, 15428], [1, 15424, 15426], [0, 15422, 15424], [0, 15420, 15422]]]
+15420-15436 i2c: ['DATA READ', 48]
+15436-15438 i2c: ['ACK', None]
+15438-15454 i2c: ['BITS', [[1, 15452, 15454], [0, 15450, 15452], [1, 15448, 15450], [0, 15446, 15448], [1, 15444, 15446], [1, 15442, 15444], [0, 15440, 15442], [0, 15438, 15440]]]
+15438-15454 i2c: ['DATA READ', 53]
+15454-15456 i2c: ['ACK', None]
+15456-15472 i2c: ['BITS', [[1, 15470, 15472], [1, 15468, 15470], [0, 15466, 15468], [0, 15464, 15466], [0, 15462, 15464], [1, 15460, 15462], [0, 15458, 15460], [0, 15456, 15458]]]
+15456-15472 i2c: ['DATA READ', 35]
+15472-15474 i2c: ['ACK', None]
+15474-15490 i2c: ['BITS', [[1, 15488, 15490], [0, 15486, 15488], [0, 15484, 15486], [0, 15482, 15484], [0, 15480, 15482], [0, 15478, 15480], [0, 15476, 15478], [0, 15474, 15476]]]
+15474-15490 i2c: ['DATA READ', 1]
+15490-15492 i2c: ['ACK', None]
+15492-15508 i2c: ['BITS', [[0, 15506, 15508], [0, 15504, 15506], [0, 15502, 15504], [0, 15500, 15502], [1, 15498, 15500], [0, 15496, 15498], [0, 15494, 15496], [0, 15492, 15494]]]
+15492-15508 i2c: ['DATA READ', 16]
+15508-15510 i2c: ['ACK', None]
+15510-15526 i2c: ['BITS', [[1, 15524, 15526], [1, 15522, 15524], [0, 15520, 15522], [0, 15518, 15520], [0, 15516, 15518], [0, 15514, 15516], [0, 15512, 15514], [0, 15510, 15512]]]
+15510-15526 i2c: ['DATA READ', 3]
+15526-15528 i2c: ['ACK', None]
+15528-15544 i2c: ['BITS', [[1, 15542, 15544], [1, 15540, 15542], [0, 15538, 15540], [0, 15536, 15538], [1, 15534, 15536], [0, 15532, 15534], [0, 15530, 15532], [0, 15528, 15530]]]
+15528-15544 i2c: ['DATA READ', 19]
+15544-15546 i2c: ['NACK', None]
+15548-15548 i2c: ['STOP', None]
+19253-19253 i2c: ['START', None]
+19255-19271 i2c: ['BITS', [[0, 19269, 19271], [0, 19267, 19269], [0, 19265, 19267], [0, 19263, 19265], [1, 19261, 19263], [0, 19259, 19261], [1, 19257, 19259], [1, 19255, 19257]]]
+19255-19271 i2c: ['ADDRESS WRITE', 104]
+19271-19273 i2c: ['ACK', None]
+19274-19290 i2c: ['BITS', [[0, 19288, 19290], [0, 19286, 19288], [0, 19284, 19286], [0, 19282, 19284], [0, 19280, 19282], [0, 19278, 19280], [0, 19276, 19278], [0, 19274, 19276]]]
+19274-19290 i2c: ['DATA WRITE', 0]
+19290-19292 i2c: ['ACK', None]
+19359-19359 i2c: ['START REPEAT', None]
+19361-19377 i2c: ['BITS', [[1, 19375, 19377], [0, 19373, 19375], [0, 19371, 19373], [0, 19369, 19371], [1, 19367, 19369], [0, 19365, 19367], [1, 19363, 19365], [1, 19361, 19363]]]
+19361-19377 i2c: ['ADDRESS READ', 104]
+19377-19379 i2c: ['ACK', None]
+19379-19395 i2c: ['BITS', [[0, 19393, 19395], [0, 19391, 19393], [0, 19389, 19391], [0, 19387, 19389], [1, 19385, 19387], [1, 19383, 19385], [0, 19381, 19383], [0, 19379, 19381]]]
+19379-19395 i2c: ['DATA READ', 48]
+19395-19397 i2c: ['ACK', None]
+19397-19413 i2c: ['BITS', [[1, 19411, 19413], [0, 19409, 19411], [1, 19407, 19409], [0, 19405, 19407], [1, 19403, 19405], [1, 19401, 19403], [0, 19399, 19401], [0, 19397, 19399]]]
+19397-19413 i2c: ['DATA READ', 53]
+19413-19415 i2c: ['ACK', None]
+19415-19431 i2c: ['BITS', [[1, 19429, 19431], [1, 19427, 19429], [0, 19425, 19427], [0, 19423, 19425], [0, 19421, 19423], [1, 19419, 19421], [0, 19417, 19419], [0, 19415, 19417]]]
+19415-19431 i2c: ['DATA READ', 35]
+19431-19433 i2c: ['ACK', None]
+19433-19449 i2c: ['BITS', [[1, 19447, 19449], [0, 19445, 19447], [0, 19443, 19445], [0, 19441, 19443], [0, 19439, 19441], [0, 19437, 19439], [0, 19435, 19437], [0, 19433, 19435]]]
+19433-19449 i2c: ['DATA READ', 1]
+19449-19451 i2c: ['ACK', None]
+19451-19467 i2c: ['BITS', [[0, 19465, 19467], [0, 19463, 19465], [0, 19461, 19463], [0, 19459, 19461], [1, 19457, 19459], [0, 19455, 19457], [0, 19453, 19455], [0, 19451, 19453]]]
+19451-19467 i2c: ['DATA READ', 16]
+19467-19469 i2c: ['ACK', None]
+19469-19485 i2c: ['BITS', [[1, 19483, 19485], [1, 19481, 19483], [0, 19479, 19481], [0, 19477, 19479], [0, 19475, 19477], [0, 19473, 19475], [0, 19471, 19473], [0, 19469, 19471]]]
+19469-19485 i2c: ['DATA READ', 3]
+19485-19487 i2c: ['ACK', None]
+19487-19503 i2c: ['BITS', [[1, 19501, 19503], [1, 19499, 19501], [0, 19497, 19499], [0, 19495, 19497], [1, 19493, 19495], [0, 19491, 19493], [0, 19489, 19491], [0, 19487, 19489]]]
+19487-19503 i2c: ['DATA READ', 19]
+19503-19505 i2c: ['NACK', None]
+19507-19507 i2c: ['STOP', None]
+23211-23211 i2c: ['START', None]
+23214-23230 i2c: ['BITS', [[0, 23228, 23230], [0, 23226, 23228], [0, 23224, 23226], [0, 23222, 23224], [1, 23220, 23222], [0, 23218, 23220], [1, 23216, 23218], [1, 23214, 23216]]]
+23214-23230 i2c: ['ADDRESS WRITE', 104]
+23230-23232 i2c: ['ACK', None]
+23265-23281 i2c: ['BITS', [[0, 23279, 23281], [0, 23277, 23279], [0, 23275, 23277], [0, 23273, 23275], [0, 23271, 23273], [0, 23269, 23271], [0, 23267, 23269], [0, 23265, 23267]]]
+23265-23281 i2c: ['DATA WRITE', 0]
+23281-23283 i2c: ['ACK', None]
+23299-23299 i2c: ['START REPEAT', None]
+23301-23317 i2c: ['BITS', [[1, 23315, 23317], [0, 23313, 23315], [0, 23311, 23313], [0, 23309, 23311], [1, 23307, 23309], [0, 23305, 23307], [1, 23303, 23305], [1, 23301, 23303]]]
+23301-23317 i2c: ['ADDRESS READ', 104]
+23317-23319 i2c: ['ACK', None]
+23319-23335 i2c: ['BITS', [[0, 23333, 23335], [0, 23331, 23333], [0, 23329, 23331], [0, 23327, 23329], [1, 23325, 23327], [1, 23323, 23325], [0, 23321, 23323], [0, 23319, 23321]]]
+23319-23335 i2c: ['DATA READ', 48]
+23335-23337 i2c: ['ACK', None]
+23337-23353 i2c: ['BITS', [[1, 23351, 23353], [0, 23349, 23351], [1, 23347, 23349], [0, 23345, 23347], [1, 23343, 23345], [1, 23341, 23343], [0, 23339, 23341], [0, 23337, 23339]]]
+23337-23353 i2c: ['DATA READ', 53]
+23353-23355 i2c: ['ACK', None]
+23355-23371 i2c: ['BITS', [[1, 23369, 23371], [1, 23367, 23369], [0, 23365, 23367], [0, 23363, 23365], [0, 23361, 23363], [1, 23359, 23361], [0, 23357, 23359], [0, 23355, 23357]]]
+23355-23371 i2c: ['DATA READ', 35]
+23371-23373 i2c: ['ACK', None]
+23373-23389 i2c: ['BITS', [[1, 23387, 23389], [0, 23385, 23387], [0, 23383, 23385], [0, 23381, 23383], [0, 23379, 23381], [0, 23377, 23379], [0, 23375, 23377], [0, 23373, 23375]]]
+23373-23389 i2c: ['DATA READ', 1]
+23389-23391 i2c: ['ACK', None]
+23391-23407 i2c: ['BITS', [[0, 23405, 23407], [0, 23403, 23405], [0, 23401, 23403], [0, 23399, 23401], [1, 23397, 23399], [0, 23395, 23397], [0, 23393, 23395], [0, 23391, 23393]]]
+23391-23407 i2c: ['DATA READ', 16]
+23407-23409 i2c: ['ACK', None]
+23409-23425 i2c: ['BITS', [[1, 23423, 23425], [1, 23421, 23423], [0, 23419, 23421], [0, 23417, 23419], [0, 23415, 23417], [0, 23413, 23415], [0, 23411, 23413], [0, 23409, 23411]]]
+23409-23425 i2c: ['DATA READ', 3]
+23425-23427 i2c: ['ACK', None]
+23427-23443 i2c: ['BITS', [[1, 23441, 23443], [1, 23439, 23441], [0, 23437, 23439], [0, 23435, 23437], [1, 23433, 23435], [0, 23431, 23433], [0, 23429, 23431], [0, 23427, 23429]]]
+23427-23443 i2c: ['DATA READ', 19]
+23443-23445 i2c: ['NACK', None]
+23447-23447 i2c: ['STOP', None]
diff --git a/decoder/test/i2c/rtc_ds1307_200khz_data_read.output b/decoder/test/i2c/rtc_ds1307_200khz_data_read.output
new file mode 100644 (file)
index 0000000..8e933e6
--- /dev/null
@@ -0,0 +1,49 @@
+343-359 i2c: data-read: "Data read: 30" "DR: 30" "30"
+361-377 i2c: data-read: "Data read: 35" "DR: 35" "35"
+379-395 i2c: data-read: "Data read: 23" "DR: 23" "23"
+397-413 i2c: data-read: "Data read: 01" "DR: 01" "01"
+415-431 i2c: data-read: "Data read: 10" "DR: 10" "10"
+433-449 i2c: data-read: "Data read: 03" "DR: 03" "03"
+451-467 i2c: data-read: "Data read: 13" "DR: 13" "13"
+3628-3644 i2c: data-read: "Data read: 30" "DR: 30" "30"
+3646-3662 i2c: data-read: "Data read: 35" "DR: 35" "35"
+3664-3680 i2c: data-read: "Data read: 23" "DR: 23" "23"
+3682-3698 i2c: data-read: "Data read: 01" "DR: 01" "01"
+3700-3716 i2c: data-read: "Data read: 10" "DR: 10" "10"
+3718-3734 i2c: data-read: "Data read: 03" "DR: 03" "03"
+3736-3752 i2c: data-read: "Data read: 13" "DR: 13" "13"
+7549-7565 i2c: data-read: "Data read: 30" "DR: 30" "30"
+7567-7583 i2c: data-read: "Data read: 35" "DR: 35" "35"
+7585-7601 i2c: data-read: "Data read: 23" "DR: 23" "23"
+7603-7619 i2c: data-read: "Data read: 01" "DR: 01" "01"
+7621-7637 i2c: data-read: "Data read: 10" "DR: 10" "10"
+7639-7655 i2c: data-read: "Data read: 03" "DR: 03" "03"
+7657-7673 i2c: data-read: "Data read: 13" "DR: 13" "13"
+11486-11502 i2c: data-read: "Data read: 30" "DR: 30" "30"
+11504-11520 i2c: data-read: "Data read: 35" "DR: 35" "35"
+11522-11538 i2c: data-read: "Data read: 23" "DR: 23" "23"
+11540-11556 i2c: data-read: "Data read: 01" "DR: 01" "01"
+11558-11574 i2c: data-read: "Data read: 10" "DR: 10" "10"
+11576-11592 i2c: data-read: "Data read: 03" "DR: 03" "03"
+11594-11610 i2c: data-read: "Data read: 13" "DR: 13" "13"
+15420-15436 i2c: data-read: "Data read: 30" "DR: 30" "30"
+15438-15454 i2c: data-read: "Data read: 35" "DR: 35" "35"
+15456-15472 i2c: data-read: "Data read: 23" "DR: 23" "23"
+15474-15490 i2c: data-read: "Data read: 01" "DR: 01" "01"
+15492-15508 i2c: data-read: "Data read: 10" "DR: 10" "10"
+15510-15526 i2c: data-read: "Data read: 03" "DR: 03" "03"
+15528-15544 i2c: data-read: "Data read: 13" "DR: 13" "13"
+19379-19395 i2c: data-read: "Data read: 30" "DR: 30" "30"
+19397-19413 i2c: data-read: "Data read: 35" "DR: 35" "35"
+19415-19431 i2c: data-read: "Data read: 23" "DR: 23" "23"
+19433-19449 i2c: data-read: "Data read: 01" "DR: 01" "01"
+19451-19467 i2c: data-read: "Data read: 10" "DR: 10" "10"
+19469-19485 i2c: data-read: "Data read: 03" "DR: 03" "03"
+19487-19503 i2c: data-read: "Data read: 13" "DR: 13" "13"
+23319-23335 i2c: data-read: "Data read: 30" "DR: 30" "30"
+23337-23353 i2c: data-read: "Data read: 35" "DR: 35" "35"
+23355-23371 i2c: data-read: "Data read: 23" "DR: 23" "23"
+23373-23389 i2c: data-read: "Data read: 01" "DR: 01" "01"
+23391-23407 i2c: data-read: "Data read: 10" "DR: 10" "10"
+23409-23425 i2c: data-read: "Data read: 03" "DR: 03" "03"
+23427-23443 i2c: data-read: "Data read: 13" "DR: 13" "13"
diff --git a/decoder/test/i2c/rtc_ds1307_200khz_data_write.output b/decoder/test/i2c/rtc_ds1307_200khz_data_write.output
new file mode 100644 (file)
index 0000000..59a9945
--- /dev/null
@@ -0,0 +1,15 @@
+25-41 i2c: data-write: "Data write: 00" "DW: 00" "00"
+43-59 i2c: data-write: "Data write: 30" "DW: 30" "30"
+61-77 i2c: data-write: "Data write: 35" "DW: 35" "35"
+79-95 i2c: data-write: "Data write: 23" "DW: 23" "23"
+97-113 i2c: data-write: "Data write: 01" "DW: 01" "01"
+115-131 i2c: data-write: "Data write: 10" "DW: 10" "10"
+133-149 i2c: data-write: "Data write: 03" "DW: 03" "03"
+151-167 i2c: data-write: "Data write: 13" "DW: 13" "13"
+273-289 i2c: data-write: "Data write: 00" "DW: 00" "00"
+3568-3584 i2c: data-write: "Data write: 00" "DW: 00" "00"
+7490-7506 i2c: data-write: "Data write: 00" "DW: 00" "00"
+11426-11442 i2c: data-write: "Data write: 00" "DW: 00" "00"
+15352-15368 i2c: data-write: "Data write: 00" "DW: 00" "00"
+19274-19290 i2c: data-write: "Data write: 00" "DW: 00" "00"
+23265-23281 i2c: data-write: "Data write: 00" "DW: 00" "00"
diff --git a/decoder/test/i2c/test.conf b/decoder/test/i2c/test.conf
new file mode 100644 (file)
index 0000000..e383f5f
--- /dev/null
@@ -0,0 +1,27 @@
+test rtc
+       protocol-decoder i2c channel scl=0 channel sda=1
+       input i2c/rtc_dallas_ds1307/rtc_ds1307_200khz.sr
+       output i2c annotation class data-read match rtc_ds1307_200khz_data_read.output
+       output i2c annotation class data-write match rtc_ds1307_200khz_data_write.output
+       output i2c annotation match rtc_ds1307_200khz.output
+       output i2c python match rtc_ds1307_200khz.python
+
+test motherboard
+       protocol-decoder i2c channel scl=0 channel sda=3
+       input i2c/gigabyte_6vle-vxl_i2c/gigabyte_6vle_vxl_i2c.sr
+       output i2c annotation match gigabyte_6vle_vxl_i2c.output
+       output i2c python match gigabyte_6vle_vxl_i2c.python
+
+test xfp
+       protocol-decoder i2c channel scl=0 channel sda=1
+       input i2c/network-transceivers/xfp.sr
+       output i2c binary class data-read match xfp_data_read.binary
+       output i2c binary class data-write match xfp_data_write.binary
+       output i2c binary class address-read match xfp_address_read.binary
+       output i2c binary class address-write match xfp_address_write.binary
+
+test exception_samplerate
+       protocol-decoder i2c
+       input misc/no-samplerate.sr
+       output i2c exception match SamplerateError
+
diff --git a/decoder/test/i2c/xfp_address_read.binary b/decoder/test/i2c/xfp_address_read.binary
new file mode 100644 (file)
index 0000000..c742aeb
--- /dev/null
@@ -0,0 +1,256 @@
+329-412 i2c: 50
+1825-1910 i2c: 50
+3202-3286 i2c: 50
+4623-4706 i2c: 50
+6006-6091 i2c: 50
+7302-7387 i2c: 50
+8081-8164 i2c: 50
+9015-9098 i2c: 50
+10031-10116 i2c: 50
+10955-11038 i2c: 50
+11943-12026 i2c: 50
+12864-12947 i2c: 50
+13853-13937 i2c: 50
+14766-14851 i2c: 50
+15747-15832 i2c: 50
+16655-16740 i2c: 50
+17930-18013 i2c: 50
+18899-18984 i2c: 50
+19895-19978 i2c: 50
+20836-20921 i2c: 50
+21822-21907 i2c: 50
+22738-22823 i2c: 50
+23718-23801 i2c: 50
+24630-24715 i2c: 50
+25614-25697 i2c: 50
+26513-26596 i2c: 50
+27497-27582 i2c: 50
+28419-28504 i2c: 50
+29405-29488 i2c: 50
+30312-30397 i2c: 50
+31152-31237 i2c: 50
+31833-31918 i2c: 50
+32714-32799 i2c: 50
+33592-33675 i2c: 50
+34405-34488 i2c: 50
+35304-35387 i2c: 50
+36160-36243 i2c: 50
+37004-37089 i2c: 50
+37886-37969 i2c: 50
+38725-38808 i2c: 50
+39611-39694 i2c: 50
+40444-40527 i2c: 50
+41338-41421 i2c: 50
+42159-42242 i2c: 50
+42962-43045 i2c: 50
+43895-43979 i2c: 50
+44781-44866 i2c: 50
+45611-45694 i2c: 50
+46488-46571 i2c: 50
+47298-47383 i2c: 50
+48116-48199 i2c: 50
+49012-49096 i2c: 50
+49848-49931 i2c: 50
+50723-50806 i2c: 50
+51574-51657 i2c: 50
+52396-52479 i2c: 50
+53093-53176 i2c: 50
+53870-53953 i2c: 50
+54645-54730 i2c: 50
+55551-55636 i2c: 50
+56368-56451 i2c: 50
+57281-57364 i2c: 50
+58100-58185 i2c: 50
+58991-59076 i2c: 50
+59881-59964 i2c: 50
+60784-60869 i2c: 50
+61634-61717 i2c: 50
+62427-62512 i2c: 50
+63240-63323 i2c: 50
+64055-64138 i2c: 50
+64964-65047 i2c: 50
+65828-65913 i2c: 50
+66790-66875 i2c: 50
+67694-67777 i2c: 50
+68664-68747 i2c: 50
+69462-69547 i2c: 50
+70232-70317 i2c: 50
+71036-71121 i2c: 50
+71823-71908 i2c: 50
+72705-72788 i2c: 50
+73621-73706 i2c: 50
+74499-74583 i2c: 50
+75338-75423 i2c: 50
+76145-76228 i2c: 50
+76936-77019 i2c: 50
+77754-77839 i2c: 50
+78448-78533 i2c: 50
+79232-79317 i2c: 50
+80014-80099 i2c: 50
+80912-80997 i2c: 50
+81723-81806 i2c: 50
+82622-82707 i2c: 50
+83465-83548 i2c: 50
+84359-84442 i2c: 50
+85203-85288 i2c: 50
+86099-86184 i2c: 50
+86989-87073 i2c: 50
+87802-87887 i2c: 50
+88607-88692 i2c: 50
+89410-89493 i2c: 50
+90296-90380 i2c: 50
+91111-91196 i2c: 50
+91792-91875 i2c: 50
+92601-92686 i2c: 50
+93393-93476 i2c: 50
+94270-94355 i2c: 50
+95090-95173 i2c: 50
+95968-96051 i2c: 50
+96807-96892 i2c: 50
+97605-97690 i2c: 50
+98411-98494 i2c: 50
+99212-99297 i2c: 50
+100206-100291 i2c: 50
+101037-101122 i2c: 50
+101948-102033 i2c: 50
+102792-102875 i2c: 50
+103691-103774 i2c: 50
+104516-104599 i2c: 50
+105391-105476 i2c: 50
+106204-106289 i2c: 50
+107013-107096 i2c: 50
+107916-108001 i2c: 50
+108721-108804 i2c: 50
+109605-109688 i2c: 50
+110418-110503 i2c: 50
+111290-111373 i2c: 50
+112118-112203 i2c: 50
+112926-113011 i2c: 50
+113698-113781 i2c: 50
+114491-114574 i2c: 50
+115285-115368 i2c: 50
+116198-116282 i2c: 50
+117083-117167 i2c: 50
+117921-118004 i2c: 50
+118734-118817 i2c: 50
+119596-119679 i2c: 50
+120424-120509 i2c: 50
+121317-121402 i2c: 50
+122135-122220 i2c: 50
+122986-123069 i2c: 50
+123870-123953 i2c: 50
+124682-124767 i2c: 50
+125589-125672 i2c: 50
+126407-126491 i2c: 50
+127360-127445 i2c: 50
+128212-128295 i2c: 50
+129111-129194 i2c: 50
+129944-130027 i2c: 50
+130799-130882 i2c: 50
+131691-131776 i2c: 50
+132522-132607 i2c: 50
+133423-133508 i2c: 50
+134261-134344 i2c: 50
+135128-135213 i2c: 50
+135969-136054 i2c: 50
+136774-136857 i2c: 50
+137675-137760 i2c: 50
+138557-138642 i2c: 50
+139394-139479 i2c: 50
+140205-140290 i2c: 50
+141147-141232 i2c: 50
+141997-142082 i2c: 50
+142891-142976 i2c: 50
+143714-143797 i2c: 50
+144508-144591 i2c: 50
+145311-145396 i2c: 50
+146126-146209 i2c: 50
+147033-147116 i2c: 50
+147896-147981 i2c: 50
+148853-148936 i2c: 50
+149671-149756 i2c: 50
+150357-150440 i2c: 50
+151185-151268 i2c: 50
+151992-152077 i2c: 50
+152877-152960 i2c: 50
+153717-153800 i2c: 50
+154664-154747 i2c: 50
+155509-155592 i2c: 50
+156323-156406 i2c: 50
+157234-157317 i2c: 50
+158201-158286 i2c: 50
+159021-159106 i2c: 50
+159858-159943 i2c: 50
+160748-160833 i2c: 50
+161580-161665 i2c: 50
+162470-162553 i2c: 50
+163324-163407 i2c: 50
+164131-164216 i2c: 50
+165048-165133 i2c: 50
+165934-166017 i2c: 50
+166751-166836 i2c: 50
+167580-167664 i2c: 50
+168525-168610 i2c: 50
+169350-169435 i2c: 50
+170253-170336 i2c: 50
+171091-171174 i2c: 50
+171886-171971 i2c: 50
+172693-172778 i2c: 50
+173512-173597 i2c: 50
+174197-174280 i2c: 50
+174968-175051 i2c: 50
+175750-175835 i2c: 50
+176653-176736 i2c: 50
+177460-177543 i2c: 50
+178370-178455 i2c: 50
+179205-179288 i2c: 50
+180085-180170 i2c: 50
+180902-180987 i2c: 50
+181874-181959 i2c: 50
+182704-182787 i2c: 50
+183562-183647 i2c: 50
+184431-184516 i2c: 50
+185236-185321 i2c: 50
+186138-186222 i2c: 50
+186956-187039 i2c: 50
+187845-187928 i2c: 50
+188669-188754 i2c: 50
+189468-189553 i2c: 50
+190281-190366 i2c: 50
+191090-191173 i2c: 50
+191987-192072 i2c: 50
+192849-192934 i2c: 50
+193822-193907 i2c: 50
+194732-194815 i2c: 50
+195703-195788 i2c: 50
+196389-196472 i2c: 50
+197247-197332 i2c: 50
+198070-198153 i2c: 50
+198873-198958 i2c: 50
+199762-199845 i2c: 50
+200575-200658 i2c: 50
+201469-201554 i2c: 50
+202285-202368 i2c: 50
+203102-203185 i2c: 50
+204022-204107 i2c: 50
+204837-204920 i2c: 50
+205742-205827 i2c: 50
+206551-206634 i2c: 50
+207432-207517 i2c: 50
+208255-208338 i2c: 50
+209229-209312 i2c: 50
+210053-210138 i2c: 50
+210929-211014 i2c: 50
+211768-211853 i2c: 50
+212594-212679 i2c: 50
+213477-213562 i2c: 50
+214327-214412 i2c: 50
+215218-215303 i2c: 50
+216048-216133 i2c: 50
+216842-216927 i2c: 50
+217643-217726 i2c: 50
+218452-218537 i2c: 50
+219145-219230 i2c: 50
+219925-220009 i2c: 50
+220703-220788 i2c: 50
+221577-221662 i2c: 50
diff --git a/decoder/test/i2c/xfp_address_write.binary b/decoder/test/i2c/xfp_address_write.binary
new file mode 100644 (file)
index 0000000..43680ef
--- /dev/null
@@ -0,0 +1,255 @@
+1433-1516 i2c: 50
+2893-2976 i2c: 50
+4312-4397 i2c: 50
+5699-5782 i2c: 50
+6992-7077 i2c: 50
+7783-7866 i2c: 50
+8718-8801 i2c: 50
+9738-9823 i2c: 50
+10659-10742 i2c: 50
+11644-11729 i2c: 50
+12565-12648 i2c: 50
+13552-13635 i2c: 50
+14471-14556 i2c: 50
+15448-15533 i2c: 50
+16358-16443 i2c: 50
+17622-17705 i2c: 50
+18603-18686 i2c: 50
+19603-19688 i2c: 50
+20540-20623 i2c: 50
+21526-21609 i2c: 50
+22442-22525 i2c: 50
+23423-23508 i2c: 50
+24337-24422 i2c: 50
+25315-25398 i2c: 50
+26216-26301 i2c: 50
+27199-27284 i2c: 50
+28120-28205 i2c: 50
+29103-29188 i2c: 50
+30019-30104 i2c: 50
+30863-30946 i2c: 50
+31541-31624 i2c: 50
+32417-32500 i2c: 50
+33286-33370 i2c: 50
+34104-34189 i2c: 50
+34993-35078 i2c: 50
+35844-35929 i2c: 50
+36666-36751 i2c: 50
+37587-37670 i2c: 50
+38414-38499 i2c: 50
+39317-39402 i2c: 50
+40138-40221 i2c: 50
+41015-41100 i2c: 50
+41848-41933 i2c: 50
+42664-42749 i2c: 50
+43581-43664 i2c: 50
+44407-44490 i2c: 50
+45302-45387 i2c: 50
+46189-46274 i2c: 50
+46877-46960 i2c: 50
+47694-47777 i2c: 50
+48510-48595 i2c: 50
+49410-49493 i2c: 50
+50245-50330 i2c: 50
+51117-51200 i2c: 50
+51976-52059 i2c: 50
+52796-52879 i2c: 50
+53573-53658 i2c: 50
+54359-54444 i2c: 50
+55236-55319 i2c: 50
+56057-56140 i2c: 50
+56965-57048 i2c: 50
+57793-57876 i2c: 50
+58680-58765 i2c: 50
+59587-59670 i2c: 50
+60488-60573 i2c: 50
+61310-61395 i2c: 50
+62140-62223 i2c: 50
+62819-62902 i2c: 50
+63633-63718 i2c: 50
+64472-64555 i2c: 50
+65533-65618 i2c: 50
+66482-66565 i2c: 50
+67398-67483 i2c: 50
+68370-68453 i2c: 50
+69046-69131 i2c: 50
+69856-69940 i2c: 50
+70731-70814 i2c: 50
+71528-71613 i2c: 50
+72406-72489 i2c: 50
+73315-73400 i2c: 50
+74204-74289 i2c: 50
+75030-75115 i2c: 50
+75852-75935 i2c: 50
+76518-76603 i2c: 50
+77331-77416 i2c: 50
+78152-78237 i2c: 50
+78928-79013 i2c: 50
+79725-79810 i2c: 50
+80602-80687 i2c: 50
+81422-81505 i2c: 50
+82325-82408 i2c: 50
+83150-83235 i2c: 50
+84058-84141 i2c: 50
+84897-84982 i2c: 50
+85793-85878 i2c: 50
+86693-86776 i2c: 50
+87514-87597 i2c: 50
+88183-88268 i2c: 50
+88997-89080 i2c: 50
+89884-89967 i2c: 50
+90689-90774 i2c: 50
+91499-91582 i2c: 50
+92302-92385 i2c: 50
+93097-93180 i2c: 50
+93960-94045 i2c: 50
+94776-94859 i2c: 50
+95672-95755 i2c: 50
+96500-96583 i2c: 50
+97316-97401 i2c: 50
+97992-98075 i2c: 50
+98799-98882 i2c: 50
+99726-99809 i2c: 50
+100599-100684 i2c: 50
+101511-101596 i2c: 50
+102353-102436 i2c: 50
+103191-103275 i2c: 50
+104084-104169 i2c: 50
+104908-104991 i2c: 50
+105782-105867 i2c: 50
+106597-106680 i2c: 50
+107466-107551 i2c: 50
+108306-108390 i2c: 50
+109107-109192 i2c: 50
+110002-110087 i2c: 50
+110808-110891 i2c: 50
+111690-111775 i2c: 50
+112516-112601 i2c: 50
+113402-113487 i2c: 50
+114186-114271 i2c: 50
+114983-115068 i2c: 50
+115882-115965 i2c: 50
+116708-116791 i2c: 50
+117610-117695 i2c: 50
+118425-118508 i2c: 50
+119299-119384 i2c: 50
+120118-120201 i2c: 50
+121013-121098 i2c: 50
+121832-121915 i2c: 50
+122648-122733 i2c: 50
+123556-123641 i2c: 50
+124376-124459 i2c: 50
+125279-125362 i2c: 50
+126100-126183 i2c: 50
+127061-127144 i2c: 50
+127902-127985 i2c: 50
+128800-128885 i2c: 50
+129628-129711 i2c: 50
+130455-130538 i2c: 50
+131380-131463 i2c: 50
+132207-132290 i2c: 50
+133126-133211 i2c: 50
+133951-134036 i2c: 50
+134830-134915 i2c: 50
+135660-135743 i2c: 50
+136477-136560 i2c: 50
+137365-137450 i2c: 50
+138179-138262 i2c: 50
+139084-139169 i2c: 50
+139899-139982 i2c: 50
+140851-140934 i2c: 50
+141691-141774 i2c: 50
+142581-142666 i2c: 50
+143401-143484 i2c: 50
+144217-144300 i2c: 50
+144890-144973 i2c: 50
+145703-145788 i2c: 50
+146542-146627 i2c: 50
+147602-147685 i2c: 50
+148560-148643 i2c: 50
+149344-149429 i2c: 50
+150053-150138 i2c: 50
+150875-150960 i2c: 50
+151685-151770 i2c: 50
+152571-152654 i2c: 50
+153406-153489 i2c: 50
+154367-154452 i2c: 50
+155204-155287 i2c: 50
+156015-156098 i2c: 50
+156919-157003 i2c: 50
+157734-157819 i2c: 50
+158725-158810 i2c: 50
+159550-159635 i2c: 50
+160455-160538 i2c: 50
+161272-161355 i2c: 50
+162158-162243 i2c: 50
+163014-163097 i2c: 50
+163828-163911 i2c: 50
+164732-164815 i2c: 50
+165557-165640 i2c: 50
+166456-166541 i2c: 50
+167274-167357 i2c: 50
+168226-168311 i2c: 50
+169052-169137 i2c: 50
+169945-170030 i2c: 50
+170784-170869 i2c: 50
+171600-171685 i2c: 50
+172269-172354 i2c: 50
+173083-173166 i2c: 50
+173905-173990 i2c: 50
+174677-174760 i2c: 50
+175461-175546 i2c: 50
+176339-176424 i2c: 50
+177157-177240 i2c: 50
+178062-178147 i2c: 50
+178899-178984 i2c: 50
+179774-179859 i2c: 50
+180595-180680 i2c: 50
+181561-181644 i2c: 50
+182391-182475 i2c: 50
+183220-183305 i2c: 50
+184121-184204 i2c: 50
+184929-185012 i2c: 50
+185821-185906 i2c: 50
+186649-186732 i2c: 50
+187534-187619 i2c: 50
+188360-188443 i2c: 50
+189181-189264 i2c: 50
+189854-189938 i2c: 50
+190670-190755 i2c: 50
+191497-191582 i2c: 50
+192555-192640 i2c: 50
+193531-193616 i2c: 50
+194439-194524 i2c: 50
+195271-195356 i2c: 50
+196094-196177 i2c: 50
+196882-196967 i2c: 50
+197762-197845 i2c: 50
+198579-198664 i2c: 50
+199449-199534 i2c: 50
+200269-200354 i2c: 50
+201159-201244 i2c: 50
+201980-202065 i2c: 50
+202796-202881 i2c: 50
+203711-203794 i2c: 50
+204528-204613 i2c: 50
+205429-205514 i2c: 50
+206250-206333 i2c: 50
+207124-207207 i2c: 50
+207948-208033 i2c: 50
+208911-208994 i2c: 50
+209744-209829 i2c: 50
+210569-210652 i2c: 50
+211471-211554 i2c: 50
+212286-212371 i2c: 50
+213185-213268 i2c: 50
+214018-214103 i2c: 50
+214903-214988 i2c: 50
+215739-215824 i2c: 50
+216549-216634 i2c: 50
+217219-217302 i2c: 50
+218037-218122 i2c: 50
+218846-218929 i2c: 50
+219626-219711 i2c: 50
+220413-220496 i2c: 50
+221280-221363 i2c: 50
diff --git a/decoder/test/i2c/xfp_data_read.binary b/decoder/test/i2c/xfp_data_read.binary
new file mode 100644 (file)
index 0000000..d399230
--- /dev/null
@@ -0,0 +1,256 @@
+423-507 i2c: 06
+1920-2003 i2c: 00
+3297-3382 i2c: 50
+4717-4802 i2c: 00
+6101-6184 i2c: f1
+7397-7482 i2c: 00
+8175-8260 i2c: 4b
+9109-9194 i2c: 00
+10126-10211 i2c: f6
+11049-11134 i2c: 00
+12037-12122 i2c: 00
+12959-13042 i2c: 00
+13948-14033 i2c: 00
+14861-14944 i2c: 00
+15842-15925 i2c: 00
+16750-16833 i2c: 00
+18024-18109 i2c: 00
+18994-19077 i2c: 00
+19989-20074 i2c: c3
+20931-21014 i2c: 50
+21917-22000 i2c: 00
+22833-22916 i2c: 00
+23812-23897 i2c: 9c
+24725-24808 i2c: 40
+25708-25793 i2c: 00
+26607-26692 i2c: 00
+27592-27675 i2c: 3d
+28514-28597 i2c: e8
+29499-29584 i2c: 04
+30407-30490 i2c: ea
+31247-31330 i2c: 27
+31928-32011 i2c: 10
+32809-32892 i2c: 07
+33686-33771 i2c: cb
+34499-34584 i2c: 45
+35398-35483 i2c: 76
+36254-36339 i2c: 00
+37099-37182 i2c: 00
+37980-38065 i2c: 37
+38819-38903 i2c: 2d
+39705-39790 i2c: 01
+40538-40623 i2c: 19
+41432-41517 i2c: 00
+42253-42338 i2c: 00
+43056-43141 i2c: 00
+43990-44075 i2c: 00
+44876-44959 i2c: 00
+45705-45790 i2c: 00
+46582-46667 i2c: 00
+47393-47476 i2c: 00
+48210-48295 i2c: 00
+49107-49192 i2c: 00
+49942-50027 i2c: 00
+50817-50902 i2c: 00
+51668-51753 i2c: 00
+52490-52575 i2c: 00
+53187-53272 i2c: 00
+53964-54049 i2c: 00
+54740-54823 i2c: 00
+55646-55729 i2c: 00
+56462-56547 i2c: 00
+57376-57459 i2c: 00
+58195-58278 i2c: 00
+59086-59169 i2c: 00
+59975-60060 i2c: 00
+60879-60962 i2c: 00
+61728-61813 i2c: 00
+62522-62605 i2c: 00
+63334-63419 i2c: 00
+64149-64234 i2c: 00
+65058-65143 i2c: 00
+65923-66006 i2c: 00
+66885-66968 i2c: 00
+67788-67873 i2c: 00
+68758-68843 i2c: 00
+69557-69640 i2c: 00
+70327-70410 i2c: 00
+71131-71214 i2c: 00
+71918-72001 i2c: 00
+72799-72884 i2c: 00
+73716-73799 i2c: 00
+74594-74679 i2c: 80
+75433-75516 i2c: 00
+76239-76324 i2c: 80
+77030-77115 i2c: a2
+77849-77932 i2c: 00
+78543-78626 i2c: 00
+79327-79410 i2c: 00
+80109-80194 i2c: 00
+81007-81092 i2c: 00
+81817-81902 i2c: 00
+82717-82800 i2c: 00
+83559-83644 i2c: 00
+84453-84538 i2c: 00
+85298-85381 i2c: 00
+86194-86277 i2c: 00
+87084-87169 i2c: 23
+87897-87980 i2c: cb
+88702-88785 i2c: 00
+89504-89589 i2c: 00
+90391-90476 i2c: 00
+91206-91289 i2c: 00
+91886-91971 i2c: 00
+92696-92779 i2c: 00
+93487-93571 i2c: 55
+94365-94448 i2c: dc
+95184-95269 i2c: 81
+96062-96147 i2c: 51
+96902-96985 i2c: 00
+97700-97785 i2c: 00
+98505-98590 i2c: b0
+99307-99390 i2c: a0
+100301-100384 i2c: 00
+101132-101215 i2c: 00
+102043-102126 i2c: 00
+102886-102971 i2c: 00
+103785-103870 i2c: 00
+104610-104694 i2c: 00
+105486-105571 i2c: 00
+106299-106382 i2c: 00
+107107-107192 i2c: 00
+108011-108094 i2c: 00
+108816-108899 i2c: 00
+109699-109783 i2c: 00
+110513-110596 i2c: 00
+111384-111469 i2c: 00
+112213-112296 i2c: 00
+113021-113104 i2c: 01
+113792-113877 i2c: 06
+114585-114670 i2c: 58
+115379-115464 i2c: 07
+116293-116378 i2c: 44
+117178-117263 i2c: 00
+118015-118099 i2c: 00
+118828-118913 i2c: 00
+119690-119775 i2c: 00
+120519-120602 i2c: 00
+121412-121495 i2c: 00
+122230-122315 i2c: 00
+123080-123165 i2c: 90
+123964-124049 i2c: 64
+124777-124860 i2c: 6c
+125683-125768 i2c: 0a
+126502-126587 i2c: 00
+127455-127538 i2c: 00
+128306-128391 i2c: 00
+129205-129290 i2c: 00
+130038-130123 i2c: 40
+130893-130978 i2c: 53
+131786-131869 i2c: 75
+132617-132700 i2c: 6d
+133518-133601 i2c: 69
+134355-134440 i2c: 74
+135223-135308 i2c: 6f
+136064-136147 i2c: 6d
+136868-136953 i2c: 6f
+137770-137853 i2c: 45
+138652-138735 i2c: 6c
+139489-139572 i2c: 65
+140305-140388 i2c: 63
+141242-141325 i2c: 74
+142092-142177 i2c: 72
+142986-143069 i2c: 69
+143808-143893 i2c: 63
+144602-144687 i2c: f0
+145406-145489 i2c: 00
+146220-146305 i2c: 0a
+147127-147212 i2c: 1d
+147991-148074 i2c: 53
+148947-149032 i2c: 58
+149766-149849 i2c: 50
+150451-150535 i2c: 33
+151279-151364 i2c: 31
+152087-152170 i2c: 30
+152971-153056 i2c: 31
+153811-153896 i2c: 4c
+154758-154843 i2c: 58
+155603-155688 i2c: 2d
+156417-156502 i2c: 41
+157328-157413 i2c: 34
+158296-158379 i2c: 20
+159116-159199 i2c: 20
+159953-160036 i2c: 20
+160843-160926 i2c: 20
+161675-161758 i2c: 41
+162564-162649 i2c: 20
+163418-163503 i2c: 66
+164226-164309 i2c: 58
+165143-165226 i2c: 0f
+166028-166113 i2c: a0
+166846-166929 i2c: 46
+167675-167760 i2c: 8c
+168620-168703 i2c: 7d
+169445-169530 i2c: 96
+170347-170431 i2c: 08
+171185-171270 i2c: 00
+171981-172064 i2c: 38
+172788-172871 i2c: 33
+173607-173690 i2c: 33
+174291-174376 i2c: 30
+175062-175147 i2c: 31
+175845-175928 i2c: 32
+176747-176832 i2c: 41
+177554-177639 i2c: 30
+178465-178548 i2c: 30
+179299-179384 i2c: 33
+180180-180263 i2c: 38
+180997-181080 i2c: 38
+181969-182052 i2c: 20
+182798-182883 i2c: 20
+183657-183740 i2c: 20
+184526-184609 i2c: 20
+185331-185414 i2c: 30
+186233-186318 i2c: 38
+187050-187134 i2c: 30
+187939-188024 i2c: 33
+188764-188847 i2c: 32
+189563-189646 i2c: 31
+190376-190459 i2c: 41
+191184-191269 i2c: 35
+192082-192167 i2c: 08
+192944-193027 i2c: 60
+193917-194000 i2c: 70
+194826-194911 i2c: 8c
+195798-195881 i2c: 33
+196483-196568 i2c: 48
+197342-197425 i2c: 45
+198164-198249 i2c: 30
+198968-199051 i2c: 30
+199856-199941 i2c: 35
+200669-200754 i2c: 36
+201564-201647 i2c: 34
+202380-202463 i2c: 41
+203196-203281 i2c: 41
+204117-204200 i2c: 41
+204931-205016 i2c: 41
+205837-205920 i2c: 30
+206645-206730 i2c: 31
+207527-207610 i2c: 20
+208349-208434 i2c: 20
+209323-209408 i2c: 41
+210148-210231 i2c: 4c
+211024-211107 i2c: 41
+211863-211946 i2c: 20
+212689-212772 i2c: 20
+213572-213655 i2c: 49
+214422-214507 i2c: 50
+215313-215396 i2c: 55
+216143-216226 i2c: 49
+216937-217020 i2c: 41
+217737-217822 i2c: 52
+218547-218632 i2c: 52
+219240-219323 i2c: 44
+220020-220105 i2c: 41
+220798-220881 i2c: 41
+221672-221755 i2c: 54
diff --git a/decoder/test/i2c/xfp_data_write.binary b/decoder/test/i2c/xfp_data_write.binary
new file mode 100644 (file)
index 0000000..4805fab
--- /dev/null
@@ -0,0 +1,255 @@
+1527-1612 i2c: 01
+2987-3072 i2c: 02
+4407-4490 i2c: 03
+5793-5878 i2c: 04
+7087-7170 i2c: 05
+7877-7962 i2c: 06
+8812-8897 i2c: 07
+9833-9916 i2c: 08
+10753-10838 i2c: 09
+11739-11822 i2c: 0a
+12659-12744 i2c: 0b
+13646-13731 i2c: 0c
+14566-14649 i2c: 0d
+15543-15626 i2c: 0e
+16453-16536 i2c: 0f
+17716-17801 i2c: 10
+18697-18782 i2c: 11
+19698-19781 i2c: 12
+20634-20719 i2c: 13
+21620-21705 i2c: 14
+22536-22621 i2c: 15
+23518-23601 i2c: 16
+24432-24515 i2c: 17
+25409-25494 i2c: 18
+26311-26394 i2c: 19
+27294-27377 i2c: 1a
+28215-28300 i2c: 1b
+29198-29281 i2c: 1c
+30114-30197 i2c: 1d
+30957-31041 i2c: 1e
+31635-31720 i2c: 1f
+32511-32596 i2c: 20
+33381-33466 i2c: 21
+34199-34284 i2c: 22
+35088-35171 i2c: 23
+35939-36022 i2c: 24
+36761-36844 i2c: 25
+37681-37766 i2c: 26
+38509-38592 i2c: 27
+39412-39495 i2c: 28
+40232-40316 i2c: 29
+41110-41193 i2c: 2a
+41943-42026 i2c: 2b
+42767-42850 i2c: 2c
+43675-43760 i2c: 2d
+44501-44586 i2c: 2e
+45397-45480 i2c: 2f
+46284-46369 i2c: 30
+46971-47056 i2c: 31
+47788-47873 i2c: 32
+48605-48688 i2c: 33
+49505-49588 i2c: 34
+50340-50423 i2c: 35
+51211-51296 i2c: 36
+52070-52155 i2c: 37
+52890-52975 i2c: 38
+53668-53753 i2c: 39
+54454-54537 i2c: 3a
+55330-55415 i2c: 3b
+56151-56236 i2c: 3c
+57059-57144 i2c: 3d
+57887-57972 i2c: 3e
+58775-58860 i2c: 3f
+59681-59765 i2c: 40
+60583-60666 i2c: 41
+61405-61488 i2c: 42
+62234-62319 i2c: 43
+62913-62997 i2c: 44
+63728-63811 i2c: 45
+64566-64651 i2c: 46
+65628-65711 i2c: 47
+66576-66661 i2c: 48
+67493-67576 i2c: 49
+68464-68549 i2c: 4a
+69141-69224 i2c: 4b
+69951-70036 i2c: 4c
+70826-70909 i2c: 4d
+71623-71706 i2c: 4e
+72500-72585 i2c: 4f
+73410-73493 i2c: 50
+74299-74382 i2c: 51
+75125-75208 i2c: 52
+75946-76031 i2c: 53
+76613-76696 i2c: 54
+77426-77509 i2c: 55
+78247-78330 i2c: 56
+79023-79106 i2c: 57
+79820-79903 i2c: 58
+80697-80780 i2c: 59
+81516-81601 i2c: 5a
+82419-82504 i2c: 5b
+83245-83328 i2c: 5c
+84152-84237 i2c: 5d
+84992-85075 i2c: 5e
+85888-85971 i2c: 5f
+86787-86872 i2c: 60
+87608-87693 i2c: 61
+88278-88361 i2c: 62
+89091-89176 i2c: 63
+89978-90063 i2c: 64
+90784-90867 i2c: 65
+91593-91677 i2c: 66
+92396-92481 i2c: 67
+93191-93276 i2c: 68
+94055-94138 i2c: 69
+94870-94954 i2c: 6a
+95766-95851 i2c: 6b
+96594-96679 i2c: 6c
+97411-97494 i2c: 6d
+98086-98170 i2c: 6e
+98893-98978 i2c: 6f
+99820-99905 i2c: 70
+100694-100777 i2c: 71
+101606-101689 i2c: 72
+102447-102532 i2c: 73
+103286-103371 i2c: 74
+104179-104262 i2c: 75
+105002-105087 i2c: 76
+105877-105960 i2c: 77
+106691-106776 i2c: 78
+107561-107644 i2c: 79
+108401-108486 i2c: 7a
+109205-109290 i2c: 7b
+110097-110180 i2c: 7c
+110902-110987 i2c: 7d
+111785-111868 i2c: 7e
+112611-112694 i2c: 7f
+113497-113580 i2c: 80
+114281-114364 i2c: 81
+115085-115170 i2c: 82
+115976-116061 i2c: 83
+116802-116887 i2c: 84
+117705-117788 i2c: 85
+118520-118603 i2c: 86
+119394-119477 i2c: 87
+120212-120297 i2c: 88
+121108-121191 i2c: 89
+121926-122011 i2c: 8a
+122743-122826 i2c: 8b
+123651-123734 i2c: 8c
+124470-124555 i2c: 8d
+125373-125458 i2c: 8e
+126194-126279 i2c: 8f
+127155-127240 i2c: 90
+127996-128081 i2c: 91
+128895-128978 i2c: 92
+129722-129807 i2c: 93
+130549-130634 i2c: 94
+131474-131558 i2c: 95
+132301-132386 i2c: 96
+133221-133304 i2c: 97
+134046-134129 i2c: 98
+134925-135008 i2c: 99
+135754-135839 i2c: 9a
+136579-136663 i2c: 9b
+137460-137543 i2c: 9c
+138273-138358 i2c: 9d
+139179-139262 i2c: 9e
+139993-140078 i2c: 9f
+140945-141030 i2c: a0
+141785-141870 i2c: a1
+142676-142759 i2c: a2
+143495-143580 i2c: a3
+144311-144396 i2c: a4
+144984-145069 i2c: a5
+145798-145881 i2c: a6
+146637-146720 i2c: a7
+147696-147780 i2c: a8
+148654-148739 i2c: a9
+149439-149522 i2c: aa
+150148-150231 i2c: ab
+150970-151055 i2c: ac
+151780-151863 i2c: ad
+152665-152750 i2c: ae
+153500-153585 i2c: af
+154462-154545 i2c: b0
+155298-155383 i2c: b1
+156123-156208 i2c: b2
+157014-157099 i2c: b3
+157829-157912 i2c: b4
+158820-158905 i2c: b5
+159645-159728 i2c: b6
+160549-160634 i2c: b7
+161366-161451 i2c: b8
+162253-162336 i2c: b9
+163108-163193 i2c: ba
+163933-164016 i2c: bb
+164826-164910 i2c: bc
+165651-165736 i2c: bd
+166551-166634 i2c: be
+167368-167453 i2c: bf
+168321-168404 i2c: c0
+169147-169230 i2c: c1
+170040-170125 i2c: c2
+170878-170962 i2c: c3
+171695-171778 i2c: c4
+172364-172447 i2c: c5
+173178-173261 i2c: c6
+174000-174083 i2c: c7
+174771-174856 i2c: c8
+175556-175639 i2c: c9
+176434-176517 i2c: ca
+177251-177336 i2c: cb
+178157-178240 i2c: cc
+178994-179077 i2c: cd
+179869-179952 i2c: ce
+180690-180773 i2c: cf
+181655-181740 i2c: d0
+182486-182571 i2c: d1
+183315-183400 i2c: d2
+184215-184300 i2c: d3
+185023-185108 i2c: d4
+185916-185999 i2c: d5
+186743-186828 i2c: d6
+187629-187712 i2c: d7
+188454-188538 i2c: d8
+189275-189360 i2c: d9
+189949-190034 i2c: da
+190765-190848 i2c: db
+191592-191675 i2c: dc
+192650-192733 i2c: dd
+193626-193709 i2c: de
+194534-194617 i2c: df
+195366-195451 i2c: e0
+196188-196273 i2c: e1
+196977-197060 i2c: e2
+197856-197941 i2c: e3
+198674-198757 i2c: e4
+199544-199627 i2c: e5
+200364-200447 i2c: e6
+201254-201337 i2c: e7
+202075-202158 i2c: e8
+202891-202974 i2c: e9
+203805-203890 i2c: ea
+204623-204708 i2c: eb
+205524-205607 i2c: ec
+206344-206429 i2c: ed
+207218-207303 i2c: ee
+208043-208126 i2c: ef
+209005-209090 i2c: f0
+209839-209922 i2c: f1
+210663-210747 i2c: f2
+211565-211650 i2c: f3
+212381-212464 i2c: f4
+213279-213364 i2c: f5
+214113-214196 i2c: f6
+214998-215081 i2c: f7
+215834-215917 i2c: f8
+216644-216729 i2c: f9
+217313-217398 i2c: fa
+218132-218215 i2c: fb
+218940-219025 i2c: fc
+219721-219804 i2c: fd
+220507-220592 i2c: fe
+221374-221459 i2c: ff
diff --git a/decoder/test/i2s/test.conf b/decoder/test/i2s/test.conf
new file mode 100644 (file)
index 0000000..a913d61
--- /dev/null
@@ -0,0 +1,5 @@
+test exception_samplerate
+       protocol-decoder i2s
+       input misc/no-samplerate.sr
+       output i2s exception match SamplerateError
+
diff --git a/decoder/test/ir_nec/test.conf b/decoder/test/ir_nec/test.conf
new file mode 100644 (file)
index 0000000..eee3d87
--- /dev/null
@@ -0,0 +1,5 @@
+test exception_samplerate
+       protocol-decoder ir_nec
+       input misc/no-samplerate.sr
+       output ir_nec exception match SamplerateError
+
diff --git a/decoder/test/ir_rc5/test.conf b/decoder/test/ir_rc5/test.conf
new file mode 100644 (file)
index 0000000..5d5dfa0
--- /dev/null
@@ -0,0 +1,5 @@
+test exception_samplerate
+       protocol-decoder ir_rc5
+       input misc/no-samplerate.sr
+       output ir_rc5 exception match SamplerateError
+
diff --git a/decoder/test/mx25lxx05d/probe.output b/decoder/test/mx25lxx05d/probe.output
new file mode 100644 (file)
index 0000000..6e22f53
--- /dev/null
@@ -0,0 +1,583 @@
+3-32 mx25lxx05d: bits: "Unknown command: 0x3f"
+28-49 mx25lxx05d: bits: "Unknown command: 0xff"
+49-70 mx25lxx05d: bits: "Unknown command: 0xff"
+69-92 mx25lxx05d: bits: "Unknown command: 0xff"
+11243-11264 mx25lxx05d: pp: "Command: Read identification"
+11268-11289 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+11289-11310 mx25lxx05d: pp: "Memory type: 0x20"
+11310-11329 mx25lxx05d: pp: "Device ID: 0x15"
+11243-11329 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+11331-11350 mx25lxx05d: bits: "Unknown command: 0xff"
+61807-61828 mx25lxx05d: pp: "Command: Read identification"
+61832-61853 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+61853-61872 mx25lxx05d: pp: "Memory type: 0x20"
+61874-61893 mx25lxx05d: pp: "Device ID: 0x15"
+61807-61893 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+61895-61914 mx25lxx05d: bits: "Unknown command: 0xff"
+111908-111929 mx25lxx05d: pp: "Command: Read identification"
+111933-111954 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+111954-111975 mx25lxx05d: pp: "Memory type: 0x20"
+111975-111996 mx25lxx05d: pp: "Device ID: 0x15"
+111908-111996 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+111996-112015 mx25lxx05d: bits: "Unknown command: 0xff"
+160879-160900 mx25lxx05d: pp: "Command: Read identification"
+160904-160925 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+160925-160944 mx25lxx05d: pp: "Memory type: 0x20"
+160946-160965 mx25lxx05d: pp: "Device ID: 0x15"
+160879-160965 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+160967-160986 mx25lxx05d: bits: "Unknown command: 0xff"
+210825-210844 mx25lxx05d: pp: "Command: Read identification"
+210850-210869 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+210870-210891 mx25lxx05d: pp: "Memory type: 0x20"
+210891-210912 mx25lxx05d: pp: "Device ID: 0x15"
+210825-210912 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+210912-210933 mx25lxx05d: bits: "Unknown command: 0xff"
+261418-261439 mx25lxx05d: pp: "Command: Read identification"
+261443-261464 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+261464-261485 mx25lxx05d: pp: "Memory type: 0x20"
+261485-261506 mx25lxx05d: pp: "Device ID: 0x15"
+261418-261506 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+261506-261525 mx25lxx05d: bits: "Unknown command: 0xff"
+312970-312989 mx25lxx05d: pp: "Command: Read identification"
+312995-313014 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+313016-313035 mx25lxx05d: pp: "Memory type: 0x20"
+313036-313057 mx25lxx05d: pp: "Device ID: 0x15"
+312970-313057 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+313057-313078 mx25lxx05d: bits: "Unknown command: 0xff"
+362962-362981 mx25lxx05d: pp: "Command: Read identification"
+362987-363006 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+363008-363027 mx25lxx05d: pp: "Memory type: 0x20"
+363029-363048 mx25lxx05d: pp: "Device ID: 0x15"
+362962-363048 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+363049-363070 mx25lxx05d: bits: "Unknown command: 0xff"
+412961-412982 mx25lxx05d: pp: "Command: Read identification"
+412986-413007 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+413007-413028 mx25lxx05d: pp: "Memory type: 0x20"
+413028-413047 mx25lxx05d: pp: "Device ID: 0x15"
+412961-413047 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+413049-413068 mx25lxx05d: bits: "Unknown command: 0xff"
+462966-462985 mx25lxx05d: pp: "Command: Read identification"
+462991-463010 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+463012-463031 mx25lxx05d: pp: "Memory type: 0x20"
+463033-463052 mx25lxx05d: pp: "Device ID: 0x15"
+462966-463052 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+463053-463074 mx25lxx05d: bits: "Unknown command: 0xff"
+512947-512968 mx25lxx05d: pp: "Command: Read identification"
+512972-512993 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+512993-513014 mx25lxx05d: pp: "Memory type: 0x20"
+513014-513033 mx25lxx05d: pp: "Device ID: 0x15"
+512947-513033 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+562937-562956 mx25lxx05d: pp: "Command: Read identification"
+562962-562981 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+562983-563002 mx25lxx05d: pp: "Memory type: 0x20"
+563004-563023 mx25lxx05d: pp: "Device ID: 0x15"
+562937-563023 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+612937-612958 mx25lxx05d: pp: "Command: Read identification"
+612962-612983 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+612983-613004 mx25lxx05d: pp: "Memory type: 0x20"
+613004-613025 mx25lxx05d: pp: "Device ID: 0x15"
+612937-613025 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+662929-662950 mx25lxx05d: pp: "Command: Read identification"
+662954-662975 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+662975-662996 mx25lxx05d: pp: "Memory type: 0x20"
+662996-663015 mx25lxx05d: pp: "Device ID: 0x15"
+662929-663015 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+712919-712938 mx25lxx05d: pp: "Command: Read identification"
+712944-712963 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+712964-712985 mx25lxx05d: pp: "Memory type: 0x20"
+712985-713006 mx25lxx05d: pp: "Device ID: 0x15"
+712919-713006 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+762532-762551 mx25lxx05d: pp: "Command: Read identification"
+762557-762576 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+762577-762598 mx25lxx05d: pp: "Memory type: 0x20"
+762598-762619 mx25lxx05d: pp: "Device ID: 0x15"
+762532-762619 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+812914-812933 mx25lxx05d: pp: "Command: Read identification"
+812939-812958 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+812960-812979 mx25lxx05d: pp: "Memory type: 0x20"
+812980-813001 mx25lxx05d: pp: "Device ID: 0x15"
+812914-813001 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+862913-862934 mx25lxx05d: pp: "Command: Read identification"
+862938-862959 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+862959-862980 mx25lxx05d: pp: "Memory type: 0x20"
+862980-863001 mx25lxx05d: pp: "Device ID: 0x15"
+862913-863001 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+911848-911869 mx25lxx05d: pp: "Command: Read identification"
+911873-911894 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+911894-911915 mx25lxx05d: pp: "Memory type: 0x20"
+911915-911934 mx25lxx05d: pp: "Device ID: 0x15"
+911848-911934 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+966518-966537 mx25lxx05d: pp: "Command: Read identification"
+966543-966562 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+966564-966583 mx25lxx05d: pp: "Memory type: 0x20"
+966584-966605 mx25lxx05d: pp: "Device ID: 0x15"
+966518-966605 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1012361-1012382 mx25lxx05d: pp: "Command: Read identification"
+1012386-1012407 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1012407-1012428 mx25lxx05d: pp: "Memory type: 0x20"
+1012428-1012447 mx25lxx05d: pp: "Device ID: 0x15"
+1012361-1012447 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1062490-1062509 mx25lxx05d: pp: "Command: Read identification"
+1062515-1062534 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1062536-1062555 mx25lxx05d: pp: "Memory type: 0x20"
+1062556-1062577 mx25lxx05d: pp: "Device ID: 0x15"
+1062490-1062577 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1112875-1112894 mx25lxx05d: pp: "Command: Read identification"
+1112900-1112919 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1112921-1112940 mx25lxx05d: pp: "Memory type: 0x20"
+1112942-1112961 mx25lxx05d: pp: "Device ID: 0x15"
+1112875-1112961 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1165977-1165996 mx25lxx05d: pp: "Command: Read identification"
+1166002-1166021 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1166023-1166042 mx25lxx05d: pp: "Memory type: 0x20"
+1166044-1166063 mx25lxx05d: pp: "Device ID: 0x15"
+1165977-1166063 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1212854-1212875 mx25lxx05d: pp: "Command: Read identification"
+1212879-1212900 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1212900-1212921 mx25lxx05d: pp: "Memory type: 0x20"
+1212921-1212940 mx25lxx05d: pp: "Device ID: 0x15"
+1212854-1212940 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1262476-1262495 mx25lxx05d: pp: "Command: Read identification"
+1262501-1262520 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1262522-1262541 mx25lxx05d: pp: "Memory type: 0x20"
+1262543-1262562 mx25lxx05d: pp: "Device ID: 0x15"
+1262476-1262562 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1316116-1316137 mx25lxx05d: pp: "Command: Read identification"
+1316141-1316162 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1316162-1316181 mx25lxx05d: pp: "Memory type: 0x20"
+1316183-1316202 mx25lxx05d: pp: "Device ID: 0x15"
+1316116-1316202 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1365952-1365971 mx25lxx05d: pp: "Command: Read identification"
+1365977-1365996 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1365997-1366018 mx25lxx05d: pp: "Memory type: 0x20"
+1366018-1366039 mx25lxx05d: pp: "Device ID: 0x15"
+1365952-1366039 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1412838-1412857 mx25lxx05d: pp: "Command: Read identification"
+1412863-1412882 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1412883-1412904 mx25lxx05d: pp: "Memory type: 0x20"
+1412904-1412925 mx25lxx05d: pp: "Device ID: 0x15"
+1412838-1412925 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1462831-1462852 mx25lxx05d: pp: "Command: Read identification"
+1462856-1462877 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1462877-1462898 mx25lxx05d: pp: "Memory type: 0x20"
+1462898-1462919 mx25lxx05d: pp: "Device ID: 0x15"
+1462831-1462919 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1542633-1542652 mx25lxx05d: pp: "Command: Read identification"
+1542658-1542677 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1542679-1542698 mx25lxx05d: pp: "Memory type: 0x20"
+1542700-1542719 mx25lxx05d: pp: "Device ID: 0x15"
+1542633-1542719 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1564887-1564908 mx25lxx05d: pp: "Command: Read identification"
+1564912-1564933 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1564933-1564954 mx25lxx05d: pp: "Memory type: 0x20"
+1564954-1564975 mx25lxx05d: pp: "Device ID: 0x15"
+1564887-1564975 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1615932-1615953 mx25lxx05d: pp: "Command: Read identification"
+1615957-1615978 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1615978-1615997 mx25lxx05d: pp: "Memory type: 0x20"
+1615999-1616018 mx25lxx05d: pp: "Device ID: 0x15"
+1615932-1616018 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1662807-1662828 mx25lxx05d: pp: "Command: Read identification"
+1662832-1662853 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1662853-1662874 mx25lxx05d: pp: "Memory type: 0x20"
+1662874-1662893 mx25lxx05d: pp: "Device ID: 0x15"
+1662807-1662893 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1713436-1713457 mx25lxx05d: pp: "Command: Read identification"
+1713461-1713482 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1713482-1713501 mx25lxx05d: pp: "Memory type: 0x20"
+1713503-1713522 mx25lxx05d: pp: "Device ID: 0x15"
+1713436-1713522 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1766409-1766430 mx25lxx05d: pp: "Command: Read identification"
+1766434-1766455 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1766455-1766474 mx25lxx05d: pp: "Memory type: 0x20"
+1766476-1766495 mx25lxx05d: pp: "Device ID: 0x15"
+1766409-1766495 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1812777-1812798 mx25lxx05d: pp: "Command: Read identification"
+1812802-1812823 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1812823-1812844 mx25lxx05d: pp: "Memory type: 0x20"
+1812844-1812863 mx25lxx05d: pp: "Device ID: 0x15"
+1812777-1812863 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1862253-1862272 mx25lxx05d: pp: "Command: Read identification"
+1862278-1862297 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1862299-1862318 mx25lxx05d: pp: "Memory type: 0x20"
+1862319-1862340 mx25lxx05d: pp: "Device ID: 0x15"
+1862253-1862340 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1915893-1915912 mx25lxx05d: pp: "Command: Read identification"
+1915918-1915937 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1915939-1915958 mx25lxx05d: pp: "Memory type: 0x20"
+1915959-1915980 mx25lxx05d: pp: "Device ID: 0x15"
+1915893-1915980 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+1965781-1965802 mx25lxx05d: pp: "Command: Read identification"
+1965806-1965827 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+1965827-1965848 mx25lxx05d: pp: "Memory type: 0x20"
+1965848-1965867 mx25lxx05d: pp: "Device ID: 0x15"
+1965781-1965867 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2016378-2016399 mx25lxx05d: pp: "Command: Read identification"
+2016403-2016424 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2016424-2016445 mx25lxx05d: pp: "Memory type: 0x20"
+2016445-2016466 mx25lxx05d: pp: "Device ID: 0x15"
+2016378-2016466 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2062737-2062756 mx25lxx05d: pp: "Command: Read identification"
+2062762-2062781 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2062783-2062802 mx25lxx05d: pp: "Memory type: 0x20"
+2062804-2062823 mx25lxx05d: pp: "Device ID: 0x15"
+2062737-2062823 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2116363-2116384 mx25lxx05d: pp: "Command: Read identification"
+2116388-2116409 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2116409-2116430 mx25lxx05d: pp: "Memory type: 0x20"
+2116430-2116449 mx25lxx05d: pp: "Device ID: 0x15"
+2116363-2116449 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2162719-2162740 mx25lxx05d: pp: "Command: Read identification"
+2162744-2162765 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2162765-2162786 mx25lxx05d: pp: "Memory type: 0x20"
+2162786-2162805 mx25lxx05d: pp: "Device ID: 0x15"
+2162719-2162805 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2216867-2216888 mx25lxx05d: pp: "Command: Read identification"
+2216892-2216913 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2216913-2216934 mx25lxx05d: pp: "Memory type: 0x20"
+2216934-2216953 mx25lxx05d: pp: "Device ID: 0x15"
+2216867-2216953 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2262722-2262743 mx25lxx05d: pp: "Command: Read identification"
+2262747-2262768 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2262768-2262789 mx25lxx05d: pp: "Memory type: 0x20"
+2262789-2262810 mx25lxx05d: pp: "Device ID: 0x15"
+2262722-2262810 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2316335-2316356 mx25lxx05d: pp: "Command: Read identification"
+2316360-2316381 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2316381-2316402 mx25lxx05d: pp: "Memory type: 0x20"
+2316402-2316421 mx25lxx05d: pp: "Device ID: 0x15"
+2316335-2316421 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2362687-2362708 mx25lxx05d: pp: "Command: Read identification"
+2362712-2362733 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2362733-2362754 mx25lxx05d: pp: "Memory type: 0x20"
+2362754-2362773 mx25lxx05d: pp: "Device ID: 0x15"
+2362687-2362773 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2416319-2416338 mx25lxx05d: pp: "Command: Read identification"
+2416344-2416363 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2416365-2416384 mx25lxx05d: pp: "Memory type: 0x20"
+2416386-2416405 mx25lxx05d: pp: "Device ID: 0x15"
+2416319-2416405 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2462685-2462704 mx25lxx05d: pp: "Command: Read identification"
+2462710-2462729 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2462731-2462750 mx25lxx05d: pp: "Memory type: 0x20"
+2462752-2462771 mx25lxx05d: pp: "Device ID: 0x15"
+2462685-2462771 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2516307-2516328 mx25lxx05d: pp: "Command: Read identification"
+2516332-2516353 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2516353-2516372 mx25lxx05d: pp: "Memory type: 0x20"
+2516374-2516393 mx25lxx05d: pp: "Device ID: 0x15"
+2516307-2516393 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2562661-2562682 mx25lxx05d: pp: "Command: Read identification"
+2562686-2562707 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2562707-2562728 mx25lxx05d: pp: "Memory type: 0x20"
+2562728-2562749 mx25lxx05d: pp: "Device ID: 0x15"
+2562661-2562749 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2616295-2616316 mx25lxx05d: pp: "Command: Read identification"
+2616320-2616341 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2616341-2616362 mx25lxx05d: pp: "Memory type: 0x20"
+2616362-2616381 mx25lxx05d: pp: "Device ID: 0x15"
+2616295-2616381 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2662657-2662678 mx25lxx05d: pp: "Command: Read identification"
+2662682-2662703 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2662703-2662722 mx25lxx05d: pp: "Memory type: 0x20"
+2662724-2662743 mx25lxx05d: pp: "Device ID: 0x15"
+2662657-2662743 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2716279-2716298 mx25lxx05d: pp: "Command: Read identification"
+2716304-2716323 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2716325-2716344 mx25lxx05d: pp: "Memory type: 0x20"
+2716345-2716366 mx25lxx05d: pp: "Device ID: 0x15"
+2716279-2716366 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2762647-2762668 mx25lxx05d: pp: "Command: Read identification"
+2762672-2762693 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2762693-2762714 mx25lxx05d: pp: "Memory type: 0x20"
+2762714-2762733 mx25lxx05d: pp: "Device ID: 0x15"
+2762647-2762733 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2815899-2815918 mx25lxx05d: pp: "Command: Read identification"
+2815924-2815943 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2815945-2815964 mx25lxx05d: pp: "Memory type: 0x20"
+2815966-2815985 mx25lxx05d: pp: "Device ID: 0x15"
+2815899-2815985 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2866260-2866279 mx25lxx05d: pp: "Command: Read identification"
+2866285-2866304 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2866306-2866325 mx25lxx05d: pp: "Memory type: 0x20"
+2866327-2866346 mx25lxx05d: pp: "Device ID: 0x15"
+2866260-2866346 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2912623-2912642 mx25lxx05d: pp: "Command: Read identification"
+2912648-2912667 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2912669-2912688 mx25lxx05d: pp: "Memory type: 0x20"
+2912690-2912709 mx25lxx05d: pp: "Device ID: 0x15"
+2912623-2912709 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+2966247-2966268 mx25lxx05d: pp: "Command: Read identification"
+2966272-2966293 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+2966293-2966314 mx25lxx05d: pp: "Memory type: 0x20"
+2966314-2966333 mx25lxx05d: pp: "Device ID: 0x15"
+2966247-2966333 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3012611-3012632 mx25lxx05d: pp: "Command: Read identification"
+3012636-3012657 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3012657-3012676 mx25lxx05d: pp: "Memory type: 0x20"
+3012678-3012697 mx25lxx05d: pp: "Device ID: 0x15"
+3012611-3012697 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3066235-3066256 mx25lxx05d: pp: "Command: Read identification"
+3066260-3066281 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3066281-3066302 mx25lxx05d: pp: "Memory type: 0x20"
+3066302-3066323 mx25lxx05d: pp: "Device ID: 0x15"
+3066235-3066323 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3112228-3112249 mx25lxx05d: pp: "Command: Read identification"
+3112253-3112274 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3112274-3112293 mx25lxx05d: pp: "Memory type: 0x20"
+3112295-3112314 mx25lxx05d: pp: "Device ID: 0x15"
+3112228-3112314 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3165854-3165873 mx25lxx05d: pp: "Command: Read identification"
+3165879-3165898 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3165900-3165919 mx25lxx05d: pp: "Memory type: 0x20"
+3165921-3165940 mx25lxx05d: pp: "Device ID: 0x15"
+3165854-3165940 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3215707-3215726 mx25lxx05d: pp: "Command: Read identification"
+3215732-3215751 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3215752-3215773 mx25lxx05d: pp: "Memory type: 0x20"
+3215773-3215794 mx25lxx05d: pp: "Device ID: 0x15"
+3215707-3215794 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3265834-3265853 mx25lxx05d: pp: "Command: Read identification"
+3265859-3265878 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3265880-3265899 mx25lxx05d: pp: "Memory type: 0x20"
+3265900-3265921 mx25lxx05d: pp: "Device ID: 0x15"
+3265834-3265921 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3315694-3315715 mx25lxx05d: pp: "Command: Read identification"
+3315719-3315740 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3315740-3315761 mx25lxx05d: pp: "Memory type: 0x20"
+3315761-3315780 mx25lxx05d: pp: "Device ID: 0x15"
+3315694-3315780 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3365689-3365708 mx25lxx05d: pp: "Command: Read identification"
+3365714-3365733 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3365735-3365754 mx25lxx05d: pp: "Memory type: 0x20"
+3365756-3365775 mx25lxx05d: pp: "Device ID: 0x15"
+3365689-3365775 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3441210-3441229 mx25lxx05d: pp: "Command: Read identification"
+3441235-3441254 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3441256-3441275 mx25lxx05d: pp: "Memory type: 0x20"
+3441276-3441297 mx25lxx05d: pp: "Device ID: 0x15"
+3441210-3441297 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3485063-3485082 mx25lxx05d: pp: "Command: Read identification"
+3485088-3485107 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3485109-3485128 mx25lxx05d: pp: "Memory type: 0x20"
+3485130-3485149 mx25lxx05d: pp: "Device ID: 0x15"
+3485063-3485149 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3516119-3516138 mx25lxx05d: pp: "Command: Read identification"
+3516144-3516163 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3516165-3516184 mx25lxx05d: pp: "Memory type: 0x20"
+3516186-3516205 mx25lxx05d: pp: "Device ID: 0x15"
+3516119-3516205 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3562546-3562565 mx25lxx05d: pp: "Command: Read identification"
+3562571-3562590 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3562592-3562611 mx25lxx05d: pp: "Memory type: 0x20"
+3562612-3562633 mx25lxx05d: pp: "Device ID: 0x15"
+3562546-3562633 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3612018-3612037 mx25lxx05d: pp: "Command: Read identification"
+3612043-3612062 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3612063-3612084 mx25lxx05d: pp: "Memory type: 0x20"
+3612084-3612105 mx25lxx05d: pp: "Device ID: 0x15"
+3612018-3612105 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3665802-3665821 mx25lxx05d: pp: "Command: Read identification"
+3665827-3665846 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3665848-3665867 mx25lxx05d: pp: "Memory type: 0x20"
+3665868-3665889 mx25lxx05d: pp: "Device ID: 0x15"
+3665802-3665889 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3716158-3716177 mx25lxx05d: pp: "Command: Read identification"
+3716183-3716202 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3716203-3716224 mx25lxx05d: pp: "Memory type: 0x20"
+3716224-3716245 mx25lxx05d: pp: "Device ID: 0x15"
+3716158-3716245 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3763016-3763035 mx25lxx05d: pp: "Command: Read identification"
+3763041-3763060 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3763062-3763081 mx25lxx05d: pp: "Memory type: 0x20"
+3763082-3763103 mx25lxx05d: pp: "Device ID: 0x15"
+3763016-3763103 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3816134-3816155 mx25lxx05d: pp: "Command: Read identification"
+3816159-3816180 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3816180-3816199 mx25lxx05d: pp: "Memory type: 0x20"
+3816201-3816220 mx25lxx05d: pp: "Device ID: 0x15"
+3816134-3816220 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3862495-3862514 mx25lxx05d: pp: "Command: Read identification"
+3862520-3862539 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3862541-3862560 mx25lxx05d: pp: "Memory type: 0x20"
+3862561-3862582 mx25lxx05d: pp: "Device ID: 0x15"
+3862495-3862582 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3916120-3916139 mx25lxx05d: pp: "Command: Read identification"
+3916145-3916164 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3916166-3916185 mx25lxx05d: pp: "Memory type: 0x20"
+3916186-3916207 mx25lxx05d: pp: "Device ID: 0x15"
+3916120-3916207 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+3962103-3962124 mx25lxx05d: pp: "Command: Read identification"
+3962128-3962149 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+3962149-3962170 mx25lxx05d: pp: "Memory type: 0x20"
+3962170-3962189 mx25lxx05d: pp: "Device ID: 0x15"
+3962103-3962189 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4015644-4015663 mx25lxx05d: pp: "Command: Read identification"
+4015669-4015688 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4015690-4015709 mx25lxx05d: pp: "Memory type: 0x20"
+4015710-4015731 mx25lxx05d: pp: "Device ID: 0x15"
+4015644-4015731 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4066100-4066119 mx25lxx05d: read: "Command: Read status register"
+4066125-4066144 mx25lxx05d: bits: "Status register: 0x00"
+4066125-4066144 mx25lxx05d: bits2: "No write operation in progress.
+Internal write enable latch is not set.
+Block protection bits (BP3-BP0): 0x0.
+Device is not in continuously program mode (CP mode).
+Status register writes are allowed.
+"
+4066145-4066165 mx25lxx05d: bits: "Status register: 0x00"
+4066145-4066165 mx25lxx05d: bits2: "No write operation in progress.
+Internal write enable latch is not set.
+Block protection bits (BP3-BP0): 0x0.
+Device is not in continuously program mode (CP mode).
+Status register writes are allowed.
+"
+4114020-4114039 mx25lxx05d: pp: "Command: Read identification"
+4114045-4114064 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4114066-4114085 mx25lxx05d: pp: "Memory type: 0x20"
+4114086-4114107 mx25lxx05d: pp: "Device ID: 0x15"
+4114020-4114107 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4165584-4165603 mx25lxx05d: pp: "Command: Read identification"
+4165609-4165628 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4165629-4165649 mx25lxx05d: pp: "Memory type: 0x20"
+4165650-4165671 mx25lxx05d: pp: "Device ID: 0x15"
+4165584-4165671 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4211932-4211953 mx25lxx05d: pp: "Command: Read identification"
+4211957-4211978 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4211978-4211999 mx25lxx05d: pp: "Memory type: 0x20"
+4211999-4212018 mx25lxx05d: pp: "Device ID: 0x15"
+4211932-4212018 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4265063-4265084 mx25lxx05d: pp: "Command: Read identification"
+4265088-4265109 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4265109-4265128 mx25lxx05d: pp: "Memory type: 0x20"
+4265130-4265149 mx25lxx05d: pp: "Device ID: 0x15"
+4265063-4265149 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4316206-4316225 mx25lxx05d: pp: "Command: Read identification"
+4316231-4316250 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4316251-4316272 mx25lxx05d: pp: "Memory type: 0x20"
+4316272-4316293 mx25lxx05d: pp: "Device ID: 0x15"
+4316206-4316293 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4362060-4362079 mx25lxx05d: pp: "Command: Read identification"
+4362085-4362104 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4362105-4362126 mx25lxx05d: pp: "Memory type: 0x20"
+4362126-4362147 mx25lxx05d: pp: "Device ID: 0x15"
+4362060-4362147 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4416595-4416616 mx25lxx05d: pp: "Command: Read identification"
+4416620-4416641 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4416641-4416662 mx25lxx05d: pp: "Memory type: 0x20"
+4416662-4416683 mx25lxx05d: pp: "Device ID: 0x15"
+4416595-4416683 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4465681-4465700 mx25lxx05d: pp: "Command: Read identification"
+4465706-4465725 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4465726-4465747 mx25lxx05d: pp: "Memory type: 0x20"
+4465747-4465768 mx25lxx05d: pp: "Device ID: 0x15"
+4465681-4465768 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4515670-4515689 mx25lxx05d: pp: "Command: Read identification"
+4515695-4515714 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4515716-4515735 mx25lxx05d: pp: "Memory type: 0x20"
+4515737-4515756 mx25lxx05d: pp: "Device ID: 0x15"
+4515670-4515756 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4566032-4566053 mx25lxx05d: pp: "Command: Read identification"
+4566057-4566078 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4566078-4566099 mx25lxx05d: pp: "Memory type: 0x20"
+4566099-4566120 mx25lxx05d: pp: "Device ID: 0x15"
+4566032-4566120 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4612013-4612034 mx25lxx05d: pp: "Command: Read identification"
+4612038-4612059 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4612059-4612078 mx25lxx05d: pp: "Memory type: 0x20"
+4612080-4612099 mx25lxx05d: pp: "Device ID: 0x15"
+4612013-4612099 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4665639-4665660 mx25lxx05d: pp: "Command: Read identification"
+4665664-4665685 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4665685-4665706 mx25lxx05d: pp: "Memory type: 0x20"
+4665706-4665727 mx25lxx05d: pp: "Device ID: 0x15"
+4665639-4665727 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4715923-4715942 mx25lxx05d: pp: "Command: Read identification"
+4715948-4715967 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4715969-4715988 mx25lxx05d: pp: "Memory type: 0x20"
+4715989-4716010 mx25lxx05d: pp: "Device ID: 0x15"
+4715923-4716010 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4761989-4762008 mx25lxx05d: pp: "Command: Read identification"
+4762014-4762033 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4762035-4762054 mx25lxx05d: pp: "Memory type: 0x20"
+4762055-4762076 mx25lxx05d: pp: "Device ID: 0x15"
+4761989-4762076 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4816081-4816100 mx25lxx05d: pp: "Command: Read identification"
+4816106-4816125 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4816127-4816146 mx25lxx05d: pp: "Memory type: 0x20"
+4816148-4816167 mx25lxx05d: pp: "Device ID: 0x15"
+4816081-4816167 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4861985-4862004 mx25lxx05d: pp: "Command: Read identification"
+4862010-4862029 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4862031-4862050 mx25lxx05d: pp: "Memory type: 0x20"
+4862052-4862071 mx25lxx05d: pp: "Device ID: 0x15"
+4861985-4862071 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4915613-4915632 mx25lxx05d: pp: "Command: Read identification"
+4915638-4915657 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4915659-4915678 mx25lxx05d: pp: "Memory type: 0x20"
+4915680-4915699 mx25lxx05d: pp: "Device ID: 0x15"
+4915613-4915699 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+4966500-4966521 mx25lxx05d: pp: "Command: Read identification"
+4966525-4966546 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+4966546-4966565 mx25lxx05d: pp: "Memory type: 0x20"
+4966567-4966586 mx25lxx05d: pp: "Device ID: 0x15"
+4966500-4966586 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5012346-5012367 mx25lxx05d: pp: "Command: Read identification"
+5012371-5012392 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5012392-5012413 mx25lxx05d: pp: "Memory type: 0x20"
+5012413-5012434 mx25lxx05d: pp: "Device ID: 0x15"
+5012346-5012434 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5065449-5065470 mx25lxx05d: pp: "Command: Read identification"
+5065474-5065495 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5065495-5065514 mx25lxx05d: pp: "Memory type: 0x20"
+5065516-5065535 mx25lxx05d: pp: "Device ID: 0x15"
+5065449-5065535 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5115964-5115985 mx25lxx05d: pp: "Command: Read identification"
+5115989-5116010 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5116010-5116029 mx25lxx05d: pp: "Memory type: 0x20"
+5116031-5116050 mx25lxx05d: pp: "Device ID: 0x15"
+5115964-5116050 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5162317-5162338 mx25lxx05d: pp: "Command: Read identification"
+5162342-5162363 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5162363-5162384 mx25lxx05d: pp: "Memory type: 0x20"
+5162384-5162403 mx25lxx05d: pp: "Device ID: 0x15"
+5162317-5162403 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5215440-5215461 mx25lxx05d: pp: "Command: Read identification"
+5215465-5215486 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5215486-5215507 mx25lxx05d: pp: "Memory type: 0x20"
+5215507-5215526 mx25lxx05d: pp: "Device ID: 0x15"
+5215440-5215526 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5265941-5265960 mx25lxx05d: exso: "Command: Read electronic manufacturer & device ID"
+5265962-5265981 mx25lxx05d: bits: "Dummy byte: 0"
+5265982-5266003 mx25lxx05d: bits: "Dummy byte: 0"
+5266003-5266024 mx25lxx05d: bits: "Master wants manufacturer ID first"
+5266028-5266049 mx25lxx05d: bits: "Manufacturer ID"
+5266049-5266070 mx25lxx05d: bits: "Manufacturer ID"
+5266049-5266070 mx25lxx05d: bits: "Device: Macronix MX25L1605D"
+5312297-5312318 mx25lxx05d: pp: "Command: Read identification"
+5312322-5312343 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5312343-5312362 mx25lxx05d: pp: "Memory type: 0x20"
+5312364-5312383 mx25lxx05d: pp: "Device ID: 0x15"
+5312297-5312383 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5368034-5368055 mx25lxx05d: pp: "Command: Read identification"
+5368059-5368080 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5368080-5368101 mx25lxx05d: pp: "Memory type: 0x20"
+5368101-5368120 mx25lxx05d: pp: "Device ID: 0x15"
+5368034-5368120 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5415919-5415940 mx25lxx05d: pp: "Command: Read identification"
+5415944-5415965 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5415965-5415986 mx25lxx05d: pp: "Memory type: 0x20"
+5415986-5416007 mx25lxx05d: pp: "Device ID: 0x15"
+5415919-5416007 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
+5461749-5461768 mx25lxx05d: exso: "Command: Read electronic manufacturer & device ID"
+5461770-5461789 mx25lxx05d: bits: "Dummy byte: 0"
+5461790-5461811 mx25lxx05d: bits: "Dummy byte: 0"
+5461811-5461832 mx25lxx05d: bits: "Master wants manufacturer ID first"
+5461836-5461857 mx25lxx05d: bits: "Manufacturer ID"
+5461857-5461878 mx25lxx05d: bits: "Manufacturer ID"
+5461857-5461878 mx25lxx05d: bits: "Device: Macronix MX25L1605D"
+5515397-5515417 mx25lxx05d: pp: "Command: Read identification"
+5515423-5515443 mx25lxx05d: pp: "Manufacturer ID: 0xc2"
+5515443-5515464 mx25lxx05d: pp: "Memory type: 0x20"
+5515464-5515485 mx25lxx05d: pp: "Device ID: 0x15"
+5515397-5515485 mx25lxx05d: dsry: "Device: Macronix MX25L3205D"
diff --git a/decoder/test/mx25lxx05d/test.conf b/decoder/test/mx25lxx05d/test.conf
new file mode 100644 (file)
index 0000000..0541903
--- /dev/null
@@ -0,0 +1,7 @@
+test probe
+       protocol-decoder spi channel cs=0 channel miso=1 channel clk=2 channel mosi=3
+       protocol-decoder mx25lxx05d
+       stack spi mx25lxx05d
+       input spi/mx25l1605d/mx25l1605d_probe.sr
+       output mx25lxx05d annotation match probe.output
+
diff --git a/decoder/test/nrf24l01/nrf24l01_activate_cmd.output b/decoder/test/nrf24l01/nrf24l01_activate_cmd.output
new file mode 100644 (file)
index 0000000..0a4ea21
--- /dev/null
@@ -0,0 +1,2 @@
+3-36 nrf24l01: cmd: "Cmd ACTIVATE"
+41-74 nrf24l01: cmd: "Cmd ACTIVATE"
diff --git a/decoder/test/nrf24l01/nrf24l01_activate_warning.output b/decoder/test/nrf24l01/nrf24l01_activate_warning.output
new file mode 100644 (file)
index 0000000..64451ff
--- /dev/null
@@ -0,0 +1 @@
+41-74 nrf24l01: warning: "wrong data for "ACTIVATE" command"
diff --git a/decoder/test/nrf24l01/nrf24l01_communication_rx.output b/decoder/test/nrf24l01/nrf24l01_communication_rx.output
new file mode 100644 (file)
index 0000000..4de4875
--- /dev/null
@@ -0,0 +1,6 @@
+378689-378962 nrf24l01: rx-data: "RX payload = "message #0""
+499905-500178 nrf24l01: rx-data: "RX payload = "message #1""
+621693-621966 nrf24l01: rx-data: "RX payload = "message #2""
+738358-738631 nrf24l01: rx-data: "RX payload = "message #3""
+867005-867279 nrf24l01: rx-data: "RX payload = "message #4""
+986889-987163 nrf24l01: rx-data: "RX payload = "message #5""
diff --git a/decoder/test/nrf24l01/nrf24l01_communication_tx.output b/decoder/test/nrf24l01/nrf24l01_communication_tx.output
new file mode 100644 (file)
index 0000000..45ac8d5
--- /dev/null
@@ -0,0 +1,10 @@
+366098-366374 nrf24l01: tx-data: "TX payload = "message #0""
+488110-488387 nrf24l01: tx-data: "TX payload = "message #1""
+610131-610408 nrf24l01: tx-data: "TX payload = "message #2""
+732181-732458 nrf24l01: tx-data: "TX payload = "message #3""
+854221-854498 nrf24l01: tx-data: "TX payload = "message #4""
+976255-976531 nrf24l01: tx-data: "TX payload = "message #5""
+1098294-1098570 nrf24l01: tx-data: "TX payload = "message #6""
+1220322-1220597 nrf24l01: tx-data: "TX payload = "message #7""
+1342302-1342579 nrf24l01: tx-data: "TX payload = "message #8""
+1464309-1464586 nrf24l01: tx-data: "TX payload = "message #9""
diff --git a/decoder/test/nrf24l01/nrf24l01_excess_bytes_warning.output b/decoder/test/nrf24l01/nrf24l01_excess_bytes_warning.output
new file mode 100644 (file)
index 0000000..7f7b9bd
--- /dev/null
@@ -0,0 +1,7 @@
+75-91 nrf24l01: warning: "excess byte"
+130-146 nrf24l01: warning: "excess byte"
+185-201 nrf24l01: warning: "excess byte"
+202-218 nrf24l01: warning: "excess byte"
+325-341 nrf24l01: warning: "excess byte"
+380-396 nrf24l01: warning: "excess byte"
+962-978 nrf24l01: warning: "excess byte"
diff --git a/decoder/test/nrf24l01/nrf24l01_misc_cmd.output b/decoder/test/nrf24l01/nrf24l01_misc_cmd.output
new file mode 100644 (file)
index 0000000..041c365
--- /dev/null
@@ -0,0 +1,5 @@
+3-19 nrf24l01: cmd: "Cmd REUSE_TX_PL"
+24-40 nrf24l01: cmd: "Cmd R_RX_PL_WID"
+62-78 nrf24l01: cmd: "Cmd R_RX_PL_WID"
+83-99 nrf24l01: cmd: "Cmd R_RX_PL_WID"
+138-154 nrf24l01: cmd: "Cmd W_ACK_PAYLOAD"
diff --git a/decoder/test/nrf24l01/nrf24l01_misc_register.output b/decoder/test/nrf24l01/nrf24l01_misc_register.output
new file mode 100644 (file)
index 0000000..a3d38de
--- /dev/null
@@ -0,0 +1,7 @@
+3-19 nrf24l01: register: "Reg STATUS = "00""
+24-40 nrf24l01: register: "Reg STATUS = "00""
+41-57 nrf24l01: register: "Payload width = 9"
+62-78 nrf24l01: register: "Reg STATUS = "00""
+83-99 nrf24l01: register: "Reg STATUS = "00""
+100-116 nrf24l01: register: "Payload width = 9"
+138-154 nrf24l01: register: "Reg STATUS = "00""
diff --git a/decoder/test/nrf24l01/nrf24l01_misc_tx_data.output b/decoder/test/nrf24l01/nrf24l01_misc_tx_data.output
new file mode 100644 (file)
index 0000000..e28d662
--- /dev/null
@@ -0,0 +1 @@
+155-426 nrf24l01: tx-data: "ACK payload for pipe 1 = "\x00\x01\x02\x03\x04abcdef\x00\x01\x02\x03\x04""
diff --git a/decoder/test/nrf24l01/nrf24l01_misc_warning.output b/decoder/test/nrf24l01/nrf24l01_misc_warning.output
new file mode 100644 (file)
index 0000000..4ec511e
--- /dev/null
@@ -0,0 +1,2 @@
+79-79 nrf24l01: warning: "missing data bytes"
+117-133 nrf24l01: warning: "excess byte"
diff --git a/decoder/test/nrf24l01/nrf24l01_missing_bytes_warning.output b/decoder/test/nrf24l01/nrf24l01_missing_bytes_warning.output
new file mode 100644 (file)
index 0000000..e1b6344
--- /dev/null
@@ -0,0 +1,2 @@
+20-20 nrf24l01: warning: "missing data bytes"
+41-41 nrf24l01: warning: "missing data bytes"
diff --git a/decoder/test/nrf24l01/nrf24l01_no_command_register.output b/decoder/test/nrf24l01/nrf24l01_no_command_register.output
new file mode 100644 (file)
index 0000000..5e97b3e
--- /dev/null
@@ -0,0 +1,4 @@
+11-27 nrf24l01: register: "Reg STATUS = "00""
+28-44 nrf24l01: register: "Reg CONFIG = "00""
+53-69 nrf24l01: register: "Reg STATUS = "00""
+70-86 nrf24l01: register: "Reg CONFIG = "00""
diff --git a/decoder/test/nrf24l01/nrf24l01_rx.output b/decoder/test/nrf24l01/nrf24l01_rx.output
new file mode 100644 (file)
index 0000000..e04132e
--- /dev/null
@@ -0,0 +1 @@
+378689-378962 nrf24l01: rx-data: "RX payload = "message #0""
diff --git a/decoder/test/nrf24l01/nrf24l01_unknown_command_warning.output b/decoder/test/nrf24l01/nrf24l01_unknown_command_warning.output
new file mode 100644 (file)
index 0000000..e229fe8
--- /dev/null
@@ -0,0 +1,2 @@
+41-57 nrf24l01: warning: "unknown command"
+58-74 nrf24l01: warning: "excess byte"
diff --git a/decoder/test/nrf24l01/nrf24l01_unknown_register_warning.output b/decoder/test/nrf24l01/nrf24l01_unknown_register_warning.output
new file mode 100644 (file)
index 0000000..fcb1d89
--- /dev/null
@@ -0,0 +1 @@
+20-36 nrf24l01: warning: "unknown register"
diff --git a/decoder/test/nrf24l01/test.conf b/decoder/test/nrf24l01/test.conf
new file mode 100644 (file)
index 0000000..986d30d
--- /dev/null
@@ -0,0 +1,80 @@
+test activate
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-activate.sr
+       output nrf24l01 annotation class cmd     match nrf24l01_activate_cmd.output
+       output nrf24l01 annotation class warning match nrf24l01_activate_warning.output
+
+test communication-rx
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-communication-rx.sr
+       output nrf24l01 annotation class rx-data match nrf24l01_communication_rx.output
+
+test communication-tx
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-communication-tx.sr
+       output nrf24l01 annotation class tx-data match nrf24l01_communication_tx.output
+
+test excess-bytes
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-excess-bytes.sr
+       output nrf24l01 annotation class warning match nrf24l01_excess_bytes_warning.output
+
+test misc
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-misc.sr
+       output nrf24l01 annotation class cmd      match nrf24l01_misc_cmd.output
+       output nrf24l01 annotation class tx-data  match nrf24l01_misc_tx_data.output
+       output nrf24l01 annotation class register match nrf24l01_misc_register.output
+       output nrf24l01 annotation class warning  match nrf24l01_misc_warning.output
+
+test missing-bytes
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-missing-bytes.sr
+       output nrf24l01 annotation class warning match nrf24l01_missing_bytes_warning.output
+
+test no-command
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-no-command.sr
+       output nrf24l01 annotation class register match nrf24l01_no_command_register.output
+
+test no-mosi
+       protocol-decoder spi channel cs=0 channel clk=1 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-no-command.sr
+       output nrf24l01 exception match ChannelError
+
+test no-miso
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-no-command.sr
+       output nrf24l01 exception match ChannelError
+
+test unknown-command
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-unknown-command.sr
+       output nrf24l01 annotation class warning match nrf24l01_unknown_command_warning.output
+
+test unknown-register
+       protocol-decoder spi channel cs=0 channel clk=1 channel mosi=2 channel miso=3
+       protocol-decoder nrf24l01
+       stack spi nrf24l01
+       input spi/nrf24l01/nrf24l01-test-unknown-register.sr
+       output nrf24l01 annotation class warning match nrf24l01_unknown_register_warning.output
diff --git a/decoder/test/onewire_link/test.conf b/decoder/test/onewire_link/test.conf
new file mode 100644 (file)
index 0000000..75349c2
--- /dev/null
@@ -0,0 +1,5 @@
+test exception_samplerate
+       protocol-decoder onewire_link
+       input misc/no-samplerate.sr
+       output onewire_link exception match SamplerateError
+
diff --git a/decoder/test/spi/atmega32_00_miso.output b/decoder/test/spi/atmega32_00_miso.output
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/decoder/test/spi/atmega32_00_mosi.output b/decoder/test/spi/atmega32_00_mosi.output
new file mode 100644 (file)
index 0000000..c746d0b
--- /dev/null
@@ -0,0 +1,6354 @@
+10-42 spi: mosi-data: "E2"
+167-199 spi: mosi-data: "E3"
+324-356 spi: mosi-data: "E4"
+482-514 spi: mosi-data: "E5"
+639-671 spi: mosi-data: "E6"
+797-829 spi: mosi-data: "E7"
+954-986 spi: mosi-data: "E8"
+1111-1143 spi: mosi-data: "E9"
+1269-1301 spi: mosi-data: "EA"
+1426-1458 spi: mosi-data: "EB"
+1583-1615 spi: mosi-data: "EC"
+1741-1773 spi: mosi-data: "ED"
+1898-1930 spi: mosi-data: "EE"
+2056-2088 spi: mosi-data: "EF"
+2213-2245 spi: mosi-data: "F0"
+2370-2402 spi: mosi-data: "F1"
+2528-2560 spi: mosi-data: "F2"
+2685-2717 spi: mosi-data: "F3"
+2842-2874 spi: mosi-data: "F4"
+3000-3032 spi: mosi-data: "F5"
+3157-3189 spi: mosi-data: "F6"
+3315-3347 spi: mosi-data: "F7"
+3472-3504 spi: mosi-data: "F8"
+3629-3661 spi: mosi-data: "F9"
+3787-3819 spi: mosi-data: "FA"
+3944-3976 spi: mosi-data: "FB"
+4101-4133 spi: mosi-data: "FC"
+4259-4291 spi: mosi-data: "FD"
+4416-4448 spi: mosi-data: "FE"
+4574-4606 spi: mosi-data: "FF"
+4731-4763 spi: mosi-data: "00"
+4888-4920 spi: mosi-data: "01"
+5046-5078 spi: mosi-data: "02"
+5203-5235 spi: mosi-data: "03"
+5361-5393 spi: mosi-data: "04"
+5518-5550 spi: mosi-data: "05"
+5675-5707 spi: mosi-data: "06"
+5833-5865 spi: mosi-data: "07"
+5990-6022 spi: mosi-data: "08"
+6147-6179 spi: mosi-data: "09"
+6305-6337 spi: mosi-data: "0A"
+6462-6494 spi: mosi-data: "0B"
+6620-6652 spi: mosi-data: "0C"
+6777-6809 spi: mosi-data: "0D"
+6934-6966 spi: mosi-data: "0E"
+7092-7124 spi: mosi-data: "0F"
+7249-7281 spi: mosi-data: "10"
+7406-7438 spi: mosi-data: "11"
+7564-7596 spi: mosi-data: "12"
+7721-7753 spi: mosi-data: "13"
+7879-7911 spi: mosi-data: "14"
+8036-8068 spi: mosi-data: "15"
+8193-8225 spi: mosi-data: "16"
+8351-8383 spi: mosi-data: "17"
+8508-8540 spi: mosi-data: "18"
+8665-8697 spi: mosi-data: "19"
+8823-8855 spi: mosi-data: "1A"
+8980-9012 spi: mosi-data: "1B"
+9138-9170 spi: mosi-data: "1C"
+9295-9327 spi: mosi-data: "1D"
+9452-9484 spi: mosi-data: "1E"
+9610-9642 spi: mosi-data: "1F"
+9767-9799 spi: mosi-data: "20"
+9924-9956 spi: mosi-data: "21"
+10082-10114 spi: mosi-data: "22"
+10239-10271 spi: mosi-data: "23"
+10397-10429 spi: mosi-data: "24"
+10554-10586 spi: mosi-data: "25"
+10711-10743 spi: mosi-data: "26"
+10869-10901 spi: mosi-data: "27"
+11026-11058 spi: mosi-data: "28"
+11184-11216 spi: mosi-data: "29"
+11341-11373 spi: mosi-data: "2A"
+11498-11530 spi: mosi-data: "2B"
+11656-11688 spi: mosi-data: "2C"
+11813-11845 spi: mosi-data: "2D"
+11970-12002 spi: mosi-data: "2E"
+12128-12160 spi: mosi-data: "2F"
+12285-12317 spi: mosi-data: "30"
+12443-12475 spi: mosi-data: "31"
+12600-12632 spi: mosi-data: "32"
+12757-12789 spi: mosi-data: "33"
+12915-12947 spi: mosi-data: "34"
+13072-13104 spi: mosi-data: "35"
+13229-13261 spi: mosi-data: "36"
+13387-13419 spi: mosi-data: "37"
+13544-13576 spi: mosi-data: "38"
+13702-13734 spi: mosi-data: "39"
+13859-13891 spi: mosi-data: "3A"
+14016-14048 spi: mosi-data: "3B"
+14174-14206 spi: mosi-data: "3C"
+14331-14363 spi: mosi-data: "3D"
+14488-14520 spi: mosi-data: "3E"
+14646-14678 spi: mosi-data: "3F"
+14803-14835 spi: mosi-data: "40"
+14961-14993 spi: mosi-data: "41"
+15118-15150 spi: mosi-data: "42"
+15275-15307 spi: mosi-data: "43"
+15433-15465 spi: mosi-data: "44"
+15590-15622 spi: mosi-data: "45"
+15747-15779 spi: mosi-data: "46"
+15905-15937 spi: mosi-data: "47"
+16062-16094 spi: mosi-data: "48"
+16220-16252 spi: mosi-data: "49"
+16377-16409 spi: mosi-data: "4A"
+16534-16566 spi: mosi-data: "4B"
+16692-16724 spi: mosi-data: "4C"
+16849-16881 spi: mosi-data: "4D"
+17007-17039 spi: mosi-data: "4E"
+17164-17196 spi: mosi-data: "4F"
+17321-17353 spi: mosi-data: "50"
+17479-17511 spi: mosi-data: "51"
+17636-17668 spi: mosi-data: "52"
+17793-17825 spi: mosi-data: "53"
+17951-17983 spi: mosi-data: "54"
+18108-18140 spi: mosi-data: "55"
+18266-18298 spi: mosi-data: "56"
+18423-18455 spi: mosi-data: "57"
+18580-18612 spi: mosi-data: "58"
+18738-18770 spi: mosi-data: "59"
+18895-18927 spi: mosi-data: "5A"
+19052-19084 spi: mosi-data: "5B"
+19210-19242 spi: mosi-data: "5C"
+19367-19399 spi: mosi-data: "5D"
+19525-19557 spi: mosi-data: "5E"
+19682-19714 spi: mosi-data: "5F"
+19839-19871 spi: mosi-data: "60"
+19997-20029 spi: mosi-data: "61"
+20154-20186 spi: mosi-data: "62"
+20311-20343 spi: mosi-data: "63"
+20469-20501 spi: mosi-data: "64"
+20626-20658 spi: mosi-data: "65"
+20784-20816 spi: mosi-data: "66"
+20941-20973 spi: mosi-data: "67"
+21098-21130 spi: mosi-data: "68"
+21256-21288 spi: mosi-data: "69"
+21413-21445 spi: mosi-data: "6A"
+21571-21603 spi: mosi-data: "6B"
+21728-21760 spi: mosi-data: "6C"
+21885-21917 spi: mosi-data: "6D"
+22043-22075 spi: mosi-data: "6E"
+22200-22232 spi: mosi-data: "6F"
+22357-22389 spi: mosi-data: "70"
+22515-22547 spi: mosi-data: "71"
+22672-22704 spi: mosi-data: "72"
+22830-22862 spi: mosi-data: "73"
+22987-23019 spi: mosi-data: "74"
+23144-23176 spi: mosi-data: "75"
+23302-23334 spi: mosi-data: "76"
+23459-23491 spi: mosi-data: "77"
+23616-23648 spi: mosi-data: "78"
+23774-23806 spi: mosi-data: "79"
+23931-23963 spi: mosi-data: "7A"
+24089-24121 spi: mosi-data: "7B"
+24246-24278 spi: mosi-data: "7C"
+24403-24435 spi: mosi-data: "7D"
+24561-24593 spi: mosi-data: "7E"
+24718-24750 spi: mosi-data: "7F"
+24875-24907 spi: mosi-data: "80"
+25033-25065 spi: mosi-data: "81"
+25190-25222 spi: mosi-data: "82"
+25348-25380 spi: mosi-data: "83"
+25505-25537 spi: mosi-data: "84"
+25662-25694 spi: mosi-data: "85"
+25820-25852 spi: mosi-data: "86"
+25977-26009 spi: mosi-data: "87"
+26134-26166 spi: mosi-data: "88"
+26292-26324 spi: mosi-data: "89"
+26449-26481 spi: mosi-data: "8A"
+26607-26639 spi: mosi-data: "8B"
+26764-26796 spi: mosi-data: "8C"
+26921-26953 spi: mosi-data: "8D"
+27079-27111 spi: mosi-data: "8E"
+27236-27268 spi: mosi-data: "8F"
+27394-27426 spi: mosi-data: "90"
+27551-27583 spi: mosi-data: "91"
+27708-27740 spi: mosi-data: "92"
+27866-27898 spi: mosi-data: "93"
+28023-28055 spi: mosi-data: "94"
+28180-28212 spi: mosi-data: "95"
+28338-28370 spi: mosi-data: "96"
+28495-28527 spi: mosi-data: "97"
+28653-28685 spi: mosi-data: "98"
+28810-28842 spi: mosi-data: "99"
+28967-28999 spi: mosi-data: "9A"
+29125-29157 spi: mosi-data: "9B"
+29282-29314 spi: mosi-data: "9C"
+29439-29471 spi: mosi-data: "9D"
+29597-29629 spi: mosi-data: "9E"
+29754-29786 spi: mosi-data: "9F"
+29912-29944 spi: mosi-data: "A0"
+30069-30101 spi: mosi-data: "A1"
+30226-30258 spi: mosi-data: "A2"
+30384-30416 spi: mosi-data: "A3"
+30541-30573 spi: mosi-data: "A4"
+30698-30730 spi: mosi-data: "A5"
+30856-30888 spi: mosi-data: "A6"
+31013-31045 spi: mosi-data: "A7"
+31171-31203 spi: mosi-data: "A8"
+31328-31360 spi: mosi-data: "A9"
+31485-31517 spi: mosi-data: "AA"
+31643-31675 spi: mosi-data: "AB"
+31800-31832 spi: mosi-data: "AC"
+31957-31989 spi: mosi-data: "AD"
+32115-32147 spi: mosi-data: "AE"
+32272-32304 spi: mosi-data: "AF"
+32430-32462 spi: mosi-data: "B0"
+32587-32619 spi: mosi-data: "B1"
+32744-32776 spi: mosi-data: "B2"
+32902-32934 spi: mosi-data: "B3"
+33059-33091 spi: mosi-data: "B4"
+33217-33249 spi: mosi-data: "B5"
+33374-33406 spi: mosi-data: "B6"
+33531-33563 spi: mosi-data: "B7"
+33689-33721 spi: mosi-data: "B8"
+33846-33878 spi: mosi-data: "B9"
+34003-34035 spi: mosi-data: "BA"
+34161-34193 spi: mosi-data: "BB"
+34318-34350 spi: mosi-data: "BC"
+34476-34508 spi: mosi-data: "BD"
+34633-34665 spi: mosi-data: "BE"
+34790-34822 spi: mosi-data: "BF"
+34948-34980 spi: mosi-data: "C0"
+35105-35137 spi: mosi-data: "C1"
+35262-35294 spi: mosi-data: "C2"
+35420-35452 spi: mosi-data: "C3"
+35577-35609 spi: mosi-data: "C4"
+35735-35767 spi: mosi-data: "C5"
+35892-35924 spi: mosi-data: "C6"
+36049-36081 spi: mosi-data: "C7"
+36207-36239 spi: mosi-data: "C8"
+36364-36396 spi: mosi-data: "C9"
+36521-36553 spi: mosi-data: "CA"
+36679-36711 spi: mosi-data: "CB"
+36836-36868 spi: mosi-data: "CC"
+36994-37026 spi: mosi-data: "CD"
+37151-37183 spi: mosi-data: "CE"
+37308-37340 spi: mosi-data: "CF"
+37466-37498 spi: mosi-data: "D0"
+37623-37655 spi: mosi-data: "D1"
+37780-37812 spi: mosi-data: "D2"
+37938-37970 spi: mosi-data: "D3"
+38095-38127 spi: mosi-data: "D4"
+38253-38285 spi: mosi-data: "D5"
+38410-38442 spi: mosi-data: "D6"
+38567-38599 spi: mosi-data: "D7"
+38725-38757 spi: mosi-data: "D8"
+38882-38914 spi: mosi-data: "D9"
+39040-39072 spi: mosi-data: "DA"
+39197-39229 spi: mosi-data: "DB"
+39354-39386 spi: mosi-data: "DC"
+39512-39544 spi: mosi-data: "DD"
+39669-39701 spi: mosi-data: "DE"
+39826-39858 spi: mosi-data: "DF"
+39984-40016 spi: mosi-data: "E0"
+40141-40173 spi: mosi-data: "E1"
+40299-40331 spi: mosi-data: "E2"
+40456-40488 spi: mosi-data: "E3"
+40613-40645 spi: mosi-data: "E4"
+40771-40803 spi: mosi-data: "E5"
+40928-40960 spi: mosi-data: "E6"
+41085-41117 spi: mosi-data: "E7"
+41243-41275 spi: mosi-data: "E8"
+41400-41432 spi: mosi-data: "E9"
+41558-41590 spi: mosi-data: "EA"
+41715-41747 spi: mosi-data: "EB"
+41872-41904 spi: mosi-data: "EC"
+42030-42062 spi: mosi-data: "ED"
+42187-42219 spi: mosi-data: "EE"
+42344-42376 spi: mosi-data: "EF"
+42502-42534 spi: mosi-data: "F0"
+42659-42691 spi: mosi-data: "F1"
+42817-42849 spi: mosi-data: "F2"
+42974-43006 spi: mosi-data: "F3"
+43131-43163 spi: mosi-data: "F4"
+43289-43321 spi: mosi-data: "F5"
+43446-43478 spi: mosi-data: "F6"
+43604-43636 spi: mosi-data: "F7"
+43761-43793 spi: mosi-data: "F8"
+43918-43950 spi: mosi-data: "F9"
+44076-44108 spi: mosi-data: "FA"
+44233-44265 spi: mosi-data: "FB"
+44390-44422 spi: mosi-data: "FC"
+44548-44580 spi: mosi-data: "FD"
+44705-44737 spi: mosi-data: "FE"
+44863-44895 spi: mosi-data: "FF"
+45020-45052 spi: mosi-data: "00"
+45177-45209 spi: mosi-data: "01"
+45335-45367 spi: mosi-data: "02"
+45492-45524 spi: mosi-data: "03"
+45649-45681 spi: mosi-data: "04"
+45807-45839 spi: mosi-data: "05"
+45964-45996 spi: mosi-data: "06"
+46122-46154 spi: mosi-data: "07"
+46279-46311 spi: mosi-data: "08"
+46436-46468 spi: mosi-data: "09"
+46594-46626 spi: mosi-data: "0A"
+46751-46783 spi: mosi-data: "0B"
+46908-46940 spi: mosi-data: "0C"
+47066-47098 spi: mosi-data: "0D"
+47223-47255 spi: mosi-data: "0E"
+47381-47413 spi: mosi-data: "0F"
+47538-47570 spi: mosi-data: "10"
+47695-47727 spi: mosi-data: "11"
+47853-47885 spi: mosi-data: "12"
+48010-48042 spi: mosi-data: "13"
+48167-48199 spi: mosi-data: "14"
+48325-48357 spi: mosi-data: "15"
+48482-48514 spi: mosi-data: "16"
+48640-48672 spi: mosi-data: "17"
+48797-48829 spi: mosi-data: "18"
+48954-48986 spi: mosi-data: "19"
+49112-49144 spi: mosi-data: "1A"
+49269-49301 spi: mosi-data: "1B"
+49427-49459 spi: mosi-data: "1C"
+49584-49616 spi: mosi-data: "1D"
+49741-49773 spi: mosi-data: "1E"
+49899-49931 spi: mosi-data: "1F"
+50056-50088 spi: mosi-data: "20"
+50213-50245 spi: mosi-data: "21"
+50371-50403 spi: mosi-data: "22"
+50528-50560 spi: mosi-data: "23"
+50686-50718 spi: mosi-data: "24"
+50843-50875 spi: mosi-data: "25"
+51000-51032 spi: mosi-data: "26"
+51158-51190 spi: mosi-data: "27"
+51315-51347 spi: mosi-data: "28"
+51472-51504 spi: mosi-data: "29"
+51630-51662 spi: mosi-data: "2A"
+51787-51819 spi: mosi-data: "2B"
+51945-51977 spi: mosi-data: "2C"
+52102-52134 spi: mosi-data: "2D"
+52259-52291 spi: mosi-data: "2E"
+52417-52449 spi: mosi-data: "2F"
+52574-52606 spi: mosi-data: "30"
+52731-52763 spi: mosi-data: "31"
+52889-52921 spi: mosi-data: "32"
+53046-53078 spi: mosi-data: "33"
+53204-53236 spi: mosi-data: "34"
+53361-53393 spi: mosi-data: "35"
+53518-53550 spi: mosi-data: "36"
+53676-53708 spi: mosi-data: "37"
+53833-53865 spi: mosi-data: "38"
+53990-54022 spi: mosi-data: "39"
+54148-54180 spi: mosi-data: "3A"
+54305-54337 spi: mosi-data: "3B"
+54463-54495 spi: mosi-data: "3C"
+54620-54652 spi: mosi-data: "3D"
+54777-54809 spi: mosi-data: "3E"
+54935-54967 spi: mosi-data: "3F"
+55092-55124 spi: mosi-data: "40"
+55250-55282 spi: mosi-data: "41"
+55407-55439 spi: mosi-data: "42"
+55564-55596 spi: mosi-data: "43"
+55722-55754 spi: mosi-data: "44"
+55879-55911 spi: mosi-data: "45"
+56036-56068 spi: mosi-data: "46"
+56194-56226 spi: mosi-data: "47"
+56351-56383 spi: mosi-data: "48"
+56509-56541 spi: mosi-data: "49"
+56666-56698 spi: mosi-data: "4A"
+56823-56855 spi: mosi-data: "4B"
+56981-57013 spi: mosi-data: "4C"
+57138-57170 spi: mosi-data: "4D"
+57295-57327 spi: mosi-data: "4E"
+57453-57485 spi: mosi-data: "4F"
+57610-57642 spi: mosi-data: "50"
+57768-57800 spi: mosi-data: "51"
+57925-57957 spi: mosi-data: "52"
+58082-58114 spi: mosi-data: "53"
+58240-58272 spi: mosi-data: "54"
+58397-58429 spi: mosi-data: "55"
+58554-58586 spi: mosi-data: "56"
+58712-58744 spi: mosi-data: "57"
+58869-58901 spi: mosi-data: "58"
+59027-59059 spi: mosi-data: "59"
+59184-59216 spi: mosi-data: "5A"
+59341-59373 spi: mosi-data: "5B"
+59499-59531 spi: mosi-data: "5C"
+59656-59688 spi: mosi-data: "5D"
+59813-59845 spi: mosi-data: "5E"
+59971-60003 spi: mosi-data: "5F"
+60128-60160 spi: mosi-data: "60"
+60286-60318 spi: mosi-data: "61"
+60443-60475 spi: mosi-data: "62"
+60600-60632 spi: mosi-data: "63"
+60758-60790 spi: mosi-data: "64"
+60915-60947 spi: mosi-data: "65"
+61073-61105 spi: mosi-data: "66"
+61230-61262 spi: mosi-data: "67"
+61387-61419 spi: mosi-data: "68"
+61545-61577 spi: mosi-data: "69"
+61702-61734 spi: mosi-data: "6A"
+61859-61891 spi: mosi-data: "6B"
+62017-62049 spi: mosi-data: "6C"
+62174-62206 spi: mosi-data: "6D"
+62332-62364 spi: mosi-data: "6E"
+62489-62521 spi: mosi-data: "6F"
+62646-62678 spi: mosi-data: "70"
+62804-62836 spi: mosi-data: "71"
+62961-62993 spi: mosi-data: "72"
+63118-63150 spi: mosi-data: "73"
+63276-63308 spi: mosi-data: "74"
+63433-63465 spi: mosi-data: "75"
+63591-63623 spi: mosi-data: "76"
+63748-63780 spi: mosi-data: "77"
+63905-63937 spi: mosi-data: "78"
+64063-64095 spi: mosi-data: "79"
+64220-64252 spi: mosi-data: "7A"
+64377-64409 spi: mosi-data: "7B"
+64535-64567 spi: mosi-data: "7C"
+64692-64724 spi: mosi-data: "7D"
+64850-64882 spi: mosi-data: "7E"
+65007-65039 spi: mosi-data: "7F"
+65164-65196 spi: mosi-data: "80"
+65322-65354 spi: mosi-data: "81"
+65479-65511 spi: mosi-data: "82"
+65637-65669 spi: mosi-data: "83"
+65794-65826 spi: mosi-data: "84"
+65951-65983 spi: mosi-data: "85"
+66109-66141 spi: mosi-data: "86"
+66266-66298 spi: mosi-data: "87"
+66423-66455 spi: mosi-data: "88"
+66581-66613 spi: mosi-data: "89"
+66738-66770 spi: mosi-data: "8A"
+66896-66928 spi: mosi-data: "8B"
+67053-67085 spi: mosi-data: "8C"
+67210-67242 spi: mosi-data: "8D"
+67368-67400 spi: mosi-data: "8E"
+67525-67557 spi: mosi-data: "8F"
+67682-67714 spi: mosi-data: "90"
+67840-67872 spi: mosi-data: "91"
+67997-68029 spi: mosi-data: "92"
+68155-68187 spi: mosi-data: "93"
+68312-68344 spi: mosi-data: "94"
+68469-68501 spi: mosi-data: "95"
+68627-68659 spi: mosi-data: "96"
+68784-68816 spi: mosi-data: "97"
+68941-68973 spi: mosi-data: "98"
+69099-69131 spi: mosi-data: "99"
+69256-69288 spi: mosi-data: "9A"
+69414-69446 spi: mosi-data: "9B"
+69571-69603 spi: mosi-data: "9C"
+69728-69760 spi: mosi-data: "9D"
+69886-69918 spi: mosi-data: "9E"
+70043-70075 spi: mosi-data: "9F"
+70200-70232 spi: mosi-data: "A0"
+70358-70390 spi: mosi-data: "A1"
+70515-70547 spi: mosi-data: "A2"
+70673-70705 spi: mosi-data: "A3"
+70830-70862 spi: mosi-data: "A4"
+70987-71019 spi: mosi-data: "A5"
+71145-71177 spi: mosi-data: "A6"
+71302-71334 spi: mosi-data: "A7"
+71460-71492 spi: mosi-data: "A8"
+71617-71649 spi: mosi-data: "A9"
+71774-71806 spi: mosi-data: "AA"
+71932-71964 spi: mosi-data: "AB"
+72089-72121 spi: mosi-data: "AC"
+72246-72278 spi: mosi-data: "AD"
+72404-72436 spi: mosi-data: "AE"
+72561-72593 spi: mosi-data: "AF"
+72719-72751 spi: mosi-data: "B0"
+72876-72908 spi: mosi-data: "B1"
+73033-73065 spi: mosi-data: "B2"
+73191-73223 spi: mosi-data: "B3"
+73348-73380 spi: mosi-data: "B4"
+73505-73537 spi: mosi-data: "B5"
+73663-73695 spi: mosi-data: "B6"
+73820-73852 spi: mosi-data: "B7"
+73978-74010 spi: mosi-data: "B8"
+74135-74167 spi: mosi-data: "B9"
+74292-74324 spi: mosi-data: "BA"
+74450-74482 spi: mosi-data: "BB"
+74607-74639 spi: mosi-data: "BC"
+74764-74796 spi: mosi-data: "BD"
+74922-74954 spi: mosi-data: "BE"
+75079-75111 spi: mosi-data: "BF"
+75237-75269 spi: mosi-data: "C0"
+75394-75426 spi: mosi-data: "C1"
+75551-75583 spi: mosi-data: "C2"
+75709-75741 spi: mosi-data: "C3"
+75866-75898 spi: mosi-data: "C4"
+76023-76055 spi: mosi-data: "C5"
+76181-76213 spi: mosi-data: "C6"
+76338-76370 spi: mosi-data: "C7"
+76496-76528 spi: mosi-data: "C8"
+76653-76685 spi: mosi-data: "C9"
+76810-76842 spi: mosi-data: "CA"
+76968-77000 spi: mosi-data: "CB"
+77125-77157 spi: mosi-data: "CC"
+77283-77315 spi: mosi-data: "CD"
+77440-77472 spi: mosi-data: "CE"
+77597-77629 spi: mosi-data: "CF"
+77755-77787 spi: mosi-data: "D0"
+77912-77944 spi: mosi-data: "D1"
+78069-78101 spi: mosi-data: "D2"
+78227-78259 spi: mosi-data: "D3"
+78384-78416 spi: mosi-data: "D4"
+78542-78574 spi: mosi-data: "D5"
+78699-78731 spi: mosi-data: "D6"
+78856-78888 spi: mosi-data: "D7"
+79014-79046 spi: mosi-data: "D8"
+79171-79203 spi: mosi-data: "D9"
+79328-79360 spi: mosi-data: "DA"
+79486-79518 spi: mosi-data: "DB"
+79643-79675 spi: mosi-data: "DC"
+79801-79833 spi: mosi-data: "DD"
+79958-79990 spi: mosi-data: "DE"
+80115-80147 spi: mosi-data: "DF"
+80273-80305 spi: mosi-data: "E0"
+80430-80462 spi: mosi-data: "E1"
+80587-80619 spi: mosi-data: "E2"
+80745-80777 spi: mosi-data: "E3"
+80902-80934 spi: mosi-data: "E4"
+81060-81092 spi: mosi-data: "E5"
+81217-81249 spi: mosi-data: "E6"
+81374-81406 spi: mosi-data: "E7"
+81532-81564 spi: mosi-data: "E8"
+81689-81721 spi: mosi-data: "E9"
+81846-81878 spi: mosi-data: "EA"
+82004-82036 spi: mosi-data: "EB"
+82161-82193 spi: mosi-data: "EC"
+82319-82351 spi: mosi-data: "ED"
+82476-82508 spi: mosi-data: "EE"
+82633-82665 spi: mosi-data: "EF"
+82791-82823 spi: mosi-data: "F0"
+82948-82980 spi: mosi-data: "F1"
+83106-83138 spi: mosi-data: "F2"
+83263-83295 spi: mosi-data: "F3"
+83420-83452 spi: mosi-data: "F4"
+83578-83610 spi: mosi-data: "F5"
+83735-83767 spi: mosi-data: "F6"
+83892-83924 spi: mosi-data: "F7"
+84050-84082 spi: mosi-data: "F8"
+84207-84239 spi: mosi-data: "F9"
+84365-84397 spi: mosi-data: "FA"
+84522-84554 spi: mosi-data: "FB"
+84679-84711 spi: mosi-data: "FC"
+84837-84869 spi: mosi-data: "FD"
+84994-85026 spi: mosi-data: "FE"
+85151-85183 spi: mosi-data: "FF"
+85309-85341 spi: mosi-data: "00"
+85466-85498 spi: mosi-data: "01"
+85624-85656 spi: mosi-data: "02"
+85781-85813 spi: mosi-data: "03"
+85938-85970 spi: mosi-data: "04"
+86096-86128 spi: mosi-data: "05"
+86253-86285 spi: mosi-data: "06"
+86410-86442 spi: mosi-data: "07"
+86568-86600 spi: mosi-data: "08"
+86725-86757 spi: mosi-data: "09"
+86883-86915 spi: mosi-data: "0A"
+87040-87072 spi: mosi-data: "0B"
+87197-87229 spi: mosi-data: "0C"
+87355-87387 spi: mosi-data: "0D"
+87512-87544 spi: mosi-data: "0E"
+87670-87702 spi: mosi-data: "0F"
+87827-87859 spi: mosi-data: "10"
+87984-88016 spi: mosi-data: "11"
+88142-88174 spi: mosi-data: "12"
+88299-88331 spi: mosi-data: "13"
+88456-88488 spi: mosi-data: "14"
+88614-88646 spi: mosi-data: "15"
+88771-88803 spi: mosi-data: "16"
+88929-88961 spi: mosi-data: "17"
+89086-89118 spi: mosi-data: "18"
+89243-89275 spi: mosi-data: "19"
+89401-89433 spi: mosi-data: "1A"
+89558-89590 spi: mosi-data: "1B"
+89715-89747 spi: mosi-data: "1C"
+89873-89905 spi: mosi-data: "1D"
+90030-90062 spi: mosi-data: "1E"
+90188-90220 spi: mosi-data: "1F"
+90345-90377 spi: mosi-data: "20"
+90502-90534 spi: mosi-data: "21"
+90660-90692 spi: mosi-data: "22"
+90817-90849 spi: mosi-data: "23"
+90974-91006 spi: mosi-data: "24"
+91132-91164 spi: mosi-data: "25"
+91289-91321 spi: mosi-data: "26"
+91447-91479 spi: mosi-data: "27"
+91604-91636 spi: mosi-data: "28"
+91761-91793 spi: mosi-data: "29"
+91919-91951 spi: mosi-data: "2A"
+92076-92108 spi: mosi-data: "2B"
+92233-92265 spi: mosi-data: "2C"
+92391-92423 spi: mosi-data: "2D"
+92548-92580 spi: mosi-data: "2E"
+92706-92738 spi: mosi-data: "2F"
+92863-92895 spi: mosi-data: "30"
+93020-93052 spi: mosi-data: "31"
+93178-93210 spi: mosi-data: "32"
+93335-93367 spi: mosi-data: "33"
+93493-93525 spi: mosi-data: "34"
+93650-93682 spi: mosi-data: "35"
+93807-93839 spi: mosi-data: "36"
+93965-93997 spi: mosi-data: "37"
+94122-94154 spi: mosi-data: "38"
+94279-94311 spi: mosi-data: "39"
+94437-94469 spi: mosi-data: "3A"
+94594-94626 spi: mosi-data: "3B"
+94752-94784 spi: mosi-data: "3C"
+94909-94941 spi: mosi-data: "3D"
+95066-95098 spi: mosi-data: "3E"
+95224-95256 spi: mosi-data: "3F"
+95381-95413 spi: mosi-data: "40"
+95538-95570 spi: mosi-data: "41"
+95696-95728 spi: mosi-data: "42"
+95853-95885 spi: mosi-data: "43"
+96011-96043 spi: mosi-data: "44"
+96168-96200 spi: mosi-data: "45"
+96325-96357 spi: mosi-data: "46"
+96483-96515 spi: mosi-data: "47"
+96640-96672 spi: mosi-data: "48"
+96797-96829 spi: mosi-data: "49"
+96955-96987 spi: mosi-data: "4A"
+97112-97144 spi: mosi-data: "4B"
+97270-97302 spi: mosi-data: "4C"
+97427-97459 spi: mosi-data: "4D"
+97584-97616 spi: mosi-data: "4E"
+97742-97774 spi: mosi-data: "4F"
+97899-97931 spi: mosi-data: "50"
+98056-98088 spi: mosi-data: "51"
+98214-98246 spi: mosi-data: "52"
+98371-98403 spi: mosi-data: "53"
+98529-98561 spi: mosi-data: "54"
+98686-98718 spi: mosi-data: "55"
+98843-98875 spi: mosi-data: "56"
+99001-99033 spi: mosi-data: "57"
+99158-99190 spi: mosi-data: "58"
+99316-99348 spi: mosi-data: "59"
+99473-99505 spi: mosi-data: "5A"
+99630-99662 spi: mosi-data: "5B"
+99788-99820 spi: mosi-data: "5C"
+99945-99977 spi: mosi-data: "5D"
+100102-100134 spi: mosi-data: "5E"
+100260-100292 spi: mosi-data: "5F"
+100417-100449 spi: mosi-data: "60"
+100575-100607 spi: mosi-data: "61"
+100732-100764 spi: mosi-data: "62"
+100889-100921 spi: mosi-data: "63"
+101047-101079 spi: mosi-data: "64"
+101204-101236 spi: mosi-data: "65"
+101361-101393 spi: mosi-data: "66"
+101519-101551 spi: mosi-data: "67"
+101676-101708 spi: mosi-data: "68"
+101834-101866 spi: mosi-data: "69"
+101991-102023 spi: mosi-data: "6A"
+102148-102180 spi: mosi-data: "6B"
+102306-102338 spi: mosi-data: "6C"
+102463-102495 spi: mosi-data: "6D"
+102620-102652 spi: mosi-data: "6E"
+102778-102810 spi: mosi-data: "6F"
+102935-102967 spi: mosi-data: "70"
+103093-103125 spi: mosi-data: "71"
+103250-103282 spi: mosi-data: "72"
+103407-103439 spi: mosi-data: "73"
+103565-103597 spi: mosi-data: "74"
+103722-103754 spi: mosi-data: "75"
+103879-103911 spi: mosi-data: "76"
+104037-104069 spi: mosi-data: "77"
+104194-104226 spi: mosi-data: "78"
+104352-104384 spi: mosi-data: "79"
+104509-104541 spi: mosi-data: "7A"
+104666-104698 spi: mosi-data: "7B"
+104824-104856 spi: mosi-data: "7C"
+104981-105013 spi: mosi-data: "7D"
+105139-105171 spi: mosi-data: "7E"
+105296-105328 spi: mosi-data: "7F"
+105453-105485 spi: mosi-data: "80"
+105611-105643 spi: mosi-data: "81"
+105768-105800 spi: mosi-data: "82"
+105925-105957 spi: mosi-data: "83"
+106083-106115 spi: mosi-data: "84"
+106240-106272 spi: mosi-data: "85"
+106398-106430 spi: mosi-data: "86"
+106555-106587 spi: mosi-data: "87"
+106712-106744 spi: mosi-data: "88"
+106870-106902 spi: mosi-data: "89"
+107027-107059 spi: mosi-data: "8A"
+107184-107216 spi: mosi-data: "8B"
+107342-107374 spi: mosi-data: "8C"
+107499-107531 spi: mosi-data: "8D"
+107657-107689 spi: mosi-data: "8E"
+107814-107846 spi: mosi-data: "8F"
+107971-108003 spi: mosi-data: "90"
+108129-108161 spi: mosi-data: "91"
+108286-108318 spi: mosi-data: "92"
+108443-108475 spi: mosi-data: "93"
+108601-108633 spi: mosi-data: "94"
+108758-108790 spi: mosi-data: "95"
+108916-108948 spi: mosi-data: "96"
+109073-109105 spi: mosi-data: "97"
+109230-109262 spi: mosi-data: "98"
+109388-109420 spi: mosi-data: "99"
+109545-109577 spi: mosi-data: "9A"
+109703-109735 spi: mosi-data: "9B"
+109860-109892 spi: mosi-data: "9C"
+110017-110049 spi: mosi-data: "9D"
+110175-110207 spi: mosi-data: "9E"
+110332-110364 spi: mosi-data: "9F"
+110489-110521 spi: mosi-data: "A0"
+110647-110679 spi: mosi-data: "A1"
+110804-110836 spi: mosi-data: "A2"
+110962-110994 spi: mosi-data: "A3"
+111119-111151 spi: mosi-data: "A4"
+111276-111308 spi: mosi-data: "A5"
+111434-111466 spi: mosi-data: "A6"
+111591-111623 spi: mosi-data: "A7"
+111748-111780 spi: mosi-data: "A8"
+111906-111938 spi: mosi-data: "A9"
+112063-112095 spi: mosi-data: "AA"
+112221-112253 spi: mosi-data: "AB"
+112378-112410 spi: mosi-data: "AC"
+112535-112567 spi: mosi-data: "AD"
+112693-112725 spi: mosi-data: "AE"
+112850-112882 spi: mosi-data: "AF"
+113007-113039 spi: mosi-data: "B0"
+113165-113197 spi: mosi-data: "B1"
+113322-113354 spi: mosi-data: "B2"
+113480-113512 spi: mosi-data: "B3"
+113637-113669 spi: mosi-data: "B4"
+113794-113826 spi: mosi-data: "B5"
+113952-113984 spi: mosi-data: "B6"
+114109-114141 spi: mosi-data: "B7"
+114266-114298 spi: mosi-data: "B8"
+114424-114456 spi: mosi-data: "B9"
+114581-114613 spi: mosi-data: "BA"
+114739-114771 spi: mosi-data: "BB"
+114896-114928 spi: mosi-data: "BC"
+115053-115085 spi: mosi-data: "BD"
+115211-115243 spi: mosi-data: "BE"
+115368-115400 spi: mosi-data: "BF"
+115526-115558 spi: mosi-data: "C0"
+115683-115715 spi: mosi-data: "C1"
+115840-115872 spi: mosi-data: "C2"
+115998-116030 spi: mosi-data: "C3"
+116155-116187 spi: mosi-data: "C4"
+116312-116344 spi: mosi-data: "C5"
+116470-116502 spi: mosi-data: "C6"
+116627-116659 spi: mosi-data: "C7"
+116785-116817 spi: mosi-data: "C8"
+116942-116974 spi: mosi-data: "C9"
+117099-117131 spi: mosi-data: "CA"
+117257-117289 spi: mosi-data: "CB"
+117414-117446 spi: mosi-data: "CC"
+117571-117603 spi: mosi-data: "CD"
+117729-117761 spi: mosi-data: "CE"
+117886-117918 spi: mosi-data: "CF"
+118044-118076 spi: mosi-data: "D0"
+118201-118233 spi: mosi-data: "D1"
+118358-118390 spi: mosi-data: "D2"
+118516-118548 spi: mosi-data: "D3"
+118673-118705 spi: mosi-data: "D4"
+118830-118862 spi: mosi-data: "D5"
+118988-119020 spi: mosi-data: "D6"
+119145-119177 spi: mosi-data: "D7"
+119303-119335 spi: mosi-data: "D8"
+119460-119492 spi: mosi-data: "D9"
+119617-119649 spi: mosi-data: "DA"
+119775-119807 spi: mosi-data: "DB"
+119932-119964 spi: mosi-data: "DC"
+120089-120121 spi: mosi-data: "DD"
+120247-120279 spi: mosi-data: "DE"
+120404-120436 spi: mosi-data: "DF"
+120562-120594 spi: mosi-data: "E0"
+120719-120751 spi: mosi-data: "E1"
+120876-120908 spi: mosi-data: "E2"
+121034-121066 spi: mosi-data: "E3"
+121191-121223 spi: mosi-data: "E4"
+121349-121381 spi: mosi-data: "E5"
+121506-121538 spi: mosi-data: "E6"
+121663-121695 spi: mosi-data: "E7"
+121821-121853 spi: mosi-data: "E8"
+121978-122010 spi: mosi-data: "E9"
+122135-122167 spi: mosi-data: "EA"
+122293-122325 spi: mosi-data: "EB"
+122450-122482 spi: mosi-data: "EC"
+122608-122640 spi: mosi-data: "ED"
+122765-122797 spi: mosi-data: "EE"
+122922-122954 spi: mosi-data: "EF"
+123080-123112 spi: mosi-data: "F0"
+123237-123269 spi: mosi-data: "F1"
+123394-123426 spi: mosi-data: "F2"
+123552-123584 spi: mosi-data: "F3"
+123709-123741 spi: mosi-data: "F4"
+123867-123899 spi: mosi-data: "F5"
+124024-124056 spi: mosi-data: "F6"
+124181-124213 spi: mosi-data: "F7"
+124339-124371 spi: mosi-data: "F8"
+124496-124528 spi: mosi-data: "F9"
+124653-124685 spi: mosi-data: "FA"
+124811-124843 spi: mosi-data: "FB"
+124968-125000 spi: mosi-data: "FC"
+125126-125158 spi: mosi-data: "FD"
+125283-125315 spi: mosi-data: "FE"
+125440-125472 spi: mosi-data: "FF"
+125598-125630 spi: mosi-data: "00"
+125755-125787 spi: mosi-data: "01"
+125912-125944 spi: mosi-data: "02"
+126070-126102 spi: mosi-data: "03"
+126227-126259 spi: mosi-data: "04"
+126385-126417 spi: mosi-data: "05"
+126542-126574 spi: mosi-data: "06"
+126699-126731 spi: mosi-data: "07"
+126857-126889 spi: mosi-data: "08"
+127014-127046 spi: mosi-data: "09"
+127172-127204 spi: mosi-data: "0A"
+127329-127361 spi: mosi-data: "0B"
+127486-127518 spi: mosi-data: "0C"
+127644-127676 spi: mosi-data: "0D"
+127801-127833 spi: mosi-data: "0E"
+127958-127990 spi: mosi-data: "0F"
+128116-128148 spi: mosi-data: "10"
+128273-128305 spi: mosi-data: "11"
+128431-128463 spi: mosi-data: "12"
+128588-128620 spi: mosi-data: "13"
+128745-128777 spi: mosi-data: "14"
+128903-128935 spi: mosi-data: "15"
+129060-129092 spi: mosi-data: "16"
+129217-129249 spi: mosi-data: "17"
+129375-129407 spi: mosi-data: "18"
+129532-129564 spi: mosi-data: "19"
+129690-129722 spi: mosi-data: "1A"
+129847-129879 spi: mosi-data: "1B"
+130004-130036 spi: mosi-data: "1C"
+130162-130194 spi: mosi-data: "1D"
+130319-130351 spi: mosi-data: "1E"
+130476-130508 spi: mosi-data: "1F"
+130634-130666 spi: mosi-data: "20"
+130791-130823 spi: mosi-data: "21"
+130949-130981 spi: mosi-data: "22"
+131106-131138 spi: mosi-data: "23"
+131263-131295 spi: mosi-data: "24"
+131421-131453 spi: mosi-data: "25"
+131578-131610 spi: mosi-data: "26"
+131736-131768 spi: mosi-data: "27"
+131893-131925 spi: mosi-data: "28"
+132050-132082 spi: mosi-data: "29"
+132208-132240 spi: mosi-data: "2A"
+132365-132397 spi: mosi-data: "2B"
+132522-132554 spi: mosi-data: "2C"
+132680-132712 spi: mosi-data: "2D"
+132837-132869 spi: mosi-data: "2E"
+132995-133027 spi: mosi-data: "2F"
+133152-133184 spi: mosi-data: "30"
+133309-133341 spi: mosi-data: "31"
+133467-133499 spi: mosi-data: "32"
+133624-133656 spi: mosi-data: "33"
+133781-133813 spi: mosi-data: "34"
+133939-133971 spi: mosi-data: "35"
+134096-134128 spi: mosi-data: "36"
+134254-134286 spi: mosi-data: "37"
+134411-134443 spi: mosi-data: "38"
+134568-134600 spi: mosi-data: "39"
+134726-134758 spi: mosi-data: "3A"
+134883-134915 spi: mosi-data: "3B"
+135040-135072 spi: mosi-data: "3C"
+135198-135230 spi: mosi-data: "3D"
+135355-135387 spi: mosi-data: "3E"
+135513-135545 spi: mosi-data: "3F"
+135670-135702 spi: mosi-data: "40"
+135827-135859 spi: mosi-data: "41"
+135985-136017 spi: mosi-data: "42"
+136142-136174 spi: mosi-data: "43"
+136299-136331 spi: mosi-data: "44"
+136457-136489 spi: mosi-data: "45"
+136614-136646 spi: mosi-data: "46"
+136772-136804 spi: mosi-data: "47"
+136929-136961 spi: mosi-data: "48"
+137086-137118 spi: mosi-data: "49"
+137244-137276 spi: mosi-data: "4A"
+137401-137433 spi: mosi-data: "4B"
+137559-137591 spi: mosi-data: "4C"
+137716-137748 spi: mosi-data: "4D"
+137873-137905 spi: mosi-data: "4E"
+138031-138063 spi: mosi-data: "4F"
+138188-138220 spi: mosi-data: "50"
+138345-138377 spi: mosi-data: "51"
+138503-138535 spi: mosi-data: "52"
+138660-138692 spi: mosi-data: "53"
+138818-138850 spi: mosi-data: "54"
+138975-139007 spi: mosi-data: "55"
+139132-139164 spi: mosi-data: "56"
+139290-139322 spi: mosi-data: "57"
+139447-139479 spi: mosi-data: "58"
+139604-139636 spi: mosi-data: "59"
+139762-139794 spi: mosi-data: "5A"
+139919-139951 spi: mosi-data: "5B"
+140077-140109 spi: mosi-data: "5C"
+140234-140266 spi: mosi-data: "5D"
+140391-140423 spi: mosi-data: "5E"
+140549-140581 spi: mosi-data: "5F"
+140706-140738 spi: mosi-data: "60"
+140863-140895 spi: mosi-data: "61"
+141021-141053 spi: mosi-data: "62"
+141178-141210 spi: mosi-data: "63"
+141336-141368 spi: mosi-data: "64"
+141493-141525 spi: mosi-data: "65"
+141650-141682 spi: mosi-data: "66"
+141808-141840 spi: mosi-data: "67"
+141965-141997 spi: mosi-data: "68"
+142122-142154 spi: mosi-data: "69"
+142280-142312 spi: mosi-data: "6A"
+142437-142469 spi: mosi-data: "6B"
+142595-142627 spi: mosi-data: "6C"
+142752-142784 spi: mosi-data: "6D"
+142909-142941 spi: mosi-data: "6E"
+143067-143099 spi: mosi-data: "6F"
+143224-143256 spi: mosi-data: "70"
+143382-143414 spi: mosi-data: "71"
+143539-143571 spi: mosi-data: "72"
+143696-143728 spi: mosi-data: "73"
+143854-143886 spi: mosi-data: "74"
+144011-144043 spi: mosi-data: "75"
+144168-144200 spi: mosi-data: "76"
+144326-144358 spi: mosi-data: "77"
+144483-144515 spi: mosi-data: "78"
+144641-144673 spi: mosi-data: "79"
+144798-144830 spi: mosi-data: "7A"
+144955-144987 spi: mosi-data: "7B"
+145113-145145 spi: mosi-data: "7C"
+145270-145302 spi: mosi-data: "7D"
+145427-145459 spi: mosi-data: "7E"
+145585-145617 spi: mosi-data: "7F"
+145742-145774 spi: mosi-data: "80"
+145900-145932 spi: mosi-data: "81"
+146057-146089 spi: mosi-data: "82"
+146214-146246 spi: mosi-data: "83"
+146372-146404 spi: mosi-data: "84"
+146529-146561 spi: mosi-data: "85"
+146686-146718 spi: mosi-data: "86"
+146844-146876 spi: mosi-data: "87"
+147001-147033 spi: mosi-data: "88"
+147159-147191 spi: mosi-data: "89"
+147316-147348 spi: mosi-data: "8A"
+147473-147505 spi: mosi-data: "8B"
+147631-147663 spi: mosi-data: "8C"
+147788-147820 spi: mosi-data: "8D"
+147945-147977 spi: mosi-data: "8E"
+148103-148135 spi: mosi-data: "8F"
+148260-148292 spi: mosi-data: "90"
+148418-148450 spi: mosi-data: "91"
+148575-148607 spi: mosi-data: "92"
+148732-148764 spi: mosi-data: "93"
+148890-148922 spi: mosi-data: "94"
+149047-149079 spi: mosi-data: "95"
+149205-149237 spi: mosi-data: "96"
+149362-149394 spi: mosi-data: "97"
+149519-149551 spi: mosi-data: "98"
+149677-149709 spi: mosi-data: "99"
+149834-149866 spi: mosi-data: "9A"
+149991-150023 spi: mosi-data: "9B"
+150149-150181 spi: mosi-data: "9C"
+150306-150338 spi: mosi-data: "9D"
+150464-150496 spi: mosi-data: "9E"
+150621-150653 spi: mosi-data: "9F"
+150778-150810 spi: mosi-data: "A0"
+150936-150968 spi: mosi-data: "A1"
+151093-151125 spi: mosi-data: "A2"
+151250-151282 spi: mosi-data: "A3"
+151408-151440 spi: mosi-data: "A4"
+151565-151597 spi: mosi-data: "A5"
+151723-151755 spi: mosi-data: "A6"
+151880-151912 spi: mosi-data: "A7"
+152037-152069 spi: mosi-data: "A8"
+152195-152227 spi: mosi-data: "A9"
+152352-152384 spi: mosi-data: "AA"
+152509-152541 spi: mosi-data: "AB"
+152667-152699 spi: mosi-data: "AC"
+152824-152856 spi: mosi-data: "AD"
+152982-153014 spi: mosi-data: "AE"
+153139-153171 spi: mosi-data: "AF"
+153296-153328 spi: mosi-data: "B0"
+153454-153486 spi: mosi-data: "B1"
+153611-153643 spi: mosi-data: "B2"
+153769-153801 spi: mosi-data: "B3"
+153926-153958 spi: mosi-data: "B4"
+154083-154115 spi: mosi-data: "B5"
+154241-154273 spi: mosi-data: "B6"
+154398-154430 spi: mosi-data: "B7"
+154555-154587 spi: mosi-data: "B8"
+154713-154745 spi: mosi-data: "B9"
+154870-154902 spi: mosi-data: "BA"
+155028-155060 spi: mosi-data: "BB"
+155185-155217 spi: mosi-data: "BC"
+155342-155374 spi: mosi-data: "BD"
+155500-155532 spi: mosi-data: "BE"
+155657-155689 spi: mosi-data: "BF"
+155814-155846 spi: mosi-data: "C0"
+155972-156004 spi: mosi-data: "C1"
+156129-156161 spi: mosi-data: "C2"
+156287-156319 spi: mosi-data: "C3"
+156444-156476 spi: mosi-data: "C4"
+156601-156633 spi: mosi-data: "C5"
+156759-156791 spi: mosi-data: "C6"
+156916-156948 spi: mosi-data: "C7"
+157073-157105 spi: mosi-data: "C8"
+157231-157263 spi: mosi-data: "C9"
+157388-157420 spi: mosi-data: "CA"
+157546-157578 spi: mosi-data: "CB"
+157703-157735 spi: mosi-data: "CC"
+157860-157892 spi: mosi-data: "CD"
+158018-158050 spi: mosi-data: "CE"
+158175-158207 spi: mosi-data: "CF"
+158332-158364 spi: mosi-data: "D0"
+158490-158522 spi: mosi-data: "D1"
+158647-158679 spi: mosi-data: "D2"
+158805-158837 spi: mosi-data: "D3"
+158962-158994 spi: mosi-data: "D4"
+159119-159151 spi: mosi-data: "D5"
+159277-159309 spi: mosi-data: "D6"
+159434-159466 spi: mosi-data: "D7"
+159592-159624 spi: mosi-data: "D8"
+159749-159781 spi: mosi-data: "D9"
+159906-159938 spi: mosi-data: "DA"
+160064-160096 spi: mosi-data: "DB"
+160221-160253 spi: mosi-data: "DC"
+160378-160410 spi: mosi-data: "DD"
+160536-160568 spi: mosi-data: "DE"
+160693-160725 spi: mosi-data: "DF"
+160851-160883 spi: mosi-data: "E0"
+161008-161040 spi: mosi-data: "E1"
+161165-161197 spi: mosi-data: "E2"
+161323-161355 spi: mosi-data: "E3"
+161480-161512 spi: mosi-data: "E4"
+161637-161669 spi: mosi-data: "E5"
+161795-161827 spi: mosi-data: "E6"
+161952-161984 spi: mosi-data: "E7"
+162110-162142 spi: mosi-data: "E8"
+162267-162299 spi: mosi-data: "E9"
+162424-162456 spi: mosi-data: "EA"
+162582-162614 spi: mosi-data: "EB"
+162739-162771 spi: mosi-data: "EC"
+162896-162928 spi: mosi-data: "ED"
+163054-163086 spi: mosi-data: "EE"
+163211-163243 spi: mosi-data: "EF"
+163369-163401 spi: mosi-data: "F0"
+163526-163558 spi: mosi-data: "F1"
+163683-163715 spi: mosi-data: "F2"
+163841-163873 spi: mosi-data: "F3"
+163998-164030 spi: mosi-data: "F4"
+164155-164187 spi: mosi-data: "F5"
+164313-164345 spi: mosi-data: "F6"
+164470-164502 spi: mosi-data: "F7"
+164628-164660 spi: mosi-data: "F8"
+164785-164817 spi: mosi-data: "F9"
+164942-164974 spi: mosi-data: "FA"
+165100-165132 spi: mosi-data: "FB"
+165257-165289 spi: mosi-data: "FC"
+165415-165447 spi: mosi-data: "FD"
+165572-165604 spi: mosi-data: "FE"
+165729-165761 spi: mosi-data: "FF"
+165887-165919 spi: mosi-data: "00"
+166044-166076 spi: mosi-data: "01"
+166201-166233 spi: mosi-data: "02"
+166359-166391 spi: mosi-data: "03"
+166516-166548 spi: mosi-data: "04"
+166674-166706 spi: mosi-data: "05"
+166831-166863 spi: mosi-data: "06"
+166988-167020 spi: mosi-data: "07"
+167146-167178 spi: mosi-data: "08"
+167303-167335 spi: mosi-data: "09"
+167460-167492 spi: mosi-data: "0A"
+167618-167650 spi: mosi-data: "0B"
+167775-167807 spi: mosi-data: "0C"
+167933-167965 spi: mosi-data: "0D"
+168090-168122 spi: mosi-data: "0E"
+168247-168279 spi: mosi-data: "0F"
+168405-168437 spi: mosi-data: "10"
+168562-168594 spi: mosi-data: "11"
+168719-168751 spi: mosi-data: "12"
+168877-168909 spi: mosi-data: "13"
+169034-169066 spi: mosi-data: "14"
+169192-169224 spi: mosi-data: "15"
+169349-169381 spi: mosi-data: "16"
+169506-169538 spi: mosi-data: "17"
+169664-169696 spi: mosi-data: "18"
+169821-169853 spi: mosi-data: "19"
+169978-170010 spi: mosi-data: "1A"
+170136-170168 spi: mosi-data: "1B"
+170293-170325 spi: mosi-data: "1C"
+170451-170483 spi: mosi-data: "1D"
+170608-170640 spi: mosi-data: "1E"
+170765-170797 spi: mosi-data: "1F"
+170923-170955 spi: mosi-data: "20"
+171080-171112 spi: mosi-data: "21"
+171238-171270 spi: mosi-data: "22"
+171395-171427 spi: mosi-data: "23"
+171552-171584 spi: mosi-data: "24"
+171710-171742 spi: mosi-data: "25"
+171867-171899 spi: mosi-data: "26"
+172024-172056 spi: mosi-data: "27"
+172182-172214 spi: mosi-data: "28"
+172339-172371 spi: mosi-data: "29"
+172497-172529 spi: mosi-data: "2A"
+172654-172686 spi: mosi-data: "2B"
+172811-172843 spi: mosi-data: "2C"
+172969-173001 spi: mosi-data: "2D"
+173126-173158 spi: mosi-data: "2E"
+173283-173315 spi: mosi-data: "2F"
+173441-173473 spi: mosi-data: "30"
+173598-173630 spi: mosi-data: "31"
+173756-173788 spi: mosi-data: "32"
+173913-173945 spi: mosi-data: "33"
+174070-174102 spi: mosi-data: "34"
+174228-174260 spi: mosi-data: "35"
+174385-174417 spi: mosi-data: "36"
+174542-174574 spi: mosi-data: "37"
+174700-174732 spi: mosi-data: "38"
+174857-174889 spi: mosi-data: "39"
+175015-175047 spi: mosi-data: "3A"
+175172-175204 spi: mosi-data: "3B"
+175329-175361 spi: mosi-data: "3C"
+175487-175519 spi: mosi-data: "3D"
+175644-175676 spi: mosi-data: "3E"
+175801-175835 spi: mosi-data: "3F"
+175959-175991 spi: mosi-data: "40"
+176116-176148 spi: mosi-data: "41"
+176274-176306 spi: mosi-data: "42"
+176431-176463 spi: mosi-data: "43"
+176588-176620 spi: mosi-data: "44"
+176746-176778 spi: mosi-data: "45"
+176903-176935 spi: mosi-data: "46"
+177061-177093 spi: mosi-data: "47"
+177218-177250 spi: mosi-data: "48"
+177375-177407 spi: mosi-data: "49"
+177533-177565 spi: mosi-data: "4A"
+177690-177722 spi: mosi-data: "4B"
+177847-177879 spi: mosi-data: "4C"
+178005-178037 spi: mosi-data: "4D"
+178162-178194 spi: mosi-data: "4E"
+178320-178352 spi: mosi-data: "4F"
+178477-178509 spi: mosi-data: "50"
+178634-178666 spi: mosi-data: "51"
+178792-178824 spi: mosi-data: "52"
+178949-178981 spi: mosi-data: "53"
+179106-179138 spi: mosi-data: "54"
+179264-179296 spi: mosi-data: "55"
+179421-179453 spi: mosi-data: "56"
+179579-179611 spi: mosi-data: "57"
+179736-179768 spi: mosi-data: "58"
+179893-179925 spi: mosi-data: "59"
+180051-180083 spi: mosi-data: "5A"
+180208-180240 spi: mosi-data: "5B"
+180365-180397 spi: mosi-data: "5C"
+180523-180555 spi: mosi-data: "5D"
+180680-180712 spi: mosi-data: "5E"
+180838-180870 spi: mosi-data: "5F"
+180995-181027 spi: mosi-data: "60"
+181152-181184 spi: mosi-data: "61"
+181310-181342 spi: mosi-data: "62"
+181467-181499 spi: mosi-data: "63"
+181625-181657 spi: mosi-data: "64"
+181782-181814 spi: mosi-data: "65"
+181939-181971 spi: mosi-data: "66"
+182097-182129 spi: mosi-data: "67"
+182254-182286 spi: mosi-data: "68"
+182411-182443 spi: mosi-data: "69"
+182569-182601 spi: mosi-data: "6A"
+182726-182758 spi: mosi-data: "6B"
+182884-182916 spi: mosi-data: "6C"
+183041-183073 spi: mosi-data: "6D"
+183198-183230 spi: mosi-data: "6E"
+183356-183388 spi: mosi-data: "6F"
+183513-183545 spi: mosi-data: "70"
+183670-183702 spi: mosi-data: "71"
+183828-183860 spi: mosi-data: "72"
+183985-184017 spi: mosi-data: "73"
+184143-184175 spi: mosi-data: "74"
+184300-184332 spi: mosi-data: "75"
+184457-184489 spi: mosi-data: "76"
+184615-184647 spi: mosi-data: "77"
+184772-184804 spi: mosi-data: "78"
+184929-184961 spi: mosi-data: "79"
+185087-185119 spi: mosi-data: "7A"
+185244-185276 spi: mosi-data: "7B"
+185402-185434 spi: mosi-data: "7C"
+185559-185591 spi: mosi-data: "7D"
+185716-185748 spi: mosi-data: "7E"
+185874-185906 spi: mosi-data: "7F"
+186031-186063 spi: mosi-data: "80"
+186188-186220 spi: mosi-data: "81"
+186346-186378 spi: mosi-data: "82"
+186503-186535 spi: mosi-data: "83"
+186661-186693 spi: mosi-data: "84"
+186818-186850 spi: mosi-data: "85"
+186975-187007 spi: mosi-data: "86"
+187133-187165 spi: mosi-data: "87"
+187290-187322 spi: mosi-data: "88"
+187448-187480 spi: mosi-data: "89"
+187605-187637 spi: mosi-data: "8A"
+187762-187794 spi: mosi-data: "8B"
+187920-187952 spi: mosi-data: "8C"
+188077-188109 spi: mosi-data: "8D"
+188234-188266 spi: mosi-data: "8E"
+188392-188424 spi: mosi-data: "8F"
+188549-188581 spi: mosi-data: "90"
+188707-188739 spi: mosi-data: "91"
+188864-188896 spi: mosi-data: "92"
+189021-189053 spi: mosi-data: "93"
+189179-189211 spi: mosi-data: "94"
+189336-189368 spi: mosi-data: "95"
+189493-189525 spi: mosi-data: "96"
+189651-189683 spi: mosi-data: "97"
+189808-189840 spi: mosi-data: "98"
+189966-189998 spi: mosi-data: "99"
+190123-190155 spi: mosi-data: "9A"
+190280-190312 spi: mosi-data: "9B"
+190438-190470 spi: mosi-data: "9C"
+190595-190627 spi: mosi-data: "9D"
+190752-190784 spi: mosi-data: "9E"
+190910-190942 spi: mosi-data: "9F"
+191067-191099 spi: mosi-data: "A0"
+191225-191257 spi: mosi-data: "A1"
+191382-191414 spi: mosi-data: "A2"
+191539-191571 spi: mosi-data: "A3"
+191697-191729 spi: mosi-data: "A4"
+191854-191886 spi: mosi-data: "A5"
+192011-192043 spi: mosi-data: "A6"
+192169-192201 spi: mosi-data: "A7"
+192326-192358 spi: mosi-data: "A8"
+192484-192516 spi: mosi-data: "A9"
+192641-192673 spi: mosi-data: "AA"
+192798-192830 spi: mosi-data: "AB"
+192956-192988 spi: mosi-data: "AC"
+193113-193145 spi: mosi-data: "AD"
+193271-193303 spi: mosi-data: "AE"
+193428-193460 spi: mosi-data: "AF"
+193585-193617 spi: mosi-data: "B0"
+193743-193775 spi: mosi-data: "B1"
+193900-193932 spi: mosi-data: "B2"
+194057-194089 spi: mosi-data: "B3"
+194215-194247 spi: mosi-data: "B4"
+194372-194404 spi: mosi-data: "B5"
+194530-194562 spi: mosi-data: "B6"
+194687-194719 spi: mosi-data: "B7"
+194844-194876 spi: mosi-data: "B8"
+195002-195034 spi: mosi-data: "B9"
+195159-195191 spi: mosi-data: "BA"
+195316-195348 spi: mosi-data: "BB"
+195474-195506 spi: mosi-data: "BC"
+195631-195663 spi: mosi-data: "BD"
+195789-195821 spi: mosi-data: "BE"
+195946-195978 spi: mosi-data: "BF"
+196103-196135 spi: mosi-data: "C0"
+196261-196293 spi: mosi-data: "C1"
+196418-196450 spi: mosi-data: "C2"
+196575-196607 spi: mosi-data: "C3"
+196733-196765 spi: mosi-data: "C4"
+196890-196922 spi: mosi-data: "C5"
+197048-197080 spi: mosi-data: "C6"
+197205-197237 spi: mosi-data: "C7"
+197362-197394 spi: mosi-data: "C8"
+197520-197552 spi: mosi-data: "C9"
+197677-197709 spi: mosi-data: "CA"
+197834-197866 spi: mosi-data: "CB"
+197992-198024 spi: mosi-data: "CC"
+198149-198181 spi: mosi-data: "CD"
+198307-198339 spi: mosi-data: "CE"
+198464-198496 spi: mosi-data: "CF"
+198621-198653 spi: mosi-data: "D0"
+198779-198811 spi: mosi-data: "D1"
+198936-198968 spi: mosi-data: "D2"
+199094-199126 spi: mosi-data: "D3"
+199251-199283 spi: mosi-data: "D4"
+199408-199440 spi: mosi-data: "D5"
+199566-199598 spi: mosi-data: "D6"
+199723-199755 spi: mosi-data: "D7"
+199880-199912 spi: mosi-data: "D8"
+200038-200070 spi: mosi-data: "D9"
+200195-200227 spi: mosi-data: "DA"
+200353-200385 spi: mosi-data: "DB"
+200510-200542 spi: mosi-data: "DC"
+200667-200699 spi: mosi-data: "DD"
+200825-200857 spi: mosi-data: "DE"
+200982-201014 spi: mosi-data: "DF"
+201139-201171 spi: mosi-data: "E0"
+201297-201329 spi: mosi-data: "E1"
+201454-201486 spi: mosi-data: "E2"
+201612-201644 spi: mosi-data: "E3"
+201769-201801 spi: mosi-data: "E4"
+201926-201958 spi: mosi-data: "E5"
+202084-202116 spi: mosi-data: "E6"
+202241-202273 spi: mosi-data: "E7"
+202398-202430 spi: mosi-data: "E8"
+202556-202588 spi: mosi-data: "E9"
+202713-202745 spi: mosi-data: "EA"
+202871-202903 spi: mosi-data: "EB"
+203028-203060 spi: mosi-data: "EC"
+203185-203217 spi: mosi-data: "ED"
+203343-203375 spi: mosi-data: "EE"
+203500-203532 spi: mosi-data: "EF"
+203658-203690 spi: mosi-data: "F0"
+203815-203847 spi: mosi-data: "F1"
+203972-204004 spi: mosi-data: "F2"
+204130-204162 spi: mosi-data: "F3"
+204287-204319 spi: mosi-data: "F4"
+204444-204476 spi: mosi-data: "F5"
+204602-204634 spi: mosi-data: "F6"
+204759-204791 spi: mosi-data: "F7"
+204917-204949 spi: mosi-data: "F8"
+205074-205106 spi: mosi-data: "F9"
+205231-205263 spi: mosi-data: "FA"
+205389-205421 spi: mosi-data: "FB"
+205546-205578 spi: mosi-data: "FC"
+205703-205735 spi: mosi-data: "FD"
+205861-205893 spi: mosi-data: "FE"
+206018-206050 spi: mosi-data: "FF"
+206176-206208 spi: mosi-data: "00"
+206333-206365 spi: mosi-data: "01"
+206490-206522 spi: mosi-data: "02"
+206648-206680 spi: mosi-data: "03"
+206805-206837 spi: mosi-data: "04"
+206962-206994 spi: mosi-data: "05"
+207120-207152 spi: mosi-data: "06"
+207277-207309 spi: mosi-data: "07"
+207435-207467 spi: mosi-data: "08"
+207592-207624 spi: mosi-data: "09"
+207749-207781 spi: mosi-data: "0A"
+207907-207939 spi: mosi-data: "0B"
+208064-208096 spi: mosi-data: "0C"
+208221-208253 spi: mosi-data: "0D"
+208379-208411 spi: mosi-data: "0E"
+208536-208568 spi: mosi-data: "0F"
+208694-208726 spi: mosi-data: "10"
+208851-208883 spi: mosi-data: "11"
+209008-209040 spi: mosi-data: "12"
+209166-209198 spi: mosi-data: "13"
+209323-209355 spi: mosi-data: "14"
+209481-209513 spi: mosi-data: "15"
+209638-209670 spi: mosi-data: "16"
+209795-209827 spi: mosi-data: "17"
+209953-209985 spi: mosi-data: "18"
+210110-210142 spi: mosi-data: "19"
+210267-210299 spi: mosi-data: "1A"
+210425-210457 spi: mosi-data: "1B"
+210582-210614 spi: mosi-data: "1C"
+210740-210772 spi: mosi-data: "1D"
+210897-210929 spi: mosi-data: "1E"
+211054-211086 spi: mosi-data: "1F"
+211212-211244 spi: mosi-data: "20"
+211369-211401 spi: mosi-data: "21"
+211526-211558 spi: mosi-data: "22"
+211684-211716 spi: mosi-data: "23"
+211841-211873 spi: mosi-data: "24"
+211999-212031 spi: mosi-data: "25"
+212156-212188 spi: mosi-data: "26"
+212313-212345 spi: mosi-data: "27"
+212471-212503 spi: mosi-data: "28"
+212628-212660 spi: mosi-data: "29"
+212785-212817 spi: mosi-data: "2A"
+212943-212975 spi: mosi-data: "2B"
+213100-213132 spi: mosi-data: "2C"
+213258-213290 spi: mosi-data: "2D"
+213415-213447 spi: mosi-data: "2E"
+213572-213604 spi: mosi-data: "2F"
+213730-213762 spi: mosi-data: "30"
+213887-213919 spi: mosi-data: "31"
+214044-214076 spi: mosi-data: "32"
+214202-214234 spi: mosi-data: "33"
+214359-214391 spi: mosi-data: "34"
+214517-214549 spi: mosi-data: "35"
+214674-214706 spi: mosi-data: "36"
+214831-214863 spi: mosi-data: "37"
+214989-215021 spi: mosi-data: "38"
+215146-215178 spi: mosi-data: "39"
+215304-215336 spi: mosi-data: "3A"
+215461-215493 spi: mosi-data: "3B"
+215618-215650 spi: mosi-data: "3C"
+215776-215808 spi: mosi-data: "3D"
+215933-215965 spi: mosi-data: "3E"
+216090-216122 spi: mosi-data: "3F"
+216248-216280 spi: mosi-data: "40"
+216405-216437 spi: mosi-data: "41"
+216563-216595 spi: mosi-data: "42"
+216720-216752 spi: mosi-data: "43"
+216877-216909 spi: mosi-data: "44"
+217035-217067 spi: mosi-data: "45"
+217192-217224 spi: mosi-data: "46"
+217349-217381 spi: mosi-data: "47"
+217507-217539 spi: mosi-data: "48"
+217664-217696 spi: mosi-data: "49"
+217822-217854 spi: mosi-data: "4A"
+217979-218011 spi: mosi-data: "4B"
+218136-218168 spi: mosi-data: "4C"
+218294-218326 spi: mosi-data: "4D"
+218451-218483 spi: mosi-data: "4E"
+218608-218640 spi: mosi-data: "4F"
+218766-218798 spi: mosi-data: "50"
+218923-218955 spi: mosi-data: "51"
+219081-219113 spi: mosi-data: "52"
+219238-219270 spi: mosi-data: "53"
+219395-219427 spi: mosi-data: "54"
+219553-219585 spi: mosi-data: "55"
+219710-219742 spi: mosi-data: "56"
+219867-219899 spi: mosi-data: "57"
+220025-220057 spi: mosi-data: "58"
+220182-220214 spi: mosi-data: "59"
+220340-220372 spi: mosi-data: "5A"
+220497-220529 spi: mosi-data: "5B"
+220654-220686 spi: mosi-data: "5C"
+220812-220844 spi: mosi-data: "5D"
+220969-221001 spi: mosi-data: "5E"
+221127-221159 spi: mosi-data: "5F"
+221284-221316 spi: mosi-data: "60"
+221441-221473 spi: mosi-data: "61"
+221599-221631 spi: mosi-data: "62"
+221756-221788 spi: mosi-data: "63"
+221913-221945 spi: mosi-data: "64"
+222071-222103 spi: mosi-data: "65"
+222228-222260 spi: mosi-data: "66"
+222386-222418 spi: mosi-data: "67"
+222543-222575 spi: mosi-data: "68"
+222700-222732 spi: mosi-data: "69"
+222858-222890 spi: mosi-data: "6A"
+223015-223047 spi: mosi-data: "6B"
+223172-223204 spi: mosi-data: "6C"
+223330-223362 spi: mosi-data: "6D"
+223487-223519 spi: mosi-data: "6E"
+223645-223677 spi: mosi-data: "6F"
+223802-223834 spi: mosi-data: "70"
+223959-223991 spi: mosi-data: "71"
+224117-224149 spi: mosi-data: "72"
+224274-224306 spi: mosi-data: "73"
+224431-224463 spi: mosi-data: "74"
+224589-224621 spi: mosi-data: "75"
+224746-224778 spi: mosi-data: "76"
+224904-224936 spi: mosi-data: "77"
+225061-225093 spi: mosi-data: "78"
+225218-225250 spi: mosi-data: "79"
+225376-225408 spi: mosi-data: "7A"
+225533-225565 spi: mosi-data: "7B"
+225691-225723 spi: mosi-data: "7C"
+225848-225880 spi: mosi-data: "7D"
+226005-226037 spi: mosi-data: "7E"
+226163-226195 spi: mosi-data: "7F"
+226320-226352 spi: mosi-data: "80"
+226477-226509 spi: mosi-data: "81"
+226635-226667 spi: mosi-data: "82"
+226792-226824 spi: mosi-data: "83"
+226950-226982 spi: mosi-data: "84"
+227107-227139 spi: mosi-data: "85"
+227264-227296 spi: mosi-data: "86"
+227422-227454 spi: mosi-data: "87"
+227579-227611 spi: mosi-data: "88"
+227736-227768 spi: mosi-data: "89"
+227894-227926 spi: mosi-data: "8A"
+228051-228083 spi: mosi-data: "8B"
+228209-228241 spi: mosi-data: "8C"
+228366-228398 spi: mosi-data: "8D"
+228523-228555 spi: mosi-data: "8E"
+228681-228713 spi: mosi-data: "8F"
+228838-228870 spi: mosi-data: "90"
+228995-229027 spi: mosi-data: "91"
+229153-229185 spi: mosi-data: "92"
+229310-229342 spi: mosi-data: "93"
+229468-229500 spi: mosi-data: "94"
+229625-229657 spi: mosi-data: "95"
+229782-229814 spi: mosi-data: "96"
+229940-229972 spi: mosi-data: "97"
+230097-230129 spi: mosi-data: "98"
+230254-230286 spi: mosi-data: "99"
+230412-230444 spi: mosi-data: "9A"
+230569-230601 spi: mosi-data: "9B"
+230727-230759 spi: mosi-data: "9C"
+230884-230916 spi: mosi-data: "9D"
+231041-231073 spi: mosi-data: "9E"
+231199-231231 spi: mosi-data: "9F"
+231356-231388 spi: mosi-data: "A0"
+231514-231546 spi: mosi-data: "A1"
+231671-231703 spi: mosi-data: "A2"
+231828-231860 spi: mosi-data: "A3"
+231986-232018 spi: mosi-data: "A4"
+232143-232175 spi: mosi-data: "A5"
+232300-232332 spi: mosi-data: "A6"
+232458-232490 spi: mosi-data: "A7"
+232615-232647 spi: mosi-data: "A8"
+232773-232805 spi: mosi-data: "A9"
+232930-232962 spi: mosi-data: "AA"
+233087-233119 spi: mosi-data: "AB"
+233245-233277 spi: mosi-data: "AC"
+233402-233434 spi: mosi-data: "AD"
+233559-233591 spi: mosi-data: "AE"
+233717-233749 spi: mosi-data: "AF"
+233874-233906 spi: mosi-data: "B0"
+234032-234064 spi: mosi-data: "B1"
+234189-234221 spi: mosi-data: "B2"
+234346-234378 spi: mosi-data: "B3"
+234504-234536 spi: mosi-data: "B4"
+234661-234693 spi: mosi-data: "B5"
+234818-234850 spi: mosi-data: "B6"
+234976-235008 spi: mosi-data: "B7"
+235133-235165 spi: mosi-data: "B8"
+235291-235323 spi: mosi-data: "B9"
+235448-235480 spi: mosi-data: "BA"
+235605-235637 spi: mosi-data: "BB"
+235763-235795 spi: mosi-data: "BC"
+235920-235952 spi: mosi-data: "BD"
+236077-236109 spi: mosi-data: "BE"
+236235-236267 spi: mosi-data: "BF"
+236392-236424 spi: mosi-data: "C0"
+236550-236582 spi: mosi-data: "C1"
+236707-236739 spi: mosi-data: "C2"
+236864-236896 spi: mosi-data: "C3"
+237022-237054 spi: mosi-data: "C4"
+237179-237211 spi: mosi-data: "C5"
+237337-237369 spi: mosi-data: "C6"
+237494-237526 spi: mosi-data: "C7"
+237651-237683 spi: mosi-data: "C8"
+237809-237841 spi: mosi-data: "C9"
+237966-237998 spi: mosi-data: "CA"
+238123-238155 spi: mosi-data: "CB"
+238281-238313 spi: mosi-data: "CC"
+238438-238470 spi: mosi-data: "CD"
+238596-238628 spi: mosi-data: "CE"
+238753-238785 spi: mosi-data: "CF"
+238910-238942 spi: mosi-data: "D0"
+239068-239100 spi: mosi-data: "D1"
+239225-239257 spi: mosi-data: "D2"
+239382-239414 spi: mosi-data: "D3"
+239540-239572 spi: mosi-data: "D4"
+239697-239729 spi: mosi-data: "D5"
+239855-239887 spi: mosi-data: "D6"
+240012-240044 spi: mosi-data: "D7"
+240169-240201 spi: mosi-data: "D8"
+240327-240359 spi: mosi-data: "D9"
+240484-240516 spi: mosi-data: "DA"
+240641-240673 spi: mosi-data: "DB"
+240799-240831 spi: mosi-data: "DC"
+240956-240988 spi: mosi-data: "DD"
+241114-241146 spi: mosi-data: "DE"
+241271-241303 spi: mosi-data: "DF"
+241428-241460 spi: mosi-data: "E0"
+241586-241618 spi: mosi-data: "E1"
+241743-241775 spi: mosi-data: "E2"
+241900-241932 spi: mosi-data: "E3"
+242058-242090 spi: mosi-data: "E4"
+242215-242247 spi: mosi-data: "E5"
+242373-242405 spi: mosi-data: "E6"
+242530-242562 spi: mosi-data: "E7"
+242687-242719 spi: mosi-data: "E8"
+242845-242877 spi: mosi-data: "E9"
+243002-243034 spi: mosi-data: "EA"
+243160-243192 spi: mosi-data: "EB"
+243317-243349 spi: mosi-data: "EC"
+243474-243506 spi: mosi-data: "ED"
+243632-243664 spi: mosi-data: "EE"
+243789-243821 spi: mosi-data: "EF"
+243946-243978 spi: mosi-data: "F0"
+244104-244136 spi: mosi-data: "F1"
+244261-244293 spi: mosi-data: "F2"
+244419-244451 spi: mosi-data: "F3"
+244576-244608 spi: mosi-data: "F4"
+244733-244765 spi: mosi-data: "F5"
+244891-244923 spi: mosi-data: "F6"
+245048-245080 spi: mosi-data: "F7"
+245205-245237 spi: mosi-data: "F8"
+245363-245395 spi: mosi-data: "F9"
+245520-245552 spi: mosi-data: "FA"
+245678-245710 spi: mosi-data: "FB"
+245835-245867 spi: mosi-data: "FC"
+245992-246024 spi: mosi-data: "FD"
+246150-246182 spi: mosi-data: "FE"
+246307-246339 spi: mosi-data: "FF"
+246464-246496 spi: mosi-data: "00"
+246622-246654 spi: mosi-data: "01"
+246779-246811 spi: mosi-data: "02"
+246937-246969 spi: mosi-data: "03"
+247094-247126 spi: mosi-data: "04"
+247251-247283 spi: mosi-data: "05"
+247409-247441 spi: mosi-data: "06"
+247566-247598 spi: mosi-data: "07"
+247724-247756 spi: mosi-data: "08"
+247881-247913 spi: mosi-data: "09"
+248038-248070 spi: mosi-data: "0A"
+248196-248228 spi: mosi-data: "0B"
+248353-248385 spi: mosi-data: "0C"
+248510-248542 spi: mosi-data: "0D"
+248668-248700 spi: mosi-data: "0E"
+248825-248857 spi: mosi-data: "0F"
+248983-249015 spi: mosi-data: "10"
+249140-249172 spi: mosi-data: "11"
+249297-249329 spi: mosi-data: "12"
+249455-249487 spi: mosi-data: "13"
+249612-249644 spi: mosi-data: "14"
+249769-249801 spi: mosi-data: "15"
+249927-249959 spi: mosi-data: "16"
+250084-250116 spi: mosi-data: "17"
+250242-250274 spi: mosi-data: "18"
+250399-250431 spi: mosi-data: "19"
+250556-250588 spi: mosi-data: "1A"
+250714-250746 spi: mosi-data: "1B"
+250871-250903 spi: mosi-data: "1C"
+251028-251060 spi: mosi-data: "1D"
+251186-251218 spi: mosi-data: "1E"
+251343-251375 spi: mosi-data: "1F"
+251501-251533 spi: mosi-data: "20"
+251658-251690 spi: mosi-data: "21"
+251815-251847 spi: mosi-data: "22"
+251973-252005 spi: mosi-data: "23"
+252130-252162 spi: mosi-data: "24"
+252287-252319 spi: mosi-data: "25"
+252445-252477 spi: mosi-data: "26"
+252602-252634 spi: mosi-data: "27"
+252760-252792 spi: mosi-data: "28"
+252917-252949 spi: mosi-data: "29"
+253074-253106 spi: mosi-data: "2A"
+253232-253264 spi: mosi-data: "2B"
+253389-253421 spi: mosi-data: "2C"
+253547-253579 spi: mosi-data: "2D"
+253704-253736 spi: mosi-data: "2E"
+253861-253893 spi: mosi-data: "2F"
+254019-254051 spi: mosi-data: "30"
+254176-254208 spi: mosi-data: "31"
+254333-254365 spi: mosi-data: "32"
+254491-254523 spi: mosi-data: "33"
+254648-254680 spi: mosi-data: "34"
+254806-254838 spi: mosi-data: "35"
+254963-254995 spi: mosi-data: "36"
+255120-255152 spi: mosi-data: "37"
+255278-255310 spi: mosi-data: "38"
+255435-255467 spi: mosi-data: "39"
+255592-255624 spi: mosi-data: "3A"
+255750-255782 spi: mosi-data: "3B"
+255907-255939 spi: mosi-data: "3C"
+256065-256097 spi: mosi-data: "3D"
+256222-256254 spi: mosi-data: "3E"
+256379-256411 spi: mosi-data: "3F"
+256537-256569 spi: mosi-data: "40"
+256694-256726 spi: mosi-data: "41"
+256851-256883 spi: mosi-data: "42"
+257009-257041 spi: mosi-data: "43"
+257166-257198 spi: mosi-data: "44"
+257324-257356 spi: mosi-data: "45"
+257481-257513 spi: mosi-data: "46"
+257638-257670 spi: mosi-data: "47"
+257796-257828 spi: mosi-data: "48"
+257953-257985 spi: mosi-data: "49"
+258110-258142 spi: mosi-data: "4A"
+258268-258300 spi: mosi-data: "4B"
+258425-258457 spi: mosi-data: "4C"
+258583-258615 spi: mosi-data: "4D"
+258740-258772 spi: mosi-data: "4E"
+258897-258929 spi: mosi-data: "4F"
+259055-259087 spi: mosi-data: "50"
+259212-259244 spi: mosi-data: "51"
+259370-259402 spi: mosi-data: "52"
+259527-259559 spi: mosi-data: "53"
+259684-259716 spi: mosi-data: "54"
+259842-259874 spi: mosi-data: "55"
+259999-260031 spi: mosi-data: "56"
+260156-260188 spi: mosi-data: "57"
+260314-260346 spi: mosi-data: "58"
+260471-260503 spi: mosi-data: "59"
+260629-260661 spi: mosi-data: "5A"
+260786-260818 spi: mosi-data: "5B"
+260943-260975 spi: mosi-data: "5C"
+261101-261133 spi: mosi-data: "5D"
+261258-261290 spi: mosi-data: "5E"
+261415-261447 spi: mosi-data: "5F"
+261573-261605 spi: mosi-data: "60"
+261730-261762 spi: mosi-data: "61"
+261888-261920 spi: mosi-data: "62"
+262045-262077 spi: mosi-data: "63"
+262202-262234 spi: mosi-data: "64"
+262360-262392 spi: mosi-data: "65"
+262517-262549 spi: mosi-data: "66"
+262674-262706 spi: mosi-data: "67"
+262832-262864 spi: mosi-data: "68"
+262989-263021 spi: mosi-data: "69"
+263147-263179 spi: mosi-data: "6A"
+263304-263336 spi: mosi-data: "6B"
+263461-263493 spi: mosi-data: "6C"
+263619-263651 spi: mosi-data: "6D"
+263776-263808 spi: mosi-data: "6E"
+263933-263965 spi: mosi-data: "6F"
+264091-264123 spi: mosi-data: "70"
+264248-264280 spi: mosi-data: "71"
+264406-264438 spi: mosi-data: "72"
+264563-264595 spi: mosi-data: "73"
+264720-264752 spi: mosi-data: "74"
+264878-264910 spi: mosi-data: "75"
+265035-265067 spi: mosi-data: "76"
+265193-265225 spi: mosi-data: "77"
+265350-265382 spi: mosi-data: "78"
+265507-265539 spi: mosi-data: "79"
+265665-265697 spi: mosi-data: "7A"
+265822-265854 spi: mosi-data: "7B"
+265979-266011 spi: mosi-data: "7C"
+266137-266169 spi: mosi-data: "7D"
+266294-266326 spi: mosi-data: "7E"
+266452-266484 spi: mosi-data: "7F"
+266609-266641 spi: mosi-data: "80"
+266766-266798 spi: mosi-data: "81"
+266924-266956 spi: mosi-data: "82"
+267081-267113 spi: mosi-data: "83"
+267238-267270 spi: mosi-data: "84"
+267396-267428 spi: mosi-data: "85"
+267553-267585 spi: mosi-data: "86"
+267711-267743 spi: mosi-data: "87"
+267868-267900 spi: mosi-data: "88"
+268025-268057 spi: mosi-data: "89"
+268183-268215 spi: mosi-data: "8A"
+268340-268372 spi: mosi-data: "8B"
+268497-268529 spi: mosi-data: "8C"
+268655-268687 spi: mosi-data: "8D"
+268812-268844 spi: mosi-data: "8E"
+268970-269002 spi: mosi-data: "8F"
+269127-269159 spi: mosi-data: "90"
+269284-269316 spi: mosi-data: "91"
+269442-269474 spi: mosi-data: "92"
+269599-269631 spi: mosi-data: "93"
+269757-269789 spi: mosi-data: "94"
+269914-269946 spi: mosi-data: "95"
+270071-270103 spi: mosi-data: "96"
+270229-270261 spi: mosi-data: "97"
+270386-270418 spi: mosi-data: "98"
+270543-270575 spi: mosi-data: "99"
+270701-270733 spi: mosi-data: "9A"
+270858-270890 spi: mosi-data: "9B"
+271016-271048 spi: mosi-data: "9C"
+271173-271205 spi: mosi-data: "9D"
+271330-271362 spi: mosi-data: "9E"
+271488-271520 spi: mosi-data: "9F"
+271645-271677 spi: mosi-data: "A0"
+271802-271834 spi: mosi-data: "A1"
+271960-271992 spi: mosi-data: "A2"
+272117-272149 spi: mosi-data: "A3"
+272275-272307 spi: mosi-data: "A4"
+272432-272464 spi: mosi-data: "A5"
+272589-272621 spi: mosi-data: "A6"
+272747-272779 spi: mosi-data: "A7"
+272904-272936 spi: mosi-data: "A8"
+273061-273093 spi: mosi-data: "A9"
+273219-273251 spi: mosi-data: "AA"
+273376-273408 spi: mosi-data: "AB"
+273534-273566 spi: mosi-data: "AC"
+273691-273723 spi: mosi-data: "AD"
+273848-273880 spi: mosi-data: "AE"
+274006-274038 spi: mosi-data: "AF"
+274163-274195 spi: mosi-data: "B0"
+274320-274352 spi: mosi-data: "B1"
+274478-274510 spi: mosi-data: "B2"
+274635-274667 spi: mosi-data: "B3"
+274793-274825 spi: mosi-data: "B4"
+274950-274982 spi: mosi-data: "B5"
+275107-275139 spi: mosi-data: "B6"
+275265-275297 spi: mosi-data: "B7"
+275422-275454 spi: mosi-data: "B8"
+275580-275612 spi: mosi-data: "B9"
+275737-275769 spi: mosi-data: "BA"
+275894-275926 spi: mosi-data: "BB"
+276052-276084 spi: mosi-data: "BC"
+276209-276241 spi: mosi-data: "BD"
+276366-276398 spi: mosi-data: "BE"
+276524-276556 spi: mosi-data: "BF"
+276681-276713 spi: mosi-data: "C0"
+276839-276871 spi: mosi-data: "C1"
+276996-277028 spi: mosi-data: "C2"
+277153-277185 spi: mosi-data: "C3"
+277311-277343 spi: mosi-data: "C4"
+277468-277500 spi: mosi-data: "C5"
+277625-277657 spi: mosi-data: "C6"
+277783-277815 spi: mosi-data: "C7"
+277940-277972 spi: mosi-data: "C8"
+278098-278130 spi: mosi-data: "C9"
+278255-278287 spi: mosi-data: "CA"
+278412-278444 spi: mosi-data: "CB"
+278570-278602 spi: mosi-data: "CC"
+278727-278759 spi: mosi-data: "CD"
+278884-278916 spi: mosi-data: "CE"
+279042-279074 spi: mosi-data: "CF"
+279199-279231 spi: mosi-data: "D0"
+279357-279389 spi: mosi-data: "D1"
+279514-279546 spi: mosi-data: "D2"
+279671-279703 spi: mosi-data: "D3"
+279829-279861 spi: mosi-data: "D4"
+279986-280018 spi: mosi-data: "D5"
+280143-280175 spi: mosi-data: "D6"
+280301-280333 spi: mosi-data: "D7"
+280458-280490 spi: mosi-data: "D8"
+280616-280648 spi: mosi-data: "D9"
+280773-280805 spi: mosi-data: "DA"
+280930-280962 spi: mosi-data: "DB"
+281088-281120 spi: mosi-data: "DC"
+281245-281277 spi: mosi-data: "DD"
+281403-281435 spi: mosi-data: "DE"
+281560-281592 spi: mosi-data: "DF"
+281717-281749 spi: mosi-data: "E0"
+281875-281907 spi: mosi-data: "E1"
+282032-282064 spi: mosi-data: "E2"
+282189-282221 spi: mosi-data: "E3"
+282347-282379 spi: mosi-data: "E4"
+282504-282536 spi: mosi-data: "E5"
+282662-282694 spi: mosi-data: "E6"
+282819-282851 spi: mosi-data: "E7"
+282976-283008 spi: mosi-data: "E8"
+283134-283166 spi: mosi-data: "E9"
+283291-283323 spi: mosi-data: "EA"
+283448-283480 spi: mosi-data: "EB"
+283606-283638 spi: mosi-data: "EC"
+283763-283795 spi: mosi-data: "ED"
+283921-283953 spi: mosi-data: "EE"
+284078-284110 spi: mosi-data: "EF"
+284235-284267 spi: mosi-data: "F0"
+284393-284425 spi: mosi-data: "F1"
+284550-284582 spi: mosi-data: "F2"
+284707-284739 spi: mosi-data: "F3"
+284865-284897 spi: mosi-data: "F4"
+285022-285054 spi: mosi-data: "F5"
+285180-285212 spi: mosi-data: "F6"
+285337-285369 spi: mosi-data: "F7"
+285494-285526 spi: mosi-data: "F8"
+285652-285684 spi: mosi-data: "F9"
+285809-285841 spi: mosi-data: "FA"
+285966-285998 spi: mosi-data: "FB"
+286124-286156 spi: mosi-data: "FC"
+286281-286313 spi: mosi-data: "FD"
+286439-286471 spi: mosi-data: "FE"
+286596-286628 spi: mosi-data: "FF"
+286753-286785 spi: mosi-data: "00"
+286911-286943 spi: mosi-data: "01"
+287068-287100 spi: mosi-data: "02"
+287226-287258 spi: mosi-data: "03"
+287383-287415 spi: mosi-data: "04"
+287540-287572 spi: mosi-data: "05"
+287698-287730 spi: mosi-data: "06"
+287855-287887 spi: mosi-data: "07"
+288012-288044 spi: mosi-data: "08"
+288170-288202 spi: mosi-data: "09"
+288327-288359 spi: mosi-data: "0A"
+288485-288517 spi: mosi-data: "0B"
+288642-288674 spi: mosi-data: "0C"
+288799-288831 spi: mosi-data: "0D"
+288957-288989 spi: mosi-data: "0E"
+289114-289146 spi: mosi-data: "0F"
+289271-289303 spi: mosi-data: "10"
+289429-289461 spi: mosi-data: "11"
+289586-289618 spi: mosi-data: "12"
+289744-289776 spi: mosi-data: "13"
+289901-289933 spi: mosi-data: "14"
+290058-290090 spi: mosi-data: "15"
+290216-290248 spi: mosi-data: "16"
+290373-290405 spi: mosi-data: "17"
+290530-290562 spi: mosi-data: "18"
+290688-290720 spi: mosi-data: "19"
+290845-290877 spi: mosi-data: "1A"
+291003-291035 spi: mosi-data: "1B"
+291160-291192 spi: mosi-data: "1C"
+291317-291349 spi: mosi-data: "1D"
+291475-291507 spi: mosi-data: "1E"
+291632-291664 spi: mosi-data: "1F"
+291790-291822 spi: mosi-data: "20"
+291947-291979 spi: mosi-data: "21"
+292104-292136 spi: mosi-data: "22"
+292262-292294 spi: mosi-data: "23"
+292419-292451 spi: mosi-data: "24"
+292576-292608 spi: mosi-data: "25"
+292734-292766 spi: mosi-data: "26"
+292891-292923 spi: mosi-data: "27"
+293049-293081 spi: mosi-data: "28"
+293206-293238 spi: mosi-data: "29"
+293363-293395 spi: mosi-data: "2A"
+293521-293553 spi: mosi-data: "2B"
+293678-293710 spi: mosi-data: "2C"
+293835-293867 spi: mosi-data: "2D"
+293993-294025 spi: mosi-data: "2E"
+294150-294182 spi: mosi-data: "2F"
+294308-294340 spi: mosi-data: "30"
+294465-294497 spi: mosi-data: "31"
+294622-294654 spi: mosi-data: "32"
+294780-294812 spi: mosi-data: "33"
+294937-294969 spi: mosi-data: "34"
+295094-295126 spi: mosi-data: "35"
+295252-295284 spi: mosi-data: "36"
+295409-295441 spi: mosi-data: "37"
+295567-295599 spi: mosi-data: "38"
+295724-295756 spi: mosi-data: "39"
+295881-295913 spi: mosi-data: "3A"
+296039-296071 spi: mosi-data: "3B"
+296196-296228 spi: mosi-data: "3C"
+296353-296385 spi: mosi-data: "3D"
+296511-296543 spi: mosi-data: "3E"
+296668-296700 spi: mosi-data: "3F"
+296826-296858 spi: mosi-data: "40"
+296983-297015 spi: mosi-data: "41"
+297140-297172 spi: mosi-data: "42"
+297298-297330 spi: mosi-data: "43"
+297455-297487 spi: mosi-data: "44"
+297613-297645 spi: mosi-data: "45"
+297770-297802 spi: mosi-data: "46"
+297927-297959 spi: mosi-data: "47"
+298085-298117 spi: mosi-data: "48"
+298242-298274 spi: mosi-data: "49"
+298399-298431 spi: mosi-data: "4A"
+298557-298589 spi: mosi-data: "4B"
+298714-298746 spi: mosi-data: "4C"
+298872-298904 spi: mosi-data: "4D"
+299029-299061 spi: mosi-data: "4E"
+299186-299218 spi: mosi-data: "4F"
+299344-299376 spi: mosi-data: "50"
+299501-299533 spi: mosi-data: "51"
+299658-299690 spi: mosi-data: "52"
+299816-299848 spi: mosi-data: "53"
+299973-300005 spi: mosi-data: "54"
+300131-300163 spi: mosi-data: "55"
+300288-300320 spi: mosi-data: "56"
+300445-300477 spi: mosi-data: "57"
+300603-300635 spi: mosi-data: "58"
+300760-300792 spi: mosi-data: "59"
+300917-300949 spi: mosi-data: "5A"
+301075-301107 spi: mosi-data: "5B"
+301232-301264 spi: mosi-data: "5C"
+301390-301422 spi: mosi-data: "5D"
+301547-301579 spi: mosi-data: "5E"
+301704-301736 spi: mosi-data: "5F"
+301862-301894 spi: mosi-data: "60"
+302019-302051 spi: mosi-data: "61"
+302176-302208 spi: mosi-data: "62"
+302334-302366 spi: mosi-data: "63"
+302491-302523 spi: mosi-data: "64"
+302649-302681 spi: mosi-data: "65"
+302806-302838 spi: mosi-data: "66"
+302963-302995 spi: mosi-data: "67"
+303121-303153 spi: mosi-data: "68"
+303278-303310 spi: mosi-data: "69"
+303436-303468 spi: mosi-data: "6A"
+303593-303625 spi: mosi-data: "6B"
+303750-303782 spi: mosi-data: "6C"
+303908-303940 spi: mosi-data: "6D"
+304065-304097 spi: mosi-data: "6E"
+304222-304254 spi: mosi-data: "6F"
+304380-304412 spi: mosi-data: "70"
+304537-304569 spi: mosi-data: "71"
+304695-304727 spi: mosi-data: "72"
+304852-304884 spi: mosi-data: "73"
+305009-305041 spi: mosi-data: "74"
+305167-305199 spi: mosi-data: "75"
+305324-305356 spi: mosi-data: "76"
+305481-305513 spi: mosi-data: "77"
+305639-305671 spi: mosi-data: "78"
+305796-305828 spi: mosi-data: "79"
+305954-305986 spi: mosi-data: "7A"
+306111-306143 spi: mosi-data: "7B"
+306268-306300 spi: mosi-data: "7C"
+306426-306458 spi: mosi-data: "7D"
+306583-306615 spi: mosi-data: "7E"
+306740-306772 spi: mosi-data: "7F"
+306898-306930 spi: mosi-data: "80"
+307055-307087 spi: mosi-data: "81"
+307213-307245 spi: mosi-data: "82"
+307370-307402 spi: mosi-data: "83"
+307527-307559 spi: mosi-data: "84"
+307685-307717 spi: mosi-data: "85"
+307842-307874 spi: mosi-data: "86"
+307999-308031 spi: mosi-data: "87"
+308157-308189 spi: mosi-data: "88"
+308314-308346 spi: mosi-data: "89"
+308472-308504 spi: mosi-data: "8A"
+308629-308661 spi: mosi-data: "8B"
+308786-308818 spi: mosi-data: "8C"
+308944-308976 spi: mosi-data: "8D"
+309101-309133 spi: mosi-data: "8E"
+309259-309291 spi: mosi-data: "8F"
+309416-309448 spi: mosi-data: "90"
+309573-309605 spi: mosi-data: "91"
+309731-309763 spi: mosi-data: "92"
+309888-309920 spi: mosi-data: "93"
+310045-310077 spi: mosi-data: "94"
+310203-310235 spi: mosi-data: "95"
+310360-310392 spi: mosi-data: "96"
+310518-310550 spi: mosi-data: "97"
+310675-310707 spi: mosi-data: "98"
+310832-310864 spi: mosi-data: "99"
+310990-311022 spi: mosi-data: "9A"
+311147-311179 spi: mosi-data: "9B"
+311304-311336 spi: mosi-data: "9C"
+311462-311494 spi: mosi-data: "9D"
+311619-311651 spi: mosi-data: "9E"
+311777-311809 spi: mosi-data: "9F"
+311934-311966 spi: mosi-data: "A0"
+312091-312123 spi: mosi-data: "A1"
+312249-312281 spi: mosi-data: "A2"
+312406-312438 spi: mosi-data: "A3"
+312563-312595 spi: mosi-data: "A4"
+312721-312753 spi: mosi-data: "A5"
+312878-312910 spi: mosi-data: "A6"
+313036-313068 spi: mosi-data: "A7"
+313193-313225 spi: mosi-data: "A8"
+313350-313382 spi: mosi-data: "A9"
+313508-313540 spi: mosi-data: "AA"
+313665-313697 spi: mosi-data: "AB"
+313823-313855 spi: mosi-data: "AC"
+313980-314012 spi: mosi-data: "AD"
+314137-314169 spi: mosi-data: "AE"
+314295-314327 spi: mosi-data: "AF"
+314452-314484 spi: mosi-data: "B0"
+314609-314641 spi: mosi-data: "B1"
+314767-314799 spi: mosi-data: "B2"
+314924-314956 spi: mosi-data: "B3"
+315082-315114 spi: mosi-data: "B4"
+315239-315271 spi: mosi-data: "B5"
+315396-315428 spi: mosi-data: "B6"
+315554-315586 spi: mosi-data: "B7"
+315711-315743 spi: mosi-data: "B8"
+315868-315900 spi: mosi-data: "B9"
+316026-316058 spi: mosi-data: "BA"
+316183-316215 spi: mosi-data: "BB"
+316341-316373 spi: mosi-data: "BC"
+316498-316530 spi: mosi-data: "BD"
+316655-316687 spi: mosi-data: "BE"
+316813-316845 spi: mosi-data: "BF"
+316970-317002 spi: mosi-data: "C0"
+317127-317159 spi: mosi-data: "C1"
+317285-317317 spi: mosi-data: "C2"
+317442-317474 spi: mosi-data: "C3"
+317600-317632 spi: mosi-data: "C4"
+317757-317789 spi: mosi-data: "C5"
+317914-317946 spi: mosi-data: "C6"
+318072-318104 spi: mosi-data: "C7"
+318229-318261 spi: mosi-data: "C8"
+318386-318418 spi: mosi-data: "C9"
+318544-318576 spi: mosi-data: "CA"
+318701-318733 spi: mosi-data: "CB"
+318859-318891 spi: mosi-data: "CC"
+319016-319048 spi: mosi-data: "CD"
+319173-319205 spi: mosi-data: "CE"
+319331-319363 spi: mosi-data: "CF"
+319488-319520 spi: mosi-data: "D0"
+319646-319678 spi: mosi-data: "D1"
+319803-319835 spi: mosi-data: "D2"
+319960-319992 spi: mosi-data: "D3"
+320118-320150 spi: mosi-data: "D4"
+320275-320307 spi: mosi-data: "D5"
+320432-320464 spi: mosi-data: "D6"
+320590-320622 spi: mosi-data: "D7"
+320747-320779 spi: mosi-data: "D8"
+320905-320937 spi: mosi-data: "D9"
+321062-321094 spi: mosi-data: "DA"
+321219-321251 spi: mosi-data: "DB"
+321377-321409 spi: mosi-data: "DC"
+321534-321566 spi: mosi-data: "DD"
+321691-321723 spi: mosi-data: "DE"
+321849-321881 spi: mosi-data: "DF"
+322006-322038 spi: mosi-data: "E0"
+322164-322196 spi: mosi-data: "E1"
+322321-322353 spi: mosi-data: "E2"
+322478-322510 spi: mosi-data: "E3"
+322636-322668 spi: mosi-data: "E4"
+322793-322825 spi: mosi-data: "E5"
+322950-322982 spi: mosi-data: "E6"
+323108-323140 spi: mosi-data: "E7"
+323265-323297 spi: mosi-data: "E8"
+323423-323455 spi: mosi-data: "E9"
+323580-323612 spi: mosi-data: "EA"
+323737-323769 spi: mosi-data: "EB"
+323895-323927 spi: mosi-data: "EC"
+324052-324084 spi: mosi-data: "ED"
+324209-324241 spi: mosi-data: "EE"
+324367-324399 spi: mosi-data: "EF"
+324524-324556 spi: mosi-data: "F0"
+324682-324714 spi: mosi-data: "F1"
+324839-324871 spi: mosi-data: "F2"
+324996-325028 spi: mosi-data: "F3"
+325154-325186 spi: mosi-data: "F4"
+325311-325343 spi: mosi-data: "F5"
+325469-325501 spi: mosi-data: "F6"
+325626-325658 spi: mosi-data: "F7"
+325783-325815 spi: mosi-data: "F8"
+325941-325973 spi: mosi-data: "F9"
+326098-326130 spi: mosi-data: "FA"
+326255-326287 spi: mosi-data: "FB"
+326413-326445 spi: mosi-data: "FC"
+326570-326602 spi: mosi-data: "FD"
+326728-326760 spi: mosi-data: "FE"
+326885-326917 spi: mosi-data: "FF"
+327042-327074 spi: mosi-data: "00"
+327200-327232 spi: mosi-data: "01"
+327357-327389 spi: mosi-data: "02"
+327514-327546 spi: mosi-data: "03"
+327672-327704 spi: mosi-data: "04"
+327829-327861 spi: mosi-data: "05"
+327987-328019 spi: mosi-data: "06"
+328144-328176 spi: mosi-data: "07"
+328301-328333 spi: mosi-data: "08"
+328459-328491 spi: mosi-data: "09"
+328616-328648 spi: mosi-data: "0A"
+328773-328805 spi: mosi-data: "0B"
+328931-328963 spi: mosi-data: "0C"
+329088-329120 spi: mosi-data: "0D"
+329246-329278 spi: mosi-data: "0E"
+329403-329435 spi: mosi-data: "0F"
+329560-329592 spi: mosi-data: "10"
+329718-329750 spi: mosi-data: "11"
+329875-329907 spi: mosi-data: "12"
+330032-330064 spi: mosi-data: "13"
+330190-330222 spi: mosi-data: "14"
+330347-330379 spi: mosi-data: "15"
+330505-330537 spi: mosi-data: "16"
+330662-330694 spi: mosi-data: "17"
+330819-330851 spi: mosi-data: "18"
+330977-331009 spi: mosi-data: "19"
+331134-331166 spi: mosi-data: "1A"
+331292-331324 spi: mosi-data: "1B"
+331449-331481 spi: mosi-data: "1C"
+331606-331638 spi: mosi-data: "1D"
+331764-331796 spi: mosi-data: "1E"
+331921-331953 spi: mosi-data: "1F"
+332078-332110 spi: mosi-data: "20"
+332236-332268 spi: mosi-data: "21"
+332393-332425 spi: mosi-data: "22"
+332551-332583 spi: mosi-data: "23"
+332708-332740 spi: mosi-data: "24"
+332865-332897 spi: mosi-data: "25"
+333023-333055 spi: mosi-data: "26"
+333180-333212 spi: mosi-data: "27"
+333337-333369 spi: mosi-data: "28"
+333495-333527 spi: mosi-data: "29"
+333652-333684 spi: mosi-data: "2A"
+333810-333842 spi: mosi-data: "2B"
+333967-333999 spi: mosi-data: "2C"
+334124-334156 spi: mosi-data: "2D"
+334282-334314 spi: mosi-data: "2E"
+334439-334471 spi: mosi-data: "2F"
+334596-334628 spi: mosi-data: "30"
+334754-334786 spi: mosi-data: "31"
+334911-334943 spi: mosi-data: "32"
+335069-335101 spi: mosi-data: "33"
+335226-335258 spi: mosi-data: "34"
+335383-335415 spi: mosi-data: "35"
+335541-335573 spi: mosi-data: "36"
+335698-335730 spi: mosi-data: "37"
+335855-335888 spi: mosi-data: "38"
+336013-336045 spi: mosi-data: "39"
+336170-336202 spi: mosi-data: "3A"
+336328-336360 spi: mosi-data: "3B"
+336485-336517 spi: mosi-data: "3C"
+336642-336674 spi: mosi-data: "3D"
+336800-336832 spi: mosi-data: "3E"
+336957-336989 spi: mosi-data: "3F"
+337115-337147 spi: mosi-data: "40"
+337272-337304 spi: mosi-data: "41"
+337429-337461 spi: mosi-data: "42"
+337587-337619 spi: mosi-data: "43"
+337744-337776 spi: mosi-data: "44"
+337901-337933 spi: mosi-data: "45"
+338059-338091 spi: mosi-data: "46"
+338216-338248 spi: mosi-data: "47"
+338374-338406 spi: mosi-data: "48"
+338531-338563 spi: mosi-data: "49"
+338688-338720 spi: mosi-data: "4A"
+338846-338878 spi: mosi-data: "4B"
+339003-339035 spi: mosi-data: "4C"
+339160-339192 spi: mosi-data: "4D"
+339318-339350 spi: mosi-data: "4E"
+339475-339507 spi: mosi-data: "4F"
+339633-339665 spi: mosi-data: "50"
+339790-339822 spi: mosi-data: "51"
+339947-339979 spi: mosi-data: "52"
+340105-340137 spi: mosi-data: "53"
+340262-340294 spi: mosi-data: "54"
+340419-340451 spi: mosi-data: "55"
+340577-340609 spi: mosi-data: "56"
+340734-340766 spi: mosi-data: "57"
+340892-340924 spi: mosi-data: "58"
+341049-341081 spi: mosi-data: "59"
+341206-341238 spi: mosi-data: "5A"
+341364-341396 spi: mosi-data: "5B"
+341521-341553 spi: mosi-data: "5C"
+341679-341711 spi: mosi-data: "5D"
+341836-341868 spi: mosi-data: "5E"
+341993-342025 spi: mosi-data: "5F"
+342151-342183 spi: mosi-data: "60"
+342308-342340 spi: mosi-data: "61"
+342465-342497 spi: mosi-data: "62"
+342623-342655 spi: mosi-data: "63"
+342780-342812 spi: mosi-data: "64"
+342938-342970 spi: mosi-data: "65"
+343095-343127 spi: mosi-data: "66"
+343252-343284 spi: mosi-data: "67"
+343410-343442 spi: mosi-data: "68"
+343567-343599 spi: mosi-data: "69"
+343724-343756 spi: mosi-data: "6A"
+343882-343914 spi: mosi-data: "6B"
+344039-344071 spi: mosi-data: "6C"
+344197-344229 spi: mosi-data: "6D"
+344354-344386 spi: mosi-data: "6E"
+344511-344543 spi: mosi-data: "6F"
+344669-344701 spi: mosi-data: "70"
+344826-344858 spi: mosi-data: "71"
+344983-345015 spi: mosi-data: "72"
+345141-345173 spi: mosi-data: "73"
+345298-345330 spi: mosi-data: "74"
+345456-345488 spi: mosi-data: "75"
+345613-345645 spi: mosi-data: "76"
+345770-345802 spi: mosi-data: "77"
+345928-345960 spi: mosi-data: "78"
+346085-346117 spi: mosi-data: "79"
+346242-346274 spi: mosi-data: "7A"
+346400-346432 spi: mosi-data: "7B"
+346557-346589 spi: mosi-data: "7C"
+346715-346747 spi: mosi-data: "7D"
+346872-346904 spi: mosi-data: "7E"
+347029-347061 spi: mosi-data: "7F"
+347187-347219 spi: mosi-data: "80"
+347344-347376 spi: mosi-data: "81"
+347502-347534 spi: mosi-data: "82"
+347659-347691 spi: mosi-data: "83"
+347816-347848 spi: mosi-data: "84"
+347974-348006 spi: mosi-data: "85"
+348131-348163 spi: mosi-data: "86"
+348288-348320 spi: mosi-data: "87"
+348446-348478 spi: mosi-data: "88"
+348603-348635 spi: mosi-data: "89"
+348761-348793 spi: mosi-data: "8A"
+348918-348950 spi: mosi-data: "8B"
+349075-349107 spi: mosi-data: "8C"
+349233-349265 spi: mosi-data: "8D"
+349390-349422 spi: mosi-data: "8E"
+349547-349579 spi: mosi-data: "8F"
+349705-349737 spi: mosi-data: "90"
+349862-349894 spi: mosi-data: "91"
+350020-350052 spi: mosi-data: "92"
+350177-350209 spi: mosi-data: "93"
+350334-350366 spi: mosi-data: "94"
+350492-350524 spi: mosi-data: "95"
+350649-350681 spi: mosi-data: "96"
+350806-350838 spi: mosi-data: "97"
+350964-350996 spi: mosi-data: "98"
+351121-351153 spi: mosi-data: "99"
+351279-351311 spi: mosi-data: "9A"
+351436-351468 spi: mosi-data: "9B"
+351593-351625 spi: mosi-data: "9C"
+351751-351783 spi: mosi-data: "9D"
+351908-351940 spi: mosi-data: "9E"
+352065-352097 spi: mosi-data: "9F"
+352223-352255 spi: mosi-data: "A0"
+352380-352412 spi: mosi-data: "A1"
+352538-352570 spi: mosi-data: "A2"
+352695-352727 spi: mosi-data: "A3"
+352852-352884 spi: mosi-data: "A4"
+353010-353042 spi: mosi-data: "A5"
+353167-353199 spi: mosi-data: "A6"
+353325-353357 spi: mosi-data: "A7"
+353482-353514 spi: mosi-data: "A8"
+353639-353671 spi: mosi-data: "A9"
+353797-353829 spi: mosi-data: "AA"
+353954-353986 spi: mosi-data: "AB"
+354111-354143 spi: mosi-data: "AC"
+354269-354301 spi: mosi-data: "AD"
+354426-354458 spi: mosi-data: "AE"
+354584-354616 spi: mosi-data: "AF"
+354741-354773 spi: mosi-data: "B0"
+354898-354930 spi: mosi-data: "B1"
+355056-355088 spi: mosi-data: "B2"
+355213-355245 spi: mosi-data: "B3"
+355370-355402 spi: mosi-data: "B4"
+355528-355560 spi: mosi-data: "B5"
+355685-355717 spi: mosi-data: "B6"
+355843-355875 spi: mosi-data: "B7"
+356000-356032 spi: mosi-data: "B8"
+356157-356189 spi: mosi-data: "B9"
+356315-356347 spi: mosi-data: "BA"
+356472-356504 spi: mosi-data: "BB"
+356629-356661 spi: mosi-data: "BC"
+356787-356819 spi: mosi-data: "BD"
+356944-356976 spi: mosi-data: "BE"
+357102-357134 spi: mosi-data: "BF"
+357259-357291 spi: mosi-data: "C0"
+357416-357448 spi: mosi-data: "C1"
+357574-357606 spi: mosi-data: "C2"
+357731-357763 spi: mosi-data: "C3"
+357888-357920 spi: mosi-data: "C4"
+358046-358078 spi: mosi-data: "C5"
+358203-358235 spi: mosi-data: "C6"
+358361-358393 spi: mosi-data: "C7"
+358518-358550 spi: mosi-data: "C8"
+358675-358707 spi: mosi-data: "C9"
+358833-358865 spi: mosi-data: "CA"
+358990-359022 spi: mosi-data: "CB"
+359148-359180 spi: mosi-data: "CC"
+359305-359337 spi: mosi-data: "CD"
+359462-359494 spi: mosi-data: "CE"
+359620-359652 spi: mosi-data: "CF"
+359777-359809 spi: mosi-data: "D0"
+359934-359966 spi: mosi-data: "D1"
+360092-360124 spi: mosi-data: "D2"
+360249-360281 spi: mosi-data: "D3"
+360407-360439 spi: mosi-data: "D4"
+360564-360596 spi: mosi-data: "D5"
+360721-360753 spi: mosi-data: "D6"
+360879-360911 spi: mosi-data: "D7"
+361036-361068 spi: mosi-data: "D8"
+361193-361225 spi: mosi-data: "D9"
+361351-361383 spi: mosi-data: "DA"
+361508-361540 spi: mosi-data: "DB"
+361666-361698 spi: mosi-data: "DC"
+361823-361855 spi: mosi-data: "DD"
+361980-362012 spi: mosi-data: "DE"
+362138-362170 spi: mosi-data: "DF"
+362295-362327 spi: mosi-data: "E0"
+362452-362484 spi: mosi-data: "E1"
+362610-362642 spi: mosi-data: "E2"
+362767-362799 spi: mosi-data: "E3"
+362925-362957 spi: mosi-data: "E4"
+363082-363114 spi: mosi-data: "E5"
+363239-363271 spi: mosi-data: "E6"
+363397-363429 spi: mosi-data: "E7"
+363554-363586 spi: mosi-data: "E8"
+363712-363744 spi: mosi-data: "E9"
+363869-363901 spi: mosi-data: "EA"
+364026-364058 spi: mosi-data: "EB"
+364184-364216 spi: mosi-data: "EC"
+364341-364373 spi: mosi-data: "ED"
+364498-364530 spi: mosi-data: "EE"
+364656-364688 spi: mosi-data: "EF"
+364813-364845 spi: mosi-data: "F0"
+364971-365003 spi: mosi-data: "F1"
+365128-365160 spi: mosi-data: "F2"
+365285-365317 spi: mosi-data: "F3"
+365443-365475 spi: mosi-data: "F4"
+365600-365632 spi: mosi-data: "F5"
+365757-365789 spi: mosi-data: "F6"
+365915-365947 spi: mosi-data: "F7"
+366072-366104 spi: mosi-data: "F8"
+366230-366262 spi: mosi-data: "F9"
+366387-366419 spi: mosi-data: "FA"
+366544-366576 spi: mosi-data: "FB"
+366702-366734 spi: mosi-data: "FC"
+366859-366891 spi: mosi-data: "FD"
+367016-367048 spi: mosi-data: "FE"
+367174-367206 spi: mosi-data: "FF"
+367331-367363 spi: mosi-data: "00"
+367489-367521 spi: mosi-data: "01"
+367646-367678 spi: mosi-data: "02"
+367803-367835 spi: mosi-data: "03"
+367961-367993 spi: mosi-data: "04"
+368118-368150 spi: mosi-data: "05"
+368275-368307 spi: mosi-data: "06"
+368433-368465 spi: mosi-data: "07"
+368590-368622 spi: mosi-data: "08"
+368748-368780 spi: mosi-data: "09"
+368905-368937 spi: mosi-data: "0A"
+369062-369094 spi: mosi-data: "0B"
+369220-369252 spi: mosi-data: "0C"
+369377-369409 spi: mosi-data: "0D"
+369535-369567 spi: mosi-data: "0E"
+369692-369724 spi: mosi-data: "0F"
+369849-369881 spi: mosi-data: "10"
+370007-370039 spi: mosi-data: "11"
+370164-370196 spi: mosi-data: "12"
+370321-370353 spi: mosi-data: "13"
+370479-370511 spi: mosi-data: "14"
+370636-370668 spi: mosi-data: "15"
+370794-370826 spi: mosi-data: "16"
+370951-370983 spi: mosi-data: "17"
+371108-371140 spi: mosi-data: "18"
+371266-371298 spi: mosi-data: "19"
+371423-371455 spi: mosi-data: "1A"
+371580-371612 spi: mosi-data: "1B"
+371738-371770 spi: mosi-data: "1C"
+371895-371927 spi: mosi-data: "1D"
+372053-372085 spi: mosi-data: "1E"
+372210-372242 spi: mosi-data: "1F"
+372367-372399 spi: mosi-data: "20"
+372525-372557 spi: mosi-data: "21"
+372682-372714 spi: mosi-data: "22"
+372839-372871 spi: mosi-data: "23"
+372997-373029 spi: mosi-data: "24"
+373154-373186 spi: mosi-data: "25"
+373312-373344 spi: mosi-data: "26"
+373469-373501 spi: mosi-data: "27"
+373626-373658 spi: mosi-data: "28"
+373784-373816 spi: mosi-data: "29"
+373941-373973 spi: mosi-data: "2A"
+374098-374130 spi: mosi-data: "2B"
+374256-374288 spi: mosi-data: "2C"
+374413-374445 spi: mosi-data: "2D"
+374571-374603 spi: mosi-data: "2E"
+374728-374760 spi: mosi-data: "2F"
+374885-374917 spi: mosi-data: "30"
+375043-375075 spi: mosi-data: "31"
+375200-375232 spi: mosi-data: "32"
+375358-375390 spi: mosi-data: "33"
+375515-375547 spi: mosi-data: "34"
+375672-375704 spi: mosi-data: "35"
+375830-375862 spi: mosi-data: "36"
+375987-376019 spi: mosi-data: "37"
+376144-376176 spi: mosi-data: "38"
+376302-376334 spi: mosi-data: "39"
+376459-376491 spi: mosi-data: "3A"
+376617-376649 spi: mosi-data: "3B"
+376774-376806 spi: mosi-data: "3C"
+376931-376963 spi: mosi-data: "3D"
+377089-377121 spi: mosi-data: "3E"
+377246-377278 spi: mosi-data: "3F"
+377403-377435 spi: mosi-data: "40"
+377561-377593 spi: mosi-data: "41"
+377718-377750 spi: mosi-data: "42"
+377876-377908 spi: mosi-data: "43"
+378033-378065 spi: mosi-data: "44"
+378190-378222 spi: mosi-data: "45"
+378348-378380 spi: mosi-data: "46"
+378505-378537 spi: mosi-data: "47"
+378662-378694 spi: mosi-data: "48"
+378820-378852 spi: mosi-data: "49"
+378977-379009 spi: mosi-data: "4A"
+379135-379167 spi: mosi-data: "4B"
+379292-379324 spi: mosi-data: "4C"
+379449-379481 spi: mosi-data: "4D"
+379607-379639 spi: mosi-data: "4E"
+379764-379796 spi: mosi-data: "4F"
+379921-379953 spi: mosi-data: "50"
+380079-380111 spi: mosi-data: "51"
+380236-380268 spi: mosi-data: "52"
+380394-380426 spi: mosi-data: "53"
+380551-380583 spi: mosi-data: "54"
+380708-380740 spi: mosi-data: "55"
+380866-380898 spi: mosi-data: "56"
+381023-381055 spi: mosi-data: "57"
+381181-381213 spi: mosi-data: "58"
+381338-381370 spi: mosi-data: "59"
+381495-381527 spi: mosi-data: "5A"
+381653-381685 spi: mosi-data: "5B"
+381810-381842 spi: mosi-data: "5C"
+381967-381999 spi: mosi-data: "5D"
+382125-382157 spi: mosi-data: "5E"
+382282-382314 spi: mosi-data: "5F"
+382440-382472 spi: mosi-data: "60"
+382597-382629 spi: mosi-data: "61"
+382754-382786 spi: mosi-data: "62"
+382912-382944 spi: mosi-data: "63"
+383069-383101 spi: mosi-data: "64"
+383226-383258 spi: mosi-data: "65"
+383384-383416 spi: mosi-data: "66"
+383541-383573 spi: mosi-data: "67"
+383699-383731 spi: mosi-data: "68"
+383856-383888 spi: mosi-data: "69"
+384013-384045 spi: mosi-data: "6A"
+384171-384203 spi: mosi-data: "6B"
+384328-384360 spi: mosi-data: "6C"
+384485-384517 spi: mosi-data: "6D"
+384643-384675 spi: mosi-data: "6E"
+384800-384832 spi: mosi-data: "6F"
+384958-384990 spi: mosi-data: "70"
+385115-385147 spi: mosi-data: "71"
+385272-385304 spi: mosi-data: "72"
+385430-385462 spi: mosi-data: "73"
+385587-385619 spi: mosi-data: "74"
+385745-385777 spi: mosi-data: "75"
+385902-385934 spi: mosi-data: "76"
+386059-386091 spi: mosi-data: "77"
+386217-386249 spi: mosi-data: "78"
+386374-386406 spi: mosi-data: "79"
+386531-386563 spi: mosi-data: "7A"
+386689-386721 spi: mosi-data: "7B"
+386846-386878 spi: mosi-data: "7C"
+387004-387036 spi: mosi-data: "7D"
+387161-387193 spi: mosi-data: "7E"
+387318-387350 spi: mosi-data: "7F"
+387476-387508 spi: mosi-data: "80"
+387633-387665 spi: mosi-data: "81"
+387790-387822 spi: mosi-data: "82"
+387948-387980 spi: mosi-data: "83"
+388105-388137 spi: mosi-data: "84"
+388263-388295 spi: mosi-data: "85"
+388420-388452 spi: mosi-data: "86"
+388577-388609 spi: mosi-data: "87"
+388735-388767 spi: mosi-data: "88"
+388892-388924 spi: mosi-data: "89"
+389049-389081 spi: mosi-data: "8A"
+389207-389239 spi: mosi-data: "8B"
+389364-389396 spi: mosi-data: "8C"
+389522-389554 spi: mosi-data: "8D"
+389679-389711 spi: mosi-data: "8E"
+389836-389868 spi: mosi-data: "8F"
+389994-390026 spi: mosi-data: "90"
+390151-390183 spi: mosi-data: "91"
+390308-390340 spi: mosi-data: "92"
+390466-390498 spi: mosi-data: "93"
+390623-390655 spi: mosi-data: "94"
+390781-390813 spi: mosi-data: "95"
+390938-390970 spi: mosi-data: "96"
+391095-391127 spi: mosi-data: "97"
+391253-391285 spi: mosi-data: "98"
+391410-391442 spi: mosi-data: "99"
+391568-391600 spi: mosi-data: "9A"
+391725-391757 spi: mosi-data: "9B"
+391882-391914 spi: mosi-data: "9C"
+392040-392072 spi: mosi-data: "9D"
+392197-392229 spi: mosi-data: "9E"
+392354-392386 spi: mosi-data: "9F"
+392512-392544 spi: mosi-data: "A0"
+392669-392701 spi: mosi-data: "A1"
+392827-392859 spi: mosi-data: "A2"
+392984-393016 spi: mosi-data: "A3"
+393141-393173 spi: mosi-data: "A4"
+393299-393331 spi: mosi-data: "A5"
+393456-393488 spi: mosi-data: "A6"
+393613-393645 spi: mosi-data: "A7"
+393771-393803 spi: mosi-data: "A8"
+393928-393960 spi: mosi-data: "A9"
+394086-394118 spi: mosi-data: "AA"
+394243-394275 spi: mosi-data: "AB"
+394400-394432 spi: mosi-data: "AC"
+394558-394590 spi: mosi-data: "AD"
+394715-394747 spi: mosi-data: "AE"
+394872-394904 spi: mosi-data: "AF"
+395030-395062 spi: mosi-data: "B0"
+395187-395219 spi: mosi-data: "B1"
+395345-395377 spi: mosi-data: "B2"
+395502-395534 spi: mosi-data: "B3"
+395659-395691 spi: mosi-data: "B4"
+395817-395849 spi: mosi-data: "B5"
+395974-396006 spi: mosi-data: "B6"
+396131-396163 spi: mosi-data: "B7"
+396289-396321 spi: mosi-data: "B8"
+396446-396478 spi: mosi-data: "B9"
+396604-396636 spi: mosi-data: "BA"
+396761-396793 spi: mosi-data: "BB"
+396918-396950 spi: mosi-data: "BC"
+397076-397108 spi: mosi-data: "BD"
+397233-397265 spi: mosi-data: "BE"
+397391-397423 spi: mosi-data: "BF"
+397548-397580 spi: mosi-data: "C0"
+397705-397737 spi: mosi-data: "C1"
+397863-397895 spi: mosi-data: "C2"
+398020-398052 spi: mosi-data: "C3"
+398177-398209 spi: mosi-data: "C4"
+398335-398367 spi: mosi-data: "C5"
+398492-398524 spi: mosi-data: "C6"
+398650-398682 spi: mosi-data: "C7"
+398807-398839 spi: mosi-data: "C8"
+398964-398996 spi: mosi-data: "C9"
+399122-399154 spi: mosi-data: "CA"
+399279-399311 spi: mosi-data: "CB"
+399436-399468 spi: mosi-data: "CC"
+399594-399626 spi: mosi-data: "CD"
+399751-399783 spi: mosi-data: "CE"
+399909-399941 spi: mosi-data: "CF"
+400066-400098 spi: mosi-data: "D0"
+400223-400255 spi: mosi-data: "D1"
+400381-400413 spi: mosi-data: "D2"
+400538-400570 spi: mosi-data: "D3"
+400695-400727 spi: mosi-data: "D4"
+400853-400885 spi: mosi-data: "D5"
+401010-401042 spi: mosi-data: "D6"
+401168-401200 spi: mosi-data: "D7"
+401325-401357 spi: mosi-data: "D8"
+401482-401514 spi: mosi-data: "D9"
+401640-401672 spi: mosi-data: "DA"
+401797-401829 spi: mosi-data: "DB"
+401954-401986 spi: mosi-data: "DC"
+402112-402144 spi: mosi-data: "DD"
+402269-402301 spi: mosi-data: "DE"
+402427-402459 spi: mosi-data: "DF"
+402584-402616 spi: mosi-data: "E0"
+402741-402773 spi: mosi-data: "E1"
+402899-402931 spi: mosi-data: "E2"
+403056-403088 spi: mosi-data: "E3"
+403214-403246 spi: mosi-data: "E4"
+403371-403403 spi: mosi-data: "E5"
+403528-403560 spi: mosi-data: "E6"
+403686-403718 spi: mosi-data: "E7"
+403843-403875 spi: mosi-data: "E8"
+404000-404032 spi: mosi-data: "E9"
+404158-404190 spi: mosi-data: "EA"
+404315-404347 spi: mosi-data: "EB"
+404473-404505 spi: mosi-data: "EC"
+404630-404662 spi: mosi-data: "ED"
+404787-404819 spi: mosi-data: "EE"
+404945-404977 spi: mosi-data: "EF"
+405102-405134 spi: mosi-data: "F0"
+405259-405291 spi: mosi-data: "F1"
+405417-405449 spi: mosi-data: "F2"
+405574-405606 spi: mosi-data: "F3"
+405732-405764 spi: mosi-data: "F4"
+405889-405921 spi: mosi-data: "F5"
+406046-406078 spi: mosi-data: "F6"
+406204-406236 spi: mosi-data: "F7"
+406361-406393 spi: mosi-data: "F8"
+406518-406550 spi: mosi-data: "F9"
+406676-406708 spi: mosi-data: "FA"
+406833-406865 spi: mosi-data: "FB"
+406991-407023 spi: mosi-data: "FC"
+407148-407180 spi: mosi-data: "FD"
+407305-407337 spi: mosi-data: "FE"
+407463-407495 spi: mosi-data: "FF"
+407620-407652 spi: mosi-data: "00"
+407778-407810 spi: mosi-data: "01"
+407935-407967 spi: mosi-data: "02"
+408092-408124 spi: mosi-data: "03"
+408250-408282 spi: mosi-data: "04"
+408407-408439 spi: mosi-data: "05"
+408564-408596 spi: mosi-data: "06"
+408722-408754 spi: mosi-data: "07"
+408879-408911 spi: mosi-data: "08"
+409037-409069 spi: mosi-data: "09"
+409194-409226 spi: mosi-data: "0A"
+409351-409383 spi: mosi-data: "0B"
+409509-409541 spi: mosi-data: "0C"
+409666-409698 spi: mosi-data: "0D"
+409823-409855 spi: mosi-data: "0E"
+409981-410013 spi: mosi-data: "0F"
+410138-410170 spi: mosi-data: "10"
+410296-410328 spi: mosi-data: "11"
+410453-410485 spi: mosi-data: "12"
+410610-410642 spi: mosi-data: "13"
+410768-410800 spi: mosi-data: "14"
+410925-410957 spi: mosi-data: "15"
+411082-411114 spi: mosi-data: "16"
+411240-411272 spi: mosi-data: "17"
+411397-411429 spi: mosi-data: "18"
+411555-411587 spi: mosi-data: "19"
+411712-411744 spi: mosi-data: "1A"
+411869-411901 spi: mosi-data: "1B"
+412027-412059 spi: mosi-data: "1C"
+412184-412216 spi: mosi-data: "1D"
+412341-412373 spi: mosi-data: "1E"
+412499-412531 spi: mosi-data: "1F"
+412656-412688 spi: mosi-data: "20"
+412814-412846 spi: mosi-data: "21"
+412971-413003 spi: mosi-data: "22"
+413128-413160 spi: mosi-data: "23"
+413286-413318 spi: mosi-data: "24"
+413443-413475 spi: mosi-data: "25"
+413601-413633 spi: mosi-data: "26"
+413758-413790 spi: mosi-data: "27"
+413915-413947 spi: mosi-data: "28"
+414073-414105 spi: mosi-data: "29"
+414230-414262 spi: mosi-data: "2A"
+414387-414419 spi: mosi-data: "2B"
+414545-414577 spi: mosi-data: "2C"
+414702-414734 spi: mosi-data: "2D"
+414860-414892 spi: mosi-data: "2E"
+415017-415049 spi: mosi-data: "2F"
+415174-415206 spi: mosi-data: "30"
+415332-415364 spi: mosi-data: "31"
+415489-415521 spi: mosi-data: "32"
+415646-415678 spi: mosi-data: "33"
+415804-415836 spi: mosi-data: "34"
+415961-415993 spi: mosi-data: "35"
+416119-416151 spi: mosi-data: "36"
+416276-416308 spi: mosi-data: "37"
+416433-416465 spi: mosi-data: "38"
+416591-416623 spi: mosi-data: "39"
+416748-416780 spi: mosi-data: "3A"
+416905-416937 spi: mosi-data: "3B"
+417063-417095 spi: mosi-data: "3C"
+417220-417252 spi: mosi-data: "3D"
+417378-417410 spi: mosi-data: "3E"
+417535-417567 spi: mosi-data: "3F"
+417692-417724 spi: mosi-data: "40"
+417850-417882 spi: mosi-data: "41"
+418007-418039 spi: mosi-data: "42"
+418164-418196 spi: mosi-data: "43"
+418322-418354 spi: mosi-data: "44"
+418479-418511 spi: mosi-data: "45"
+418637-418669 spi: mosi-data: "46"
+418794-418826 spi: mosi-data: "47"
+418951-418983 spi: mosi-data: "48"
+419109-419141 spi: mosi-data: "49"
+419266-419298 spi: mosi-data: "4A"
+419424-419456 spi: mosi-data: "4B"
+419581-419613 spi: mosi-data: "4C"
+419738-419770 spi: mosi-data: "4D"
+419896-419928 spi: mosi-data: "4E"
+420053-420085 spi: mosi-data: "4F"
+420210-420242 spi: mosi-data: "50"
+420368-420400 spi: mosi-data: "51"
+420525-420557 spi: mosi-data: "52"
+420683-420715 spi: mosi-data: "53"
+420840-420872 spi: mosi-data: "54"
+420997-421029 spi: mosi-data: "55"
+421155-421187 spi: mosi-data: "56"
+421312-421344 spi: mosi-data: "57"
+421469-421501 spi: mosi-data: "58"
+421627-421659 spi: mosi-data: "59"
+421784-421816 spi: mosi-data: "5A"
+421942-421974 spi: mosi-data: "5B"
+422099-422131 spi: mosi-data: "5C"
+422256-422288 spi: mosi-data: "5D"
+422414-422446 spi: mosi-data: "5E"
+422571-422603 spi: mosi-data: "5F"
+422728-422760 spi: mosi-data: "60"
+422886-422918 spi: mosi-data: "61"
+423043-423075 spi: mosi-data: "62"
+423201-423233 spi: mosi-data: "63"
+423358-423390 spi: mosi-data: "64"
+423515-423547 spi: mosi-data: "65"
+423673-423705 spi: mosi-data: "66"
+423830-423862 spi: mosi-data: "67"
+423987-424019 spi: mosi-data: "68"
+424145-424177 spi: mosi-data: "69"
+424302-424334 spi: mosi-data: "6A"
+424460-424492 spi: mosi-data: "6B"
+424617-424649 spi: mosi-data: "6C"
+424774-424806 spi: mosi-data: "6D"
+424932-424964 spi: mosi-data: "6E"
+425089-425121 spi: mosi-data: "6F"
+425247-425279 spi: mosi-data: "70"
+425404-425436 spi: mosi-data: "71"
+425561-425593 spi: mosi-data: "72"
+425719-425751 spi: mosi-data: "73"
+425876-425908 spi: mosi-data: "74"
+426033-426065 spi: mosi-data: "75"
+426191-426223 spi: mosi-data: "76"
+426348-426380 spi: mosi-data: "77"
+426506-426538 spi: mosi-data: "78"
+426663-426695 spi: mosi-data: "79"
+426820-426852 spi: mosi-data: "7A"
+426978-427010 spi: mosi-data: "7B"
+427135-427167 spi: mosi-data: "7C"
+427292-427324 spi: mosi-data: "7D"
+427450-427482 spi: mosi-data: "7E"
+427607-427639 spi: mosi-data: "7F"
+427765-427797 spi: mosi-data: "80"
+427922-427954 spi: mosi-data: "81"
+428079-428111 spi: mosi-data: "82"
+428237-428269 spi: mosi-data: "83"
+428394-428426 spi: mosi-data: "84"
+428551-428583 spi: mosi-data: "85"
+428709-428741 spi: mosi-data: "86"
+428866-428898 spi: mosi-data: "87"
+429024-429056 spi: mosi-data: "88"
+429181-429213 spi: mosi-data: "89"
+429338-429370 spi: mosi-data: "8A"
+429496-429528 spi: mosi-data: "8B"
+429653-429685 spi: mosi-data: "8C"
+429811-429843 spi: mosi-data: "8D"
+429968-430000 spi: mosi-data: "8E"
+430125-430157 spi: mosi-data: "8F"
+430283-430315 spi: mosi-data: "90"
+430440-430472 spi: mosi-data: "91"
+430597-430629 spi: mosi-data: "92"
+430755-430787 spi: mosi-data: "93"
+430912-430944 spi: mosi-data: "94"
+431070-431102 spi: mosi-data: "95"
+431227-431259 spi: mosi-data: "96"
+431384-431416 spi: mosi-data: "97"
+431542-431574 spi: mosi-data: "98"
+431699-431731 spi: mosi-data: "99"
+431856-431888 spi: mosi-data: "9A"
+432014-432046 spi: mosi-data: "9B"
+432171-432203 spi: mosi-data: "9C"
+432329-432361 spi: mosi-data: "9D"
+432486-432518 spi: mosi-data: "9E"
+432643-432675 spi: mosi-data: "9F"
+432801-432833 spi: mosi-data: "A0"
+432958-432990 spi: mosi-data: "A1"
+433115-433147 spi: mosi-data: "A2"
+433273-433305 spi: mosi-data: "A3"
+433430-433462 spi: mosi-data: "A4"
+433588-433620 spi: mosi-data: "A5"
+433745-433777 spi: mosi-data: "A6"
+433902-433934 spi: mosi-data: "A7"
+434060-434092 spi: mosi-data: "A8"
+434217-434249 spi: mosi-data: "A9"
+434374-434406 spi: mosi-data: "AA"
+434532-434564 spi: mosi-data: "AB"
+434689-434721 spi: mosi-data: "AC"
+434847-434879 spi: mosi-data: "AD"
+435004-435036 spi: mosi-data: "AE"
+435161-435193 spi: mosi-data: "AF"
+435319-435351 spi: mosi-data: "B0"
+435476-435508 spi: mosi-data: "B1"
+435634-435666 spi: mosi-data: "B2"
+435791-435823 spi: mosi-data: "B3"
+435948-435980 spi: mosi-data: "B4"
+436106-436138 spi: mosi-data: "B5"
+436263-436295 spi: mosi-data: "B6"
+436420-436452 spi: mosi-data: "B7"
+436578-436610 spi: mosi-data: "B8"
+436735-436767 spi: mosi-data: "B9"
+436893-436925 spi: mosi-data: "BA"
+437050-437082 spi: mosi-data: "BB"
+437207-437239 spi: mosi-data: "BC"
+437365-437397 spi: mosi-data: "BD"
+437522-437554 spi: mosi-data: "BE"
+437679-437711 spi: mosi-data: "BF"
+437837-437869 spi: mosi-data: "C0"
+437994-438026 spi: mosi-data: "C1"
+438152-438184 spi: mosi-data: "C2"
+438309-438341 spi: mosi-data: "C3"
+438466-438498 spi: mosi-data: "C4"
+438624-438656 spi: mosi-data: "C5"
+438781-438813 spi: mosi-data: "C6"
+438938-438970 spi: mosi-data: "C7"
+439096-439128 spi: mosi-data: "C8"
+439253-439285 spi: mosi-data: "C9"
+439411-439443 spi: mosi-data: "CA"
+439568-439600 spi: mosi-data: "CB"
+439725-439757 spi: mosi-data: "CC"
+439883-439915 spi: mosi-data: "CD"
+440040-440072 spi: mosi-data: "CE"
+440197-440229 spi: mosi-data: "CF"
+440355-440387 spi: mosi-data: "D0"
+440512-440544 spi: mosi-data: "D1"
+440670-440702 spi: mosi-data: "D2"
+440827-440859 spi: mosi-data: "D3"
+440984-441016 spi: mosi-data: "D4"
+441142-441174 spi: mosi-data: "D5"
+441299-441331 spi: mosi-data: "D6"
+441457-441489 spi: mosi-data: "D7"
+441614-441646 spi: mosi-data: "D8"
+441771-441803 spi: mosi-data: "D9"
+441929-441961 spi: mosi-data: "DA"
+442086-442118 spi: mosi-data: "DB"
+442243-442275 spi: mosi-data: "DC"
+442401-442433 spi: mosi-data: "DD"
+442558-442590 spi: mosi-data: "DE"
+442716-442748 spi: mosi-data: "DF"
+442873-442905 spi: mosi-data: "E0"
+443030-443062 spi: mosi-data: "E1"
+443188-443220 spi: mosi-data: "E2"
+443345-443377 spi: mosi-data: "E3"
+443502-443534 spi: mosi-data: "E4"
+443660-443692 spi: mosi-data: "E5"
+443817-443849 spi: mosi-data: "E6"
+443975-444007 spi: mosi-data: "E7"
+444132-444164 spi: mosi-data: "E8"
+444289-444321 spi: mosi-data: "E9"
+444447-444479 spi: mosi-data: "EA"
+444604-444636 spi: mosi-data: "EB"
+444761-444793 spi: mosi-data: "EC"
+444919-444951 spi: mosi-data: "ED"
+445076-445108 spi: mosi-data: "EE"
+445234-445266 spi: mosi-data: "EF"
+445391-445423 spi: mosi-data: "F0"
+445548-445580 spi: mosi-data: "F1"
+445706-445738 spi: mosi-data: "F2"
+445863-445895 spi: mosi-data: "F3"
+446020-446052 spi: mosi-data: "F4"
+446178-446210 spi: mosi-data: "F5"
+446335-446367 spi: mosi-data: "F6"
+446493-446525 spi: mosi-data: "F7"
+446650-446682 spi: mosi-data: "F8"
+446807-446839 spi: mosi-data: "F9"
+446965-446997 spi: mosi-data: "FA"
+447122-447154 spi: mosi-data: "FB"
+447280-447312 spi: mosi-data: "FC"
+447437-447469 spi: mosi-data: "FD"
+447594-447626 spi: mosi-data: "FE"
+447752-447784 spi: mosi-data: "FF"
+447909-447941 spi: mosi-data: "00"
+448066-448098 spi: mosi-data: "01"
+448224-448256 spi: mosi-data: "02"
+448381-448413 spi: mosi-data: "03"
+448539-448571 spi: mosi-data: "04"
+448696-448728 spi: mosi-data: "05"
+448853-448885 spi: mosi-data: "06"
+449011-449043 spi: mosi-data: "07"
+449168-449200 spi: mosi-data: "08"
+449325-449357 spi: mosi-data: "09"
+449483-449515 spi: mosi-data: "0A"
+449640-449672 spi: mosi-data: "0B"
+449798-449830 spi: mosi-data: "0C"
+449955-449987 spi: mosi-data: "0D"
+450112-450144 spi: mosi-data: "0E"
+450270-450302 spi: mosi-data: "0F"
+450427-450459 spi: mosi-data: "10"
+450584-450616 spi: mosi-data: "11"
+450742-450774 spi: mosi-data: "12"
+450899-450931 spi: mosi-data: "13"
+451057-451089 spi: mosi-data: "14"
+451214-451246 spi: mosi-data: "15"
+451371-451403 spi: mosi-data: "16"
+451529-451561 spi: mosi-data: "17"
+451686-451718 spi: mosi-data: "18"
+451844-451876 spi: mosi-data: "19"
<