- This enables more complex use case like write-then-read, 3-wire SPI and when
the number of bits per word changes accross packets.
- Remove the transparent Tx() buffer cutting, the Raspberry Pi 3 spi_bcm2835
driver asserts the CS line even if csChange = 0 on the last packet. This broke
some use case (like FLIR Lepton).
spi-io: improve with more use cases. Used for adhoc testing of the SPI bus and
looking at the results over an oscilloscope.
- Increase test coverage to 100%.
- Add ssd1306smoketest.
- Complete SPI 4-wire implementation.
Differential update reduces the amount of data sent over the I²C/SPI bus at the
(small) cost of slightly more CPU usage. On many platform, I²C default transfert
speed is only 100KHz so when only a small section of the display is updated,
this can lead to significant performance improvement.
For now only page based differential update is used, as column based offset
corrupt the display. This still results in large savings.
- Rename Image to VerticalLSB, so that the 3 other encodings (vertical MSB,
horizontal LSB and MSB) can be added at a later point if ever needed without
breaking the API.
- Use .Pix, .Stride and .Rect so it is more similar to how stdlib image package
does it.
- Export the color model properly as BitModel.
- Remove frivolous methods.
- Allow both app and device drive set max bus speed.
- Make DevParams callable only exactly once.
- sysfs-spi: make SPI implement io.Reader.
- sysfs-spi: Fix Tx() with write only or read only.
This shortens OpenByName() to Open() and removes OpenByNumber(). The concept of
number is not removed, it's still possible to open a bus by number, but a base10
string representation of the number is now needed. In practice, I haven't found
a real use for OpenByNumber().
This simplify the API surface, less functions leads to simpler to understand
API.
This is a breaking change.
- conntest: Small coherency fixes along the way.
- conntest: Add Discard. Useful for zero filled tests.
- reg: Improve testing.
- CONTRIBUTING.md: fix a typo.
Because of the way the SPI bus is exposed via sysfs, do not use the same pattern
as i2c. This may change as more OSes are supported.
Increase test coverage for spi and spitest to 100%.
This is a breaking change.
This is closer to how gpio behaves yet different in practice because of the
different challenges.
spi will be updated later to behave the same. Add support for aliases, which is
very useful, and it permits the CLI tools to accept a free form string to
specify the bus name.
- Increase test coverage of i2c and i2ctest to 100%.
- Add i2c.Pins implementation to i2ctest.Playback.
Now each connection can report if the underlying communication channel is
half-duplex or full-duplex.
This information is leveraged by some clients, like memory mapped registers
helper struct, to change their behavior or deny use on certain kind of
communication channel.
The example made it look like the user had to use global variables, which may
cause a poor first time impression. Make it clear that there is multiple ways to
access a pin.
- Make error more consistent and more helpful. Not all errors are wrapped yet
but a fair part is now.
- Remove the 'first' pattern in i2c, spi, uart and make it work.
- Add allwinner.Pin.wrap() for coherence with PinPL and bcm283x.Pin.
- headers.All() return a copy.
periph:
- Type was an approximation to enforce priority ordering. Remove the need for
approximate ordering by improving gpio instead to support out-of-order pin
registration. This has the side effect of increasing parallelism. This saved
~5ms on "gpio-list" runtime (out of 30ms) when run on a Raspberry Pi 3.
gpio:
- Redo RegisterAlias() to support out of order registration.
- Replace Functional() with Aliases(), which is much more generic.
- Unexport PinAlias, it is not necessary anymore.
- Improve error messages by wrapping the error, it helps legibility in case of
errors.
- Remove Unregister(), it will be added back when there's an actual call site.
- Remove the (%d) number on sysfs-gpio and bcm283x since it wasn't useful.
- sysfs-gpio: Fix edge when switching output.
- consistently fix accumulated edged when calling sysfs.Pin.In().
lirc:
- Stop mapping IR_IN and IR_OUT when the pin is not mapped.
periph-smoketest:
- Fix to use host.Init(), otherwise drivers weren't correctly loaded.
Fixes#45
(I think)
- Remove fmt.Stringer and io.Writer from conn.Conn. This makes it compatible
with exp/io.
- Rename i2c.Conn to i2c.Bus since this was confusion. This clarifies the
distinction between a point-to-point connection and a bus.
- Add these to bus specific interfaces, i2c.Bus, spi.Conn, uart.Conn.
Fixes#15.