<commit_before>SoftWire
========

SoftWire is a software I2C implementation for Arduino and other
Wiring-type environments. It utilises the `pinMode()`,
`digitalWrite()` and `digitalRead()` functions. The pins to be used
for the serial data (SDA) and serial clock (SCL) control lines can be
defined at run-time. Alternatively it is possible to pass references
to functions which control the SDA and SCL lines, and read SDA and
SCL, thereby allowing direct port manipulation to be used if
preferred.

Multiple objects (for multiple software I2C buses) and
clock-stretching by slave devices are supported. A timeout feature is
included to prevent lockups by faulty or missing hardware. The
microcontroller must function as the master device and multiple
masters are not supported.


License
-------

The SoftWire library is licensed with the GNU Lesser General Public
License. See LICENSE.txt for details.


Requirements
------------

The AsyncDelay library is required, see
https://github.com/stevemarple/AsyncDelay

Contributors
------------

<NAME>
<NAME>

Credits
-------

This library is inspired by <NAME>'s i2cmaster library.
<commit_msg>Update with changes ready for a v2.0.0 release.<commit_after>SoftWire
========

SoftWire is a software I2C implementation for Arduino and other
Wiring-type environments. It utilises the `pinMode()`,
`digitalWrite()` and `digitalRead()` functions. The pins to be used
for the serial data (SDA) and serial clock (SCL) control lines can be
defined at run-time. Alternatively it is possible to override the
functions which control the SDA and SCL lines, and read SDA and SCL,
thereby allowing direct port manipulation to be used if preferred.

Multiple objects (for multiple software I2C buses) and
clock-stretching by slave devices are supported. A timeout feature is
included to prevent lockups by faulty or missing hardware. The
microcontroller must function as the master device and multiple
masters are not supported.

Low-level functions can be used to send start, and stop signals, and
to read and write data; no buffers are required. In addition
high-level functions provide almost direct compatibility with the Wire
library. However, the user must first declare transmit and receive
buffers, and configure SoftWire to use them before the high-level
functions `beginTransmission()`, `endTransmission()`, `read()`, `write()` and
`requestFrom ()` can be used.

## Important changes for users of the v1.* library

To support the high-level functions required for compatibility with
the Wire library the original low-level `write()` function has been
renamed `llWrite()`.

The setter functions `setSdaLow()`, `setSdaHigh()`, `setSclLow()`,
`setSclHigh()`, `setReadSda()`, `setReadScl()` must be used to
override the functions which control and read the SDA and SCL signals.


License
-------

The SoftWire library is licensed with the GNU Lesser General Public
License. See LICENSE.txt for details.


Requirements
------------

The AsyncDelay library is required, see https://github.com/stevemarple/AsyncDelay

Contributors
------------

<NAME>
<NAME>

Credits
-------

This library is inspired by <NAME>'s i2cmaster library.

{'fraction_non_alphanumeric': 0.08772483433259703, 'fraction_numerical': 0.003155569580309246, 'mean_word_length': 4.345699831365936, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3559036', 'n_tokens_mistral': 849, 'n_tokens_neox': 809, 'n_words': 424}